diff --git a/.gitattributes b/.gitattributes index 8f038291eac..a77ff1db98d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,9 +1,10 @@ # Set the default behavior, in case people don't have core.autocrlf set. -* text=autolf +* text=auto # Explicitly declare text files you want to always be normalized and converted # to native line endings on checkout. *.json text eol=lf +src/generated/resources/.cache/** text eol=lf # Denote all files that are truly binary and should not be modified. -*.png binary \ No newline at end of file +*.png binary diff --git a/.github/actions/build_setup/action.yml b/.github/actions/build_setup/action.yml index a19adcdf6a3..dcdbe4a170e 100644 --- a/.github/actions/build_setup/action.yml +++ b/.github/actions/build_setup/action.yml @@ -24,20 +24,9 @@ runs: distribution: temurin java-version: ${{ contains(env.REF, '1.20.1') && '17' || '21' }} - - name: Validate Gradle wrapper - uses: gradle/actions/wrapper-validation@v3 - - - name: Grant execute permission for gradlew - shell: bash - run: chmod +x gradlew - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v3 + uses: gradle/actions/setup-gradle@v4 with: cache-write-only: ${{ inputs.update-cache }} - generate-job-summary: false - gradle-home-cache-includes: | - caches - notifications - jdks - wrapper + cache-read-only: ${{ github.ref != 'refs/heads/1.20.1' && github.ref != 'refs/heads/1.21' }} + add-job-summary: 'on-failure' diff --git a/.github/advanced-issue-labeler.yml b/.github/advanced-issue-labeler.yml deleted file mode 100644 index 4d25808206c..00000000000 --- a/.github/advanced-issue-labeler.yml +++ /dev/null @@ -1,13 +0,0 @@ -# syntax - https://github.com/redhat-plumbers-in-action/advanced-issue-labeler#policy - -policy: - - template: [000-bug-report.yml, 001-feature-request.yml] - section: - - id: [mc-version] - block-list: ['Both', 'Any'] - label: - - name: '1.20' - keys: ['1.20.1 Forge'] - - - name: '1.21' - keys: ['1.21.1 NeoForge'] diff --git a/.github/json/config-1.21.json b/.github/json/config-1.21.json index 1162d06b543..a726d5da9a5 100644 --- a/.github/json/config-1.21.json +++ b/.github/json/config-1.21.json @@ -40,6 +40,6 @@ } }, "max_pull_requests": 1000, - "max_back_track_time_days": 90, + "max_back_track_time_days": 365, "base_branches": ["1.21"] } diff --git a/.github/json/config-latest-1.21.json b/.github/json/config-latest-1.21.json index 7ba17eeadaa..3ebbf9f0313 100644 --- a/.github/json/config-latest-1.21.json +++ b/.github/json/config-latest-1.21.json @@ -30,5 +30,6 @@ } }, "max_pull_requests": 1000, - "max_back_track_time_days": 60 + "max_back_track_time_days": 365, + "base_branches": ["1.21"] } diff --git a/.github/json/config-latest.json b/.github/json/config-latest.json index c4229675864..50d7b05aa59 100644 --- a/.github/json/config-latest.json +++ b/.github/json/config-latest.json @@ -30,5 +30,6 @@ } }, "max_pull_requests": 1000, - "max_back_track_time_days": 60 + "max_back_track_time_days": 365, + "base_branches": ["1.20.1"] } diff --git a/.github/json/config.json b/.github/json/config.json index 2737ea278fa..96eb4907cfd 100644 --- a/.github/json/config.json +++ b/.github/json/config.json @@ -40,6 +40,6 @@ } }, "max_pull_requests": 1000, - "max_back_track_time_days": 90, + "max_back_track_time_days": 365, "base_branches": ["1.20.1"] } diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 00000000000..35e4f04262c --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,5 @@ +# https://github.com/github/issue-labeler#usage +1.20.1: + - '/^1\.20\.1 Forge$/m' +1.21: + - '/^1\.21\.1 NeoForge$/m' \ No newline at end of file diff --git a/.github/workflows/auto-build.yml b/.github/workflows/auto-build.yml index 0148f688594..0d0d415b26c 100644 --- a/.github/workflows/auto-build.yml +++ b/.github/workflows/auto-build.yml @@ -23,6 +23,8 @@ jobs: contents: write steps: - uses: actions/checkout@v4 + with: + fetch-depth: 0 # do a full checkout instead of a shallow clone of HEAD so spotless's ratchetFrom works - name: Setup Build uses: ./.github/actions/build_setup - name: Get Mod Version @@ -31,15 +33,14 @@ jobs: - name: Version Suffix id: suffix run: echo "VERSION_SUFFIX=$(echo "${{ github.sha }}" | cut -c 1-7)" >> $GITHUB_ENV - - run: git fetch origin 1.20.1 - name: Build - run: ./gradlew build --build-cache + run: ./gradlew build - name: Publish to Maven if: ${{ github.repository_owner == 'GregTechCEu' && env.PUBLISH == 'true' }} - run: ./gradlew publish --build-cache + run: ./gradlew publish - name: Rename Jars if: ${{ env.PUBLISH == 'true' }} - run: for file in build/libs/*; do mv "$file" "${file/SHOT/SHOT-$(date --utc '+%Y%m%d-%H%M%S')-${{ env.VERSION_SUFFIX }}}"; done; + run: for file in build/libs/*; do mv "$file" "${file/SHOT/SHOT+$(date --utc '+%Y%m%d-%H%M%S')-${{ env.VERSION_SUFFIX }}}"; done; - name: Upload Artifacts if: ${{ env.PUBLISH == 'true' }} uses: actions/upload-artifact@v4 diff --git a/.github/workflows/build-on-push.yml b/.github/workflows/build-on-push.yml index 5eb2d5ec38a..0a4dce7b0aa 100644 --- a/.github/workflows/build-on-push.yml +++ b/.github/workflows/build-on-push.yml @@ -32,7 +32,7 @@ jobs: uses: ./.github/actions/build_setup - name: Build if: steps.filter.outputs.code == 'true' - run: ./gradlew assemble --build-cache + run: ./gradlew assemble - name: Rename Jars if: steps.filter.outputs.code == 'true' run: for file in build/libs/*; do mv "$file" "${file/.jar/-${{ env.VERSION_SUFFIX }}.jar}"; done; diff --git a/.github/workflows/clean.yml b/.github/workflows/clean.yml index 14745c05e74..e537d4d3292 100644 --- a/.github/workflows/clean.yml +++ b/.github/workflows/clean.yml @@ -15,4 +15,4 @@ jobs: with: update-cache: true - name: Clean - run: ./gradlew clean --build-cache + run: ./gradlew clean diff --git a/.github/workflows/format-java.yml b/.github/workflows/format-java.yml index 262e441d770..870202a8490 100644 --- a/.github/workflows/format-java.yml +++ b/.github/workflows/format-java.yml @@ -21,6 +21,8 @@ jobs: steps: - name: Checkout Repository uses: actions/checkout@v4 + with: + fetch-depth: 0 # do a full checkout instead of a shallow clone of HEAD so spotless's ratchetFrom works - name: Check Path Filter uses: dorny/paths-filter@v3 id: filter @@ -29,11 +31,9 @@ jobs: code: - 'src/main/java/**' - 'src/test/**' - - run: git fetch origin 1.20.1 - if: steps.filter.outputs.code == 'true' - name: Setup Build if: steps.filter.outputs.code == 'true' uses: ./.github/actions/build_setup - name: Run Spotless Formatting Check with Gradle if: steps.filter.outputs.code == 'true' - run: ./gradlew spotlessCheck --warning-mode all --build-cache + run: ./gradlew spotlessCheck --warning-mode all diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml new file mode 100644 index 00000000000..66432dc2e3e --- /dev/null +++ b/.github/workflows/labeler.yml @@ -0,0 +1,9 @@ +name: Label PRs + +on: + - pull_request_target + +jobs: + labeler: + uses: GregTechCEu/GithubActions/.github/workflows/labeler.yml@main + secrets: inherit diff --git a/.github/workflows/manage-issue-labels.yml b/.github/workflows/manage-issue-labels.yml index 22b47e7cd3a..6b6edfedfc8 100644 --- a/.github/workflows/manage-issue-labels.yml +++ b/.github/workflows/manage-issue-labels.yml @@ -6,27 +6,18 @@ on: types: [opened] permissions: + issues: write contents: read jobs: labels: runs-on: ubuntu-latest - permissions: - issues: write # needed to utilize advanced-issue-labeler - strategy: - matrix: - template: [ 000-bug-report.yml, 001-feature-request.yml ] steps: - uses: actions/checkout@v4 - - name: Parse issue form - uses: stefanbuck/github-issue-parser@v3 - id: issue-parser with: - template-path: .github/ISSUE_TEMPLATE/${{ matrix.template }} - - - name: Set labels based on mc-version field - uses: redhat-plumbers-in-action/advanced-issue-labeler@v3 + ref: '1.20.1' + sparse-checkout: '.github/labeler.yml' + - uses: github/issue-labeler@v3.3 with: - issue-form: ${{ steps.issue-parser.outputs.jsonString }} - template: ${{ matrix.template }} - token: ${{ secrets.GITHUB_TOKEN }} + configuration-path: .github/labeler.yml + enable-versioned-regex: 0 diff --git a/.github/workflows/manage-pr-labels.yml b/.github/workflows/manage-pr-labels.yml index 3ef69bcd1f6..d958382cf45 100644 --- a/.github/workflows/manage-pr-labels.yml +++ b/.github/workflows/manage-pr-labels.yml @@ -22,13 +22,22 @@ jobs: with: mode: exactly count: 0 - labels: 'do not merge' + labels: 'do not merge, admin merge' exit_type: failure - - name: Check for Required Labels # require at least one of these labels + - name: Check for Required Type Labels # require at least one of these labels uses: mheap/github-action-required-labels@v5 with: mode: minimum count: 1 labels: 'type: feature, type: bugfix, type: refactor, type: translation, ignore changelog' exit_type: failure + + - name: Check for Required Release Label # require exactly one of these labels + uses: mheap/github-action-required-labels@v5 + with: + mode: exactly + count: 1 + labels: 'release: api - X.0.0, release: major - 0.X.0, release: Patch - 0.0.X, release: stale' + exit_type: failure + diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 032be550165..e55dce631d0 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -45,7 +45,7 @@ jobs: id: ver run: echo "version=$(./gradlew -q printVersion)" >> $GITHUB_OUTPUT - name: Build - run: ./gradlew assemble --build-cache + run: ./gradlew assemble - name: Upload Build Artifacts uses: actions/upload-artifact@v4 with: @@ -58,7 +58,7 @@ jobs: env: MAVEN_USER: ${{ secrets.MAVEN_USER }} MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} - run: ./gradlew publish --build-cache + run: ./gradlew publish upload-release-artifacts: name: Upload Artifacts @@ -95,7 +95,7 @@ jobs: MC_VERSION: ${{ inputs.branch == '1.21' && '1.21.1' || '1.20.1' }} LOADER: ${{ inputs.branch == '1.21' && 'neoforge' || 'forge' }} JAVA: ${{ inputs.branch == '1.21' && '21' || '17' }} - VERSION_TYPE: ${{ inputs.branch == '1.21' && 'alpha' || 'beta' }} + VERSION_TYPE: ${{ inputs.branch == '1.21' && 'beta' || 'beta' }} uses: Kir-Antipov/mc-publish@v3.3.0 with: modrinth-id: 7tG215v7 @@ -103,7 +103,7 @@ jobs: files: | ./gtceu-${{ env.MC_VERSION }}-${{ needs.build.outputs.ver }}.jar ./!(gtceu-${{ env.MC_VERSION }}-${{ needs.build.outputs.ver }}.jar) - name: 'GregTechCEu ${{ env.MC_VERSION }}-${{ needs.build.outputs.ver }}' + name: 'GregTech CEu ${{ env.MC_VERSION }}-${{ needs.build.outputs.ver }}' version: 'mc${{ env.MC_VERSION }}-${{ needs.build.outputs.ver }}' version-type: ${{ env.VERSION_TYPE }} changelog: ${{ inputs.release-body }} @@ -136,7 +136,7 @@ jobs: files: | ./gtceu-${{ env.MC_VERSION }}-${{ needs.build.outputs.ver }}.jar ./!(gtceu-${{ env.MC_VERSION }}-${{ needs.build.outputs.ver }}.jar) - name: 'GregTechCEu ${{ env.MC_VERSION }}-${{ needs.build.outputs.ver }}' + name: 'GregTech CEu ${{ env.MC_VERSION }}-${{ needs.build.outputs.ver }}' version: 'mc${{ env.MC_VERSION }}-${{ needs.build.outputs.ver }}' version-type: ${{ env.VERSION_TYPE }} changelog: ${{ inputs.release-body }} @@ -147,7 +147,7 @@ jobs: # After successful release, PR version bump and changelog bump-version-and-changelog: name: Bump Version and Build Changelog - needs: [ build, upload-release-artifacts, publish-modrinth, publish-cf] + needs: [ build, upload-release-artifacts ] if: ${{ always() && !failure() && !cancelled() }} runs-on: ubuntu-latest permissions: diff --git a/.github/workflows/update-gradle-cache.yml b/.github/workflows/update-gradle-cache.yml index 103920ce146..ac02fc0a504 100644 --- a/.github/workflows/update-gradle-cache.yml +++ b/.github/workflows/update-gradle-cache.yml @@ -23,4 +23,4 @@ jobs: with: update-cache: true - name: Build Project with Gradle - run: ./gradlew assemble --warning-mode all --build-cache + run: ./gradlew assemble --warning-mode all diff --git a/CHANGELOG.md b/CHANGELOG.md index 6cee4e15c1e..3708e516f60 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,208 @@ # ChangeLog +## Version [v7.0.0](https://github.com/GregTechCEu/GregTech-Modern/compare/v1.6.4-1.20.1...v7.0.0-1.20.1) +### Added + +- Add more plasmas and plasma turbine fuels by @omergunr100 in [#2974](https://github.com/GregTechCEu/GregTech-Modern/pull/2974) +- Send chat message when new ore veins are prospected by @JuiceyBeans in [#2902](https://github.com/GregTechCEu/GregTech-Modern/pull/2902) +- GameStages Recipe Conditions by @YoungOnionMC in [#2900](https://github.com/GregTechCEu/GregTech-Modern/pull/2900) +- Add FTB Quests recipe condition by @JuiceyBeans in [#2895](https://github.com/GregTechCEu/GregTech-Modern/pull/2895) +- Various Pipe Model changes by @YoungOnionMC in [#2984](https://github.com/GregTechCEu/GregTech-Modern/pull/2984) +- Add Heracles recipe condition by @JuiceyBeans in [#2904](https://github.com/GregTechCEu/GregTech-Modern/pull/2904) +- Add KJS Shaped Recipe Schema with GT Tool Symbols by @krossgg in [#3041](https://github.com/GregTechCEu/GregTech-Modern/pull/3041) +- Add recipes for crushing corals into calcite by @Miner239 in [#3087](https://github.com/GregTechCEu/GregTech-Modern/pull/3087) +- Add charge line to armor tooltip by @stivosha in [#3096](https://github.com/GregTechCEu/GregTech-Modern/pull/3096) +- Add special behaviors to the Large Maceration Tower by @YoungOnionMC in [#2968](https://github.com/GregTechCEu/GregTech-Modern/pull/2968) +- Add JADE info for the conversion mode of the Energy Converter by @NegaNote in [#3099](https://github.com/GregTechCEu/GregTech-Modern/pull/3099) +- Port Bauxite Processing from 1.12 by @GirixK in [#3126](https://github.com/GregTechCEu/GregTech-Modern/pull/3126) +- Remove Extruder Mold (Long Rod) by @GirixK in [#3190](https://github.com/GregTechCEu/GregTech-Modern/pull/3190) +- implement real XOR chance logic (replaces old, which is renamed FIRST) by @NegaNote in [#3187](https://github.com/GregTechCEu/GregTech-Modern/pull/3187) +- Add a block tag for surface indicators by @YoungOnionMC in [#3151](https://github.com/GregTechCEu/GregTech-Modern/pull/3151) +- Fix Electronic Circuit Recipe by @cewlboi in [#3133](https://github.com/GregTechCEu/GregTech-Modern/pull/3133) +- Adds Fluid Stack capability to Research Entries by @YoungOnionMC in [#3106](https://github.com/GregTechCEu/GregTech-Modern/pull/3106) +- Remove muffler hatch requirement from Large Brewing Vat by @GirixK in [#3231](https://github.com/GregTechCEu/GregTech-Modern/pull/3231) +- Add the Ender Fluid Link cover by @Arborsm in [#3024](https://github.com/GregTechCEu/GregTech-Modern/pull/3024) +- Make screwdriver able to invert buses by @jurrejelle in [#3235](https://github.com/GregTechCEu/GregTech-Modern/pull/3235) +- Add pattern dimensions to all Multiblock Controllers by @YoungOnionMC in [#3240](https://github.com/GregTechCEu/GregTech-Modern/pull/3240) +- Make tank widgets able to display the contents of the tank in the tooltip separately from the overlay by @GirixK in [#3221](https://github.com/GregTechCEu/GregTech-Modern/pull/3221) +- Add API for using custom blocks/items in es by @screret in [#3251](https://github.com/GregTechCEu/GregTech-Modern/pull/3251) +- Add Capes by @screret in [#3242](https://github.com/GregTechCEu/GregTech-Modern/pull/3242) +- Add recipes to oxidise and wax copper decorative blocks in the chem bath by @htmlcsjs in [#3263](https://github.com/GregTechCEu/GregTech-Modern/pull/3263) +- Add a tag for valid cleanroom doors by @jurrejelle in [#3264](https://github.com/GregTechCEu/GregTech-Modern/pull/3264) +- Feature: colour machine/cable highlights based on tier by @omergunr100 in [#3067](https://github.com/GregTechCEu/GregTech-Modern/pull/3067) +- add material armors by @screret in [#2656](https://github.com/GregTechCEu/GregTech-Modern/pull/2656) +- Batch Mode by @YoungOnionMC in [#3292](https://github.com/GregTechCEu/GregTech-Modern/pull/3292) +- Add color based input seperation by @jurrejelle in [#3237](https://github.com/GregTechCEu/GregTech-Modern/pull/3237) +- Add Visual Overlay for Colored Hatches by @YoungOnionMC in [#3313](https://github.com/GregTechCEu/GregTech-Modern/pull/3313) +- Use Super and Quantum Tanks as cells by @jurrejelle in [#3305](https://github.com/GregTechCEu/GregTech-Modern/pull/3305) +- Add initial computercraft support by @MatthiasMann in [#3310](https://github.com/GregTechCEu/GregTech-Modern/pull/3310) +- add CC support for getting a machine's recipe progress and turning them on/off by @MatthiasMann in [#3323](https://github.com/GregTechCEu/GregTech-Modern/pull/3323) +- Multi Amp Recipes by @YoungOnionMC in [#3299](https://github.com/GregTechCEu/GregTech-Modern/pull/3299) +- Implement Ranged Fluid Outputs (V3) by @DilithiumThoride in [#3269](https://github.com/GregTechCEu/GregTech-Modern/pull/3269) +- Clean Up EMI GUI for MultiAmp by @Ghostipedia in [#3384](https://github.com/GregTechCEu/GregTech-Modern/pull/3384) + +### Fixed + +- Fix advanced armor unlocalized name by @YoungOnionMC in [#2962](https://github.com/GregTechCEu/GregTech-Modern/pull/2962) +- Fix harder paper recipes consuming fluid container by @Spicierspace153 in [#2963](https://github.com/GregTechCEu/GregTech-Modern/pull/2963) +- Fix NPE in AssemblyLineMachine by @YoungOnionMC in [#2983](https://github.com/GregTechCEu/GregTech-Modern/pull/2983) +- Fix fertilizer interaction by @omergunr100 in [#2937](https://github.com/GregTechCEu/GregTech-Modern/pull/2937) +- Fix deepslate/tuff ore sounds by @Pyritie in [#2967](https://github.com/GregTechCEu/GregTech-Modern/pull/2967) +- Fix various issues with Long Distance Pipelines by @omergunr100 in [#2938](https://github.com/GregTechCEu/GregTech-Modern/pull/2938) +- Fix cover overlays to prevent Z-fighting by @omergunr100 in [#2976](https://github.com/GregTechCEu/GregTech-Modern/pull/2976) +- Fix Miner Pipe block breaking logic by @omergunr100 in [#2854](https://github.com/GregTechCEu/GregTech-Modern/pull/2854) +- Fix cover overlay renderer NPE by @omergunr100 in [#2987](https://github.com/GregTechCEu/GregTech-Modern/pull/2987) +- Fix ItemBusPartMachine incorrectly disabling circuit slot by @krossgg in [#2991](https://github.com/GregTechCEu/GregTech-Modern/pull/2991) +- Fix not being able to interact with prospector UI when no map mods were installed by @Pumpkin7266 in [#3002](https://github.com/GregTechCEu/GregTech-Modern/pull/3002) +- Fix rotor holder renderer by @omergunr100 in [#2973](https://github.com/GregTechCEu/GregTech-Modern/pull/2973) +- Fix recently connected pipes not transfering fluid/items from machines/busses/hatches by @PrototypeTrousers in [#3014](https://github.com/GregTechCEu/GregTech-Modern/pull/3014) +- Fix NC Items being used in decomp by @YoungOnionMC in [#3018](https://github.com/GregTechCEu/GregTech-Modern/pull/3018) +- Fix Tool charging resetting block break progress by @YoungOnionMC in [#2966](https://github.com/GregTechCEu/GregTech-Modern/pull/2966) +- Fix jade crashing when ae2 isn't installed by @omergunr100 in [#3019](https://github.com/GregTechCEu/GregTech-Modern/pull/3019) +- Fix consuming inputs when matching recipe by @Ghostipedia in [#3028](https://github.com/GregTechCEu/GregTech-Modern/pull/3028) +- Fix tags and incorrect lang by @krossgg in [#3030](https://github.com/GregTechCEu/GregTech-Modern/pull/3030) +- Fix crafting component issues by @krossgg in [#3037](https://github.com/GregTechCEu/GregTech-Modern/pull/3037) +- Fix turbines not being put into creative tab by @krossgg in [#3042](https://github.com/GregTechCEu/GregTech-Modern/pull/3042) +- Fix arm not swinging for certain wrench interactions by @YoungOnionMC in [#3032](https://github.com/GregTechCEu/GregTech-Modern/pull/3032) +- Fix Pyrolyse Oven double tooltip by @GirixK in [#3045](https://github.com/GregTechCEu/GregTech-Modern/pull/3045) +- Fix various divide by zero errors in material class by @YoungOnionMC in [#3048](https://github.com/GregTechCEu/GregTech-Modern/pull/3048) +- Fix Prussian Blue Voiding 75% of Input Chlorine by @Ghostipedia in [#3053](https://github.com/GregTechCEu/GregTech-Modern/pull/3053) +- Fix a bunch of visual bugs by @omergunr100 in [#2988](https://github.com/GregTechCEu/GregTech-Modern/pull/2988) +- fix KJS machine recipes erroring if user added multiple recipe conditions of different types by @screret in [#3074](https://github.com/GregTechCEu/GregTech-Modern/pull/3074) +- Fix LCE Obstruction when placed vertically by @YoungOnionMC in [#3062](https://github.com/GregTechCEu/GregTech-Modern/pull/3062) +- Fix issues and add QOL by @YoungOnionMC in [#3049](https://github.com/GregTechCEu/GregTech-Modern/pull/3049) +- Fix GT Tool issue with EMI Crafting Fill by @krossgg in [#3043](https://github.com/GregTechCEu/GregTech-Modern/pull/3043) +- Fix cover slot by @omergunr100 in [#3068](https://github.com/GregTechCEu/GregTech-Modern/pull/3068) +- Fix Coke Oven Hatches getting stuck after Coke Oven gets backfilled by @PrototypeTrousers in [#3059](https://github.com/GregTechCEu/GregTech-Modern/pull/3059) +- Fix distinctness not being preserved by @omergunr100 in [#3016](https://github.com/GregTechCEu/GregTech-Modern/pull/3016) +- FIx PVA Recipe to only be in the LCR by @kdcjxbsdnbgfdg in [#3051](https://github.com/GregTechCEu/GregTech-Modern/pull/3051) +- Fix steam multiblocks failing to open UI by @nutant233 in [#3021](https://github.com/GregTechCEu/GregTech-Modern/pull/3021) +- Fix EU to FE conversion by using actually transferred energy amount by @rischiopoco in [#2969](https://github.com/GregTechCEu/GregTech-Modern/pull/2969) +- Fix issues with StoneTypeEntry and variant ores by @krossgg in [#3075](https://github.com/GregTechCEu/GregTech-Modern/pull/3075) +- Fixed corrupted texture in Distillation Tower recipe. by @nutant233 in [#3083](https://github.com/GregTechCEu/GregTech-Modern/pull/3083) +- Fix recipe naming by @vdegans in [#3076](https://github.com/GregTechCEu/GregTech-Modern/pull/3076) +- Rename palladium substation -> palladium substation casing by @JuiceyBeans in [#3069](https://github.com/GregTechCEu/GregTech-Modern/pull/3069) +- Fix typo in recipe name by @a-a-GiTHuB-a-a in [#3027](https://github.com/GregTechCEu/GregTech-Modern/pull/3027) +- Refactor ItemMaterialData and fix addon recipes load order by @nutant233 in [#3031](https://github.com/GregTechCEu/GregTech-Modern/pull/3031) +- Limit the rate of mob crushing by @YoungOnionMC in [#3127](https://github.com/GregTechCEu/GregTech-Modern/pull/3127) +- Fix Multiblock Pattern slot widgets not showing tooltips by @krossgg in [#3125](https://github.com/GregTechCEu/GregTech-Modern/pull/3125) +- Fix Cleanroom Tier Bug by @YoungOnionMC in [#3152](https://github.com/GregTechCEu/GregTech-Modern/pull/3152) +- Fix only multiblocks autogenerating the language values with KubeJS by @screret in [#3203](https://github.com/GregTechCEu/GregTech-Modern/pull/3203) +- Fix first hit on a Quantum Chest always inserting all items by @screret in [#3204](https://github.com/GregTechCEu/GregTech-Modern/pull/3204) +- fix all miners having some level of fortune unintentionally by @screret in [#3200](https://github.com/GregTechCEu/GregTech-Modern/pull/3200) +- remove unnecessary nbt clearing from custom item fluid handlers by @screret in [#3201](https://github.com/GregTechCEu/GregTech-Modern/pull/3201) +- Fixed large boiler explodes when loading the world by @nutant233 in [#3022](https://github.com/GregTechCEu/GregTech-Modern/pull/3022) +- Fix Large Boilers exploding when throttle is too low by @Ricky-fight in [#3064](https://github.com/GregTechCEu/GregTech-Modern/pull/3064) +- Change Substation Casing color to match Palladium's color by @GirixK in [#3227](https://github.com/GregTechCEu/GregTech-Modern/pull/3227) +- Make thorium and magnesite ores obtainable again by @BoomerBoxer in [#3234](https://github.com/GregTechCEu/GregTech-Modern/pull/3234) +- Fix the lighter model referencing a nonexistent texture by @JuiceyBeans in [#3257](https://github.com/GregTechCEu/GregTech-Modern/pull/3257) +- Add back isSameAxis() to RelativeDirection by @NegaNote in [#3260](https://github.com/GregTechCEu/GregTech-Modern/pull/3260) +- Fix KJS recipe types' slot overlays not working by @JuiceyBeans in [#3258](https://github.com/GregTechCEu/GregTech-Modern/pull/3258) +- Remove unused shader by @GirixK in [#3262](https://github.com/GregTechCEu/GregTech-Modern/pull/3262) +- Fix GTRecipeBuilder ranged item outputs by @DilithiumThoride in [#3268](https://github.com/GregTechCEu/GregTech-Modern/pull/3268) +- Fix Multiblock Tanks functioning when unformed by @nutant233 in [#3271](https://github.com/GregTechCEu/GregTech-Modern/pull/3271) +- fix magnetic tools crashing the server when is immutable by @Spicierspace153 in [#3288](https://github.com/GregTechCEu/GregTech-Modern/pull/3288) +- Fix cover behavior on busses and hatches by @jurrejelle in [#3287](https://github.com/GregTechCEu/GregTech-Modern/pull/3287) +- Fix Recipe Runner Error Reporting by @YoungOnionMC in [#3296](https://github.com/GregTechCEu/GregTech-Modern/pull/3296) +- Clarify GTRecipeBuilder's error messages and fix the issues #3268 had by @screret in [#3293](https://github.com/GregTechCEu/GregTech-Modern/pull/3293) +- fix KubeJS machine recipes crashing if multiple conditions of different types are added by @screret in [#3302](https://github.com/GregTechCEu/GregTech-Modern/pull/3302) +- fix research holder items crashing if the research recipe's only output is a fluid by @screret in [#3301](https://github.com/GregTechCEu/GregTech-Modern/pull/3301) +- Fix Creative Energy Container not having an outline by @YoungOnionMC in [#3309](https://github.com/GregTechCEu/GregTech-Modern/pull/3309) +- fix per-tick CWU outputs being handled as negative values by @screret in [#3311](https://github.com/GregTechCEu/GregTech-Modern/pull/3311) +- Fix armor charging causing a crash if the offhand item is switched repeatedly by @PSR2144-3933 in [#3322](https://github.com/GregTechCEu/GregTech-Modern/pull/3322) +- Remove shouldSearchContent by @jurrejelle in [#3334](https://github.com/GregTechCEu/GregTech-Modern/pull/3334) +- Fix BedrockFluidDefinition losing data on world load by @MatthiasMann in [#3336](https://github.com/GregTechCEu/GregTech-Modern/pull/3336) +- Fix batch mode showing in the wrong multis by @Pumpkin7266 in [#3345](https://github.com/GregTechCEu/GregTech-Modern/pull/3345) +- Fix the quantum tank fluid render being offset in the inventory by @screret in [#3372](https://github.com/GregTechCEu/GregTech-Modern/pull/3372) +- Fix LCR recipemap tooltips by @Spicierspace153 in [#3373](https://github.com/GregTechCEu/GregTech-Modern/pull/3373) +- add the other standard tags to dough and wheat by @screret in [#3367](https://github.com/GregTechCEu/GregTech-Modern/pull/3367) +- Clean up unused and/or useless mixins by @screret in [#3359](https://github.com/GregTechCEu/GregTech-Modern/pull/3359) +- Fix Material Decomp being wrong for some recipes by @YoungOnionMC in [#3382](https://github.com/GregTechCEu/GregTech-Modern/pull/3382) +- Fix facades coloring grass etc. with the underlying block's color by @screret in [#3392](https://github.com/GregTechCEu/GregTech-Modern/pull/3392) +- Fix Jade Structure forming info by @YoungOnionMC in [#3400](https://github.com/GregTechCEu/GregTech-Modern/pull/3400) +- Fix ModernFix dynamic resources compatibility by @screret in [#3409](https://github.com/GregTechCEu/GregTech-Modern/pull/3409) +- Fix Batch Mode chance rolls by @YoungOnionMC in [#3411](https://github.com/GregTechCEu/GregTech-Modern/pull/3411) + +### Changed + +- Adds onEntitySwing to IinteractionItem for left click interactions by @Spicierspace153 in [#2930](https://github.com/GregTechCEu/GregTech-Modern/pull/2930) +- Change environmental hazards config to off by default by @omergunr100 in [#2978](https://github.com/GregTechCEu/GregTech-Modern/pull/2978) +- Update zh_cn.json by @iouter in [#2929](https://github.com/GregTechCEu/GregTech-Modern/pull/2929) +- Update zh_tw.json by @IamNotBrianZ in [#2934](https://github.com/GregTechCEu/GregTech-Modern/pull/2934) +- Refactor TagKey creations calls to use static constants instead by @JuiceyBeans in [#2970](https://github.com/GregTechCEu/GregTech-Modern/pull/2970) +- Allow multiblocks to disable circuit slots on parts by @omergunr100 in [#2960](https://github.com/GregTechCEu/GregTech-Modern/pull/2960) +- Refactor JourneyMap integration by @omergunr100 in [#2877](https://github.com/GregTechCEu/GregTech-Modern/pull/2877) +- Change error logging for KJS recipes and add missing builder method by @omergunr100 in [#2977](https://github.com/GregTechCEu/GregTech-Modern/pull/2977) +- Refactor misc by @omergunr100 in [#2958](https://github.com/GregTechCEu/GregTech-Modern/pull/2958) +- Change Singleblock Miner to have an output face by @omergunr100 in [#2910](https://github.com/GregTechCEu/GregTech-Modern/pull/2910) +- Add GT tool specific tags for crafting by @GirixK in [#2810](https://github.com/GregTechCEu/GregTech-Modern/pull/2810) +- Fix Fluid Cell material properties by @YoungOnionMC in [#2927](https://github.com/GregTechCEu/GregTech-Modern/pull/2927) +- Change tag to be plural by @omergunr100 in [#2990](https://github.com/GregTechCEu/GregTech-Modern/pull/2990) +- Change electric Wire Cutter IDs to be consistent with the unpowered version by @GirixK in [#2782](https://github.com/GregTechCEu/GregTech-Modern/pull/2782) +- Removes some item bloat by @YoungOnionMC in [#2994](https://github.com/GregTechCEu/GregTech-Modern/pull/2994) +- Refactor Crafting Components by @krossgg in [#2713](https://github.com/GregTechCEu/GregTech-Modern/pull/2713) +- Refactor Item Decomposition information system by @YoungOnionMC in [#2591](https://github.com/GregTechCEu/GregTech-Modern/pull/2591) +- Improve TagPrefix-based Recipe Generation by @TechLord22 in [#2616](https://github.com/GregTechCEu/GregTech-Modern/pull/2616) +- Refactor machine ownership to use player uuid by @omergunr100 in [#2905](https://github.com/GregTechCEu/GregTech-Modern/pull/2905) +- Distinct Fluid Behaviour and Recipe Runner Refactor by @YoungOnionMC in [#2544](https://github.com/GregTechCEu/GregTech-Modern/pull/2544) +- remove brine process by @screret in [#2634](https://github.com/GregTechCEu/GregTech-Modern/pull/2634) +- Allow Unbreaking and Mending on electric tools by @omergunr100 in [#2985](https://github.com/GregTechCEu/GregTech-Modern/pull/2985) +- Refactor GTTools ui logic and add tree felling switch for axes by @omergunr100 in [#2857](https://github.com/GregTechCEu/GregTech-Modern/pull/2857) +- Disallow covers on the front of Singleblock Machines by @omergunr100 in [#2830](https://github.com/GregTechCEu/GregTech-Modern/pull/2830) +- Rename to . by @tomprince in [#2737](https://github.com/GregTechCEu/GregTech-Modern/pull/2737) +- Various Nitpick Changes by @YoungOnionMC in [#2683](https://github.com/GregTechCEu/GregTech-Modern/pull/2683) +- Helper methods for Team Ownership by @YoungOnionMC in [#3017](https://github.com/GregTechCEu/GregTech-Modern/pull/3017) +- Add extended facing to single-block machines by @omergunr100 in [#2823](https://github.com/GregTechCEu/GregTech-Modern/pull/2823) +- Refactor supplier memoizer by @omergunr100 in [#3004](https://github.com/GregTechCEu/GregTech-Modern/pull/3004) +- Improve visuals of Muffler Smoke VFX And Make Respect Particle Options by @Ghostipedia in [#3061](https://github.com/GregTechCEu/GregTech-Modern/pull/3061) +- Refactor ItemMaterialData#registerMaterialInfoItems to not use var-args by @TechLord22 in [#3057](https://github.com/GregTechCEu/GregTech-Modern/pull/3057) +- delete unused MufflerParticleOptions class by @screret in [#3073](https://github.com/GregTechCEu/GregTech-Modern/pull/3073) +- Refactor torch placement behaviour to check if offhand is empty by @JuiceyBeans in [#3047](https://github.com/GregTechCEu/GregTech-Modern/pull/3047) +- Refactor item decorators to item decorators instead of using a mixin by @omergunr100 in [#3079](https://github.com/GregTechCEu/GregTech-Modern/pull/3079) +- Refactor magnet recipes to have an empty blacklist filter by @omergunr100 in [#3066](https://github.com/GregTechCEu/GregTech-Modern/pull/3066) +- Refactor TOP / Jade Energy Provider to handle BigInteger by @mrquentin in [#3071](https://github.com/GregTechCEu/GregTech-Modern/pull/3071) +- Change steam & bronze machine casing russian translations by @vdegans in [#3077](https://github.com/GregTechCEu/GregTech-Modern/pull/3077) +- Refactor ItemMaterialData and fix addon recipes load order by @nutant233 in [#3031](https://github.com/GregTechCEu/GregTech-Modern/pull/3031) +- Clean up tag generation by @screret in [#3093](https://github.com/GregTechCEu/GregTech-Modern/pull/3093) +- Update zh_cn.json by @iouter in [#3104](https://github.com/GregTechCEu/GregTech-Modern/pull/3104) +- Add BigInteger support to Energy Detector Covers by @mrquentin in [#3081](https://github.com/GregTechCEu/GregTech-Modern/pull/3081) +- Translated using Weblate (Russian) for 1.20.1 by @marisathewitch in [#3145](https://github.com/GregTechCEu/GregTech-Modern/pull/3145) +- Remove block property by @krossgg in [#3135](https://github.com/GregTechCEu/GregTech-Modern/pull/3135) +- Update zh_cn.json by @iouter in [#3143](https://github.com/GregTechCEu/GregTech-Modern/pull/3143) +- Update zh_tw.json (1.20.1) by @IamNotBrianZ in [#3166](https://github.com/GregTechCEu/GregTech-Modern/pull/3166) +- Remove redundant headers by @YoungOnionMC in [#3156](https://github.com/GregTechCEu/GregTech-Modern/pull/3156) +- Reduce auto boxing/unboxing by @krossgg in [#3124](https://github.com/GregTechCEu/GregTech-Modern/pull/3124) +- Removes the overclock configurator by @YoungOnionMC in [#3183](https://github.com/GregTechCEu/GregTech-Modern/pull/3183) +- Add a struct for research data to replace the generic pair by @screret in [#3209](https://github.com/GregTechCEu/GregTech-Modern/pull/3209) +- Remove Armor Mixin for damaging armor and use Forge methods instead by @screret in [#3205](https://github.com/GregTechCEu/GregTech-Modern/pull/3205) +- backport a better version of by @screret in [#3206](https://github.com/GregTechCEu/GregTech-Modern/pull/3206) +- Refactor gtceu.universal.x Lang Key by @YoungOnionMC in [#3150](https://github.com/GregTechCEu/GregTech-Modern/pull/3150) +- use instead of calling manually by @screret in [#3208](https://github.com/GregTechCEu/GregTech-Modern/pull/3208) +- Update zh_cn.json by @iouter in [#3244](https://github.com/GregTechCEu/GregTech-Modern/pull/3244) +- fix all the lighter and TNT logic being terribly jank. by @screret in [#3202](https://github.com/GregTechCEu/GregTech-Modern/pull/3202) +- Cleanroom Logic & Balance Tweaks by @YoungOnionMC in [#3182](https://github.com/GregTechCEu/GregTech-Modern/pull/3182) +- clean up RelativeDirection and rename its methods to be more consistent with vanilla by @screret in [#3198](https://github.com/GregTechCEu/GregTech-Modern/pull/3198) +- Item Capability initialization cleanup & pre-emptive potion bottle bugfixes by @screret in [#3207](https://github.com/GregTechCEu/GregTech-Modern/pull/3207) +- Sort ME2 stocking busses and hatches by amount by @jurrejelle in [#3259](https://github.com/GregTechCEu/GregTech-Modern/pull/3259) +- Fast ingredient by @nutant233 in [#3270](https://github.com/GregTechCEu/GregTech-Modern/pull/3270) +- Remove the simulated circuit inventory from the Pattern Buffer by @krossgg in [#3285](https://github.com/GregTechCEu/GregTech-Modern/pull/3285) +- Refactor parallel logic in pursuit of TPS by @krossgg in [#3088](https://github.com/GregTechCEu/GregTech-Modern/pull/3088) +- Clean up MapIngredient conversion and backport recipe handler fixes from 1.21 by @screret in [#3273](https://github.com/GregTechCEu/GregTech-Modern/pull/3273) +- clarify CapeRegistry's javadocs and add a KubeJS event for it by @screret in [#3324](https://github.com/GregTechCEu/GregTech-Modern/pull/3324) +- Clean up spray paint color handling by @screret in [#3325](https://github.com/GregTechCEu/GregTech-Modern/pull/3325) +- Stop sending neighbor updates for all active blocks in a multi by @screret in [#3326](https://github.com/GregTechCEu/GregTech-Modern/pull/3326) +- Update zh_tw.json by @IamNotBrianZ in [#3283](https://github.com/GregTechCEu/GregTech-Modern/pull/3283) +- Remove shouldSearchContent by @jurrejelle in [#3334](https://github.com/GregTechCEu/GregTech-Modern/pull/3334) +- Translated using Weblate (Russian) for 1.20.1 by @marisathewitch in [#3282](https://github.com/GregTechCEu/GregTech-Modern/pull/3282) +- Switch networking code to use forge SimpleChannel directly, instead of ldlib networking wrapper by @gustovafing in [#3332](https://github.com/GregTechCEu/GregTech-Modern/pull/3332) +- Remove LDLib renderer usage from machine models & allow them to be modified by resource packs by @screret in [#3275](https://github.com/GregTechCEu/GregTech-Modern/pull/3275) +- Bump GTM version from 1.7.0 to 7.0.0 for next Major Update by @Ghostipedia in [#3164](https://github.com/GregTechCEu/GregTech-Modern/pull/3164) +- Start Deprecation of Chance Boosting and Migrate to New Chance Rates by @WithersChat in [#3026](https://github.com/GregTechCEu/GregTech-Modern/pull/3026) +- Clean up unused and/or useless mixins by @screret in [#3359](https://github.com/GregTechCEu/GregTech-Modern/pull/3359) +- Fix facades coloring grass etc. with the underlying block's color by @screret in [#3392](https://github.com/GregTechCEu/GregTech-Modern/pull/3392) +- Update zh_cn.json 1.20 by @iouter in [#3346](https://github.com/GregTechCEu/GregTech-Modern/pull/3346) + + ## Version [v1.6.4](https://github.com/GregTechCEu/GregTech-Modern/compare/v1.6.3-1.20.1...v1.6.4-1.20.1) ### Added diff --git a/README.md b/README.md index ca15d2312d5..d7d278e903e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -

Logo

+

Logo

GregTech CEu: Modern

-

GregTech:CEu built on modern Minecraft versions for Forge(1.20.1) & NeoForge(1.21+).

+

GregTech:CEu for modern Minecraft versions MinecraftForge (1.20.1) & NeoForge (1.21.1+).

Supported Versions License diff --git a/build.gradle b/build.gradle index 8cf94961bfb..c42fd1dd85b 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,6 @@ plugins { id 'idea' id 'maven-publish' alias libs.plugins.modDevGradle - alias libs.plugins.machete // automatic jar compressing on build //alias libs.plugins.shadow alias libs.plugins.spotless alias libs.plugins.lombok @@ -27,10 +26,12 @@ sourceSets { srcDir 'src/generated/resources' } + client { + compileClasspath += main.output + runtimeClasspath += main.output + main.runtimeClasspath + } + test { - kotlin { - srcDirs += 'src/test/java' - } compileClasspath += main.output runtimeClasspath += main.output + main.runtimeClasspath } @@ -39,10 +40,43 @@ sourceSets { compileClasspath += main.output runtimeClasspath += main.output + main.runtimeClasspath } + + clientExtra { + compileClasspath += client.output + extra.compileClasspath + runtimeClasspath += client.output + client.runtimeClasspath + extra.runtimeClasspath + } +} + +configurations { + // set these as unresolvable so we don't accidentally force all dependents to use them with us + clientRuntimeOnly.canBeResolved = false + extraRuntimeOnly.canBeResolved = false + clientExtraRuntimeOnly.canBeResolved = false + + runtimeClasspath.extendsFrom localRuntime + extraRuntimeClasspath.extendsFrom extraLocalRuntime + clientRuntimeClasspath.extendsFrom clientLocalRuntime + extraClientRuntimeClasspath.extendsFrom clientExtraLocalRuntime + + renderNurseCfg { + canBeConsumed = false + } } +afterEvaluate { + configurations { + // same as above but for the modRuntimeOnly configurations + modClientRuntimeOnly.canBeResolved = false + modExtraRuntimeOnly.canBeResolved = false + modClientExtraRuntimeOnly.canBeResolved = false + } +} obfuscation { - createRemappingConfiguration(configurations.extraRuntimeOnly) + createRemappingConfiguration(configurations.localRuntime) + createRemappingConfiguration(configurations.clientLocalRuntime) + + createRemappingConfiguration(configurations.extraLocalRuntime) + createRemappingConfiguration(configurations.clientExtraLocalRuntime) } apply from: "$rootDir/gradle/scripts/jars.gradle" @@ -60,14 +94,6 @@ tasks.withType(JavaCompile).configureEach { options.compilerArgs << "-Aquiet=true" // Suppress mixin notes } -machete { - // disable machete locally for faster builds - enabled = isCI - // Only optimize reobf jars - ignoredTasks.addAll("jar", "slimJar") - additionalTasks.addAll("reobfJar", "reobfSlimJar") -} - lombok { - version = "1.18.36" + version = "1.18.38" } diff --git a/dependencies.gradle b/dependencies.gradle index 6c41e670394..4334e330e3c 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -12,9 +12,10 @@ dependencies { // Mixin (& Extras) annotationProcessor(variantOf(libs.mixin) { classifier("processor") }) - annotationProcessor(forge.mixinExtras.common) - api(forge.mixinExtras.common) - jarJar(forge.mixinExtras.forge) + compileOnly(annotationProcessor(forge.mixinExtras.common.get())) + jarJar(api(forge.mixinExtras.forge.get())).version { + require("[${forge.versions.mixinExtras.get()},)") + } // Recipe Viewers modCompileOnly(forge.bundles.jei) @@ -32,6 +33,11 @@ dependencies { modCompileOnly(forge.ae2) modCompileOnly(forge.ae2wtlib) + // Create + modCompileOnly(forge.ponder) + modCompileOnly(variantOf(forge.create) { classifier("slim") }) + modCompileOnly(forge.flywheel.forge.api) + // KJS modCompileOnly(forge.kubejs) modCompileOnly(forge.architectury) @@ -41,9 +47,7 @@ dependencies { modCompileOnly(forge.shimmer) modCompileOnly(forge.embeddium) modCompileOnly(forge.oculus) - - // JAVD - modCompileOnly(forge.javd) + modCompileOnly(forge.modernfix) // Teams modCompileOnly(forge.ftblibrary) @@ -63,44 +67,56 @@ dependencies { // GameStages modCompileOnly(forge.gamestages) + // CC: Tweaked + modCompileOnly(forge.cc.tweaked.core.api) + modCompileOnly(forge.cc.tweaked.forge.api) + // Standard runtime mods // - modRuntimeOnly(forge.jade) - modRuntimeOnly(forge.ae2) - modRuntimeOnly(forge.kotlinforforge) + modLocalRuntime(forge.jade) + modLocalRuntime(forge.ae2) + modLocalRuntime(forge.spark) + modLocalRuntime(forge.modernfix) // Runtime Recipe Viewers - uncomment whichever one you want to use // - modRuntimeOnly(forge.emi) -// modRuntimeOnly(forge.jei.forge.impl) -// modRuntimeOnly(forge.bundles.rei.runtime) + modLocalRuntime(forge.emi) +// modLocalRuntime(forge.jei.forge.impl) +// modLocalRuntime(forge.bundles.rei.runtime) + + // Client-only runtime mods // + modClientLocalRuntime(forge.embeddium) + modClientLocalRuntime(forge.oculus) + renderNurseCfg(libs.renderNurse) ////////////////////////////////////////////////////// // Runtime mods for dev testing with unclean client // ////////////////////////////////////////////////////// - modExtraRuntimeOnly(forge.javd) - modExtraRuntimeOnly(forge.trenzalore) - modExtraRuntimeOnly(forge.curios) -// modExtraRuntimeOnly(forge.worldstripper) + modExtraLocalRuntime(forge.javd) + modExtraLocalRuntime(forge.trenzalore) + modExtraLocalRuntime(forge.curios) +// modExtraLocalRuntime(forge.worldstripper) +// modExtraLocalRuntime(forge.cc.tweaked.forge.impl) for some reason this breaks create - modExtraRuntimeOnly(forge.bundles.kjs) + modExtraLocalRuntime(forge.bundles.kjs) - modExtraRuntimeOnly(forge.ftblibrary) - modExtraRuntimeOnly(forge.ftbteams) - modExtraRuntimeOnly(forge.ftbquests) + modExtraLocalRuntime(forge.ftblibrary) + modExtraLocalRuntime(forge.ftbteams) + modExtraLocalRuntime(forge.ftbquests) - modExtraRuntimeOnly(forge.heracles) - modExtraRuntimeOnly(forge.resourcefullib) + modExtraLocalRuntime(forge.heracles) + modExtraLocalRuntime(forge.resourcefullib) -// modExtraRuntimeOnly(forge.xaerosminimap) -// modExtraRuntimeOnly(forge.xaerosworldmap) -// modExtraRuntimeOnly(forge.journeymap.forge) -// modExtraRuntimeOnly(forge.ftbchunks) +// modExtraLocalRuntime(forge.xaerosminimap) +// modExtraLocalRuntime(forge.xaerosworldmap) +// modExtraLocalRuntime(forge.journeymap.forge) +// modExtraLocalRuntime(forge.ftbchunks) - modExtraRuntimeOnly(forge.gamestages) - modExtraRuntimeOnly(forge.bookshelf) + modExtraLocalRuntime(forge.gamestages) + modExtraLocalRuntime(forge.bookshelf) - modExtraRuntimeOnly(forge.spark) - modExtraRuntimeOnly(forge.observable) - ////////////////////////// + modExtraLocalRuntime(forge.kotlinforforge) + modExtraLocalRuntime(forge.observable) - testImplementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") + modExtraLocalRuntime(forge.ponder) + modExtraLocalRuntime(variantOf(forge.create) { classifier("slim") }) + modExtraLocalRuntime(forge.flywheel.forge) } diff --git a/docs/content/Gameplay/Ore-Generation.md b/docs/content/Gameplay/Ore-Generation.md index 0b872dd46f6..de3824819a1 100644 --- a/docs/content/Gameplay/Ore-Generation.md +++ b/docs/content/Gameplay/Ore-Generation.md @@ -68,7 +68,7 @@ Please note that these are the default settings and may be different in certain ### Iron Vein - Goethite -- Yellow Limonite +- Limonite - Hematite - Malachite @@ -216,7 +216,7 @@ Please note that these are the default settings and may be different in certain ### Banded Iron Vein - Goethite -- Yellow Limonite +- Limonite - Hematite - Gold diff --git a/docs/content/Modpacks/Ore-Generation/Bedrock-Ore-Veins.md b/docs/content/Modpacks/Ore-Generation/Bedrock-Ore-Veins.md index b35cb5184cc..494f27d36f1 100644 --- a/docs/content/Modpacks/Ore-Generation/Bedrock-Ore-Veins.md +++ b/docs/content/Modpacks/Ore-Generation/Bedrock-Ore-Veins.md @@ -27,7 +27,7 @@ GTCEuServerEvents.bedrockOreVeins(event => { .size(3) // (1) .yield(10, 20) .material(GTMaterials.Goethite, 5) // (2) - .material(GTMaterials.YellowLimonite, 2) + .material(GTMaterials.Limonite, 2) .material(GTMaterials.Hematite, 2) .material(GTMaterials.Malachite, 1) .dimensions('minecraft:overworld') diff --git a/docs/content/Modpacks/Other-Topics/Custom-Machines.md b/docs/content/Modpacks/Other-Topics/Custom-Machines.md index 4f81fb848fc..7ba98823950 100644 --- a/docs/content/Modpacks/Other-Topics/Custom-Machines.md +++ b/docs/content/Modpacks/Other-Topics/Custom-Machines.md @@ -120,7 +120,7 @@ GTCEuStartupEvents.registry('gtceu:machine', event => { .where('G', Block.getBlock('minecraft:glass')) .where('D', GTBlocks.COIL_CUPRONICKEL.get()) .where('S', GTMachines.MUFFLER_HATCH[1], Direction.UP) - .where('M', GTMachines.MAINTENANCE_HATCH[1], Direction.SOUTH) + .where('M', GTMachines.MAINTENANCE_HATCH, Direction.SOUTH) .where('e', GTMachines.ENERGY_INPUT_HATCH[1], Direction.NORTH) .where('i', GTMachines.ITEM_IMPORT_BUS[1], Direction.SOUTH) .where('0', GTMachines.ITEM_EXPORT_BUS[1], Direction.SOUTH) diff --git a/docs/content/Modpacks/Other-Topics/Modifying-Crafting-Components.md b/docs/content/Modpacks/Other-Topics/Modifying-Crafting-Components.md deleted file mode 100644 index 8dc2e2e7f32..00000000000 --- a/docs/content/Modpacks/Other-Topics/Modifying-Crafting-Components.md +++ /dev/null @@ -1,150 +0,0 @@ ---- -title: "Modifying Crafting Components" ---- - -# Modifying Crafting Components - -## Changing a single entry - -With KubeJS it is possible to modify the predefined components of existing GTCEu Modern machine crafting recipes. -You can replace singular entries, or do bulk modification of components. --1 is defined as a fallback value if no other entries exist. if you modify in bulk, you **MUST** insert one if the component expects it to exist. otherwise the game may crash when loading recipes. Other numbers correspond to tier indices. for example: `3 == GTValues.HV` - -```js title="modification.js" -const Map = Java.loadClass("java.util.Map") - -GTCEuServerEvents.craftingComponents(event => { - event.modifyItem(CraftingComponent.CIRCUIT, GTValues.MV, Item.of('minecraft:dirt')) // (1) - event.modifyItem(CraftingComponent.PUMP, Map.of( - GTValues.FALLBACK, Item.of('gtceu:lv_robot_arm'), - GTValues.LV, Item.of('gtceu:lv_robot_arm'), - GTValues.MV, Item.of('gtceu:mv_robot_arm'), - GTValues.HV, Item.of('gtceu:hv_robot_arm'), - GTValues.EV, Item.of('gtceu:ev_robot_arm'), - GTValues.IV, Item.of('gtceu:iv_robot_arm'), - GTValues.LuV, Item.of('gtceu:luv_robot_arm'), - GTValues.ZPM, Item.of('gtceu:zpm_robot_arm'), - GTValues.UV, Item.of('gtceu:uv_robot_arm'), - )) // (2) - event.modifyTag(CraftingComponent.CASING, GTValues.EV, 'minecraft:logs') // (3) - event.modifyUnificationEntry(CraftingComponent.PLATE, GTValues.UEV, new UnificationEntry('plate', 'gtceu:infinity')) // (4) -}) -``` - -1. Replaces the MV circuit tag in all GT machine crafting recipes with a single block of `minecraft:dirt`. -2. Modifies all pumps in GT machine crafting recipes by replacing the pump with a robot arm, and reinserts the FALLBACK entry. -3. Replaces the EV casing with the `#minecraft:logs` tag. note the lack of `#` at the beginning of the tag! -4. Adds a new entry to the plate component for UEV with prefix `plate` and material `gtceu:infinity`. - -!!! tip "Bulk Callbacks" - - All the bulk callbacks (`modify*` functions that take two parameters instead of three, see example 2) work the same as the single modification functions, except they take a map of `int: value` instead of a single entry. - - -## Creating new components - -It's also possible to create new crafting components with KubeJS. -You must add entries for all tiers you're planning to use, and a FALLBACK if the map *may* be indexed out of bounds at all. -It's recommended to always add a FALLBACK entry. - -```js title="creation.js" -const Map = Java.loadClass("java.util.Map") - -let ITEM_CRAFTING_COMPONENT = null -let TAG_CRAFTING_COMPONENT = null -let UNIFICATION_CRAFTING_COMPONENT = null - -GTCEuServerEvents.craftingComponents(event => { - ITEM_CRAFTING_COMPONENT = event.createItem(Map.of( - GTValues.FALLBACK: Item.of('minecraft:cyan_stained_glass'), - GTValues.LV: Item.of('minecraft:cyan_stained_glass'), - GTValues.MV: Item.of('minecraft:cyan_stained_glass'), - GTValues.HV: Item.of('minecraft:cyan_stained_glass'), - GTValues.EV: Item.of('minecraft:lime_stained_glass'), - GTValues.IV: Item.of('minecraft:lime_stained_glass'), - GTValues.LuV: Item.of('minecraft:lime_stained_glass'), - GTValues.ZPM: Item.of('minecraft:magenta_stained_glass'), - GTValues.UV: Item.of('minecraft:magenta_stained_glass'), - )) // (1) - TAG_CRAFTING_COMPONENT = event.createTag(Map.of( - GTValues.FALLBACK: 'forge:barrels/wooden' - GTValues.LV: 'forge:chests/wooden' - GTValues.MV: 'forge:chests/trapped' - GTValues.HV: 'forge:chests/ender' - GTValues.EV: 'forge:cobblestone' - GTValues.IV: 'forge:cobblestone/normal' - GTValues.LuV: 'forge:cobblestone/infested' - GTValues.ZPM: 'forge:cobblestone/mossy' - GTValues.UV: 'forge:cobblestone/deepslate' - )) // (2) - UNIFICATION_CRAFTING_COMPONENT = event.createUnificationEntry(Map.of( - GTValues.FALLBACK: new UnificationEntry('plate', 'gtceu:infinity') - GTValues.LV: new UnificationEntry('block', 'gtceu:infinity') - GTValues.MV: new UnificationEntry('ingot', 'gtceu:infinity') - GTValues.HV: new UnificationEntry('dust', 'gtceu:infinity') - GTValues.EV: new UnificationEntry('round', 'gtceu:infinity') - GTValues.IV: new UnificationEntry('foil', 'gtceu:infinity') - GTValues.LuV: new UnificationEntry('longRod', 'gtceu:infinity') - GTValues.ZPM: new UnificationEntry('rod', 'gtceu:infinity') - GTValues.UV: new UnificationEntry('bolt', 'gtceu:infinity') - )) // (3) -}) -``` - -1. Creates a new crafting component with item stack entries. -2. Creates a new crafting component with item tag entries. note the lack of `#` at the beginning of the tag! -3. Creates a new crafting component with UnificationEntry entries. - - -### Builtin Crafting Components - -- `CIRCUIT` -- `BETTER_CIRCUIT` -- `PUMP` -- `WIRE_ELECTRIC` -- `WIRE_QUAD` -- `WIRE_OCT` -- `WIRE_HEX` -- `CABLE` -- `CABLE_DOUBLE` -- `CABLE_QUAD` -- `CABLE_OCT` -- `CABLE_HEX` -- `CABLE_TIER_UP` -- `CABLE_TIER_UP_DOUBLE` -- `CABLE_TIER_UP_QUAD` -- `CABLE_TIER_UP_OCT` -- `CABLE_TIER_UP_HEX` -- `CASING` -- `HULL` -- `PIPE_NORMAL` -- `PIPE_LARGE` -- `PIPE_NONUPLE` -- `GLASS` -- `PLATE` -- `HULL_PLATE` -- `MOTOR` -- `ROTOR` -- `SENSOR` -- `GRINDER` -- `SAWBLADE` -- `DIAMOND` -- `PISTON` -- `EMITTER` -- `CONVEYOR` -- `ROBOT_ARM` -- `COIL_HEATING` -- `COIL_HEATING_DOUBLE` -- `COIL_ELECTRIC` -- `STICK_MAGNETIC` -- `STICK_DISTILLATION` -- `FIELD_GENERATOR` -- `STICK_ELECTROMAGNETIC` -- `STICK_RADIOACTIVE` -- `PIPE_REACTOR` -- `POWER_COMPONENT` -- `VOLTAGE_COIL` -- `SPRING` -- `CRATE` -- `DRUM` -- `FRAME` diff --git a/docs/content/Modpacks/Recipes/Crafting-Components.md b/docs/content/Modpacks/Recipes/Crafting-Components.md new file mode 100644 index 00000000000..4c56bf47351 --- /dev/null +++ b/docs/content/Modpacks/Recipes/Crafting-Components.md @@ -0,0 +1,163 @@ +--- +title: "Crafting Components" +--- + +# Crafting Components + +Crafting Components are a way to organize and simplify the various similar recipes that GregTech generates. For example: writing out the recipes for all tiers of an alloy smelter can be done iteratively rather than one by one. + +Crafting Components are a map pairing a Voltage tier (the tier number) to a value. The value can be a `MaterialEntry`, `ItemStack`, or `TagPrefix`. + +## Changing a single entry + +With KubeJS it is possible to modify the predefined components of existing GTCEu Modern machine crafting recipes. +You can replace singular entries, or do bulk modification of components. +-1 is defined as a fallback value if no other entries exist. + +```js title="startup/modification.js" +const Map = Java.loadClass("java.util.Map") + +GTCEuStartupEvents.craftingComponents(event => { + event.setItem(GTCraftingComponents.CIRCUIT, GTValues.MV, Item.of('minecraft:dirt')) // (1) + event.setItems(GTCraftingComponents.PUMP, Map.of( + GTValues.LV, Item.of('gtceu:lv_robot_arm'), + GTValues.MV, Item.of('gtceu:mv_robot_arm'), + GTValues.HV, Item.of('gtceu:hv_robot_arm'), + GTValues.EV, Item.of('gtceu:ev_robot_arm'), + GTValues.IV, Item.of('gtceu:iv_robot_arm'), + GTValues.LuV, Item.of('gtceu:luv_robot_arm'), + GTValues.ZPM, Item.of('gtceu:zpm_robot_arm'), + GTValues.UV, Item.of('gtceu:uv_robot_arm'), + )) // (2) + event.setTag(GTCraftingComponents.CASING, GTValues.EV, 'minecraft:logs') // (3) + event.setMaterialEntry(GTCraftingComponents.PLATE, GTValues.UEV, new MaterialEntry('plate', 'gtceu:infinity')) // (4) + event.removeTier("sensor", 3) // (5) +}) +``` +1. Replaces the MV circuit tag in all GT machine crafting recipes with a single block of `minecraft:dirt`. +2. Modifies all pumps in GT machine crafting recipes by replacing the pump with a robot arm. +3. Replaces the EV casing with the `#minecraft:logs` tag. note the lack of `#` at the beginning of the tag! +4. Adds a new entry to the plate component for UEV with prefix `plate` and material `gtceu:infinity`. +5. Removes the 3rd offset entry `(HV Tier)` of the sensor crafting component, will default to the fallback `(LV Sensor)` + + +## Creating new components + +It's also possible to create new crafting components with KubeJS. +The crafting component is constructed with a id and a fallback value. You can add entries by chaining `.add(tier, value)` methods after your construction. + +```js title="creation.js" +const Map = Java.loadClass("java.util.Map") + +let ITEM_CRAFTING_COMPONENT = null +let TAG_CRAFTING_COMPONENT = null +let UNIFICATION_CRAFTING_COMPONENT = null + +GTCEuServerEvents.craftingComponents(event => { + ITEM_CRAFTING_COMPONENT = event.createItem("item_component", 'minecraft:cyan_stained_glass') + .addItem(GTValues.LV, Item.of('minecraft:cyan_stained_glass')) + .addItem(GTValues.MV, Item.of('minecraft:cyan_stained_glass')) + .addItem(GTValues.HV, Item.of('minecraft:cyan_stained_glass')) + .addItem(GTValues.EV, Item.of('minecraft:lime_stained_glass')) + .addItem(GTValues.IV, Item.of('minecraft:lime_stained_glass')) + .addItem(GTValues.LuV, Item.of('minecraft:lime_stained_glass')) + .addItem(GTValues.ZPM, Item.of('minecraft:magenta_stained_glass')) + .addItem(GTValues.UV, Item.of('minecraft:magenta_stained_glass')) + // (1) + TAG_CRAFTING_COMPONENT = event.createTag("tag_component", 'forge:barrels/wooden') + .addTag(GTValues.LV, 'forge:chests/wooden') + .addTag(GTValues.MV, 'forge:chests/trapped') + .addTag(GTValues.HV, 'forge:chests/ender') + .addTag(GTValues.EV, 'forge:cobblestone') + .addTag(GTValues.IV, 'forge:cobblestone/normal') + .addTag(GTValues.LuV, 'forge:cobblestone/infested') + .addTag(GTValues.ZPM, 'forge:cobblestone/mossy') + .addTag(GTValues.UV, 'forge:cobblestone/deepslate') + // (2) + UNIFICATION_CRAFTING_COMPONENT = event.createMaterialEntry("material_entry_component", new MaterialEntry('plate', 'gtceu:infinity')) + .addMaterialEntry(GTValues.LV, new MaterialEntry('block', 'gtceu:infinity')) + .addMaterialEntry(GTValues.MV, 'ingot', 'gtceu:infinity') + .addMaterialEntry(GTValues.HV, new MaterialEntry('dust', 'gtceu:infinity')) + .addMaterialEntry(GTValues.EV, new MaterialEntry('round', 'gtceu:infinity')) + .addMaterialEntry(GTValues.IV, new MaterialEntry('foil', 'gtceu:infinity')) + .addMaterialEntry(GTValues.LuV, 'longRod', 'gtceu:infinity') + .addMaterialEntry(GTValues.ZPM, new MaterialEntry('rod', 'gtceu:infinity')) + .addMaterialEntry(GTValues.UV, new MaterialEntry('bolt', 'gtceu:infinity')) + // (3) +}) +``` + +1. Creates a new crafting component with item stack entries. +2. Creates a new crafting component with item tag entries. note the lack of `#` at the beginning of the tag! +3. Creates a new crafting component with UnificationEntry entries. + +## Retrieving existing crafting components + +All `remove`, `modify*`, and `setFallback*` methods use a Crafting Component as its first argument, you can supply that argument with just a string matching the id of the crafting component + +```js title="modify.js" + +GTCEuServerEvents.craftingComponents(event => { + event.removeTier('robot_arm', GTValues.EV) // (1) + + event.removeTiers('pump', GTValues.EV, GTValues.IV, GTValues.LuV) // (2) +}) +``` + +1. Finds the crafting component with id `robot_arm` and removes the entry for `EV` tier +2. Finds the crafting component with id `pump` and removes the entry for `EV, IV & LuV` tiers + +### Builtin Crafting Components + +- `CIRCUIT 'circuit'` +- `BETTER_CIRCUIT 'better_circuit'` +- `WIRE_ELECTRIC 'wire_single'` +- `WIRE_QUAD 'wire_quad'` +- `WIRE_OCT 'wire_oct'` +- `WIRE_HEX 'wire_hex'` +- `CABLE 'cable_single'` +- `CABLE_DOUBLE 'cable_double'` +- `CABLE_QUAD 'cable_quad'` +- `CABLE_OCT 'cable_oct'` +- `CABLE_HEX 'cable_hex'` +- `CABLE_TIER_UP 'cable_tier_up_single'` +- `CABLE_TIER_UP_DOUBLE 'cable_tier_up_double'` +- `CABLE_TIER_UP_QUAD 'cable_tier_up_quad'` +- `CABLE_TIER_UP_OCT 'cable_tier_up_oct'` +- `CABLE_TIER_UP_HEX 'cable_tier_up_hex'` +- `CASING 'casing'` +- `HULL 'hull'` +- `PIPE_NORMAL 'normal_pipe'` +- `PIPE_LARGE 'large_pipe'` +- `PIPE_NONUPLE 'nonuple_pipe'` +- `GLASS 'glass'` +- `PLATE 'plate'` +- `HULL_PLATE 'hull_plate'` +- `ROTOR 'rotor'` +- `GRINDER 'grinder'` +- `SAWBLADE 'sawblade'` +- `DIAMOND 'diamond'` +- `MOTOR 'motor'` +- `PUMP 'pump'` +- `PISTON 'piston'` +- `EMITTER 'emitter'` +- `SENSOR 'sensor'` +- `CONVEYOR 'conveyor'` +- `ROBOT_ARM 'robot_arm'` +- `FIELD_GENERATOR 'field_generator'` +- `COIL_HEATING 'coil_heating'` +- `COIL_HEATING_DOUBLE 'coil_heating_double'` +- `COIL_ELECTRIC 'coil_electric'` +- `STICK_MAGNETIC 'rod_magnetic'` +- `STICK_DISTILLATION 'rod_distillation'` +- `STICK_ELECTROMAGNETIC 'rod_electromagnetic'` +- `STICK_RADIOACTIVE 'rod_radioactive'` +- `PIPE_REACTOR 'pipe_reactor'` +- `POWER_COMPONENT 'power_component'` +- `VOLTAGE_COIL 'voltage_coil'` +- `SPRING 'spring'` +- `CRATE 'crate'` +- `DRUM 'drum'` +- `FRAME 'frame'` +- `SMALL_SPRING_TRANSFORMER 'small_spring_transformer'` +- `SPRING_TRANSFORMER 'spring_transformer'` \ No newline at end of file diff --git a/docs/content/Modpacks/Recipes/Material-Entries.md b/docs/content/Modpacks/Recipes/Material-Entries.md new file mode 100644 index 00000000000..6c81a961fc9 --- /dev/null +++ b/docs/content/Modpacks/Recipes/Material-Entries.md @@ -0,0 +1,99 @@ +--- +title: "Material Entry" +--- + +# Material Entries + +With the abundance of items in GregTech, there comes an abundance of recipes to craft those items into. However, sometimes you make too many of a certain item and want to recover your lost materials. Luckily you can do that with GT's built in recycling system. + +Any recipe that crafts an item, whether it be through a crafting table or a GT machine, can be specified to generate an additional recipe for decomposing that output item in the Macerator, Arc Furnace, and Extractor. + +## ItemMaterialInfo + +Before 7.0, the way to specify the decomposition information (called the `ItemMaterialInfo`) of an item was to strictly append it like the following: + +```java title="ItemMaterialInfo.java" +ChemicalHelper.registerMaterialInfo(GTBlocks.COIL_KANTHAL.get(), + new ItemMaterialInfo(new MaterialStack(GTMaterials.Kanthal, M * 8), // double wire + new MaterialStack(GTMaterials.Aluminium, M * 2), // foil + new MaterialStack(GTMaterials.Copper, M)) // ingot + ); // (1) + + VanillaRecipeHelper.addShapedRecipe(provider, true, // (2) + "casing_bronze_bricks", GTBlocks.CASING_BRONZE_BRICKS.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft), + "PhP", "PBP", "PwP", + 'P', new MaterialEntry(TagPrefix.plate, GTMaterials.Bronze), + 'B', new ItemStack(Blocks.BRICKS)); + +``` + +1. `GTValues.M` denotes a single (1) mol amount of the material (usually 1 full dust's worth) +2. The boolean denotes whether to generate a decomposition recipe for this recipe + +In 7.0, a system was introduced to automatically detect the inputs of a recipe and use that information when generating a decomposition recipe for the resulting items. + +You can tell recipes to generate recycling information using either `.addMaterialInfo(true)` for item inputs ONLY or `addMaterialInfo(true, true)` for item and fluid inputs. You can also remove existing ItemMaterialInfo from an output item using `.removePreviousMaterialInfo()`, which will tell GT to not generate recycling recipes for the item output in that recipe. + +In KubeJS, adding decomposition info to a recipe would look as follows: + +```js title="itemDecomp.js" + +ServerEvents.recipes(event => { + event.recipes.gtceu.assembler('mv_hatch') + .itemInputs('17x gtceu:iron_plate') + .itemOutputs('1x gtceu:mv_energy_output_hatch') + .duration(20) + .addMaterialInfo(true) // (1) + .EUt(10) + + event.recipes.gtceu.assembler('bucket') + .itemInputs('4x minecraft:gold_ingot') + .itemOutputs('minecraft:bucket') + .removePreviousMaterialInfo() // (2) + .duration(20) + .EUt(23) +}) + +``` + +1. Generates a recycling recipe turning an MV energy hatch into 17 iron dust. +!!! note inline end + This will overwrite the original recycling recipe if it exists. + +2. Buckets will no longer have recycling recipes + +The ItemMaterialInfo system only takes into account the first item output a recipe has when appending material information to that item. However, it will automatically scale the decomposition rate based on the amount of the output stack. + +```js title="Seven Dirt" +ServerEvents.recipes(event => { + event.recipes.gtceu.assembler('mv_hatch') + .itemInputs('21x gtceu:iron_plate') + .itemOutputs('7x minecraft:dirt') + .duration(20) + .addMaterialInfo(true) // (1) + .EUt(10) +}) +``` + +1. Each dirt will turn into 3 iron dust when macerated + +## Crafting Table Recipes with Decomposition information + +```js title="Crafting Table" +ServerEvents.recipes(event => { + event.recipes.gtceu.shaped('4x kubejs:examplium', [ + " A ", + "ABA", + " A " + ], { + A: "gtceu:steel_ingot", + B: "minecraft:nether_star" + }) + .addMaterialInfo(true) // (1) +}) +``` + +1. Each examplium will turn into 1 steel dust and 1 small nether star dust when macerated + +??? tip "Decomposition recipes with Java" + You can still generate decomposition information for shapeless or shaped recipes with `VanillaRecipeHelper`, the argument was just renamed from `withUnificationData` to `setMaterialInfoData` diff --git a/docs/content/Modpacks/Recipes/TagPrefixRecipeGeneration.md b/docs/content/Modpacks/Recipes/TagPrefixRecipeGeneration.md new file mode 100644 index 00000000000..47ecefcae8c --- /dev/null +++ b/docs/content/Modpacks/Recipes/TagPrefixRecipeGeneration.md @@ -0,0 +1,54 @@ +--- +title: "Tag Prefix Recipe Generation" +--- + +# Generating recipes based on TagPrefixes + +Most recipes that turn some form of a material into another form, like iron ingots to iron plates, or tin bolts into tin screws, are done through tag prefix based recipe generation. + +Gregtech will iterate through all materials and all tag prefixes possible for that material to generate recipes. You can do the same in your addon by mirroring the following: + +```java title="TagPrefixRecipes.java" + +public static void recipeAddition(Consumer consumer) { + + for (Material material : GTCEuAPI.materialManager.getRegisteredMaterials()) { + if (material.hasFlag(MaterialFlags.NO_UNIFICATION)) { + continue; + } + MaterialRecipeHandler.run(provider, material) + } + +} + +``` + +```java title="MaterialRecipeHandler.java" + +public static void run(@NotNull Consumer provider, @NotNull Material material) { + processFrame(provider, material); +} + +private static void processFrame(@NotNull Consumer provider, @NotNull Material material) { + if (!material.shouldGenerateRecipesFor(frameGt) || !material.hasProperty(PropertyKey.DUST)) { + return; + } // (1) + + if (material.hasFlag(GENERATE_FRAME)) { + boolean isWoodenFrame = material.hasProperty(PropertyKey.WOOD); + VanillaRecipeHelper.addShapedRecipe(provider, String.format("frame_%s", material.getName()), + ChemicalHelper.get(frameGt, material, 2), + "SSS", isWoodenFrame ? "SsS" : "SwS", "SSS", + 'S', new UnificationEntry(rod, material)); + + ASSEMBLER_RECIPES.recipeBuilder("assemble_" + material.getName() + "_frame") + .inputItems(rod, material, 4) + .circuitMeta(4) + .outputItems(frameGt, material) + .EUt(VA[ULV]).duration(64) + .save(provider); + } + } + +``` +1. Checks that the material has a valid item with that specific tag prefix and can generate the recipe. \ No newline at end of file diff --git a/docs/content/index.md b/docs/content/index.md index 526122aad82..db33d56fd9c 100644 --- a/docs/content/index.md +++ b/docs/content/index.md @@ -23,6 +23,5 @@ You can download an offline version of this wiki here: ## Want to Contribute? - -If you want to contribute to this documentation site, feel free to open a pull request on -[its GitHub repository](https://github.com/GregTechCEu/gtceu-modern-docs). +If you want to contribute to this documentation site, feel free to read [the instructions](https://github.com/GregTechCEu/GregTech-Modern/blob/1.20.1/docs/CONTRIBUTING.md) and open a pull request on the [GitHub repository](https://github.com/GregTechCEu/GregTech-Modern). +``` diff --git a/gradle.properties b/gradle.properties index 78c7206b722..a07862c46ee 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ org.gradle.caching = true # Mod Info mod_id = gtceu mod_name = GregTech -mod_version = 1.7.0 +mod_version = 7.1.2 mod_description = GregTech CE Unofficial, ported from 1.12.2 mod_license = LGPL-3.0 license mod_url = https://github.com/GregTechCEu/GregTech-Modern/ diff --git a/gradle/forge.versions.toml b/gradle/forge.versions.toml index bbb6d567c7c..1a7849a8925 100644 --- a/gradle/forge.versions.toml +++ b/gradle/forge.versions.toml @@ -1,15 +1,15 @@ [versions] -ldlib = "1.0.39" +ldlib = "1.0.40.b" registrate = "MC1.20-1.3.11" configuration = "2.2.0" -mixinExtras = "0.2.0" +mixinExtras = "0.5.0-rc.3" jei = "15.20.0.105" rei = "12.1.785" emi = "1.1.13+1.20.1" ae2 = "15.0.18" -kubejs = "2001.6.4-build.120" -rhino = "2001.2.3-build.6" +kubejs = "2001.6.5-build.16" +rhino = "2001.2.3-build.10" architectury = "9.2.14" clothconfig = "11.1.136" theoneprobe = "1.20.1-10.0.1-3" @@ -19,13 +19,18 @@ shimmer = "1.20.1-0.2.4" journeyMapApi = "1.20-1.9-SNAPSHOT" ftblibrary = "2001.2.4" ftbteams = "2001.3.0" -ftbquests= "2001.4.11" +ftbquests = "2001.4.11" ftbchunks = "2001.3.4" +ccTweaked = "1.114.3" +create = "6.0.6-150" +ponder = "1.0.80" +flywheel = "1.0.4" ## modrinth maven ## jade = "11.6.3" -embeddium = "0.3.19+mc1.20.1" -oculus = "1.20.1-1.7.0" +embeddium = "0.3.31+mc1.20.1" +oculus = "1.20.1-1.8.0" +modernfix = "DdUByV9S" # 5.24.1+mc1.20.1 ## cursemaven ## worldStripper = "4578579" @@ -64,6 +69,10 @@ rei-forge = { module = "me.shedaniel:RoughlyEnoughItems-forge", versio emi = { module = "dev.emi:emi-forge", version.ref = "emi" } ae2 = { module = "appeng:appliedenergistics2-forge", version.ref = "ae2" } +create = { module = "com.simibubi.create:create-1.20.1", version.ref = "create"} +ponder = { module = "net.createmod.ponder:Ponder-Forge-1.20.1", version.ref = "ponder"} +flywheel-forge-api = { module = "dev.engine-room.flywheel:flywheel-forge-api-1.20.1", version.ref = "flywheel"} +flywheel-forge = { module = "dev.engine-room.flywheel:flywheel-forge-1.20.1", version.ref = "flywheel"} kubejs = { module = "dev.latvian.mods:kubejs-forge", version.ref = "kubejs" } rhino = { module = "dev.latvian.mods:rhino-forge", version.ref = "rhino" } architectury = { module = "dev.architectury:architectury-forge", version.ref = "architectury" } @@ -80,6 +89,12 @@ ftbchunks = { module = "dev.ftb.mods:ftb-chunks-forge", version.ref = jade = { module = "maven.modrinth:jade", version.ref = "jade" } embeddium = { module = "maven.modrinth:embeddium", version.ref = "embeddium" } oculus = { module = "maven.modrinth:oculus", version.ref = "oculus" } +modernfix = { module = "maven.modrinth:modernfix", version.ref = "modernfix" } + + +cc-tweaked-core-api = { module = "cc.tweaked:cc-tweaked-1.20.1-core-api", version.ref = "ccTweaked" } +cc-tweaked-forge-api = { module = "cc.tweaked:cc-tweaked-1.20.1-forge-api", version.ref = "ccTweaked" } +cc-tweaked-forge-impl = { module = "cc.tweaked:cc-tweaked-1.20.1-forge", version.ref = "ccTweaked" } worldstripper = { module = "curse.maven:worldStripper-250603", version.ref = "worldStripper" } javd = { module = "curse.maven:javd-370890", version.ref = "javd" } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9f55bfd97d5..66c8166fb8e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,22 +5,21 @@ minecraftForge = "1.20.1-47.3.0" parchment = "2023.09.03" # https://parchmentmc.org/docs/getting-started shadow = "8.3.5" spotless = "7.0.2" -# TODO: Update to stable MDG when https://github.com/neoforged/ModDevGradle/issues/227 is fixed -modDevGradle = "2.0.64-beta" -machete = "2.0.1" -lombok = "8.11" +modDevGradle = "2.0.86" +lombok = "8.14" jetbrains-annotations = "26.0.1" +renderNurse = "0.0.12" mixin = "0.8.7" [libraries] minecraft = { module = "com.mojang:minecraft", version.ref = "minecraft" } minecraftForge = { module = "net.minecraftforge:forge", version.ref = "minecraftForge" } jetbrains-annotations = { module = "org.jetbrains:annotations", version.ref = "jetbrains-annotations" } +renderNurse = { module = "net.neoforged:render-nurse", version.ref = "renderNurse" } mixin = { module = "org.spongepowered:mixin", version.ref = "mixin" } [plugins] modDevGradle = { id = "net.neoforged.moddev.legacyforge", version.ref = "modDevGradle" } shadow = { id = "com.gradleup.shadow", version.ref = "shadow" } spotless = { id = "com.diffplug.spotless", version.ref = "spotless" } -machete = { id = "io.github.p03w.machete", version.ref = "machete" } lombok = { id = "io.freefair.lombok", version.ref = "lombok" } diff --git a/gradle/scripts/jars.gradle b/gradle/scripts/jars.gradle index a422235be75..5f2c4979701 100644 --- a/gradle/scripts/jars.gradle +++ b/gradle/scripts/jars.gradle @@ -1,4 +1,5 @@ tasks.register('slimJar', Jar) { + dependsOn("classes") archiveClassifier = "dev-slim" from sourceSets.main.output } @@ -9,20 +10,12 @@ obfuscation { } } -// Add slim and sources jar to components.java +// Add sources jar to components.java java { artifacts.archives(reobfSlimJar) withSourcesJar() } -// Use delombok'd files for sources -sourcesJar { - exclude { - sourceSets.main.allSource.contains it.file - } - from delombok -} - jar.archiveClassifier = "dev" base { diff --git a/gradle/scripts/moddevgradle.gradle b/gradle/scripts/moddevgradle.gradle index 91f5a0d9426..3f857566965 100644 --- a/gradle/scripts/moddevgradle.gradle +++ b/gradle/scripts/moddevgradle.gradle @@ -1,9 +1,25 @@ +import org.gradle.internal.os.OperatingSystem + +ext.isJetbrainsRuntime = System.getProperty('java.vm.vendor').contains('JetBrains') + mixin { var refmap = add sourceSets.main, "gtceu.refmap.json" slimJar.from refmap config 'gtceu.mixins.json' } +// we have to force LWJGL version 3.3.2, because RenderNurse requires Java 21, and LWJGL 3.3.1 cannot run on Java 21. +configurations.configureEach { + resolutionStrategy { + eachDependency { + if (it.requested.group == "org.lwjgl") { + it.useVersion("3.3.2") + it.because("We need a version of LWJGL that supports java 21 for RenderDoc support") + } + } + } +} + legacyForge { // Specify Forge version version = libs.versions.minecraftForge.get() @@ -16,6 +32,8 @@ legacyForge { // This line is optional. Access Transformers are automatically detected accessTransformers = project.files('src/main/resources/META-INF/accesstransformer.cfg') + interfaceInjectionData = project.files('injected_interfaces/interfaces.json') + addModdingDependenciesTo(sourceSets.test) // addModdingDependenciesTo(sourceSets.extra) @@ -23,15 +41,17 @@ legacyForge { // define mod <-> source bindings "${mod_id}" { sourceSet(sourceSets.main) + sourceSet(sourceSets.client) sourceSet(sourceSets.test) sourceSet(sourceSets.extra) + sourceSet(sourceSets.clientExtra) } } runs { client { client() - sourceSet = sourceSets.extra + sourceSet = sourceSets.clientExtra ideName = "Client 1" systemProperty('forge.enabledGameTestNamespaces', project.mod_id) @@ -39,26 +59,36 @@ legacyForge { client2 { client() - sourceSet = sourceSets.extra + sourceSet = sourceSets.clientExtra ideName = "Client 2" - programArguments.addAll('--username', 'YoungOnion') + programArguments.addAll('--username', 'YoungOnion', '--uuid', '3a27782d-6864-4814-a9fe-7c6931f29a8a') + systemProperty('forge.enabledGameTestNamespaces', project.mod_id) + } + + server { + server() + sourceSet = sourceSets.extra + ideName = "Server" + + gameDirectory.set(file('run/server')) + programArguments.addAll('--nogui', '--world', 'world-extra') systemProperty('forge.enabledGameTestNamespaces', project.mod_id) } // Client with GTM + Jade, EMI, AE2 cleanClient { client() - sourceSet = sourceSets.main + sourceSet = sourceSets.client ideName = "Clean Client" systemProperty('forge.enabledGameTestNamespaces', project.mod_id) } - server { + cleanServer { server() sourceSet = sourceSets.main - ideName = "Server" + ideName = "Clean Server" gameDirectory.set(file('run/server')) programArgument '--nogui' @@ -75,6 +105,7 @@ legacyForge { gameDirectory.set(file('run/gametest')) systemProperty('forge.enabledGameTestNamespaces', project.mod_id) + environment('TEST', 'true') } data { @@ -90,6 +121,26 @@ legacyForge { programArguments.addAll('--existing', file('src/main/resources/').getAbsolutePath()) } + String renderDocPath = System.getenv("RENDERDOC_LIB") + // RenderDoc cannot run on macos so we don't add the config for mac users + if(renderDocPath != null && !OperatingSystem.current().isMacOsX()) { + create("renderDocClient") { + client() + sourceSet = sourceSets.client + ideName = "Clean Client + RenderDoc (Requires Java 21)" + + programArguments.addAll('--username', 'screret', '--uuid', '1184eb79-5831-4f7d-b8f4-3a46fccf7a1d') + + systemProperty("neoforge.rendernurse.renderdoc.library", renderDocPath) + if(OperatingSystem.current().isLinux()) { + environment("LD_PRELOAD", renderDocPath) + } + // parses out the render nurse jar path and adds as `-javaagent:${path}` + jvmArguments.addAll(project.configurations.renderNurseCfg.incoming.files.elements.map { it.collect { "-javaagent:${it.asFile.absolutePath}" }}) + jvmArguments.addAll("--enable-preview", "--enable-native-access=ALL-UNNAMED") + } + } + // applies to all the run configs above configureEach { // Recommended logging data for a userdev environment diff --git a/gradle/scripts/publishing.gradle b/gradle/scripts/publishing.gradle index 8e99be43ea9..96bff81ae7d 100644 --- a/gradle/scripts/publishing.gradle +++ b/gradle/scripts/publishing.gradle @@ -2,6 +2,7 @@ publishing { publications { mavenJava(MavenPublication) { artifactId = base.archivesName.get() + artifact(reobfSlimJar) from components.java } } diff --git a/gradle/scripts/repositories.gradle b/gradle/scripts/repositories.gradle index da520853d14..f70e89ac2ac 100644 --- a/gradle/scripts/repositories.gradle +++ b/gradle/scripts/repositories.gradle @@ -2,11 +2,6 @@ repositories { mavenLocal() mavenCentral() - maven { // KubeJS and Rhino - name = "Saps.dev Maven" - url = "https://maven.saps.dev/minecraft" - } - maven { // JEI name = "Jared's Maven" url = "https://maven.blamejared.com/" @@ -22,6 +17,18 @@ repositories { url = "https://maven.firstdarkdev.xyz/snapshots" } + exclusiveContent { // Create, Ponder, Flywheel + forRepository { maven { url = "https://maven.createmod.net" } } + filter { + includeGroup("net.createmod.ponder") + includeGroup("com.simibubi.create") + includeGroup("dev.engine-room.flywheel") + } + } + exclusiveContent { // KubeJS and Rhino + forRepository { maven { url = "https://maven.latvian.dev/releases" } } + filter { includeGroup("dev.latvian.mods")} + } exclusiveContent { // FTB mods forRepository { maven { url = "https://maven.ftb.dev/releases" } } filter { includeGroup("dev.ftb.mods") } @@ -65,4 +72,8 @@ repositories { forRepository { maven { url = "https://thedarkcolour.github.io/KotlinForForge/" } } filter { includeGroup("thedarkcolour") } } + exclusiveContent { // CC: Tweaked + forRepository { maven { url = "https://maven.squiddev.cc" } } + filter { includeGroup("cc.tweaked") } + } } diff --git a/gradle/scripts/resources.gradle b/gradle/scripts/resources.gradle index 34d7f2e7a78..6d7b42eef76 100644 --- a/gradle/scripts/resources.gradle +++ b/gradle/scripts/resources.gradle @@ -11,7 +11,7 @@ def mod_url = getConfig("mod_url") def mod_issue_tracker = getConfig("mod_issue_tracker") String suffix = System.getenv("VERSION_SUFFIX") -String version_toml = "$version" + (suffix ? "-$suffix" : "") +String version_toml = "$version" + (suffix ? "+$suffix" : "") tasks.register('printVersion') { doLast { @@ -46,6 +46,7 @@ var generateModMetadata = tasks.register("generateModMetadata", ProcessResources emi_version : forge.versions.emi.get(), top_version : forge.versions.theoneprobe.get(), jade_version : forge.versions.jade.get(), + modernfix_version : forge.versions.modernfix.get(), mod_license : mod_license, mod_name : mod_name, mod_description : mod_description, diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 94113f200e6..ca025c83a7c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.11-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/injected_interfaces/interfaces.json b/injected_interfaces/interfaces.json new file mode 100644 index 00000000000..9704941a618 --- /dev/null +++ b/injected_interfaces/interfaces.json @@ -0,0 +1,5 @@ +{ + "net/minecraft/client/renderer/block/model/BakedQuad": [ + "com/gregtechceu/gtceu/core/IGTBakedQuad" + ] +} diff --git a/lombok.config b/lombok.config new file mode 100644 index 00000000000..14fae3683e5 --- /dev/null +++ b/lombok.config @@ -0,0 +1,16 @@ +# this is the highest directory lombok should search for config files +config.stopBubbling = true + +# use jetbrains nullability annotations +lombok.addNullAnnotations = jetbrains + +# add annotations that @Getter and @Setter should copy from the field +lombok.copyableAnnotations += dev.latvian.mods.rhino.util.HideFromJS +# all the api status annotations +lombok.copyableAnnotations += org.jetbrains.annotations.ApiStatus.Experimental +lombok.copyableAnnotations += org.jetbrains.annotations.ApiStatus.Internal +lombok.copyableAnnotations += org.jetbrains.annotations.ApiStatus.Obsolete +lombok.copyableAnnotations += org.jetbrains.annotations.ApiStatus.ScheduledForRemoval +lombok.copyableAnnotations += org.jetbrains.annotations.ApiStatus.AvailableSince +lombok.copyableAnnotations += org.jetbrains.annotations.ApiStatus.NonExtendable +lombok.copyableAnnotations += org.jetbrains.annotations.ApiStatus.OverrideOnly diff --git a/src/generated/resources/assets/gtceu/blockstates/active_transformer.json b/src/generated/resources/assets/gtceu/blockstates/active_transformer.json new file mode 100644 index 00000000000..eef9c45a4b4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/active_transformer.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/active_transformer", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/active_transformer", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/active_transformer", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/active_transformer", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/active_transformer", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/active_transformer", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/active_transformer", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/active_transformer", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/active_transformer" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/active_transformer" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/active_transformer" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/active_transformer" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/active_transformer", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/active_transformer", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/active_transformer", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/active_transformer", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/active_transformer", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/active_transformer", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/active_transformer", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/active_transformer", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/active_transformer", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/active_transformer", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/active_transformer", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/active_transformer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/advanced_data_access_hatch.json b/src/generated/resources/assets/gtceu/blockstates/advanced_data_access_hatch.json new file mode 100644 index 00000000000..23a3baddb9f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/advanced_data_access_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/advanced_data_access_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/advanced_data_access_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/advanced_data_access_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/advanced_data_access_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/advanced_data_access_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/advanced_data_access_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/alloy_blast_smelter.json b/src/generated/resources/assets/gtceu/blockstates/alloy_blast_smelter.json new file mode 100644 index 00000000000..a5e78eaf811 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/alloy_blast_smelter.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/alloy_blast_smelter", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/alloy_blast_smelter", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/alloy_blast_smelter", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/alloy_blast_smelter", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/alloy_blast_smelter", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/alloy_blast_smelter", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/alloy_blast_smelter", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/alloy_blast_smelter", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/alloy_blast_smelter" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/alloy_blast_smelter" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/alloy_blast_smelter" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/alloy_blast_smelter" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/alloy_blast_smelter", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/alloy_blast_smelter", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/alloy_blast_smelter", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/alloy_blast_smelter", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/alloy_blast_smelter", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/alloy_blast_smelter", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/alloy_blast_smelter", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/alloy_blast_smelter", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/alloy_blast_smelter", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/alloy_blast_smelter", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/alloy_blast_smelter", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/alloy_blast_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/aluminium_crate.json b/src/generated/resources/assets/gtceu/blockstates/aluminium_crate.json new file mode 100644 index 00000000000..1b83e78484b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/aluminium_crate.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/aluminium_crate" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/aluminium_drum.json b/src/generated/resources/assets/gtceu/blockstates/aluminium_drum.json new file mode 100644 index 00000000000..f0e18d740c7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/aluminium_drum.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/aluminium_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/assembly_line.json b/src/generated/resources/assets/gtceu/blockstates/assembly_line.json new file mode 100644 index 00000000000..f2a64f3b3ac --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/assembly_line.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/assembly_line", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/assembly_line", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/assembly_line", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/assembly_line", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/assembly_line", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/assembly_line", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/assembly_line", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/assembly_line", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/assembly_line" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/assembly_line" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/assembly_line" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/assembly_line" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/assembly_line", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/assembly_line", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/assembly_line", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/assembly_line", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/assembly_line", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/assembly_line", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/assembly_line", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/assembly_line", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/assembly_line", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/assembly_line", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/assembly_line", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/assembly_line", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/auto_maintenance_hatch.json b/src/generated/resources/assets/gtceu/blockstates/auto_maintenance_hatch.json new file mode 100644 index 00000000000..677ec716a7e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/auto_maintenance_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/auto_maintenance_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/auto_maintenance_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/auto_maintenance_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/auto_maintenance_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/auto_maintenance_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/auto_maintenance_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/basic_data_access_hatch.json b/src/generated/resources/assets/gtceu/blockstates/basic_data_access_hatch.json new file mode 100644 index 00000000000..5506e13f583 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/basic_data_access_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/basic_data_access_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/basic_data_access_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/basic_data_access_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/basic_data_access_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/basic_data_access_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/basic_data_access_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/bronze_crate.json b/src/generated/resources/assets/gtceu/blockstates/bronze_crate.json new file mode 100644 index 00000000000..b04d087a388 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/bronze_crate.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/bronze_crate" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/bronze_drum.json b/src/generated/resources/assets/gtceu/blockstates/bronze_drum.json new file mode 100644 index 00000000000..dfb304c8651 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/bronze_drum.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/bronze_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/bronze_large_boiler.json b/src/generated/resources/assets/gtceu/blockstates/bronze_large_boiler.json new file mode 100644 index 00000000000..cd5f8ad76f7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/bronze_large_boiler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/bronze_large_boiler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/bronze_large_boiler" + }, + "facing=south": { + "model": "gtceu:block/machine/bronze_large_boiler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/bronze_large_boiler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/central_monitor.json b/src/generated/resources/assets/gtceu/blockstates/central_monitor.json new file mode 100644 index 00000000000..1786db9760d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/central_monitor.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/central_monitor", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/central_monitor", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/central_monitor", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/central_monitor", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/central_monitor", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/central_monitor", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/central_monitor", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/central_monitor", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/central_monitor" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/central_monitor" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/central_monitor" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/central_monitor" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/central_monitor", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/central_monitor", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/central_monitor", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/central_monitor", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/central_monitor", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/central_monitor", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/central_monitor", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/central_monitor", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/central_monitor", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/central_monitor", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/central_monitor", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/central_monitor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/charcoal_pile_igniter.json b/src/generated/resources/assets/gtceu/blockstates/charcoal_pile_igniter.json new file mode 100644 index 00000000000..a1fe20aec09 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/charcoal_pile_igniter.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/charcoal_pile_igniter" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/cleaning_maintenance_hatch.json b/src/generated/resources/assets/gtceu/blockstates/cleaning_maintenance_hatch.json new file mode 100644 index 00000000000..fa990485b6c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/cleaning_maintenance_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/cleaning_maintenance_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/cleaning_maintenance_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/cleaning_maintenance_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/cleaning_maintenance_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/cleaning_maintenance_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/cleaning_maintenance_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/cleanroom.json b/src/generated/resources/assets/gtceu/blockstates/cleanroom.json new file mode 100644 index 00000000000..38c94403fd7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/cleanroom.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/cleanroom" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/coke_oven.json b/src/generated/resources/assets/gtceu/blockstates/coke_oven.json new file mode 100644 index 00000000000..ca5344538cc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/coke_oven.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/coke_oven", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/coke_oven", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/coke_oven", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/coke_oven", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/coke_oven", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/coke_oven", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/coke_oven", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/coke_oven", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/coke_oven" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/coke_oven" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/coke_oven" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/coke_oven" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/coke_oven", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/coke_oven", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/coke_oven", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/coke_oven", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/coke_oven", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/coke_oven", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/coke_oven", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/coke_oven", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/coke_oven", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/coke_oven", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/coke_oven", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/coke_oven", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/coke_oven_hatch.json b/src/generated/resources/assets/gtceu/blockstates/coke_oven_hatch.json new file mode 100644 index 00000000000..aed2d2adfb7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/coke_oven_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/coke_oven_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/coke_oven_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/coke_oven_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/coke_oven_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/coke_oven_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/coke_oven_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/computation_receiver_hatch.json b/src/generated/resources/assets/gtceu/blockstates/computation_receiver_hatch.json new file mode 100644 index 00000000000..a43089d428d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/computation_receiver_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/computation_receiver_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/computation_receiver_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/computation_receiver_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/computation_receiver_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/computation_receiver_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/computation_receiver_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/computation_transmitter_hatch.json b/src/generated/resources/assets/gtceu/blockstates/computation_transmitter_hatch.json new file mode 100644 index 00000000000..c66bf8140e9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/computation_transmitter_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/computation_transmitter_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/computation_transmitter_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/computation_transmitter_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/computation_transmitter_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/computation_transmitter_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/computation_transmitter_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/configurable_maintenance_hatch.json b/src/generated/resources/assets/gtceu/blockstates/configurable_maintenance_hatch.json new file mode 100644 index 00000000000..b9becfe4bbc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/configurable_maintenance_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/configurable_maintenance_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/configurable_maintenance_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/configurable_maintenance_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/configurable_maintenance_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/configurable_maintenance_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/configurable_maintenance_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/cracker.json b/src/generated/resources/assets/gtceu/blockstates/cracker.json new file mode 100644 index 00000000000..7d5945c3d45 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/cracker.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/cracker", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/cracker", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/cracker", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/cracker", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/cracker", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/cracker", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/cracker", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/cracker", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/cracker" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/cracker" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/cracker" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/cracker" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/cracker", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/cracker", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/cracker", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/cracker", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/cracker", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/cracker", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/cracker", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/cracker", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/cracker", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/cracker", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/cracker", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/cracker", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/creative_chest.json b/src/generated/resources/assets/gtceu/blockstates/creative_chest.json new file mode 100644 index 00000000000..2c974b92b35 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/creative_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/creative_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/creative_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/creative_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/creative_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/creative_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/creative_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/creative_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/creative_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/creative_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/creative_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/creative_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/creative_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/creative_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/creative_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/creative_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/creative_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/creative_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/creative_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/creative_computation_provider.json b/src/generated/resources/assets/gtceu/blockstates/creative_computation_provider.json new file mode 100644 index 00000000000..8413b2d280a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/creative_computation_provider.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/creative_computation_provider" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/creative_data_access_hatch.json b/src/generated/resources/assets/gtceu/blockstates/creative_data_access_hatch.json new file mode 100644 index 00000000000..cf05db8d942 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/creative_data_access_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/creative_data_access_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/creative_data_access_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/creative_data_access_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/creative_data_access_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_data_access_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/creative_data_access_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/creative_energy.json b/src/generated/resources/assets/gtceu/blockstates/creative_energy.json new file mode 100644 index 00000000000..f75c638f1b3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/creative_energy.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/creative_energy" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/creative_tank.json b/src/generated/resources/assets/gtceu/blockstates/creative_tank.json new file mode 100644 index 00000000000..0fee3db96c1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/creative_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/creative_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/creative_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/creative_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/creative_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/creative_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/creative_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/creative_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/creative_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/creative_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/creative_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/creative_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/creative_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/creative_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/creative_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/creative_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/creative_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/creative_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/creative_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/data_access_hatch.json b/src/generated/resources/assets/gtceu/blockstates/data_access_hatch.json new file mode 100644 index 00000000000..f937c4dc5f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/data_access_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/data_access_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/data_access_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/data_access_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/data_access_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/data_access_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/data_access_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/data_bank.json b/src/generated/resources/assets/gtceu/blockstates/data_bank.json new file mode 100644 index 00000000000..926f638ed37 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/data_bank.json @@ -0,0 +1,76 @@ +{ + "variants": { + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/data_bank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/data_bank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/data_bank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/data_bank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/data_bank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/data_bank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/data_bank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/data_bank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/data_bank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/data_bank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/data_bank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/data_bank", + "y": 180 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/data_bank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/data_bank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/data_bank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/data_bank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/data_receiver_hatch.json b/src/generated/resources/assets/gtceu/blockstates/data_receiver_hatch.json new file mode 100644 index 00000000000..0c43d582447 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/data_receiver_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/data_receiver_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/data_receiver_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/data_receiver_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/data_receiver_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/data_receiver_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/data_receiver_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/data_transmitter_hatch.json b/src/generated/resources/assets/gtceu/blockstates/data_transmitter_hatch.json new file mode 100644 index 00000000000..5cba6934f41 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/data_transmitter_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/data_transmitter_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/data_transmitter_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/data_transmitter_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/data_transmitter_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/data_transmitter_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/data_transmitter_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/distillation_tower.json b/src/generated/resources/assets/gtceu/blockstates/distillation_tower.json new file mode 100644 index 00000000000..fcb6e786d05 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/distillation_tower.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/distillation_tower", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/distillation_tower" + }, + "facing=south": { + "model": "gtceu:block/machine/distillation_tower", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/distillation_tower", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/electric_blast_furnace.json b/src/generated/resources/assets/gtceu/blockstates/electric_blast_furnace.json new file mode 100644 index 00000000000..3d48c0cc562 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/electric_blast_furnace.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/electric_blast_furnace", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/electric_blast_furnace", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/electric_blast_furnace", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/electric_blast_furnace", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/electric_blast_furnace", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/electric_blast_furnace", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/electric_blast_furnace", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/electric_blast_furnace", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/electric_blast_furnace" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/electric_blast_furnace" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/electric_blast_furnace" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/electric_blast_furnace" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/electric_blast_furnace", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/electric_blast_furnace", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/electric_blast_furnace", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/electric_blast_furnace", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/electric_blast_furnace", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/electric_blast_furnace", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/electric_blast_furnace", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/electric_blast_furnace", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/electric_blast_furnace", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/electric_blast_furnace", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/electric_blast_furnace", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/electric_blast_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/ev_16a_energy_converter.json new file mode 100644 index 00000000000..2721b5aa485 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/ev_1a_energy_converter.json new file mode 100644 index 00000000000..1048467f401 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/ev_4a_energy_converter.json new file mode 100644 index 00000000000..f841ca60588 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/ev_8a_energy_converter.json new file mode 100644 index 00000000000..139a2aaf1eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_air_scrubber.json b/src/generated/resources/assets/gtceu/blockstates/ev_air_scrubber.json new file mode 100644 index 00000000000..963ef37b40e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_air_scrubber.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_air_scrubber", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_air_scrubber" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_air_scrubber", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_air_scrubber", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/ev_alloy_smelter.json new file mode 100644 index 00000000000..1ece2d36923 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/ev_arc_furnace.json new file mode 100644 index 00000000000..4ce8147342e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_assembler.json b/src/generated/resources/assets/gtceu/blockstates/ev_assembler.json new file mode 100644 index 00000000000..11e1f8ea205 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/ev_autoclave.json new file mode 100644 index 00000000000..9d20bb3f5f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/ev_battery_buffer_16x.json new file mode 100644 index 00000000000..b75566c6c45 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/ev_battery_buffer_4x.json new file mode 100644 index 00000000000..9d5d28c9e6c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/ev_battery_buffer_8x.json new file mode 100644 index 00000000000..d35a51ef306 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_bedrock_ore_miner.json b/src/generated/resources/assets/gtceu/blockstates/ev_bedrock_ore_miner.json new file mode 100644 index 00000000000..0813015ba8b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_bedrock_ore_miner.json @@ -0,0 +1,76 @@ +{ + "variants": { + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_bedrock_ore_miner", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/ev_bedrock_ore_miner", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_bedrock_ore_miner", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_bedrock_ore_miner", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_bedrock_ore_miner" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/ev_bedrock_ore_miner" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_bedrock_ore_miner" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_bedrock_ore_miner" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_bedrock_ore_miner", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/ev_bedrock_ore_miner", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_bedrock_ore_miner", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_bedrock_ore_miner", + "y": 180 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_bedrock_ore_miner", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/ev_bedrock_ore_miner", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_bedrock_ore_miner", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_bedrock_ore_miner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_bender.json b/src/generated/resources/assets/gtceu/blockstates/ev_bender.json new file mode 100644 index 00000000000..7b928ac4f83 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_block_breaker.json b/src/generated/resources/assets/gtceu/blockstates/ev_block_breaker.json new file mode 100644 index 00000000000..9462ceb4a85 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_block_breaker.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_block_breaker", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_block_breaker" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_block_breaker", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_block_breaker", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_brewery.json b/src/generated/resources/assets/gtceu/blockstates/ev_brewery.json new file mode 100644 index 00000000000..4c50026527d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_canner.json b/src/generated/resources/assets/gtceu/blockstates/ev_canner.json new file mode 100644 index 00000000000..8c7d55372ca --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/ev_centrifuge.json new file mode 100644 index 00000000000..2fa51103c61 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/ev_charger_4x.json new file mode 100644 index 00000000000..3d196ef0f6d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/ev_chemical_bath.json new file mode 100644 index 00000000000..66d900b4ca9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/ev_chemical_reactor.json new file mode 100644 index 00000000000..57aea6f4bb2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/ev_circuit_assembler.json new file mode 100644 index 00000000000..ec5355058d0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_compressor.json b/src/generated/resources/assets/gtceu/blockstates/ev_compressor.json new file mode 100644 index 00000000000..5ee31b6fca0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_cutter.json b/src/generated/resources/assets/gtceu/blockstates/ev_cutter.json new file mode 100644 index 00000000000..8ba84b004d6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_diode.json b/src/generated/resources/assets/gtceu/blockstates/ev_diode.json new file mode 100644 index 00000000000..b875110aaae --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_distillery.json b/src/generated/resources/assets/gtceu/blockstates/ev_distillery.json new file mode 100644 index 00000000000..ee59be52ace --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/ev_electric_furnace.json new file mode 100644 index 00000000000..89fd62116b7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/ev_electrolyzer.json new file mode 100644 index 00000000000..b1c3fbe84b9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/ev_electromagnetic_separator.json new file mode 100644 index 00000000000..eb04691abac --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/ev_energy_input_hatch.json new file mode 100644 index 00000000000..1e83c138f27 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/ev_energy_input_hatch_16a.json new file mode 100644 index 00000000000..ba50d5cbb26 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_energy_input_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_energy_input_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_energy_input_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_energy_input_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_energy_input_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_energy_input_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_energy_input_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/ev_energy_input_hatch_4a.json new file mode 100644 index 00000000000..f9cabdcda0f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_energy_input_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_energy_input_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_energy_input_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_energy_input_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_energy_input_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_energy_input_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_energy_input_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/ev_energy_output_hatch.json new file mode 100644 index 00000000000..9b5c1cf55cf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/ev_energy_output_hatch_16a.json new file mode 100644 index 00000000000..286e5cb7811 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_energy_output_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_energy_output_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_energy_output_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_energy_output_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_energy_output_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_energy_output_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_energy_output_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/ev_energy_output_hatch_4a.json new file mode 100644 index 00000000000..546f2900567 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_energy_output_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_energy_output_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_energy_output_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_energy_output_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_energy_output_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_energy_output_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_energy_output_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_extractor.json b/src/generated/resources/assets/gtceu/blockstates/ev_extractor.json new file mode 100644 index 00000000000..3883ee93a0f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_extruder.json b/src/generated/resources/assets/gtceu/blockstates/ev_extruder.json new file mode 100644 index 00000000000..13209f89817 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/ev_fermenter.json new file mode 100644 index 00000000000..1dd7c458c62 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_fisher.json b/src/generated/resources/assets/gtceu/blockstates/ev_fisher.json new file mode 100644 index 00000000000..5c803561635 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_fisher.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_fisher", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_fisher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_fisher" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_fisher", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_fisher", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_fisher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_fluid_drilling_rig.json b/src/generated/resources/assets/gtceu/blockstates/ev_fluid_drilling_rig.json new file mode 100644 index 00000000000..60696c43d2c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_fluid_drilling_rig.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_fluid_drilling_rig" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/ev_fluid_drilling_rig" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_fluid_drilling_rig" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_fluid_drilling_rig" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/ev_fluid_heater.json new file mode 100644 index 00000000000..03e80ec0a97 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/ev_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..24d5c6a7c11 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/ev_fluid_solidifier.json new file mode 100644 index 00000000000..bdcea3d4a8a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/ev_forge_hammer.json new file mode 100644 index 00000000000..3cc86c9e037 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/ev_forming_press.json new file mode 100644 index 00000000000..cd129751d6e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/ev_gas_collector.json new file mode 100644 index 00000000000..a6811dc4d2d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/ev_input_bus.json new file mode 100644 index 00000000000..5bc89f432d5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/ev_input_hatch.json new file mode 100644 index 00000000000..6020b33e3e0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_input_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/ev_input_hatch_4x.json new file mode 100644 index 00000000000..eb8d9018aa4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_input_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_input_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_input_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_input_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_input_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_input_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_input_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_input_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/ev_input_hatch_9x.json new file mode 100644 index 00000000000..8c2d7d4a405 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_input_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_input_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_input_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_input_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_input_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_input_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_input_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_item_collector.json b/src/generated/resources/assets/gtceu/blockstates/ev_item_collector.json new file mode 100644 index 00000000000..417bd63cde9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_item_collector.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/ev_item_collector" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/ev_item_passthrough_hatch.json new file mode 100644 index 00000000000..4e864fa2868 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_large_miner.json b/src/generated/resources/assets/gtceu/blockstates/ev_large_miner.json new file mode 100644 index 00000000000..ff1f1161f36 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_large_miner.json @@ -0,0 +1,76 @@ +{ + "variants": { + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_large_miner", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/ev_large_miner", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_large_miner", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_large_miner", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_large_miner" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/ev_large_miner" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_large_miner" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_large_miner" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_large_miner", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/ev_large_miner", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_large_miner", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_large_miner", + "y": 180 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_large_miner", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/ev_large_miner", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_large_miner", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_large_miner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/ev_laser_engraver.json new file mode 100644 index 00000000000..2b575e4da78 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_lathe.json b/src/generated/resources/assets/gtceu/blockstates/ev_lathe.json new file mode 100644 index 00000000000..98ecaf55f0b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_macerator.json b/src/generated/resources/assets/gtceu/blockstates/ev_macerator.json new file mode 100644 index 00000000000..0d0ff5cbcf0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/ev_machine_hull.json new file mode 100644 index 00000000000..de524cd1f86 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_mixer.json b/src/generated/resources/assets/gtceu/blockstates/ev_mixer.json new file mode 100644 index 00000000000..265ac3b781b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/ev_muffler_hatch.json new file mode 100644 index 00000000000..adf85bc1bd2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/ev_ore_washer.json new file mode 100644 index 00000000000..05349f2b721 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/ev_output_bus.json new file mode 100644 index 00000000000..7d9ec41222a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/ev_output_hatch.json new file mode 100644 index 00000000000..3366b624430 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_output_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/ev_output_hatch_4x.json new file mode 100644 index 00000000000..c6075ec20d5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_output_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_output_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_output_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_output_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_output_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_output_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_output_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_output_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/ev_output_hatch_9x.json new file mode 100644 index 00000000000..e0dd90d3aa9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_output_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_output_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_output_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_output_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_output_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_output_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_output_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_packer.json b/src/generated/resources/assets/gtceu/blockstates/ev_packer.json new file mode 100644 index 00000000000..d754cf17267 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/ev_polarizer.json new file mode 100644 index 00000000000..2344e390434 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_pump.json b/src/generated/resources/assets/gtceu/blockstates/ev_pump.json new file mode 100644 index 00000000000..4b17551d6a6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_pump.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_pump", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_pump", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_pump" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_pump", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_pump", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_pump", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/ev_rock_crusher.json new file mode 100644 index 00000000000..14de03b9ee8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_rotor_holder.json b/src/generated/resources/assets/gtceu/blockstates/ev_rotor_holder.json new file mode 100644 index 00000000000..3401d11fe69 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_rotor_holder.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_rotor_holder", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_rotor_holder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_rotor_holder" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_rotor_holder", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_rotor_holder", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_rotor_holder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_scanner.json b/src/generated/resources/assets/gtceu/blockstates/ev_scanner.json new file mode 100644 index 00000000000..b47d0bd45bd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_sifter.json b/src/generated/resources/assets/gtceu/blockstates/ev_sifter.json new file mode 100644 index 00000000000..86a8577c577 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/ev_substation_input_hatch_64a.json new file mode 100644 index 00000000000..ba8608ebd7f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_substation_input_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_substation_input_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_substation_input_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_substation_input_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_substation_input_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_substation_input_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_substation_input_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/ev_substation_output_hatch_64a.json new file mode 100644 index 00000000000..4f6419528bc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_substation_output_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_substation_output_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_substation_output_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_substation_output_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_substation_output_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_substation_output_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_substation_output_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_super_chest.json b/src/generated/resources/assets/gtceu/blockstates/ev_super_chest.json new file mode 100644 index 00000000000..d6eb4d20e65 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_super_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_super_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/ev_super_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_super_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_super_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_super_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/ev_super_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_super_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_super_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_super_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/ev_super_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_super_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_super_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_super_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/ev_super_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_super_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_super_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_super_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_super_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/ev_super_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_super_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_super_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/ev_super_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_super_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_super_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_super_tank.json b/src/generated/resources/assets/gtceu/blockstates/ev_super_tank.json new file mode 100644 index 00000000000..7df483a4f4b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_super_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_super_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/ev_super_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_super_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_super_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_super_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/ev_super_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_super_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_super_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_super_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/ev_super_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_super_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_super_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_super_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/ev_super_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_super_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_super_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_super_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_super_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/ev_super_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_super_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_super_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/ev_super_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_super_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_super_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/ev_thermal_centrifuge.json new file mode 100644 index 00000000000..074bd595112 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/ev_transformer_16a.json new file mode 100644 index 00000000000..096a143a29a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/ev_transformer_1a.json new file mode 100644 index 00000000000..a9ab26816db --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/ev_transformer_2a.json new file mode 100644 index 00000000000..0fa2565af72 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/ev_transformer_4a.json new file mode 100644 index 00000000000..040f91c4ba3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/ev_wiremill.json new file mode 100644 index 00000000000..3ce227bc146 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_world_accelerator.json b/src/generated/resources/assets/gtceu/blockstates/ev_world_accelerator.json new file mode 100644 index 00000000000..aad5223ad8a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_world_accelerator.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/ev_world_accelerator" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/extreme_combustion_engine.json b/src/generated/resources/assets/gtceu/blockstates/extreme_combustion_engine.json new file mode 100644 index 00000000000..694c7eab010 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/extreme_combustion_engine.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/extreme_combustion_engine", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/extreme_combustion_engine", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/extreme_combustion_engine", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/extreme_combustion_engine", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/extreme_combustion_engine", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/extreme_combustion_engine", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/extreme_combustion_engine", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/extreme_combustion_engine", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/extreme_combustion_engine" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/extreme_combustion_engine" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/extreme_combustion_engine" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/extreme_combustion_engine" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/extreme_combustion_engine", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/extreme_combustion_engine", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/extreme_combustion_engine", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/extreme_combustion_engine", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/extreme_combustion_engine", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/extreme_combustion_engine", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/extreme_combustion_engine", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/extreme_combustion_engine", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/extreme_combustion_engine", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/extreme_combustion_engine", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/extreme_combustion_engine", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/extreme_combustion_engine", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/gas_large_turbine.json b/src/generated/resources/assets/gtceu/blockstates/gas_large_turbine.json new file mode 100644 index 00000000000..c6139d92fde --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/gas_large_turbine.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/gas_large_turbine", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/gas_large_turbine", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/gas_large_turbine", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/gas_large_turbine", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/gas_large_turbine", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/gas_large_turbine", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/gas_large_turbine", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/gas_large_turbine", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/gas_large_turbine" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/gas_large_turbine" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/gas_large_turbine" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/gas_large_turbine" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/gas_large_turbine", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/gas_large_turbine", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/gas_large_turbine", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/gas_large_turbine", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/gas_large_turbine", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/gas_large_turbine", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/gas_large_turbine", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/gas_large_turbine", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/gas_large_turbine", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/gas_large_turbine", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/gas_large_turbine", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/gas_large_turbine", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/gold_drum.json b/src/generated/resources/assets/gtceu/blockstates/gold_drum.json new file mode 100644 index 00000000000..80ed303333e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/gold_drum.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/gold_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/high_performance_computation_array.json b/src/generated/resources/assets/gtceu/blockstates/high_performance_computation_array.json new file mode 100644 index 00000000000..e39725b168a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/high_performance_computation_array.json @@ -0,0 +1,76 @@ +{ + "variants": { + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/high_performance_computation_array", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/high_performance_computation_array", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/high_performance_computation_array", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/high_performance_computation_array", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/high_performance_computation_array" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/high_performance_computation_array" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/high_performance_computation_array" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/high_performance_computation_array" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/high_performance_computation_array", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/high_performance_computation_array", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/high_performance_computation_array", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/high_performance_computation_array", + "y": 180 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/high_performance_computation_array", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/high_performance_computation_array", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/high_performance_computation_array", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/high_performance_computation_array", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hp_steam_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/hp_steam_alloy_smelter.json new file mode 100644 index 00000000000..82787a99473 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hp_steam_alloy_smelter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hp_steam_alloy_smelter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hp_steam_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hp_steam_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/hp_steam_alloy_smelter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hp_steam_alloy_smelter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hp_steam_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hp_steam_compressor.json b/src/generated/resources/assets/gtceu/blockstates/hp_steam_compressor.json new file mode 100644 index 00000000000..75e94969af6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hp_steam_compressor.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hp_steam_compressor", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hp_steam_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hp_steam_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/hp_steam_compressor", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hp_steam_compressor", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hp_steam_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hp_steam_extractor.json b/src/generated/resources/assets/gtceu/blockstates/hp_steam_extractor.json new file mode 100644 index 00000000000..59a6853735e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hp_steam_extractor.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hp_steam_extractor", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hp_steam_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hp_steam_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/hp_steam_extractor", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hp_steam_extractor", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hp_steam_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hp_steam_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/hp_steam_forge_hammer.json new file mode 100644 index 00000000000..cead3c1b831 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hp_steam_forge_hammer.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hp_steam_forge_hammer", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hp_steam_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hp_steam_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/hp_steam_forge_hammer", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hp_steam_forge_hammer", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hp_steam_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hp_steam_furnace.json b/src/generated/resources/assets/gtceu/blockstates/hp_steam_furnace.json new file mode 100644 index 00000000000..06fccb04827 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hp_steam_furnace.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hp_steam_furnace", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hp_steam_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hp_steam_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/hp_steam_furnace", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hp_steam_furnace", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hp_steam_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hp_steam_liquid_boiler.json b/src/generated/resources/assets/gtceu/blockstates/hp_steam_liquid_boiler.json new file mode 100644 index 00000000000..bc42f3e9f12 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hp_steam_liquid_boiler.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hp_steam_liquid_boiler", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hp_steam_liquid_boiler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hp_steam_liquid_boiler" + }, + "facing=south": { + "model": "gtceu:block/machine/hp_steam_liquid_boiler", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hp_steam_liquid_boiler", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hp_steam_liquid_boiler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hp_steam_macerator.json b/src/generated/resources/assets/gtceu/blockstates/hp_steam_macerator.json new file mode 100644 index 00000000000..77683c33fc8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hp_steam_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hp_steam_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hp_steam_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/hp_steam_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hp_steam_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hp_steam_miner.json b/src/generated/resources/assets/gtceu/blockstates/hp_steam_miner.json new file mode 100644 index 00000000000..39ea53ce9db --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hp_steam_miner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hp_steam_miner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hp_steam_miner" + }, + "facing=south": { + "model": "gtceu:block/machine/hp_steam_miner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hp_steam_miner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hp_steam_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/hp_steam_rock_crusher.json new file mode 100644 index 00000000000..3cc9727a656 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hp_steam_rock_crusher.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hp_steam_rock_crusher", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hp_steam_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hp_steam_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/hp_steam_rock_crusher", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hp_steam_rock_crusher", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hp_steam_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hp_steam_solar_boiler.json b/src/generated/resources/assets/gtceu/blockstates/hp_steam_solar_boiler.json new file mode 100644 index 00000000000..968288f57b7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hp_steam_solar_boiler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hp_steam_solar_boiler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hp_steam_solar_boiler" + }, + "facing=south": { + "model": "gtceu:block/machine/hp_steam_solar_boiler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hp_steam_solar_boiler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hp_steam_solid_boiler.json b/src/generated/resources/assets/gtceu/blockstates/hp_steam_solid_boiler.json new file mode 100644 index 00000000000..3ec42071dbd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hp_steam_solid_boiler.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hp_steam_solid_boiler", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hp_steam_solid_boiler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hp_steam_solid_boiler" + }, + "facing=south": { + "model": "gtceu:block/machine/hp_steam_solid_boiler", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hp_steam_solid_boiler", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hp_steam_solid_boiler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hpca_active_cooler_component.json b/src/generated/resources/assets/gtceu/blockstates/hpca_active_cooler_component.json new file mode 100644 index 00000000000..4deffc83c40 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hpca_active_cooler_component.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hpca_active_cooler_component", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hpca_active_cooler_component", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hpca_active_cooler_component" + }, + "facing=south": { + "model": "gtceu:block/machine/hpca_active_cooler_component", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hpca_active_cooler_component", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hpca_active_cooler_component", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hpca_advanced_computation_component.json b/src/generated/resources/assets/gtceu/blockstates/hpca_advanced_computation_component.json new file mode 100644 index 00000000000..b1e26b9c1d1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hpca_advanced_computation_component.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hpca_advanced_computation_component", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hpca_advanced_computation_component", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hpca_advanced_computation_component" + }, + "facing=south": { + "model": "gtceu:block/machine/hpca_advanced_computation_component", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hpca_advanced_computation_component", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hpca_advanced_computation_component", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hpca_bridge_component.json b/src/generated/resources/assets/gtceu/blockstates/hpca_bridge_component.json new file mode 100644 index 00000000000..d44eb922267 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hpca_bridge_component.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hpca_bridge_component", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hpca_bridge_component", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hpca_bridge_component" + }, + "facing=south": { + "model": "gtceu:block/machine/hpca_bridge_component", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hpca_bridge_component", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hpca_bridge_component", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hpca_computation_component.json b/src/generated/resources/assets/gtceu/blockstates/hpca_computation_component.json new file mode 100644 index 00000000000..414f5dd2e22 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hpca_computation_component.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hpca_computation_component", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hpca_computation_component", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hpca_computation_component" + }, + "facing=south": { + "model": "gtceu:block/machine/hpca_computation_component", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hpca_computation_component", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hpca_computation_component", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hpca_empty_component.json b/src/generated/resources/assets/gtceu/blockstates/hpca_empty_component.json new file mode 100644 index 00000000000..c62ef64ec8f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hpca_empty_component.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hpca_empty_component", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hpca_empty_component", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hpca_empty_component" + }, + "facing=south": { + "model": "gtceu:block/machine/hpca_empty_component", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hpca_empty_component", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hpca_empty_component", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hpca_heat_sink_component.json b/src/generated/resources/assets/gtceu/blockstates/hpca_heat_sink_component.json new file mode 100644 index 00000000000..a92704b4234 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hpca_heat_sink_component.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hpca_heat_sink_component", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hpca_heat_sink_component", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hpca_heat_sink_component" + }, + "facing=south": { + "model": "gtceu:block/machine/hpca_heat_sink_component", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hpca_heat_sink_component", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hpca_heat_sink_component", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/hv_16a_energy_converter.json new file mode 100644 index 00000000000..6f753b9549b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/hv_1a_energy_converter.json new file mode 100644 index 00000000000..b128f9e0b86 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/hv_4a_energy_converter.json new file mode 100644 index 00000000000..b9e1587c908 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/hv_8a_energy_converter.json new file mode 100644 index 00000000000..4938bc04aff --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_air_scrubber.json b/src/generated/resources/assets/gtceu/blockstates/hv_air_scrubber.json new file mode 100644 index 00000000000..78674a26d01 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_air_scrubber.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_air_scrubber", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_air_scrubber" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_air_scrubber", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_air_scrubber", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/hv_alloy_smelter.json new file mode 100644 index 00000000000..2fe55bbba3d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/hv_arc_furnace.json new file mode 100644 index 00000000000..a1fb5a19672 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_assembler.json b/src/generated/resources/assets/gtceu/blockstates/hv_assembler.json new file mode 100644 index 00000000000..5cffc2e5fa4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/hv_autoclave.json new file mode 100644 index 00000000000..69ad156f091 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/hv_battery_buffer_16x.json new file mode 100644 index 00000000000..76e9cbf4478 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/hv_battery_buffer_4x.json new file mode 100644 index 00000000000..bc083fadd13 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/hv_battery_buffer_8x.json new file mode 100644 index 00000000000..c09873cac97 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_bedrock_ore_miner.json b/src/generated/resources/assets/gtceu/blockstates/hv_bedrock_ore_miner.json new file mode 100644 index 00000000000..c91c6a300e8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_bedrock_ore_miner.json @@ -0,0 +1,76 @@ +{ + "variants": { + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_bedrock_ore_miner", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/hv_bedrock_ore_miner", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_bedrock_ore_miner", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_bedrock_ore_miner", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_bedrock_ore_miner" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/hv_bedrock_ore_miner" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_bedrock_ore_miner" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_bedrock_ore_miner" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_bedrock_ore_miner", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/hv_bedrock_ore_miner", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_bedrock_ore_miner", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_bedrock_ore_miner", + "y": 180 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_bedrock_ore_miner", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/hv_bedrock_ore_miner", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_bedrock_ore_miner", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_bedrock_ore_miner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_bender.json b/src/generated/resources/assets/gtceu/blockstates/hv_bender.json new file mode 100644 index 00000000000..514c1435061 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_block_breaker.json b/src/generated/resources/assets/gtceu/blockstates/hv_block_breaker.json new file mode 100644 index 00000000000..a20af77a26f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_block_breaker.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_block_breaker", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_block_breaker" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_block_breaker", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_block_breaker", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_brewery.json b/src/generated/resources/assets/gtceu/blockstates/hv_brewery.json new file mode 100644 index 00000000000..7010cb1ea1e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_buffer.json b/src/generated/resources/assets/gtceu/blockstates/hv_buffer.json new file mode 100644 index 00000000000..8bdc6403ebe --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_buffer.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/hv_buffer" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_canner.json b/src/generated/resources/assets/gtceu/blockstates/hv_canner.json new file mode 100644 index 00000000000..37ebf940170 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/hv_centrifuge.json new file mode 100644 index 00000000000..05fc24b0220 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/hv_charger_4x.json new file mode 100644 index 00000000000..0507ac4d276 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/hv_chemical_bath.json new file mode 100644 index 00000000000..305da81126d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/hv_chemical_reactor.json new file mode 100644 index 00000000000..86ad3928e0d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/hv_circuit_assembler.json new file mode 100644 index 00000000000..371c17e2c76 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_combustion.json b/src/generated/resources/assets/gtceu/blockstates/hv_combustion.json new file mode 100644 index 00000000000..555978ed30d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_combustion.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_combustion", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_combustion", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_combustion" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_combustion", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_combustion", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_combustion", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_compressor.json b/src/generated/resources/assets/gtceu/blockstates/hv_compressor.json new file mode 100644 index 00000000000..c44bdabaf5e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_cutter.json b/src/generated/resources/assets/gtceu/blockstates/hv_cutter.json new file mode 100644 index 00000000000..8c7a037ab3d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_diode.json b/src/generated/resources/assets/gtceu/blockstates/hv_diode.json new file mode 100644 index 00000000000..8d5beae8eed --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_distillery.json b/src/generated/resources/assets/gtceu/blockstates/hv_distillery.json new file mode 100644 index 00000000000..c96ec9ece79 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/hv_electric_furnace.json new file mode 100644 index 00000000000..f8227fad69d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/hv_electrolyzer.json new file mode 100644 index 00000000000..3e055222745 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/hv_electromagnetic_separator.json new file mode 100644 index 00000000000..c7bd72f8e73 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/hv_energy_input_hatch.json new file mode 100644 index 00000000000..1a3e51f86b9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/hv_energy_output_hatch.json new file mode 100644 index 00000000000..4957192c444 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_extractor.json b/src/generated/resources/assets/gtceu/blockstates/hv_extractor.json new file mode 100644 index 00000000000..dad33fc1367 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_extruder.json b/src/generated/resources/assets/gtceu/blockstates/hv_extruder.json new file mode 100644 index 00000000000..6a3e3b66e17 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/hv_fermenter.json new file mode 100644 index 00000000000..1e5e6d2468b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_fisher.json b/src/generated/resources/assets/gtceu/blockstates/hv_fisher.json new file mode 100644 index 00000000000..31fed9470b2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_fisher.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_fisher", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_fisher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_fisher" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_fisher", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_fisher", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_fisher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_fluid_drilling_rig.json b/src/generated/resources/assets/gtceu/blockstates/hv_fluid_drilling_rig.json new file mode 100644 index 00000000000..6ab1433dd13 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_fluid_drilling_rig.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_fluid_drilling_rig" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/hv_fluid_drilling_rig" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_fluid_drilling_rig" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_fluid_drilling_rig" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/hv_fluid_heater.json new file mode 100644 index 00000000000..e2d23c6eb04 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/hv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..edc26b8d44b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/hv_fluid_solidifier.json new file mode 100644 index 00000000000..63ef4529d1b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/hv_forge_hammer.json new file mode 100644 index 00000000000..029f0fb8837 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/hv_forming_press.json new file mode 100644 index 00000000000..04c1c1b2987 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/hv_gas_collector.json new file mode 100644 index 00000000000..cdcde0f4c5c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_gas_turbine.json b/src/generated/resources/assets/gtceu/blockstates/hv_gas_turbine.json new file mode 100644 index 00000000000..91f6902da4c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_gas_turbine.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_gas_turbine", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_gas_turbine", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_gas_turbine" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_gas_turbine", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_gas_turbine", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_gas_turbine", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/hv_input_bus.json new file mode 100644 index 00000000000..c665777b525 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/hv_input_hatch.json new file mode 100644 index 00000000000..8eacc2c8018 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_item_collector.json b/src/generated/resources/assets/gtceu/blockstates/hv_item_collector.json new file mode 100644 index 00000000000..c3aef1c01bb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_item_collector.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/hv_item_collector" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/hv_item_passthrough_hatch.json new file mode 100644 index 00000000000..cf684c44365 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/hv_laser_engraver.json new file mode 100644 index 00000000000..bbc9d2e86bf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_lathe.json b/src/generated/resources/assets/gtceu/blockstates/hv_lathe.json new file mode 100644 index 00000000000..c7a43317a75 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_macerator.json b/src/generated/resources/assets/gtceu/blockstates/hv_macerator.json new file mode 100644 index 00000000000..5a17f26cb77 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/hv_machine_hull.json new file mode 100644 index 00000000000..4a5edee1c43 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_miner.json b/src/generated/resources/assets/gtceu/blockstates/hv_miner.json new file mode 100644 index 00000000000..5f5d719bd90 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_miner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_miner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_miner" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_miner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_miner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_mixer.json b/src/generated/resources/assets/gtceu/blockstates/hv_mixer.json new file mode 100644 index 00000000000..3afea40b0bd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/hv_muffler_hatch.json new file mode 100644 index 00000000000..647f03a8e07 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/hv_ore_washer.json new file mode 100644 index 00000000000..32c88267075 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/hv_output_bus.json new file mode 100644 index 00000000000..9b30409e680 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/hv_output_hatch.json new file mode 100644 index 00000000000..57c13480d7e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_packer.json b/src/generated/resources/assets/gtceu/blockstates/hv_packer.json new file mode 100644 index 00000000000..2ada3a3f3e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/hv_polarizer.json new file mode 100644 index 00000000000..2a05d9bc0e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_pump.json b/src/generated/resources/assets/gtceu/blockstates/hv_pump.json new file mode 100644 index 00000000000..d9bc439dad5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_pump.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_pump", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_pump", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_pump" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_pump", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_pump", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_pump", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/hv_rock_crusher.json new file mode 100644 index 00000000000..f131bcc6223 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_rotor_holder.json b/src/generated/resources/assets/gtceu/blockstates/hv_rotor_holder.json new file mode 100644 index 00000000000..72d324c3579 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_rotor_holder.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_rotor_holder", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_rotor_holder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_rotor_holder" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_rotor_holder", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_rotor_holder", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_rotor_holder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_scanner.json b/src/generated/resources/assets/gtceu/blockstates/hv_scanner.json new file mode 100644 index 00000000000..bdf32149f84 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_sifter.json b/src/generated/resources/assets/gtceu/blockstates/hv_sifter.json new file mode 100644 index 00000000000..a1bfd0923cc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_steam_turbine.json b/src/generated/resources/assets/gtceu/blockstates/hv_steam_turbine.json new file mode 100644 index 00000000000..d422b0473d5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_steam_turbine.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_steam_turbine", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_steam_turbine", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_steam_turbine" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_steam_turbine", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_steam_turbine", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_steam_turbine", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_super_chest.json b/src/generated/resources/assets/gtceu/blockstates/hv_super_chest.json new file mode 100644 index 00000000000..c95883888b9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_super_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_super_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/hv_super_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_super_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_super_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_super_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/hv_super_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_super_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_super_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_super_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/hv_super_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_super_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_super_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_super_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/hv_super_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_super_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_super_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_super_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_super_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/hv_super_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_super_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_super_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/hv_super_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_super_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_super_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_super_tank.json b/src/generated/resources/assets/gtceu/blockstates/hv_super_tank.json new file mode 100644 index 00000000000..d4411ac23f7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_super_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_super_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/hv_super_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_super_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_super_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_super_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/hv_super_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_super_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_super_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_super_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/hv_super_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_super_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_super_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_super_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/hv_super_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_super_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_super_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_super_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_super_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/hv_super_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_super_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_super_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/hv_super_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_super_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_super_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/hv_thermal_centrifuge.json new file mode 100644 index 00000000000..e71a10ceec6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/hv_transformer_16a.json new file mode 100644 index 00000000000..5e28758257c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/hv_transformer_1a.json new file mode 100644 index 00000000000..0e042d1e481 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/hv_transformer_2a.json new file mode 100644 index 00000000000..8fc111d0da9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/hv_transformer_4a.json new file mode 100644 index 00000000000..22d63cee48d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/hv_wiremill.json new file mode 100644 index 00000000000..44d99cac6c8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_world_accelerator.json b/src/generated/resources/assets/gtceu/blockstates/hv_world_accelerator.json new file mode 100644 index 00000000000..83320d6e441 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_world_accelerator.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/hv_world_accelerator" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/implosion_compressor.json b/src/generated/resources/assets/gtceu/blockstates/implosion_compressor.json new file mode 100644 index 00000000000..6c4eb6d5c1a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/implosion_compressor.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/implosion_compressor", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/implosion_compressor", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/implosion_compressor", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/implosion_compressor", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/implosion_compressor", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/implosion_compressor", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/implosion_compressor", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/implosion_compressor", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/implosion_compressor" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/implosion_compressor" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/implosion_compressor" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/implosion_compressor" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/implosion_compressor", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/implosion_compressor", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/implosion_compressor", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/implosion_compressor", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/implosion_compressor", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/implosion_compressor", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/implosion_compressor", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/implosion_compressor", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/implosion_compressor", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/implosion_compressor", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/implosion_compressor", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/implosion_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..cbd2c2061c7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_1024a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_1024a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_1024a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_1024a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_1024a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_1024a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_1024a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..a31e8e2ecf0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_1024a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_1024a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_1024a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_1024a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_1024a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_1024a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_1024a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/iv_16a_energy_converter.json new file mode 100644 index 00000000000..8240b3f9d03 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/iv_1a_energy_converter.json new file mode 100644 index 00000000000..114bc10932e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..d08981c5a55 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_256a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_256a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_256a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_256a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_256a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_256a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_256a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..d71b352fc29 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_256a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_256a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_256a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_256a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_256a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_256a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_256a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..d173f88740b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_4096a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_4096a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_4096a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_4096a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_4096a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_4096a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_4096a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..a3b7abeae41 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_4096a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_4096a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_4096a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_4096a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_4096a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_4096a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_4096a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/iv_4a_energy_converter.json new file mode 100644 index 00000000000..085361f0f7d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/iv_8a_energy_converter.json new file mode 100644 index 00000000000..875364c2956 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/iv_alloy_smelter.json new file mode 100644 index 00000000000..5e16a2c11ca --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/iv_arc_furnace.json new file mode 100644 index 00000000000..38666ec7ed6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_assembler.json b/src/generated/resources/assets/gtceu/blockstates/iv_assembler.json new file mode 100644 index 00000000000..d086f21cd79 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/iv_autoclave.json new file mode 100644 index 00000000000..d6262e40238 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/iv_battery_buffer_16x.json new file mode 100644 index 00000000000..c51a756e970 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/iv_battery_buffer_4x.json new file mode 100644 index 00000000000..e86c32fb065 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/iv_battery_buffer_8x.json new file mode 100644 index 00000000000..95540a4ab05 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_bender.json b/src/generated/resources/assets/gtceu/blockstates/iv_bender.json new file mode 100644 index 00000000000..7e9e6e048e9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_brewery.json b/src/generated/resources/assets/gtceu/blockstates/iv_brewery.json new file mode 100644 index 00000000000..9435eb3de34 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_canner.json b/src/generated/resources/assets/gtceu/blockstates/iv_canner.json new file mode 100644 index 00000000000..43bf06c2727 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/iv_centrifuge.json new file mode 100644 index 00000000000..804ecfe20a8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/iv_charger_4x.json new file mode 100644 index 00000000000..1702da8161e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/iv_chemical_bath.json new file mode 100644 index 00000000000..33f79117427 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/iv_chemical_reactor.json new file mode 100644 index 00000000000..05e8bebebd8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/iv_circuit_assembler.json new file mode 100644 index 00000000000..edf1d7e0d04 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_compressor.json b/src/generated/resources/assets/gtceu/blockstates/iv_compressor.json new file mode 100644 index 00000000000..d9535607a64 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_cutter.json b/src/generated/resources/assets/gtceu/blockstates/iv_cutter.json new file mode 100644 index 00000000000..ceb67d75a4f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_diode.json b/src/generated/resources/assets/gtceu/blockstates/iv_diode.json new file mode 100644 index 00000000000..44661e16203 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_distillery.json b/src/generated/resources/assets/gtceu/blockstates/iv_distillery.json new file mode 100644 index 00000000000..b291f34e170 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/iv_electric_furnace.json new file mode 100644 index 00000000000..cc8e172f5d2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/iv_electrolyzer.json new file mode 100644 index 00000000000..7e88ceb7860 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/iv_electromagnetic_separator.json new file mode 100644 index 00000000000..2bcc7456ead --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_energy_input_hatch.json new file mode 100644 index 00000000000..abb9d74f974 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/iv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..144aa220985 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_energy_input_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_energy_input_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_energy_input_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_energy_input_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_energy_input_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_energy_input_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_energy_input_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/iv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..8ed134537af --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_energy_input_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_energy_input_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_energy_input_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_energy_input_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_energy_input_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_energy_input_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_energy_input_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_energy_output_hatch.json new file mode 100644 index 00000000000..b27fca79c59 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/iv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..36fa48dd38c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_energy_output_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_energy_output_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_energy_output_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_energy_output_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_energy_output_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_energy_output_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_energy_output_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/iv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..5c1114ae6f5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_energy_output_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_energy_output_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_energy_output_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_energy_output_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_energy_output_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_energy_output_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_energy_output_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_extractor.json b/src/generated/resources/assets/gtceu/blockstates/iv_extractor.json new file mode 100644 index 00000000000..db4f7f02906 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_extruder.json b/src/generated/resources/assets/gtceu/blockstates/iv_extruder.json new file mode 100644 index 00000000000..20b732ff0dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/iv_fermenter.json new file mode 100644 index 00000000000..03df0187ce4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_fisher.json b/src/generated/resources/assets/gtceu/blockstates/iv_fisher.json new file mode 100644 index 00000000000..bf53ce0f850 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_fisher.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_fisher", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_fisher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_fisher" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_fisher", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_fisher", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_fisher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/iv_fluid_heater.json new file mode 100644 index 00000000000..316b78b6ebc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..acd17f68ec3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/iv_fluid_solidifier.json new file mode 100644 index 00000000000..592f659b6e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/iv_forge_hammer.json new file mode 100644 index 00000000000..bef8d7f59be --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/iv_forming_press.json new file mode 100644 index 00000000000..1e2e2d45a41 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/iv_gas_collector.json new file mode 100644 index 00000000000..e1f3211bdbb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/iv_input_bus.json new file mode 100644 index 00000000000..595f45e2299 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_input_hatch.json new file mode 100644 index 00000000000..37bd77abda7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/iv_input_hatch_4x.json new file mode 100644 index 00000000000..78cb9779de3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_input_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_input_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_input_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_input_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_input_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_input_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_input_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/iv_input_hatch_9x.json new file mode 100644 index 00000000000..a7c82f9890f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_input_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_input_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_input_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_input_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_input_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_input_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_input_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_item_passthrough_hatch.json new file mode 100644 index 00000000000..6d4be8fe5bb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_large_miner.json b/src/generated/resources/assets/gtceu/blockstates/iv_large_miner.json new file mode 100644 index 00000000000..f4db9ed93f1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_large_miner.json @@ -0,0 +1,76 @@ +{ + "variants": { + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_large_miner", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/iv_large_miner", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_large_miner", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_large_miner", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_large_miner" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/iv_large_miner" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_large_miner" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_large_miner" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_large_miner", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/iv_large_miner", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_large_miner", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_large_miner", + "y": 180 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_large_miner", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/iv_large_miner", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_large_miner", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_large_miner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/iv_laser_engraver.json new file mode 100644 index 00000000000..b0c1261dae0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_lathe.json b/src/generated/resources/assets/gtceu/blockstates/iv_lathe.json new file mode 100644 index 00000000000..c477d22d5f6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_macerator.json b/src/generated/resources/assets/gtceu/blockstates/iv_macerator.json new file mode 100644 index 00000000000..7efdb5b4df7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/iv_machine_hull.json new file mode 100644 index 00000000000..853302cb8bd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_mixer.json b/src/generated/resources/assets/gtceu/blockstates/iv_mixer.json new file mode 100644 index 00000000000..7ca7a8ecd82 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_muffler_hatch.json new file mode 100644 index 00000000000..4aa0add3ff5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/iv_ore_washer.json new file mode 100644 index 00000000000..22b397218f5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/iv_output_bus.json new file mode 100644 index 00000000000..d0f7bee89b4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_output_hatch.json new file mode 100644 index 00000000000..01e83a70ca8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/iv_output_hatch_4x.json new file mode 100644 index 00000000000..7ec19bb51a5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_output_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_output_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_output_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_output_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_output_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_output_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_output_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/iv_output_hatch_9x.json new file mode 100644 index 00000000000..e2f4bbbbcea --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_output_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_output_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_output_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_output_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_output_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_output_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_output_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_packer.json b/src/generated/resources/assets/gtceu/blockstates/iv_packer.json new file mode 100644 index 00000000000..90a8f8b3b4f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_parallel_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_parallel_hatch.json new file mode 100644 index 00000000000..5038e0f4734 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_parallel_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_parallel_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_parallel_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_parallel_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_parallel_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_parallel_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_parallel_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/iv_polarizer.json new file mode 100644 index 00000000000..9d05312fd39 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/iv_quantum_chest.json new file mode 100644 index 00000000000..78534ddef62 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_quantum_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/iv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_quantum_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/iv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_quantum_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_quantum_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/iv_quantum_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_quantum_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_quantum_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/iv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_quantum_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/iv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_quantum_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/iv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_quantum_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/iv_quantum_tank.json new file mode 100644 index 00000000000..b5947611ccf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_quantum_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/iv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_quantum_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/iv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_quantum_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_quantum_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/iv_quantum_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_quantum_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_quantum_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/iv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_quantum_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/iv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_quantum_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/iv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_quantum_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/iv_rock_crusher.json new file mode 100644 index 00000000000..0cf68ce2bbf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_rotor_holder.json b/src/generated/resources/assets/gtceu/blockstates/iv_rotor_holder.json new file mode 100644 index 00000000000..1f249470a11 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_rotor_holder.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_rotor_holder", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_rotor_holder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_rotor_holder" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_rotor_holder", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_rotor_holder", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_rotor_holder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_scanner.json b/src/generated/resources/assets/gtceu/blockstates/iv_scanner.json new file mode 100644 index 00000000000..3fb100fb908 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_sifter.json b/src/generated/resources/assets/gtceu/blockstates/iv_sifter.json new file mode 100644 index 00000000000..913c2a544f1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/iv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..4183377aea0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_substation_input_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_substation_input_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_substation_input_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_substation_input_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_substation_input_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_substation_input_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_substation_input_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/iv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..d7c71dca475 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_substation_output_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_substation_output_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_substation_output_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_substation_output_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_substation_output_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_substation_output_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_substation_output_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/iv_thermal_centrifuge.json new file mode 100644 index 00000000000..cb5aae56b5d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/iv_transformer_16a.json new file mode 100644 index 00000000000..6c9fff900f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/iv_transformer_1a.json new file mode 100644 index 00000000000..40e768f4f1a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/iv_transformer_2a.json new file mode 100644 index 00000000000..2a336bd23d7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/iv_transformer_4a.json new file mode 100644 index 00000000000..50d1f3bda29 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/iv_wiremill.json new file mode 100644 index 00000000000..4e86f556aea --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_world_accelerator.json b/src/generated/resources/assets/gtceu/blockstates/iv_world_accelerator.json new file mode 100644 index 00000000000..38efece432e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_world_accelerator.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/iv_world_accelerator" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_arc_smelter.json b/src/generated/resources/assets/gtceu/blockstates/large_arc_smelter.json new file mode 100644 index 00000000000..ad75bbd9202 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_arc_smelter.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_arc_smelter", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_arc_smelter", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_arc_smelter", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_arc_smelter", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_arc_smelter", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_arc_smelter", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_arc_smelter", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_arc_smelter", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_arc_smelter" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_arc_smelter" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_arc_smelter" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_arc_smelter" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_arc_smelter", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_arc_smelter", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_arc_smelter", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_arc_smelter", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_arc_smelter", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_arc_smelter", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_arc_smelter", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_arc_smelter", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_arc_smelter", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_arc_smelter", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_arc_smelter", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_arc_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_assembler.json b/src/generated/resources/assets/gtceu/blockstates/large_assembler.json new file mode 100644 index 00000000000..9d2ce23a183 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_assembler.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_assembler", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_assembler", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_assembler", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_assembler", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_assembler", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_assembler", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_assembler", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_assembler", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_assembler" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_assembler" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_assembler" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_assembler" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_assembler", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_assembler", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_assembler", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_assembler", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_assembler", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_assembler", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_assembler", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_assembler", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_assembler", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_assembler", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_assembler", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/large_autoclave.json new file mode 100644 index 00000000000..3d39a47fbc5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_autoclave.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_autoclave", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_autoclave", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_autoclave", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_autoclave", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_autoclave", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_autoclave", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_autoclave", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_autoclave", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_autoclave" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_autoclave" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_autoclave" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_autoclave" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_autoclave", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_autoclave", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_autoclave", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_autoclave", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_autoclave", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_autoclave", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_autoclave", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_autoclave", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_autoclave", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_autoclave", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_autoclave", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_brewer.json b/src/generated/resources/assets/gtceu/blockstates/large_brewer.json new file mode 100644 index 00000000000..a190ee00ad7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_brewer.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_brewer", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_brewer", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_brewer", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_brewer", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_brewer", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_brewer", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_brewer", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_brewer", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_brewer" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_brewer" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_brewer" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_brewer" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_brewer", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_brewer", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_brewer", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_brewer", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_brewer", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_brewer", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_brewer", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_brewer", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_brewer", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_brewer", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_brewer", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_brewer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/large_centrifuge.json new file mode 100644 index 00000000000..4aac4190995 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_centrifuge.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_centrifuge", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_centrifuge", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_centrifuge", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_centrifuge", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_centrifuge", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_centrifuge", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_centrifuge", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_centrifuge", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_centrifuge" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_centrifuge" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_centrifuge" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_centrifuge" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_centrifuge", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_centrifuge", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_centrifuge", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_centrifuge", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_centrifuge", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_centrifuge", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_centrifuge", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_centrifuge", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_centrifuge", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_centrifuge", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_centrifuge", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/large_chemical_bath.json new file mode 100644 index 00000000000..5d09912515c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_chemical_bath.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_chemical_bath", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_chemical_bath", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_chemical_bath", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_chemical_bath", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_chemical_bath", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_chemical_bath", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_chemical_bath", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_chemical_bath", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_chemical_bath" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_chemical_bath" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_chemical_bath" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_chemical_bath" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_chemical_bath", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_chemical_bath", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_chemical_bath", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_chemical_bath", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_chemical_bath", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_chemical_bath", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_chemical_bath", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_chemical_bath", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_chemical_bath", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_chemical_bath", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_chemical_bath", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/large_chemical_reactor.json new file mode 100644 index 00000000000..fdcb902fca6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_chemical_reactor.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_chemical_reactor", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_chemical_reactor", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_chemical_reactor", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_chemical_reactor", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_chemical_reactor", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_chemical_reactor", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_chemical_reactor", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_chemical_reactor", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_chemical_reactor" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_chemical_reactor" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_chemical_reactor" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_chemical_reactor" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_chemical_reactor", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_chemical_reactor", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_chemical_reactor", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_chemical_reactor", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_chemical_reactor", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_chemical_reactor", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_chemical_reactor", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_chemical_reactor", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_chemical_reactor", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_chemical_reactor", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_chemical_reactor", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/large_circuit_assembler.json new file mode 100644 index 00000000000..8a5e7bbaac0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_circuit_assembler.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_circuit_assembler", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_circuit_assembler", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_circuit_assembler", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_circuit_assembler", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_circuit_assembler", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_circuit_assembler", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_circuit_assembler", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_circuit_assembler", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_circuit_assembler" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_circuit_assembler" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_circuit_assembler" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_circuit_assembler" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_circuit_assembler", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_circuit_assembler", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_circuit_assembler", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_circuit_assembler", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_circuit_assembler", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_circuit_assembler", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_circuit_assembler", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_circuit_assembler", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_circuit_assembler", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_circuit_assembler", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_circuit_assembler", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_combustion_engine.json b/src/generated/resources/assets/gtceu/blockstates/large_combustion_engine.json new file mode 100644 index 00000000000..7fdd9d4c30c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_combustion_engine.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_combustion_engine", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_combustion_engine", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_combustion_engine", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_combustion_engine", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_combustion_engine", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_combustion_engine", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_combustion_engine", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_combustion_engine", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_combustion_engine" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_combustion_engine" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_combustion_engine" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_combustion_engine" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_combustion_engine", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_combustion_engine", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_combustion_engine", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_combustion_engine", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_combustion_engine", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_combustion_engine", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_combustion_engine", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_combustion_engine", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_combustion_engine", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_combustion_engine", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_combustion_engine", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_combustion_engine", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_cutter.json b/src/generated/resources/assets/gtceu/blockstates/large_cutter.json new file mode 100644 index 00000000000..e47de3ea3ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_cutter.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_cutter", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_cutter", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_cutter", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_cutter", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_cutter", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_cutter", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_cutter", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_cutter", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_cutter" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_cutter" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_cutter" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_cutter" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_cutter", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_cutter", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_cutter", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_cutter", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_cutter", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_cutter", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_cutter", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_cutter", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_cutter", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_cutter", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_cutter", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_distillery.json b/src/generated/resources/assets/gtceu/blockstates/large_distillery.json new file mode 100644 index 00000000000..b7e061a4cdf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/large_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/large_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/large_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/large_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/large_electrolyzer.json new file mode 100644 index 00000000000..a94b9f0aa01 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_electrolyzer.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_electrolyzer", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_electrolyzer", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_electrolyzer", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_electrolyzer", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_electrolyzer", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_electrolyzer", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_electrolyzer", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_electrolyzer", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_electrolyzer" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_electrolyzer" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_electrolyzer" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_electrolyzer" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_electrolyzer", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_electrolyzer", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_electrolyzer", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_electrolyzer", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_electrolyzer", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_electrolyzer", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_electrolyzer", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_electrolyzer", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_electrolyzer", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_electrolyzer", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_electrolyzer", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_electromagnet.json b/src/generated/resources/assets/gtceu/blockstates/large_electromagnet.json new file mode 100644 index 00000000000..929665d6ba3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_electromagnet.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_electromagnet", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_electromagnet", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_electromagnet", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_electromagnet", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_electromagnet", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_electromagnet", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_electromagnet", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_electromagnet", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_electromagnet" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_electromagnet" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_electromagnet" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_electromagnet" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_electromagnet", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_electromagnet", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_electromagnet", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_electromagnet", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_electromagnet", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_electromagnet", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_electromagnet", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_electromagnet", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_electromagnet", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_electromagnet", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_electromagnet", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_electromagnet", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_engraving_laser.json b/src/generated/resources/assets/gtceu/blockstates/large_engraving_laser.json new file mode 100644 index 00000000000..167f45bec63 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_engraving_laser.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_engraving_laser", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_engraving_laser", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_engraving_laser", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_engraving_laser", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_engraving_laser", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_engraving_laser", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_engraving_laser", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_engraving_laser", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_engraving_laser" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_engraving_laser" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_engraving_laser" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_engraving_laser" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_engraving_laser", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_engraving_laser", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_engraving_laser", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_engraving_laser", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_engraving_laser", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_engraving_laser", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_engraving_laser", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_engraving_laser", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_engraving_laser", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_engraving_laser", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_engraving_laser", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_engraving_laser", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_extractor.json b/src/generated/resources/assets/gtceu/blockstates/large_extractor.json new file mode 100644 index 00000000000..893e6e98011 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_extractor.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_extractor", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_extractor", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_extractor", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_extractor", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_extractor", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_extractor", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_extractor", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_extractor", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_extractor" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_extractor" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_extractor" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_extractor" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_extractor", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_extractor", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_extractor", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_extractor", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_extractor", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_extractor", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_extractor", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_extractor", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_extractor", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_extractor", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_extractor", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_extruder.json b/src/generated/resources/assets/gtceu/blockstates/large_extruder.json new file mode 100644 index 00000000000..e3cbd7af1a0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_extruder.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_extruder", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_extruder", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_extruder", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_extruder", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_extruder", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_extruder", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_extruder", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_extruder", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_extruder" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_extruder" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_extruder" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_extruder" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_extruder", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_extruder", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_extruder", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_extruder", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_extruder", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_extruder", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_extruder", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_extruder", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_extruder", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_extruder", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_extruder", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_maceration_tower.json b/src/generated/resources/assets/gtceu/blockstates/large_maceration_tower.json new file mode 100644 index 00000000000..04932d5aeeb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_maceration_tower.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_maceration_tower", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_maceration_tower", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_maceration_tower", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_maceration_tower", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_maceration_tower", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_maceration_tower", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_maceration_tower", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_maceration_tower", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_maceration_tower" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_maceration_tower" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_maceration_tower" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_maceration_tower" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_maceration_tower", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_maceration_tower", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_maceration_tower", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_maceration_tower", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_maceration_tower", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_maceration_tower", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_maceration_tower", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_maceration_tower", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_maceration_tower", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_maceration_tower", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_maceration_tower", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_maceration_tower", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_material_press.json b/src/generated/resources/assets/gtceu/blockstates/large_material_press.json new file mode 100644 index 00000000000..5d65d7eb49e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_material_press.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_material_press", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_material_press", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_material_press", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_material_press", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_material_press", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_material_press", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_material_press", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_material_press", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_material_press" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_material_press" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_material_press" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_material_press" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_material_press", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_material_press", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_material_press", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_material_press", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_material_press", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_material_press", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_material_press", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_material_press", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_material_press", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_material_press", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_material_press", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_material_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_mixer.json b/src/generated/resources/assets/gtceu/blockstates/large_mixer.json new file mode 100644 index 00000000000..8bb60bd8245 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_mixer.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_mixer", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_mixer", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_mixer", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_mixer", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_mixer", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_mixer", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_mixer", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_mixer", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_mixer" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_mixer" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_mixer" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_mixer" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_mixer", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_mixer", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_mixer", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_mixer", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_mixer", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_mixer", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_mixer", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_mixer", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_mixer", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_mixer", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_mixer", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_packer.json b/src/generated/resources/assets/gtceu/blockstates/large_packer.json new file mode 100644 index 00000000000..a8d2e8d79ee --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_packer.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_packer", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_packer", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_packer", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_packer", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_packer", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_packer", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_packer", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_packer", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_packer" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_packer" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_packer" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_packer" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_packer", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_packer", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_packer", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_packer", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_packer", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_packer", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_packer", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_packer", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_packer", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_packer", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_packer", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_sifting_funnel.json b/src/generated/resources/assets/gtceu/blockstates/large_sifting_funnel.json new file mode 100644 index 00000000000..491961b0ab5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_sifting_funnel.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_sifting_funnel", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_sifting_funnel", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_sifting_funnel", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_sifting_funnel", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_sifting_funnel", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_sifting_funnel", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_sifting_funnel", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_sifting_funnel", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_sifting_funnel" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_sifting_funnel" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_sifting_funnel" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_sifting_funnel" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_sifting_funnel", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_sifting_funnel", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_sifting_funnel", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_sifting_funnel", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_sifting_funnel", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_sifting_funnel", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_sifting_funnel", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_sifting_funnel", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_sifting_funnel", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_sifting_funnel", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_sifting_funnel", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_sifting_funnel", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/large_solidifier.json new file mode 100644 index 00000000000..bb931c2b043 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_solidifier.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_solidifier", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_solidifier", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_solidifier", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_solidifier", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_solidifier", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_solidifier", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_solidifier", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_solidifier", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_solidifier" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_solidifier" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_solidifier" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_solidifier" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_solidifier", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_solidifier", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_solidifier", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_solidifier", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_solidifier", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_solidifier", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_solidifier", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_solidifier", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_solidifier", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_solidifier", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_solidifier", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/large_wiremill.json new file mode 100644 index 00000000000..2553979b12d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_wiremill.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_wiremill", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_wiremill", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_wiremill", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_wiremill", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_wiremill", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_wiremill", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_wiremill", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_wiremill", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_wiremill" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_wiremill" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_wiremill" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_wiremill" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_wiremill", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_wiremill", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_wiremill", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_wiremill", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_wiremill", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_wiremill", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_wiremill", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_wiremill", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_wiremill", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_wiremill", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_wiremill", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/long_distance_fluid_pipeline_endpoint.json b/src/generated/resources/assets/gtceu/blockstates/long_distance_fluid_pipeline_endpoint.json new file mode 100644 index 00000000000..50bf3059c2b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/long_distance_fluid_pipeline_endpoint.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/long_distance_fluid_pipeline_endpoint" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/long_distance_item_pipeline_endpoint.json b/src/generated/resources/assets/gtceu/blockstates/long_distance_item_pipeline_endpoint.json new file mode 100644 index 00000000000..676d5ef5f2a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/long_distance_item_pipeline_endpoint.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/long_distance_item_pipeline_endpoint" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lp_steam_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/lp_steam_alloy_smelter.json new file mode 100644 index 00000000000..c8df1d5c49a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lp_steam_alloy_smelter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lp_steam_alloy_smelter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lp_steam_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lp_steam_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/lp_steam_alloy_smelter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lp_steam_alloy_smelter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lp_steam_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lp_steam_compressor.json b/src/generated/resources/assets/gtceu/blockstates/lp_steam_compressor.json new file mode 100644 index 00000000000..1e00db3c548 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lp_steam_compressor.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lp_steam_compressor", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lp_steam_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lp_steam_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/lp_steam_compressor", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lp_steam_compressor", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lp_steam_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lp_steam_extractor.json b/src/generated/resources/assets/gtceu/blockstates/lp_steam_extractor.json new file mode 100644 index 00000000000..0e520432e9a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lp_steam_extractor.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lp_steam_extractor", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lp_steam_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lp_steam_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/lp_steam_extractor", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lp_steam_extractor", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lp_steam_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lp_steam_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/lp_steam_forge_hammer.json new file mode 100644 index 00000000000..7bc4be5c3b8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lp_steam_forge_hammer.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lp_steam_forge_hammer", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lp_steam_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lp_steam_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/lp_steam_forge_hammer", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lp_steam_forge_hammer", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lp_steam_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lp_steam_furnace.json b/src/generated/resources/assets/gtceu/blockstates/lp_steam_furnace.json new file mode 100644 index 00000000000..b71e4e02644 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lp_steam_furnace.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lp_steam_furnace", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lp_steam_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lp_steam_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/lp_steam_furnace", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lp_steam_furnace", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lp_steam_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lp_steam_liquid_boiler.json b/src/generated/resources/assets/gtceu/blockstates/lp_steam_liquid_boiler.json new file mode 100644 index 00000000000..34862b19963 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lp_steam_liquid_boiler.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lp_steam_liquid_boiler", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lp_steam_liquid_boiler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lp_steam_liquid_boiler" + }, + "facing=south": { + "model": "gtceu:block/machine/lp_steam_liquid_boiler", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lp_steam_liquid_boiler", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lp_steam_liquid_boiler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lp_steam_macerator.json b/src/generated/resources/assets/gtceu/blockstates/lp_steam_macerator.json new file mode 100644 index 00000000000..824f005b6e4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lp_steam_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lp_steam_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lp_steam_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/lp_steam_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lp_steam_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lp_steam_miner.json b/src/generated/resources/assets/gtceu/blockstates/lp_steam_miner.json new file mode 100644 index 00000000000..a12da2f4d34 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lp_steam_miner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lp_steam_miner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lp_steam_miner" + }, + "facing=south": { + "model": "gtceu:block/machine/lp_steam_miner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lp_steam_miner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lp_steam_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/lp_steam_rock_crusher.json new file mode 100644 index 00000000000..3179f51aeb8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lp_steam_rock_crusher.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lp_steam_rock_crusher", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lp_steam_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lp_steam_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/lp_steam_rock_crusher", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lp_steam_rock_crusher", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lp_steam_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lp_steam_solar_boiler.json b/src/generated/resources/assets/gtceu/blockstates/lp_steam_solar_boiler.json new file mode 100644 index 00000000000..83fc1a61978 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lp_steam_solar_boiler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lp_steam_solar_boiler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lp_steam_solar_boiler" + }, + "facing=south": { + "model": "gtceu:block/machine/lp_steam_solar_boiler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lp_steam_solar_boiler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lp_steam_solid_boiler.json b/src/generated/resources/assets/gtceu/blockstates/lp_steam_solid_boiler.json new file mode 100644 index 00000000000..d37846f0d00 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lp_steam_solid_boiler.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lp_steam_solid_boiler", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lp_steam_solid_boiler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lp_steam_solid_boiler" + }, + "facing=south": { + "model": "gtceu:block/machine/lp_steam_solid_boiler", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lp_steam_solid_boiler", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lp_steam_solid_boiler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..577ce6a82d0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_1024a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_1024a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_1024a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_1024a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_1024a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_1024a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_1024a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..ed7e017021b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_1024a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_1024a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_1024a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_1024a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_1024a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_1024a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_1024a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/luv_16a_energy_converter.json new file mode 100644 index 00000000000..bae63a84c09 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/luv_1a_energy_converter.json new file mode 100644 index 00000000000..3c6c91f214f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..b33ce07d7f5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_256a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_256a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_256a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_256a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_256a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_256a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_256a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..8d6b2ecaa7b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_256a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_256a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_256a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_256a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_256a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_256a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_256a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..f50fdb0f239 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_4096a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_4096a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_4096a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_4096a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_4096a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_4096a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_4096a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..f9c8757e210 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_4096a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_4096a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_4096a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_4096a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_4096a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_4096a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_4096a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/luv_4a_energy_converter.json new file mode 100644 index 00000000000..5ba1ab17b7f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/luv_8a_energy_converter.json new file mode 100644 index 00000000000..8af1ce9a047 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/luv_alloy_smelter.json new file mode 100644 index 00000000000..22e0213f302 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/luv_arc_furnace.json new file mode 100644 index 00000000000..0826f10709f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_assembler.json b/src/generated/resources/assets/gtceu/blockstates/luv_assembler.json new file mode 100644 index 00000000000..38bb315065f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/luv_autoclave.json new file mode 100644 index 00000000000..0d393b60614 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/luv_battery_buffer_16x.json new file mode 100644 index 00000000000..22c9fb5e4c7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/luv_battery_buffer_4x.json new file mode 100644 index 00000000000..9a6d8daebb7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/luv_battery_buffer_8x.json new file mode 100644 index 00000000000..41e7a5c9e22 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_bender.json b/src/generated/resources/assets/gtceu/blockstates/luv_bender.json new file mode 100644 index 00000000000..5a5596c177d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_brewery.json b/src/generated/resources/assets/gtceu/blockstates/luv_brewery.json new file mode 100644 index 00000000000..019b50ca805 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_canner.json b/src/generated/resources/assets/gtceu/blockstates/luv_canner.json new file mode 100644 index 00000000000..cd913ddccda --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/luv_centrifuge.json new file mode 100644 index 00000000000..59c5a9254fd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/luv_charger_4x.json new file mode 100644 index 00000000000..f3c2ca9b998 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/luv_chemical_bath.json new file mode 100644 index 00000000000..6eb20161775 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/luv_chemical_reactor.json new file mode 100644 index 00000000000..42e2d5e8131 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/luv_circuit_assembler.json new file mode 100644 index 00000000000..eac784487b5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_compressor.json b/src/generated/resources/assets/gtceu/blockstates/luv_compressor.json new file mode 100644 index 00000000000..e518b7fa631 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_cutter.json b/src/generated/resources/assets/gtceu/blockstates/luv_cutter.json new file mode 100644 index 00000000000..29b89cd43ad --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_diode.json b/src/generated/resources/assets/gtceu/blockstates/luv_diode.json new file mode 100644 index 00000000000..e967e909237 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_distillery.json b/src/generated/resources/assets/gtceu/blockstates/luv_distillery.json new file mode 100644 index 00000000000..36f7915f09d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_dual_input_hatch.json new file mode 100644 index 00000000000..26ff1e1a86b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_dual_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_dual_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_dual_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_dual_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_dual_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_dual_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_dual_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_dual_output_hatch.json new file mode 100644 index 00000000000..2c010d9d58a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_dual_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_dual_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_dual_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_dual_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_dual_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_dual_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_dual_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/luv_electric_furnace.json new file mode 100644 index 00000000000..bde68733946 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/luv_electrolyzer.json new file mode 100644 index 00000000000..0dd84188c44 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/luv_electromagnetic_separator.json new file mode 100644 index 00000000000..659161a61c6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_energy_input_hatch.json new file mode 100644 index 00000000000..b7f485ffe5b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/luv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..57d46db9957 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_energy_input_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_energy_input_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_energy_input_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_energy_input_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_energy_input_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_energy_input_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_energy_input_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/luv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..b290631aea0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_energy_input_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_energy_input_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_energy_input_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_energy_input_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_energy_input_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_energy_input_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_energy_input_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_energy_output_hatch.json new file mode 100644 index 00000000000..be963fd0849 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/luv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..8dbd6ba2e80 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_energy_output_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_energy_output_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_energy_output_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_energy_output_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_energy_output_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_energy_output_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_energy_output_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/luv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..73f1e15a78d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_energy_output_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_energy_output_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_energy_output_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_energy_output_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_energy_output_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_energy_output_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_energy_output_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_extractor.json b/src/generated/resources/assets/gtceu/blockstates/luv_extractor.json new file mode 100644 index 00000000000..127fa638060 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_extruder.json b/src/generated/resources/assets/gtceu/blockstates/luv_extruder.json new file mode 100644 index 00000000000..21a1110610a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/luv_fermenter.json new file mode 100644 index 00000000000..5e9c95882f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_fisher.json b/src/generated/resources/assets/gtceu/blockstates/luv_fisher.json new file mode 100644 index 00000000000..cb04fe2109f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_fisher.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_fisher", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_fisher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_fisher" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_fisher", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_fisher", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_fisher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/luv_fluid_heater.json new file mode 100644 index 00000000000..cc12ee8743d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..33c938ac7e7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/luv_fluid_solidifier.json new file mode 100644 index 00000000000..c77122f580c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/luv_forge_hammer.json new file mode 100644 index 00000000000..9d0810eca39 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/luv_forming_press.json new file mode 100644 index 00000000000..48cbd5d9494 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_fusion_reactor.json b/src/generated/resources/assets/gtceu/blockstates/luv_fusion_reactor.json new file mode 100644 index 00000000000..e9c318805dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_fusion_reactor.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_fusion_reactor", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/luv_fusion_reactor", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_fusion_reactor", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_fusion_reactor", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_fusion_reactor", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/luv_fusion_reactor", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_fusion_reactor", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_fusion_reactor", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_fusion_reactor" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/luv_fusion_reactor" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_fusion_reactor" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_fusion_reactor" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_fusion_reactor", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/luv_fusion_reactor", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_fusion_reactor", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_fusion_reactor", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_fusion_reactor", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_fusion_reactor", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/luv_fusion_reactor", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_fusion_reactor", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_fusion_reactor", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/luv_fusion_reactor", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_fusion_reactor", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_fusion_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/luv_gas_collector.json new file mode 100644 index 00000000000..6ceba178809 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/luv_input_bus.json new file mode 100644 index 00000000000..e22b28ae1a8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_input_hatch.json new file mode 100644 index 00000000000..5bfbefc6512 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/luv_input_hatch_4x.json new file mode 100644 index 00000000000..c1b6dbd3aed --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_input_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_input_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_input_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_input_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_input_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_input_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_input_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/luv_input_hatch_9x.json new file mode 100644 index 00000000000..94a2412ec31 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_input_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_input_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_input_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_input_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_input_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_input_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_input_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_item_passthrough_hatch.json new file mode 100644 index 00000000000..f7c0873f746 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_large_miner.json b/src/generated/resources/assets/gtceu/blockstates/luv_large_miner.json new file mode 100644 index 00000000000..45a2d8bc2b5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_large_miner.json @@ -0,0 +1,76 @@ +{ + "variants": { + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_large_miner", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/luv_large_miner", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_large_miner", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_large_miner", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_large_miner" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/luv_large_miner" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_large_miner" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_large_miner" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_large_miner", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/luv_large_miner", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_large_miner", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_large_miner", + "y": 180 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_large_miner", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/luv_large_miner", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_large_miner", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_large_miner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/luv_laser_engraver.json new file mode 100644 index 00000000000..a39c3dcacfe --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_lathe.json b/src/generated/resources/assets/gtceu/blockstates/luv_lathe.json new file mode 100644 index 00000000000..7dc6d2b63a3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_macerator.json b/src/generated/resources/assets/gtceu/blockstates/luv_macerator.json new file mode 100644 index 00000000000..70e8a7230e3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/luv_machine_hull.json new file mode 100644 index 00000000000..1797071474c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_mixer.json b/src/generated/resources/assets/gtceu/blockstates/luv_mixer.json new file mode 100644 index 00000000000..fbad36f9c4c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_muffler_hatch.json new file mode 100644 index 00000000000..a709388907f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/luv_ore_washer.json new file mode 100644 index 00000000000..4c9b81aeb89 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/luv_output_bus.json new file mode 100644 index 00000000000..a2223cd384b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_output_hatch.json new file mode 100644 index 00000000000..d33bfc53c2b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/luv_output_hatch_4x.json new file mode 100644 index 00000000000..5173448bb43 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_output_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_output_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_output_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_output_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_output_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_output_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_output_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/luv_output_hatch_9x.json new file mode 100644 index 00000000000..0b1daeb3141 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_output_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_output_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_output_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_output_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_output_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_output_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_output_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_packer.json b/src/generated/resources/assets/gtceu/blockstates/luv_packer.json new file mode 100644 index 00000000000..a0d2e81dbc3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_parallel_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_parallel_hatch.json new file mode 100644 index 00000000000..f616f25d521 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_parallel_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_parallel_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_parallel_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_parallel_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_parallel_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_parallel_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_parallel_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/luv_polarizer.json new file mode 100644 index 00000000000..9f5514b6f4d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/luv_quantum_chest.json new file mode 100644 index 00000000000..74882b02e30 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_quantum_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/luv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_quantum_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/luv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_quantum_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_quantum_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/luv_quantum_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_quantum_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_quantum_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/luv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_quantum_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/luv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_quantum_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/luv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_quantum_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/luv_quantum_tank.json new file mode 100644 index 00000000000..c10a5142587 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_quantum_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/luv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_quantum_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/luv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_quantum_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_quantum_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/luv_quantum_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_quantum_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_quantum_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/luv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_quantum_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/luv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_quantum_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/luv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_quantum_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/luv_rock_crusher.json new file mode 100644 index 00000000000..3ba42030d9a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_rotor_holder.json b/src/generated/resources/assets/gtceu/blockstates/luv_rotor_holder.json new file mode 100644 index 00000000000..56e2112922d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_rotor_holder.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_rotor_holder", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_rotor_holder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_rotor_holder" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_rotor_holder", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_rotor_holder", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_rotor_holder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_scanner.json b/src/generated/resources/assets/gtceu/blockstates/luv_scanner.json new file mode 100644 index 00000000000..0c6bb659cfd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_sifter.json b/src/generated/resources/assets/gtceu/blockstates/luv_sifter.json new file mode 100644 index 00000000000..bf13a01644b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/luv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..494153857b4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_substation_input_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_substation_input_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_substation_input_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_substation_input_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_substation_input_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_substation_input_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_substation_input_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/luv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..e3e31686ea9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_substation_output_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_substation_output_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_substation_output_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_substation_output_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_substation_output_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_substation_output_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_substation_output_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/luv_thermal_centrifuge.json new file mode 100644 index 00000000000..58f0ed7e44b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/luv_transformer_16a.json new file mode 100644 index 00000000000..e6849c9b4f1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/luv_transformer_1a.json new file mode 100644 index 00000000000..4fc9b7fb8f7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/luv_transformer_2a.json new file mode 100644 index 00000000000..23617d91ffc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/luv_transformer_4a.json new file mode 100644 index 00000000000..a3eff62f4d3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/luv_wiremill.json new file mode 100644 index 00000000000..b7ca02d9a9f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_world_accelerator.json b/src/generated/resources/assets/gtceu/blockstates/luv_world_accelerator.json new file mode 100644 index 00000000000..3557b29fa50 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_world_accelerator.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/luv_world_accelerator" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/lv_16a_energy_converter.json new file mode 100644 index 00000000000..efcfe726762 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/lv_1a_energy_converter.json new file mode 100644 index 00000000000..c80f1112e6f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/lv_4a_energy_converter.json new file mode 100644 index 00000000000..c1fbe0f9dcb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/lv_8a_energy_converter.json new file mode 100644 index 00000000000..3a37656016c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_air_scrubber.json b/src/generated/resources/assets/gtceu/blockstates/lv_air_scrubber.json new file mode 100644 index 00000000000..efbd4cdc594 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_air_scrubber.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_air_scrubber", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_air_scrubber" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_air_scrubber", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_air_scrubber", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/lv_alloy_smelter.json new file mode 100644 index 00000000000..d42563b6b66 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/lv_arc_furnace.json new file mode 100644 index 00000000000..76ceee3f8a1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_assembler.json b/src/generated/resources/assets/gtceu/blockstates/lv_assembler.json new file mode 100644 index 00000000000..d27dd2cfc7c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/lv_autoclave.json new file mode 100644 index 00000000000..a5a5eb53230 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/lv_battery_buffer_16x.json new file mode 100644 index 00000000000..191801f90b2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/lv_battery_buffer_4x.json new file mode 100644 index 00000000000..9956ebed2b4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/lv_battery_buffer_8x.json new file mode 100644 index 00000000000..77a2328c2da --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_bender.json b/src/generated/resources/assets/gtceu/blockstates/lv_bender.json new file mode 100644 index 00000000000..e970c83e36c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_block_breaker.json b/src/generated/resources/assets/gtceu/blockstates/lv_block_breaker.json new file mode 100644 index 00000000000..5a6657b61e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_block_breaker.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_block_breaker", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_block_breaker" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_block_breaker", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_block_breaker", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_brewery.json b/src/generated/resources/assets/gtceu/blockstates/lv_brewery.json new file mode 100644 index 00000000000..d7c069e1925 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_buffer.json b/src/generated/resources/assets/gtceu/blockstates/lv_buffer.json new file mode 100644 index 00000000000..be264f76518 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_buffer.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/lv_buffer" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_canner.json b/src/generated/resources/assets/gtceu/blockstates/lv_canner.json new file mode 100644 index 00000000000..b1d8192c6aa --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/lv_centrifuge.json new file mode 100644 index 00000000000..8b1108035be --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/lv_charger_4x.json new file mode 100644 index 00000000000..86407e78299 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/lv_chemical_bath.json new file mode 100644 index 00000000000..331b62eb70a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/lv_chemical_reactor.json new file mode 100644 index 00000000000..1a71ca0e6d1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/lv_circuit_assembler.json new file mode 100644 index 00000000000..ca129468844 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_combustion.json b/src/generated/resources/assets/gtceu/blockstates/lv_combustion.json new file mode 100644 index 00000000000..03804a92d3a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_combustion.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_combustion", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_combustion", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_combustion" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_combustion", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_combustion", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_combustion", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_compressor.json b/src/generated/resources/assets/gtceu/blockstates/lv_compressor.json new file mode 100644 index 00000000000..5ef368e0416 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_cutter.json b/src/generated/resources/assets/gtceu/blockstates/lv_cutter.json new file mode 100644 index 00000000000..ae65f209ce8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_diode.json b/src/generated/resources/assets/gtceu/blockstates/lv_diode.json new file mode 100644 index 00000000000..70034d2891d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_distillery.json b/src/generated/resources/assets/gtceu/blockstates/lv_distillery.json new file mode 100644 index 00000000000..e6f13846f1a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/lv_electric_furnace.json new file mode 100644 index 00000000000..2db4e07befe --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/lv_electrolyzer.json new file mode 100644 index 00000000000..6ad4bf35360 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/lv_electromagnetic_separator.json new file mode 100644 index 00000000000..5f66ca97162 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/lv_energy_input_hatch.json new file mode 100644 index 00000000000..bec6beafb27 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/lv_energy_output_hatch.json new file mode 100644 index 00000000000..dff43511c82 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_extractor.json b/src/generated/resources/assets/gtceu/blockstates/lv_extractor.json new file mode 100644 index 00000000000..6fa2cc89471 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_extruder.json b/src/generated/resources/assets/gtceu/blockstates/lv_extruder.json new file mode 100644 index 00000000000..6879d6bd3b8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/lv_fermenter.json new file mode 100644 index 00000000000..9829d3cd1e0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_fisher.json b/src/generated/resources/assets/gtceu/blockstates/lv_fisher.json new file mode 100644 index 00000000000..dc346472357 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_fisher.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_fisher", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_fisher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_fisher" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_fisher", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_fisher", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_fisher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/lv_fluid_heater.json new file mode 100644 index 00000000000..ef909975491 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/lv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..54d01aed49c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/lv_fluid_solidifier.json new file mode 100644 index 00000000000..8d5bfff7078 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/lv_forge_hammer.json new file mode 100644 index 00000000000..a319d1d74f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/lv_forming_press.json new file mode 100644 index 00000000000..64d60433f74 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/lv_gas_collector.json new file mode 100644 index 00000000000..fe36c2a694f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_gas_turbine.json b/src/generated/resources/assets/gtceu/blockstates/lv_gas_turbine.json new file mode 100644 index 00000000000..4d401c917d8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_gas_turbine.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_gas_turbine", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_gas_turbine", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_gas_turbine" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_gas_turbine", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_gas_turbine", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_gas_turbine", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/lv_input_bus.json new file mode 100644 index 00000000000..1fbca6a87cf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/lv_input_hatch.json new file mode 100644 index 00000000000..91d3ef7d3ab --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_item_collector.json b/src/generated/resources/assets/gtceu/blockstates/lv_item_collector.json new file mode 100644 index 00000000000..0b369ef8150 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_item_collector.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/lv_item_collector" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/lv_item_passthrough_hatch.json new file mode 100644 index 00000000000..c5f75db0702 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/lv_laser_engraver.json new file mode 100644 index 00000000000..208ba57a721 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_lathe.json b/src/generated/resources/assets/gtceu/blockstates/lv_lathe.json new file mode 100644 index 00000000000..6c87e2e8afd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_macerator.json b/src/generated/resources/assets/gtceu/blockstates/lv_macerator.json new file mode 100644 index 00000000000..67fc7c114f9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/lv_machine_hull.json new file mode 100644 index 00000000000..97e4aff07fc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_miner.json b/src/generated/resources/assets/gtceu/blockstates/lv_miner.json new file mode 100644 index 00000000000..51ca6582909 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_miner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_miner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_miner" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_miner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_miner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_mixer.json b/src/generated/resources/assets/gtceu/blockstates/lv_mixer.json new file mode 100644 index 00000000000..f5a11d28804 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/lv_muffler_hatch.json new file mode 100644 index 00000000000..af4b7cb2fca --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/lv_ore_washer.json new file mode 100644 index 00000000000..5b0e858f525 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/lv_output_bus.json new file mode 100644 index 00000000000..1f1e803955a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/lv_output_hatch.json new file mode 100644 index 00000000000..86d12bf552f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_packer.json b/src/generated/resources/assets/gtceu/blockstates/lv_packer.json new file mode 100644 index 00000000000..3a20756d595 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/lv_polarizer.json new file mode 100644 index 00000000000..19d5df6976f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_pump.json b/src/generated/resources/assets/gtceu/blockstates/lv_pump.json new file mode 100644 index 00000000000..c99bad34dca --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_pump.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_pump", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_pump", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_pump" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_pump", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_pump", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_pump", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/lv_rock_crusher.json new file mode 100644 index 00000000000..4a395c9873a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_scanner.json b/src/generated/resources/assets/gtceu/blockstates/lv_scanner.json new file mode 100644 index 00000000000..07ca2cb118d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_sifter.json b/src/generated/resources/assets/gtceu/blockstates/lv_sifter.json new file mode 100644 index 00000000000..d0940f7277e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_steam_turbine.json b/src/generated/resources/assets/gtceu/blockstates/lv_steam_turbine.json new file mode 100644 index 00000000000..beded3fc984 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_steam_turbine.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_steam_turbine", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_steam_turbine", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_steam_turbine" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_steam_turbine", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_steam_turbine", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_steam_turbine", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_super_chest.json b/src/generated/resources/assets/gtceu/blockstates/lv_super_chest.json new file mode 100644 index 00000000000..d4027ba147d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_super_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/lv_super_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/lv_super_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_super_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/lv_super_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/lv_super_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/lv_super_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_super_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/lv_super_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/lv_super_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/lv_super_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_super_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/lv_super_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/lv_super_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/lv_super_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_super_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/lv_super_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/lv_super_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_super_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/lv_super_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/lv_super_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/lv_super_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/lv_super_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_super_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/lv_super_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_super_tank.json b/src/generated/resources/assets/gtceu/blockstates/lv_super_tank.json new file mode 100644 index 00000000000..47d846e231d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_super_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/lv_super_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/lv_super_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_super_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/lv_super_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/lv_super_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/lv_super_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_super_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/lv_super_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/lv_super_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/lv_super_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_super_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/lv_super_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/lv_super_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/lv_super_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_super_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/lv_super_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/lv_super_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_super_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/lv_super_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/lv_super_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/lv_super_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/lv_super_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_super_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/lv_super_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/lv_thermal_centrifuge.json new file mode 100644 index 00000000000..930c834a164 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/lv_transformer_16a.json new file mode 100644 index 00000000000..e0558683f0a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/lv_transformer_1a.json new file mode 100644 index 00000000000..e028fe9edcd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/lv_transformer_2a.json new file mode 100644 index 00000000000..be312dcf1b2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/lv_transformer_4a.json new file mode 100644 index 00000000000..cf0fe84f7da --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/lv_wiremill.json new file mode 100644 index 00000000000..8eff56d6b42 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_world_accelerator.json b/src/generated/resources/assets/gtceu/blockstates/lv_world_accelerator.json new file mode 100644 index 00000000000..2514162f6cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_world_accelerator.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/lv_world_accelerator" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/maintenance_hatch.json b/src/generated/resources/assets/gtceu/blockstates/maintenance_hatch.json new file mode 100644 index 00000000000..a8196b9eb19 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/maintenance_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/maintenance_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/maintenance_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/maintenance_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/maintenance_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/maintenance_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/maintenance_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/max_16a_energy_converter.json new file mode 100644 index 00000000000..03e26ba0f3e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/max_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/max_1a_energy_converter.json new file mode 100644 index 00000000000..27dbcb2220c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/max_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/max_4a_energy_converter.json new file mode 100644 index 00000000000..d6dd71c29a5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/max_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/max_8a_energy_converter.json new file mode 100644 index 00000000000..e3d8cb68662 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/max_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/max_battery_buffer_16x.json new file mode 100644 index 00000000000..9d217d019e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/max_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/max_battery_buffer_4x.json new file mode 100644 index 00000000000..1e377f1f8d0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/max_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/max_battery_buffer_8x.json new file mode 100644 index 00000000000..3ef5fea4fc2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/max_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/max_charger_4x.json new file mode 100644 index 00000000000..f9d4612d908 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/max_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_dual_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/max_dual_input_hatch.json new file mode 100644 index 00000000000..5e60f804095 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_dual_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_dual_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_dual_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_dual_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/max_dual_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_dual_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_dual_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_dual_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/max_dual_output_hatch.json new file mode 100644 index 00000000000..5124945ff66 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_dual_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_dual_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_dual_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_dual_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/max_dual_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_dual_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_dual_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/max_energy_input_hatch.json new file mode 100644 index 00000000000..803acf271d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/max_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/max_energy_input_hatch_16a.json new file mode 100644 index 00000000000..8ebf6381e23 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_energy_input_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_energy_input_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_energy_input_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_energy_input_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/max_energy_input_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_energy_input_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_energy_input_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/max_energy_input_hatch_4a.json new file mode 100644 index 00000000000..00c7e2d4bfd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_energy_input_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_energy_input_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_energy_input_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_energy_input_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/max_energy_input_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_energy_input_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_energy_input_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/max_energy_output_hatch.json new file mode 100644 index 00000000000..30db79db60d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/max_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/max_energy_output_hatch_16a.json new file mode 100644 index 00000000000..3e9d1ab4b70 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_energy_output_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_energy_output_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_energy_output_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_energy_output_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/max_energy_output_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_energy_output_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_energy_output_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/max_energy_output_hatch_4a.json new file mode 100644 index 00000000000..4139eb0a2c8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_energy_output_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_energy_output_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_energy_output_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_energy_output_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/max_energy_output_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_energy_output_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_energy_output_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/max_input_bus.json new file mode 100644 index 00000000000..3f728cdb48f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/max_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/max_input_hatch.json new file mode 100644 index 00000000000..758aca8b4f9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/max_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_input_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/max_input_hatch_4x.json new file mode 100644 index 00000000000..bbe2ce0fdaf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_input_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_input_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_input_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_input_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/max_input_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_input_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_input_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_input_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/max_input_hatch_9x.json new file mode 100644 index 00000000000..6d783fee56f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_input_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_input_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_input_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_input_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/max_input_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_input_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_input_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/max_machine_hull.json new file mode 100644 index 00000000000..cd416699a1a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/max_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/max_output_bus.json new file mode 100644 index 00000000000..8a122b675da --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/max_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/max_output_hatch.json new file mode 100644 index 00000000000..59f21f57a8c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/max_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_output_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/max_output_hatch_4x.json new file mode 100644 index 00000000000..daf0a7acf91 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_output_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_output_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_output_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_output_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/max_output_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_output_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_output_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_output_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/max_output_hatch_9x.json new file mode 100644 index 00000000000..7b809b170dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_output_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_output_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_output_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_output_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/max_output_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_output_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_output_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/max_substation_input_hatch_64a.json new file mode 100644 index 00000000000..36ae0e9e315 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_substation_input_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_substation_input_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_substation_input_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_substation_input_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/max_substation_input_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_substation_input_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_substation_input_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/max_substation_output_hatch_64a.json new file mode 100644 index 00000000000..0c22b5eead5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_substation_output_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_substation_output_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_substation_output_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_substation_output_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/max_substation_output_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_substation_output_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_substation_output_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/me_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/me_input_bus.json new file mode 100644 index 00000000000..099c3862dbf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/me_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/me_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/me_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/me_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/me_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/me_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/me_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/me_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/me_input_hatch.json new file mode 100644 index 00000000000..5790fd3bcfd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/me_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/me_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/me_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/me_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/me_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/me_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/me_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/me_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/me_output_bus.json new file mode 100644 index 00000000000..2a4af25f4be --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/me_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/me_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/me_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/me_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/me_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/me_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/me_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/me_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/me_output_hatch.json new file mode 100644 index 00000000000..294827b6a24 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/me_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/me_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/me_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/me_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/me_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/me_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/me_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/me_pattern_buffer.json b/src/generated/resources/assets/gtceu/blockstates/me_pattern_buffer.json new file mode 100644 index 00000000000..256cc941891 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/me_pattern_buffer.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/me_pattern_buffer", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/me_pattern_buffer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/me_pattern_buffer" + }, + "facing=south": { + "model": "gtceu:block/machine/me_pattern_buffer", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/me_pattern_buffer", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/me_pattern_buffer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/me_pattern_buffer_proxy.json b/src/generated/resources/assets/gtceu/blockstates/me_pattern_buffer_proxy.json new file mode 100644 index 00000000000..4e4cdd05793 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/me_pattern_buffer_proxy.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/me_pattern_buffer_proxy", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/me_pattern_buffer_proxy", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/me_pattern_buffer_proxy" + }, + "facing=south": { + "model": "gtceu:block/machine/me_pattern_buffer_proxy", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/me_pattern_buffer_proxy", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/me_pattern_buffer_proxy", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/me_stocking_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/me_stocking_input_bus.json new file mode 100644 index 00000000000..31a3702f3e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/me_stocking_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/me_stocking_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/me_stocking_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/me_stocking_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/me_stocking_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/me_stocking_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/me_stocking_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/me_stocking_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/me_stocking_input_hatch.json new file mode 100644 index 00000000000..38c9dd22ab8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/me_stocking_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/me_stocking_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/me_stocking_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/me_stocking_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/me_stocking_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/me_stocking_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/me_stocking_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mega_blast_furnace.json b/src/generated/resources/assets/gtceu/blockstates/mega_blast_furnace.json new file mode 100644 index 00000000000..8b32ec70922 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mega_blast_furnace.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mega_blast_furnace", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/mega_blast_furnace", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mega_blast_furnace", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mega_blast_furnace", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mega_blast_furnace", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/mega_blast_furnace", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mega_blast_furnace", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mega_blast_furnace", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mega_blast_furnace" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/mega_blast_furnace" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mega_blast_furnace" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mega_blast_furnace" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mega_blast_furnace", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/mega_blast_furnace", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mega_blast_furnace", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mega_blast_furnace", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mega_blast_furnace", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mega_blast_furnace", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/mega_blast_furnace", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mega_blast_furnace", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mega_blast_furnace", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/mega_blast_furnace", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mega_blast_furnace", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mega_blast_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mega_vacuum_freezer.json b/src/generated/resources/assets/gtceu/blockstates/mega_vacuum_freezer.json new file mode 100644 index 00000000000..b6f268100a8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mega_vacuum_freezer.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/mega_vacuum_freezer", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/mega_vacuum_freezer", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mega_vacuum_freezer" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/mega_vacuum_freezer" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mega_vacuum_freezer" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mega_vacuum_freezer" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/mega_vacuum_freezer", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/mega_vacuum_freezer", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/mega_vacuum_freezer", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/monitor.json b/src/generated/resources/assets/gtceu/blockstates/monitor.json new file mode 100644 index 00000000000..a148abbb397 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/monitor.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/monitor", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/monitor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/monitor" + }, + "facing=south": { + "model": "gtceu:block/machine/monitor", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/monitor", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/monitor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/multi_smelter.json b/src/generated/resources/assets/gtceu/blockstates/multi_smelter.json new file mode 100644 index 00000000000..9a0a93f4c83 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/multi_smelter.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/multi_smelter", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/multi_smelter", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/multi_smelter", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/multi_smelter", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/multi_smelter", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/multi_smelter", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/multi_smelter", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/multi_smelter", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/multi_smelter" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/multi_smelter" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/multi_smelter" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/multi_smelter" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/multi_smelter", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/multi_smelter", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/multi_smelter", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/multi_smelter", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/multi_smelter", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/multi_smelter", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/multi_smelter", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/multi_smelter", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/multi_smelter", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/multi_smelter", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/multi_smelter", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/multi_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/mv_16a_energy_converter.json new file mode 100644 index 00000000000..e1122e735fa --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/mv_1a_energy_converter.json new file mode 100644 index 00000000000..35e078b07b7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/mv_4a_energy_converter.json new file mode 100644 index 00000000000..e71989f9e7c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/mv_8a_energy_converter.json new file mode 100644 index 00000000000..2507540631c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_air_scrubber.json b/src/generated/resources/assets/gtceu/blockstates/mv_air_scrubber.json new file mode 100644 index 00000000000..de6fe816544 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_air_scrubber.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_air_scrubber", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_air_scrubber" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_air_scrubber", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_air_scrubber", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/mv_alloy_smelter.json new file mode 100644 index 00000000000..e9a001e8be7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/mv_arc_furnace.json new file mode 100644 index 00000000000..cfb8c20ad69 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_assembler.json b/src/generated/resources/assets/gtceu/blockstates/mv_assembler.json new file mode 100644 index 00000000000..6c630b269a4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/mv_autoclave.json new file mode 100644 index 00000000000..8b0aa79ee0b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/mv_battery_buffer_16x.json new file mode 100644 index 00000000000..a1a8ba15181 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/mv_battery_buffer_4x.json new file mode 100644 index 00000000000..3149d352409 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/mv_battery_buffer_8x.json new file mode 100644 index 00000000000..d9e80df8a78 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_bedrock_ore_miner.json b/src/generated/resources/assets/gtceu/blockstates/mv_bedrock_ore_miner.json new file mode 100644 index 00000000000..314f7a08f3d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_bedrock_ore_miner.json @@ -0,0 +1,76 @@ +{ + "variants": { + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_bedrock_ore_miner", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/mv_bedrock_ore_miner", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_bedrock_ore_miner", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_bedrock_ore_miner", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_bedrock_ore_miner" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/mv_bedrock_ore_miner" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_bedrock_ore_miner" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_bedrock_ore_miner" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_bedrock_ore_miner", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/mv_bedrock_ore_miner", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_bedrock_ore_miner", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_bedrock_ore_miner", + "y": 180 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_bedrock_ore_miner", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/mv_bedrock_ore_miner", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_bedrock_ore_miner", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_bedrock_ore_miner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_bender.json b/src/generated/resources/assets/gtceu/blockstates/mv_bender.json new file mode 100644 index 00000000000..fe99ca838f4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_block_breaker.json b/src/generated/resources/assets/gtceu/blockstates/mv_block_breaker.json new file mode 100644 index 00000000000..68a7b3e8b9d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_block_breaker.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_block_breaker", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_block_breaker" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_block_breaker", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_block_breaker", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_brewery.json b/src/generated/resources/assets/gtceu/blockstates/mv_brewery.json new file mode 100644 index 00000000000..599125b0682 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_buffer.json b/src/generated/resources/assets/gtceu/blockstates/mv_buffer.json new file mode 100644 index 00000000000..2f11cb38d89 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_buffer.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/mv_buffer" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_canner.json b/src/generated/resources/assets/gtceu/blockstates/mv_canner.json new file mode 100644 index 00000000000..6046d496e29 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/mv_centrifuge.json new file mode 100644 index 00000000000..91f6a5ac79b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/mv_charger_4x.json new file mode 100644 index 00000000000..0f150d840df --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/mv_chemical_bath.json new file mode 100644 index 00000000000..e6cbab3a018 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/mv_chemical_reactor.json new file mode 100644 index 00000000000..a61d0794aeb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/mv_circuit_assembler.json new file mode 100644 index 00000000000..bb2c9c7794e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_combustion.json b/src/generated/resources/assets/gtceu/blockstates/mv_combustion.json new file mode 100644 index 00000000000..12343be2bdb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_combustion.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_combustion", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_combustion", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_combustion" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_combustion", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_combustion", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_combustion", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_compressor.json b/src/generated/resources/assets/gtceu/blockstates/mv_compressor.json new file mode 100644 index 00000000000..336f08f3b5a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_cutter.json b/src/generated/resources/assets/gtceu/blockstates/mv_cutter.json new file mode 100644 index 00000000000..8161c23505a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_diode.json b/src/generated/resources/assets/gtceu/blockstates/mv_diode.json new file mode 100644 index 00000000000..79f2d05c386 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_distillery.json b/src/generated/resources/assets/gtceu/blockstates/mv_distillery.json new file mode 100644 index 00000000000..542d5d9e564 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/mv_electric_furnace.json new file mode 100644 index 00000000000..3eee3f78d81 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/mv_electrolyzer.json new file mode 100644 index 00000000000..7272dec30bc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/mv_electromagnetic_separator.json new file mode 100644 index 00000000000..fbe73557de5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/mv_energy_input_hatch.json new file mode 100644 index 00000000000..37e31340437 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/mv_energy_output_hatch.json new file mode 100644 index 00000000000..5cceb55925e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_extractor.json b/src/generated/resources/assets/gtceu/blockstates/mv_extractor.json new file mode 100644 index 00000000000..04504aa7b76 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_extruder.json b/src/generated/resources/assets/gtceu/blockstates/mv_extruder.json new file mode 100644 index 00000000000..4f36fc5be1c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/mv_fermenter.json new file mode 100644 index 00000000000..e3c72c10d9b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_fisher.json b/src/generated/resources/assets/gtceu/blockstates/mv_fisher.json new file mode 100644 index 00000000000..b25968c54e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_fisher.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_fisher", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_fisher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_fisher" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_fisher", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_fisher", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_fisher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_fluid_drilling_rig.json b/src/generated/resources/assets/gtceu/blockstates/mv_fluid_drilling_rig.json new file mode 100644 index 00000000000..da1d03a2d6e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_fluid_drilling_rig.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_fluid_drilling_rig" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/mv_fluid_drilling_rig" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_fluid_drilling_rig" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_fluid_drilling_rig" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/mv_fluid_heater.json new file mode 100644 index 00000000000..f1e84aee88c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/mv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..ffc06c25a27 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/mv_fluid_solidifier.json new file mode 100644 index 00000000000..0c37660ea40 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/mv_forge_hammer.json new file mode 100644 index 00000000000..8caa6aea5ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/mv_forming_press.json new file mode 100644 index 00000000000..64e6d7bd4da --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/mv_gas_collector.json new file mode 100644 index 00000000000..3a485b1ef5e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_gas_turbine.json b/src/generated/resources/assets/gtceu/blockstates/mv_gas_turbine.json new file mode 100644 index 00000000000..9a5d351f82b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_gas_turbine.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_gas_turbine", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_gas_turbine", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_gas_turbine" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_gas_turbine", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_gas_turbine", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_gas_turbine", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/mv_input_bus.json new file mode 100644 index 00000000000..2cd3defcb52 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/mv_input_hatch.json new file mode 100644 index 00000000000..6ab0d40490f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_item_collector.json b/src/generated/resources/assets/gtceu/blockstates/mv_item_collector.json new file mode 100644 index 00000000000..d4e6e293ddd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_item_collector.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/mv_item_collector" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/mv_item_passthrough_hatch.json new file mode 100644 index 00000000000..5bb8ba1cb81 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/mv_laser_engraver.json new file mode 100644 index 00000000000..2299c48b78a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_lathe.json b/src/generated/resources/assets/gtceu/blockstates/mv_lathe.json new file mode 100644 index 00000000000..466aa4b3336 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_macerator.json b/src/generated/resources/assets/gtceu/blockstates/mv_macerator.json new file mode 100644 index 00000000000..495f77cfaa0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/mv_machine_hull.json new file mode 100644 index 00000000000..64ea58f69e7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_miner.json b/src/generated/resources/assets/gtceu/blockstates/mv_miner.json new file mode 100644 index 00000000000..89d81a4e8d2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_miner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_miner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_miner" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_miner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_miner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_mixer.json b/src/generated/resources/assets/gtceu/blockstates/mv_mixer.json new file mode 100644 index 00000000000..d63d897b52e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/mv_muffler_hatch.json new file mode 100644 index 00000000000..e2a406f0d0a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/mv_ore_washer.json new file mode 100644 index 00000000000..31102886012 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/mv_output_bus.json new file mode 100644 index 00000000000..3e6cd64ede6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/mv_output_hatch.json new file mode 100644 index 00000000000..df4fdd71ff9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_packer.json b/src/generated/resources/assets/gtceu/blockstates/mv_packer.json new file mode 100644 index 00000000000..d1936704760 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/mv_polarizer.json new file mode 100644 index 00000000000..2db83c7e2a1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_pump.json b/src/generated/resources/assets/gtceu/blockstates/mv_pump.json new file mode 100644 index 00000000000..209439e5822 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_pump.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_pump", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_pump", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_pump" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_pump", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_pump", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_pump", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/mv_rock_crusher.json new file mode 100644 index 00000000000..badc4628b6c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_scanner.json b/src/generated/resources/assets/gtceu/blockstates/mv_scanner.json new file mode 100644 index 00000000000..0f4e53de14f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_sifter.json b/src/generated/resources/assets/gtceu/blockstates/mv_sifter.json new file mode 100644 index 00000000000..439ba603569 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_steam_turbine.json b/src/generated/resources/assets/gtceu/blockstates/mv_steam_turbine.json new file mode 100644 index 00000000000..d87fa2839ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_steam_turbine.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_steam_turbine", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_steam_turbine", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_steam_turbine" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_steam_turbine", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_steam_turbine", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_steam_turbine", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_super_chest.json b/src/generated/resources/assets/gtceu/blockstates/mv_super_chest.json new file mode 100644 index 00000000000..96f6da8d960 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_super_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_super_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/mv_super_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_super_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_super_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_super_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/mv_super_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_super_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_super_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_super_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/mv_super_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_super_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_super_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_super_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/mv_super_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_super_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_super_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_super_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_super_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/mv_super_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_super_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_super_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/mv_super_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_super_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_super_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_super_tank.json b/src/generated/resources/assets/gtceu/blockstates/mv_super_tank.json new file mode 100644 index 00000000000..b5ef2d0e64b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_super_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_super_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/mv_super_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_super_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_super_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_super_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/mv_super_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_super_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_super_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_super_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/mv_super_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_super_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_super_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_super_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/mv_super_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_super_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_super_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_super_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_super_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/mv_super_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_super_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_super_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/mv_super_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_super_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_super_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/mv_thermal_centrifuge.json new file mode 100644 index 00000000000..20472cc9fb0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/mv_transformer_16a.json new file mode 100644 index 00000000000..b00387e200f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/mv_transformer_1a.json new file mode 100644 index 00000000000..d04ce84103e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/mv_transformer_2a.json new file mode 100644 index 00000000000..f5865359daa --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/mv_transformer_4a.json new file mode 100644 index 00000000000..215f710c7e7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/mv_wiremill.json new file mode 100644 index 00000000000..69d8556b0b5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_world_accelerator.json b/src/generated/resources/assets/gtceu/blockstates/mv_world_accelerator.json new file mode 100644 index 00000000000..c5fe0580a5b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_world_accelerator.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/mv_world_accelerator" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/network_switch.json b/src/generated/resources/assets/gtceu/blockstates/network_switch.json new file mode 100644 index 00000000000..2339dd756ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/network_switch.json @@ -0,0 +1,76 @@ +{ + "variants": { + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/network_switch", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/network_switch", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/network_switch", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/network_switch", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/network_switch" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/network_switch" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/network_switch" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/network_switch" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/network_switch", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/network_switch", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/network_switch", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/network_switch", + "y": 180 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/network_switch", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/network_switch", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/network_switch", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/network_switch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/object_holder.json b/src/generated/resources/assets/gtceu/blockstates/object_holder.json new file mode 100644 index 00000000000..c559fabf00c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/object_holder.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/object_holder", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/object_holder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/object_holder" + }, + "facing=south": { + "model": "gtceu:block/machine/object_holder", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/object_holder", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/object_holder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..462fece9488 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_1024a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_1024a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_1024a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_1024a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_1024a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_1024a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_1024a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..0740a0decf3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_1024a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_1024a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_1024a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_1024a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_1024a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_1024a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_1024a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/opv_16a_energy_converter.json new file mode 100644 index 00000000000..7ae66470d95 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/opv_1a_energy_converter.json new file mode 100644 index 00000000000..098c5961668 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..ec1e8e1dcc6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_256a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_256a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_256a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_256a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_256a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_256a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_256a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..7fd9ce3d8bb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_256a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_256a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_256a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_256a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_256a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_256a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_256a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..ef04fb8edea --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_4096a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_4096a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_4096a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_4096a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_4096a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_4096a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_4096a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..b1e1101350a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_4096a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_4096a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_4096a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_4096a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_4096a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_4096a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_4096a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/opv_4a_energy_converter.json new file mode 100644 index 00000000000..59220846ab5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/opv_8a_energy_converter.json new file mode 100644 index 00000000000..e2b8344a833 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/opv_alloy_smelter.json new file mode 100644 index 00000000000..5b684c56e73 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/opv_arc_furnace.json new file mode 100644 index 00000000000..9e3263327e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_assembler.json b/src/generated/resources/assets/gtceu/blockstates/opv_assembler.json new file mode 100644 index 00000000000..8997bde5c80 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/opv_autoclave.json new file mode 100644 index 00000000000..4dbfce52de6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/opv_battery_buffer_16x.json new file mode 100644 index 00000000000..c8b5aac6bcb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/opv_battery_buffer_4x.json new file mode 100644 index 00000000000..cd2ed56fb3b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/opv_battery_buffer_8x.json new file mode 100644 index 00000000000..4971579a06b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_bender.json b/src/generated/resources/assets/gtceu/blockstates/opv_bender.json new file mode 100644 index 00000000000..7af9fa6d56c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_brewery.json b/src/generated/resources/assets/gtceu/blockstates/opv_brewery.json new file mode 100644 index 00000000000..8006ffdaa95 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_canner.json b/src/generated/resources/assets/gtceu/blockstates/opv_canner.json new file mode 100644 index 00000000000..85eeafac2af --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/opv_centrifuge.json new file mode 100644 index 00000000000..6c6a3115e55 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/opv_charger_4x.json new file mode 100644 index 00000000000..c4723fe2fe3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/opv_chemical_bath.json new file mode 100644 index 00000000000..160a90cc196 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/opv_chemical_reactor.json new file mode 100644 index 00000000000..e4273b8df4a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/opv_circuit_assembler.json new file mode 100644 index 00000000000..6f8c5cf3bff --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_compressor.json b/src/generated/resources/assets/gtceu/blockstates/opv_compressor.json new file mode 100644 index 00000000000..9def5452d79 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_cutter.json b/src/generated/resources/assets/gtceu/blockstates/opv_cutter.json new file mode 100644 index 00000000000..f18bf0ec0aa --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_diode.json b/src/generated/resources/assets/gtceu/blockstates/opv_diode.json new file mode 100644 index 00000000000..883a4081c87 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_distillery.json b/src/generated/resources/assets/gtceu/blockstates/opv_distillery.json new file mode 100644 index 00000000000..35d1a288020 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_dual_input_hatch.json new file mode 100644 index 00000000000..5c15e58b4bb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_dual_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_dual_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_dual_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_dual_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_dual_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_dual_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_dual_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_dual_output_hatch.json new file mode 100644 index 00000000000..6034713231e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_dual_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_dual_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_dual_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_dual_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_dual_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_dual_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_dual_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/opv_electric_furnace.json new file mode 100644 index 00000000000..dc31a47bf67 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/opv_electrolyzer.json new file mode 100644 index 00000000000..361d6eb60e9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/opv_electromagnetic_separator.json new file mode 100644 index 00000000000..74e1cb0005b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_energy_input_hatch.json new file mode 100644 index 00000000000..b85f9799dac --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/opv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..de3f5283332 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_energy_input_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_energy_input_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_energy_input_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_energy_input_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_energy_input_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_energy_input_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_energy_input_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/opv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..27708fab3d3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_energy_input_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_energy_input_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_energy_input_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_energy_input_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_energy_input_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_energy_input_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_energy_input_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_energy_output_hatch.json new file mode 100644 index 00000000000..885196943bc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/opv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..3b5be21a452 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_energy_output_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_energy_output_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_energy_output_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_energy_output_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_energy_output_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_energy_output_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_energy_output_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/opv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..5fd921850d1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_energy_output_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_energy_output_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_energy_output_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_energy_output_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_energy_output_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_energy_output_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_energy_output_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_extractor.json b/src/generated/resources/assets/gtceu/blockstates/opv_extractor.json new file mode 100644 index 00000000000..8475dbad41f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_extruder.json b/src/generated/resources/assets/gtceu/blockstates/opv_extruder.json new file mode 100644 index 00000000000..b7aaf72f924 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/opv_fermenter.json new file mode 100644 index 00000000000..19f73e77d7a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/opv_fluid_heater.json new file mode 100644 index 00000000000..558a9700a47 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..d122e62ba0e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/opv_fluid_solidifier.json new file mode 100644 index 00000000000..efaae34780c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/opv_forge_hammer.json new file mode 100644 index 00000000000..77724d100d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/opv_forming_press.json new file mode 100644 index 00000000000..d0dc024f9bc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/opv_gas_collector.json new file mode 100644 index 00000000000..43186745faa --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/opv_input_bus.json new file mode 100644 index 00000000000..abd0e1ce637 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_input_hatch.json new file mode 100644 index 00000000000..14075d9eea1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/opv_input_hatch_4x.json new file mode 100644 index 00000000000..40ae8ae6507 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_input_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_input_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_input_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_input_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_input_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_input_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_input_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/opv_input_hatch_9x.json new file mode 100644 index 00000000000..88f41797e68 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_input_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_input_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_input_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_input_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_input_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_input_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_input_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_item_passthrough_hatch.json new file mode 100644 index 00000000000..5f26839c65a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/opv_laser_engraver.json new file mode 100644 index 00000000000..d2c09b3b43e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_lathe.json b/src/generated/resources/assets/gtceu/blockstates/opv_lathe.json new file mode 100644 index 00000000000..a5d2b0868c6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_macerator.json b/src/generated/resources/assets/gtceu/blockstates/opv_macerator.json new file mode 100644 index 00000000000..4f8022741c2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/opv_machine_hull.json new file mode 100644 index 00000000000..a59d2cc7bfb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_mixer.json b/src/generated/resources/assets/gtceu/blockstates/opv_mixer.json new file mode 100644 index 00000000000..38cf499ea84 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_muffler_hatch.json new file mode 100644 index 00000000000..370ea6a42fb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/opv_ore_washer.json new file mode 100644 index 00000000000..9e17b9fd545 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/opv_output_bus.json new file mode 100644 index 00000000000..c07b78166a3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_output_hatch.json new file mode 100644 index 00000000000..e40316e7b1e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/opv_output_hatch_4x.json new file mode 100644 index 00000000000..ba4e5659588 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_output_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_output_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_output_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_output_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_output_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_output_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_output_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/opv_output_hatch_9x.json new file mode 100644 index 00000000000..e6fe98a3bb6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_output_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_output_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_output_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_output_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_output_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_output_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_output_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_packer.json b/src/generated/resources/assets/gtceu/blockstates/opv_packer.json new file mode 100644 index 00000000000..f5e70bdec38 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/opv_polarizer.json new file mode 100644 index 00000000000..45807ba5e7c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/opv_quantum_chest.json new file mode 100644 index 00000000000..75624c6f5eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_quantum_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/opv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/opv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/opv_quantum_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/opv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/opv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/opv_quantum_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/opv_quantum_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/opv_quantum_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_quantum_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/opv_quantum_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/opv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/opv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/opv_quantum_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/opv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/opv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/opv_quantum_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/opv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/opv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/opv_quantum_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/opv_quantum_tank.json new file mode 100644 index 00000000000..beebb68f6a4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_quantum_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/opv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/opv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/opv_quantum_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/opv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/opv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/opv_quantum_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/opv_quantum_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/opv_quantum_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_quantum_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/opv_quantum_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/opv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/opv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/opv_quantum_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/opv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/opv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/opv_quantum_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/opv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/opv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/opv_quantum_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/opv_rock_crusher.json new file mode 100644 index 00000000000..406425c719d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_rotor_holder.json b/src/generated/resources/assets/gtceu/blockstates/opv_rotor_holder.json new file mode 100644 index 00000000000..2117793727a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_rotor_holder.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_rotor_holder", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_rotor_holder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_rotor_holder" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_rotor_holder", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_rotor_holder", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_rotor_holder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_scanner.json b/src/generated/resources/assets/gtceu/blockstates/opv_scanner.json new file mode 100644 index 00000000000..c8393d9388f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_sifter.json b/src/generated/resources/assets/gtceu/blockstates/opv_sifter.json new file mode 100644 index 00000000000..149ce4eb100 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/opv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..1943a1c7610 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_substation_input_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_substation_input_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_substation_input_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_substation_input_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_substation_input_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_substation_input_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_substation_input_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/opv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..ae1ba008d79 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_substation_output_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_substation_output_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_substation_output_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_substation_output_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_substation_output_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_substation_output_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_substation_output_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/opv_thermal_centrifuge.json new file mode 100644 index 00000000000..c54503224df --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/opv_transformer_16a.json new file mode 100644 index 00000000000..7175384c411 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/opv_transformer_1a.json new file mode 100644 index 00000000000..4caf27369ab --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/opv_transformer_2a.json new file mode 100644 index 00000000000..1562322a2dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/opv_transformer_4a.json new file mode 100644 index 00000000000..13187143fdf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/opv_wiremill.json new file mode 100644 index 00000000000..892f3a0447b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/plasma_large_turbine.json b/src/generated/resources/assets/gtceu/blockstates/plasma_large_turbine.json new file mode 100644 index 00000000000..2c36aaf2ace --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/plasma_large_turbine.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/plasma_large_turbine", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/plasma_large_turbine", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/plasma_large_turbine", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/plasma_large_turbine", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/plasma_large_turbine", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/plasma_large_turbine", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/plasma_large_turbine", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/plasma_large_turbine", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/plasma_large_turbine" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/plasma_large_turbine" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/plasma_large_turbine" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/plasma_large_turbine" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/plasma_large_turbine", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/plasma_large_turbine", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/plasma_large_turbine", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/plasma_large_turbine", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/plasma_large_turbine", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/plasma_large_turbine", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/plasma_large_turbine", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/plasma_large_turbine", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/plasma_large_turbine", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/plasma_large_turbine", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/plasma_large_turbine", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/plasma_large_turbine", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/power_substation.json b/src/generated/resources/assets/gtceu/blockstates/power_substation.json new file mode 100644 index 00000000000..cb54226d5c2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/power_substation.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/power_substation", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/power_substation", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/power_substation", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/power_substation", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/power_substation", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/power_substation", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/power_substation", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/power_substation", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/power_substation" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/power_substation" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/power_substation" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/power_substation" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/power_substation", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/power_substation", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/power_substation", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/power_substation", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/power_substation", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/power_substation", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/power_substation", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/power_substation", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/power_substation", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/power_substation", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/power_substation", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/power_substation", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/primitive_blast_furnace.json b/src/generated/resources/assets/gtceu/blockstates/primitive_blast_furnace.json new file mode 100644 index 00000000000..23b31f1d044 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/primitive_blast_furnace.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/primitive_blast_furnace", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/primitive_blast_furnace", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/primitive_blast_furnace", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/primitive_blast_furnace", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/primitive_blast_furnace", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/primitive_blast_furnace", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/primitive_blast_furnace", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/primitive_blast_furnace", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/primitive_blast_furnace" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/primitive_blast_furnace" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/primitive_blast_furnace" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/primitive_blast_furnace" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/primitive_blast_furnace", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/primitive_blast_furnace", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/primitive_blast_furnace", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/primitive_blast_furnace", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/primitive_blast_furnace", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/primitive_blast_furnace", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/primitive_blast_furnace", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/primitive_blast_furnace", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/primitive_blast_furnace", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/primitive_blast_furnace", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/primitive_blast_furnace", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/primitive_blast_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/primitive_pump.json b/src/generated/resources/assets/gtceu/blockstates/primitive_pump.json new file mode 100644 index 00000000000..86a83256a33 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/primitive_pump.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/primitive_pump", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/primitive_pump" + }, + "facing=south": { + "model": "gtceu:block/machine/primitive_pump", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/primitive_pump", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/pump_hatch.json b/src/generated/resources/assets/gtceu/blockstates/pump_hatch.json new file mode 100644 index 00000000000..a9e51582095 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/pump_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/pump_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/pump_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/pump_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/pump_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/pump_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/pump_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/pyrolyse_oven.json b/src/generated/resources/assets/gtceu/blockstates/pyrolyse_oven.json new file mode 100644 index 00000000000..1b3e550db6a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/pyrolyse_oven.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/pyrolyse_oven", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/pyrolyse_oven", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/pyrolyse_oven", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/pyrolyse_oven", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/pyrolyse_oven", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/pyrolyse_oven", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/pyrolyse_oven", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/pyrolyse_oven", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/pyrolyse_oven" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/pyrolyse_oven" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/pyrolyse_oven" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/pyrolyse_oven" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/pyrolyse_oven", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/pyrolyse_oven", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/pyrolyse_oven", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/pyrolyse_oven", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/pyrolyse_oven", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/pyrolyse_oven", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/pyrolyse_oven", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/pyrolyse_oven", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/pyrolyse_oven", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/pyrolyse_oven", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/pyrolyse_oven", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/pyrolyse_oven", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/research_station.json b/src/generated/resources/assets/gtceu/blockstates/research_station.json new file mode 100644 index 00000000000..d01f0b952df --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/research_station.json @@ -0,0 +1,76 @@ +{ + "variants": { + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/research_station", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/research_station", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/research_station", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/research_station", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/research_station" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/research_station" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/research_station" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/research_station" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/research_station", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/research_station", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/research_station", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/research_station", + "y": 180 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/research_station", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/research_station", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/research_station", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/research_station", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/reservoir_hatch.json b/src/generated/resources/assets/gtceu/blockstates/reservoir_hatch.json new file mode 100644 index 00000000000..7cbe182230f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/reservoir_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/reservoir_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/reservoir_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/reservoir_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/reservoir_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/reservoir_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/reservoir_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/stainless_steel_crate.json b/src/generated/resources/assets/gtceu/blockstates/stainless_steel_crate.json new file mode 100644 index 00000000000..b5ceeb64aad --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/stainless_steel_crate.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/stainless_steel_crate" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/stainless_steel_drum.json b/src/generated/resources/assets/gtceu/blockstates/stainless_steel_drum.json new file mode 100644 index 00000000000..d503723d329 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/stainless_steel_drum.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/stainless_steel_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/steam_grinder.json b/src/generated/resources/assets/gtceu/blockstates/steam_grinder.json new file mode 100644 index 00000000000..1c3cebcb3bd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/steam_grinder.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_grinder", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/steam_grinder", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_grinder", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_grinder", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_grinder", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/steam_grinder", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_grinder", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_grinder", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_grinder" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/steam_grinder" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_grinder" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_grinder" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_grinder", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/steam_grinder", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_grinder", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_grinder", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_grinder", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_grinder", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/steam_grinder", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_grinder", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_grinder", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/steam_grinder", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_grinder", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_grinder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/steam_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/steam_input_bus.json new file mode 100644 index 00000000000..f54b7d59a3a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/steam_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/steam_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/steam_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/steam_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/steam_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/steam_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/steam_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/steam_input_hatch.json new file mode 100644 index 00000000000..a41c6131ae5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/steam_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/steam_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/steam_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/steam_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/steam_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/steam_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/steam_large_turbine.json b/src/generated/resources/assets/gtceu/blockstates/steam_large_turbine.json new file mode 100644 index 00000000000..fcc245b3924 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/steam_large_turbine.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_large_turbine", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/steam_large_turbine", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_large_turbine", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_large_turbine", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_large_turbine", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/steam_large_turbine", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_large_turbine", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_large_turbine", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_large_turbine" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/steam_large_turbine" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_large_turbine" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_large_turbine" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_large_turbine", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/steam_large_turbine", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_large_turbine", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_large_turbine", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_large_turbine", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_large_turbine", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/steam_large_turbine", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_large_turbine", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_large_turbine", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/steam_large_turbine", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_large_turbine", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_large_turbine", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/steam_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/steam_output_bus.json new file mode 100644 index 00000000000..f5db10c9da1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/steam_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/steam_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/steam_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/steam_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/steam_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/steam_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/steam_oven.json b/src/generated/resources/assets/gtceu/blockstates/steam_oven.json new file mode 100644 index 00000000000..b484e015944 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/steam_oven.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_oven", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/steam_oven", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_oven", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_oven", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_oven", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/steam_oven", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_oven", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_oven", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_oven" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/steam_oven" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_oven" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_oven" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_oven", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/steam_oven", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_oven", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_oven", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_oven", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_oven", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/steam_oven", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_oven", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_oven", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/steam_oven", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_oven", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_oven", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/steel_crate.json b/src/generated/resources/assets/gtceu/blockstates/steel_crate.json new file mode 100644 index 00000000000..ca0e9eb13e4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/steel_crate.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/steel_crate" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/steel_drum.json b/src/generated/resources/assets/gtceu/blockstates/steel_drum.json new file mode 100644 index 00000000000..3a322674bc6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/steel_drum.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/steel_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/steel_large_boiler.json b/src/generated/resources/assets/gtceu/blockstates/steel_large_boiler.json new file mode 100644 index 00000000000..c851d296d08 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/steel_large_boiler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/steel_large_boiler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/steel_large_boiler" + }, + "facing=south": { + "model": "gtceu:block/machine/steel_large_boiler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/steel_large_boiler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/steel_multiblock_tank.json b/src/generated/resources/assets/gtceu/blockstates/steel_multiblock_tank.json new file mode 100644 index 00000000000..9fd0d8dbd30 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/steel_multiblock_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steel_multiblock_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/steel_multiblock_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steel_multiblock_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steel_multiblock_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steel_multiblock_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/steel_multiblock_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steel_multiblock_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steel_multiblock_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steel_multiblock_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/steel_multiblock_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steel_multiblock_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steel_multiblock_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steel_multiblock_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/steel_multiblock_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steel_multiblock_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steel_multiblock_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steel_multiblock_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steel_multiblock_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/steel_multiblock_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steel_multiblock_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steel_multiblock_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/steel_multiblock_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steel_multiblock_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steel_multiblock_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/steel_tank_valve.json b/src/generated/resources/assets/gtceu/blockstates/steel_tank_valve.json new file mode 100644 index 00000000000..facedf12925 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/steel_tank_valve.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/steel_tank_valve", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/steel_tank_valve", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/steel_tank_valve" + }, + "facing=south": { + "model": "gtceu:block/machine/steel_tank_valve", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steel_tank_valve", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/steel_tank_valve", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/titanium_crate.json b/src/generated/resources/assets/gtceu/blockstates/titanium_crate.json new file mode 100644 index 00000000000..88b4660e5fb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/titanium_crate.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/titanium_crate" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/titanium_drum.json b/src/generated/resources/assets/gtceu/blockstates/titanium_drum.json new file mode 100644 index 00000000000..e41873dff46 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/titanium_drum.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/titanium_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/titanium_large_boiler.json b/src/generated/resources/assets/gtceu/blockstates/titanium_large_boiler.json new file mode 100644 index 00000000000..c262afd573f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/titanium_large_boiler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/titanium_large_boiler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/titanium_large_boiler" + }, + "facing=south": { + "model": "gtceu:block/machine/titanium_large_boiler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/titanium_large_boiler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/tungsten_steel_crate.json b/src/generated/resources/assets/gtceu/blockstates/tungsten_steel_crate.json new file mode 100644 index 00000000000..6e09652391a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/tungsten_steel_crate.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/tungsten_steel_crate" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/tungsten_steel_drum.json b/src/generated/resources/assets/gtceu/blockstates/tungsten_steel_drum.json new file mode 100644 index 00000000000..352a2c38b9f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/tungsten_steel_drum.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/tungsten_steel_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/tungstensteel_large_boiler.json b/src/generated/resources/assets/gtceu/blockstates/tungstensteel_large_boiler.json new file mode 100644 index 00000000000..73dc2d7476f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/tungstensteel_large_boiler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/tungstensteel_large_boiler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/tungstensteel_large_boiler" + }, + "facing=south": { + "model": "gtceu:block/machine/tungstensteel_large_boiler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/tungstensteel_large_boiler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..8eba9ee266e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_1024a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_1024a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_1024a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_1024a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_1024a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_1024a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_1024a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..d5a671d7a2a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_1024a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_1024a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_1024a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_1024a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_1024a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_1024a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_1024a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uev_16a_energy_converter.json new file mode 100644 index 00000000000..7ff61f9e047 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uev_1a_energy_converter.json new file mode 100644 index 00000000000..e3d3aa8c4a7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_256a_laser_source_hatch.json new file mode 100644 index 00000000000..98cc25fae85 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_256a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_256a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_256a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_256a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_256a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_256a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_256a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_256a_laser_target_hatch.json new file mode 100644 index 00000000000..8534a018557 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_256a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_256a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_256a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_256a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_256a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_256a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_256a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..d8eceec662c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_4096a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_4096a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_4096a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_4096a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_4096a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_4096a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_4096a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..b970339f52f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_4096a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_4096a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_4096a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_4096a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_4096a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_4096a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_4096a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uev_4a_energy_converter.json new file mode 100644 index 00000000000..a72d6cd0be9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uev_8a_energy_converter.json new file mode 100644 index 00000000000..a18e3d4cfc4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/uev_alloy_smelter.json new file mode 100644 index 00000000000..e7c8cc613c9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/uev_arc_furnace.json new file mode 100644 index 00000000000..3ec933bb1c8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_assembler.json b/src/generated/resources/assets/gtceu/blockstates/uev_assembler.json new file mode 100644 index 00000000000..e2cfd3d1030 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/uev_autoclave.json new file mode 100644 index 00000000000..8a34c0dd45d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/uev_battery_buffer_16x.json new file mode 100644 index 00000000000..c5bd9273012 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/uev_battery_buffer_4x.json new file mode 100644 index 00000000000..a962a16919b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/uev_battery_buffer_8x.json new file mode 100644 index 00000000000..087f98ef7ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_bender.json b/src/generated/resources/assets/gtceu/blockstates/uev_bender.json new file mode 100644 index 00000000000..9d4754f2d4e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_brewery.json b/src/generated/resources/assets/gtceu/blockstates/uev_brewery.json new file mode 100644 index 00000000000..662ab1a12ed --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_canner.json b/src/generated/resources/assets/gtceu/blockstates/uev_canner.json new file mode 100644 index 00000000000..e77676c5b22 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/uev_centrifuge.json new file mode 100644 index 00000000000..f6045d6389b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/uev_charger_4x.json new file mode 100644 index 00000000000..b409fee61d4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/uev_chemical_bath.json new file mode 100644 index 00000000000..06bbefa41c8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/uev_chemical_reactor.json new file mode 100644 index 00000000000..28e46fa1c05 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/uev_circuit_assembler.json new file mode 100644 index 00000000000..c818987747d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_compressor.json b/src/generated/resources/assets/gtceu/blockstates/uev_compressor.json new file mode 100644 index 00000000000..8c26efa5264 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_cutter.json b/src/generated/resources/assets/gtceu/blockstates/uev_cutter.json new file mode 100644 index 00000000000..3c281503fac --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_diode.json b/src/generated/resources/assets/gtceu/blockstates/uev_diode.json new file mode 100644 index 00000000000..7f1d5a893c0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_distillery.json b/src/generated/resources/assets/gtceu/blockstates/uev_distillery.json new file mode 100644 index 00000000000..de276578805 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_dual_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_dual_input_hatch.json new file mode 100644 index 00000000000..e297176b198 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_dual_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_dual_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_dual_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_dual_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_dual_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_dual_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_dual_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_dual_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_dual_output_hatch.json new file mode 100644 index 00000000000..a44f81e0dc3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_dual_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_dual_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_dual_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_dual_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_dual_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_dual_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_dual_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/uev_electric_furnace.json new file mode 100644 index 00000000000..8ca15baa3f1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/uev_electrolyzer.json new file mode 100644 index 00000000000..b26f9959aa4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/uev_electromagnetic_separator.json new file mode 100644 index 00000000000..c6375719286 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_energy_input_hatch.json new file mode 100644 index 00000000000..e6127529d72 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/uev_energy_input_hatch_16a.json new file mode 100644 index 00000000000..e6e34ee620f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_energy_input_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_energy_input_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_energy_input_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_energy_input_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_energy_input_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_energy_input_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_energy_input_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/uev_energy_input_hatch_4a.json new file mode 100644 index 00000000000..e910529e207 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_energy_input_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_energy_input_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_energy_input_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_energy_input_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_energy_input_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_energy_input_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_energy_input_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_energy_output_hatch.json new file mode 100644 index 00000000000..7d07efe1655 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/uev_energy_output_hatch_16a.json new file mode 100644 index 00000000000..bf594e38b37 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_energy_output_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_energy_output_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_energy_output_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_energy_output_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_energy_output_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_energy_output_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_energy_output_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/uev_energy_output_hatch_4a.json new file mode 100644 index 00000000000..b57ad0847ef --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_energy_output_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_energy_output_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_energy_output_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_energy_output_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_energy_output_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_energy_output_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_energy_output_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_extractor.json b/src/generated/resources/assets/gtceu/blockstates/uev_extractor.json new file mode 100644 index 00000000000..c823d32ea1e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_extruder.json b/src/generated/resources/assets/gtceu/blockstates/uev_extruder.json new file mode 100644 index 00000000000..42608176a1e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/uev_fermenter.json new file mode 100644 index 00000000000..fb44c665d16 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/uev_fluid_heater.json new file mode 100644 index 00000000000..21878822491 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..53fb1e235fa --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/uev_fluid_solidifier.json new file mode 100644 index 00000000000..a257765a980 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/uev_forge_hammer.json new file mode 100644 index 00000000000..6b7675e19d8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/uev_forming_press.json new file mode 100644 index 00000000000..d8e81a807f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/uev_gas_collector.json new file mode 100644 index 00000000000..79b85c96c7a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/uev_input_bus.json new file mode 100644 index 00000000000..10bdab70094 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_input_hatch.json new file mode 100644 index 00000000000..1e8da923f78 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_input_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/uev_input_hatch_4x.json new file mode 100644 index 00000000000..09656cbe768 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_input_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_input_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_input_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_input_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_input_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_input_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_input_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_input_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/uev_input_hatch_9x.json new file mode 100644 index 00000000000..4518e8cec10 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_input_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_input_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_input_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_input_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_input_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_input_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_input_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_item_passthrough_hatch.json new file mode 100644 index 00000000000..96e611250c1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/uev_laser_engraver.json new file mode 100644 index 00000000000..27fc0a7af5f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_lathe.json b/src/generated/resources/assets/gtceu/blockstates/uev_lathe.json new file mode 100644 index 00000000000..974f6569bb6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_macerator.json b/src/generated/resources/assets/gtceu/blockstates/uev_macerator.json new file mode 100644 index 00000000000..4180b7dd05f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/uev_machine_hull.json new file mode 100644 index 00000000000..9aceb2b474d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_mixer.json b/src/generated/resources/assets/gtceu/blockstates/uev_mixer.json new file mode 100644 index 00000000000..3233266c266 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_muffler_hatch.json new file mode 100644 index 00000000000..992da5f2de0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/uev_ore_washer.json new file mode 100644 index 00000000000..22d724e4bf3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/uev_output_bus.json new file mode 100644 index 00000000000..017a4645d6e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_output_hatch.json new file mode 100644 index 00000000000..c3cad4fdf60 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_output_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/uev_output_hatch_4x.json new file mode 100644 index 00000000000..2f273e6c5ba --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_output_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_output_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_output_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_output_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_output_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_output_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_output_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_output_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/uev_output_hatch_9x.json new file mode 100644 index 00000000000..c2f290898ed --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_output_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_output_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_output_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_output_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_output_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_output_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_output_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_packer.json b/src/generated/resources/assets/gtceu/blockstates/uev_packer.json new file mode 100644 index 00000000000..bd05e4044eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/uev_polarizer.json new file mode 100644 index 00000000000..74e12dc11b6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/uev_quantum_chest.json new file mode 100644 index 00000000000..49622e34a92 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_quantum_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uev_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/uev_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uev_quantum_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uev_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/uev_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uev_quantum_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uev_quantum_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/uev_quantum_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_quantum_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uev_quantum_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uev_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/uev_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uev_quantum_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uev_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/uev_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uev_quantum_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uev_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/uev_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uev_quantum_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/uev_quantum_tank.json new file mode 100644 index 00000000000..5670df108e4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_quantum_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uev_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/uev_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uev_quantum_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uev_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/uev_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uev_quantum_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uev_quantum_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/uev_quantum_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_quantum_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uev_quantum_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uev_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/uev_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uev_quantum_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uev_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/uev_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uev_quantum_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uev_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/uev_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uev_quantum_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/uev_rock_crusher.json new file mode 100644 index 00000000000..b1c8272e4da --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_rotor_holder.json b/src/generated/resources/assets/gtceu/blockstates/uev_rotor_holder.json new file mode 100644 index 00000000000..1fdf1f4a4ef --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_rotor_holder.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_rotor_holder", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_rotor_holder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_rotor_holder" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_rotor_holder", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_rotor_holder", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_rotor_holder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_scanner.json b/src/generated/resources/assets/gtceu/blockstates/uev_scanner.json new file mode 100644 index 00000000000..dd539bdbc2b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_sifter.json b/src/generated/resources/assets/gtceu/blockstates/uev_sifter.json new file mode 100644 index 00000000000..03310a5291c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/uev_substation_input_hatch_64a.json new file mode 100644 index 00000000000..03048a33465 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_substation_input_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_substation_input_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_substation_input_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_substation_input_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_substation_input_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_substation_input_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_substation_input_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/uev_substation_output_hatch_64a.json new file mode 100644 index 00000000000..8dd64b52edb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_substation_output_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_substation_output_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_substation_output_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_substation_output_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_substation_output_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_substation_output_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_substation_output_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/uev_thermal_centrifuge.json new file mode 100644 index 00000000000..dec1bf29ff3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/uev_transformer_16a.json new file mode 100644 index 00000000000..9d4d7dfc118 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/uev_transformer_1a.json new file mode 100644 index 00000000000..f823bf23f25 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/uev_transformer_2a.json new file mode 100644 index 00000000000..a013316ea53 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/uev_transformer_4a.json new file mode 100644 index 00000000000..3047fb62923 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/uev_wiremill.json new file mode 100644 index 00000000000..e10d4471e21 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..965ab339c7b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_1024a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_1024a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_1024a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_1024a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_1024a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_1024a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_1024a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..58f368198b5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_1024a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_1024a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_1024a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_1024a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_1024a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_1024a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_1024a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uhv_16a_energy_converter.json new file mode 100644 index 00000000000..cb44f5209e2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uhv_1a_energy_converter.json new file mode 100644 index 00000000000..5b759b1d0e6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..e990cab9fa0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_256a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_256a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_256a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_256a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_256a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_256a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_256a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..88e1295c153 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_256a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_256a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_256a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_256a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_256a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_256a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_256a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..6fcd3c46e22 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_4096a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_4096a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_4096a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_4096a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_4096a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_4096a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_4096a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..8c79ca48e82 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_4096a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_4096a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_4096a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_4096a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_4096a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_4096a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_4096a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uhv_4a_energy_converter.json new file mode 100644 index 00000000000..701ebfb7210 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uhv_8a_energy_converter.json new file mode 100644 index 00000000000..c81baf1a1a1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/uhv_alloy_smelter.json new file mode 100644 index 00000000000..a428627f874 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/uhv_arc_furnace.json new file mode 100644 index 00000000000..84b2982c36a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_assembler.json b/src/generated/resources/assets/gtceu/blockstates/uhv_assembler.json new file mode 100644 index 00000000000..c2218a9116a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/uhv_autoclave.json new file mode 100644 index 00000000000..2add938106c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/uhv_battery_buffer_16x.json new file mode 100644 index 00000000000..a0738ff32e2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/uhv_battery_buffer_4x.json new file mode 100644 index 00000000000..0468be41583 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/uhv_battery_buffer_8x.json new file mode 100644 index 00000000000..978e838c25b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_bender.json b/src/generated/resources/assets/gtceu/blockstates/uhv_bender.json new file mode 100644 index 00000000000..21c7d5c52b8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_brewery.json b/src/generated/resources/assets/gtceu/blockstates/uhv_brewery.json new file mode 100644 index 00000000000..1aaba6d9e1d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_canner.json b/src/generated/resources/assets/gtceu/blockstates/uhv_canner.json new file mode 100644 index 00000000000..5f5839add66 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/uhv_centrifuge.json new file mode 100644 index 00000000000..fc0456746eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/uhv_charger_4x.json new file mode 100644 index 00000000000..2faa3640c8d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/uhv_chemical_bath.json new file mode 100644 index 00000000000..96fbb950e78 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/uhv_chemical_reactor.json new file mode 100644 index 00000000000..65dbb88c5cb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/uhv_circuit_assembler.json new file mode 100644 index 00000000000..d725b2d7d06 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_compressor.json b/src/generated/resources/assets/gtceu/blockstates/uhv_compressor.json new file mode 100644 index 00000000000..ca36952b442 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_cutter.json b/src/generated/resources/assets/gtceu/blockstates/uhv_cutter.json new file mode 100644 index 00000000000..ae390869144 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_diode.json b/src/generated/resources/assets/gtceu/blockstates/uhv_diode.json new file mode 100644 index 00000000000..35f1c728493 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_distillery.json b/src/generated/resources/assets/gtceu/blockstates/uhv_distillery.json new file mode 100644 index 00000000000..0190c90065a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_dual_input_hatch.json new file mode 100644 index 00000000000..4ae309e1f57 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_dual_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_dual_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_dual_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_dual_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_dual_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_dual_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_dual_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_dual_output_hatch.json new file mode 100644 index 00000000000..93e828105fc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_dual_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_dual_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_dual_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_dual_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_dual_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_dual_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_dual_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/uhv_electric_furnace.json new file mode 100644 index 00000000000..1c9547e0fd9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/uhv_electrolyzer.json new file mode 100644 index 00000000000..f016ce6889d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/uhv_electromagnetic_separator.json new file mode 100644 index 00000000000..8a86ec51119 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_energy_input_hatch.json new file mode 100644 index 00000000000..88aaf17ce57 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/uhv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..e4258ad6cfa --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_energy_input_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_energy_input_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_energy_input_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_energy_input_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_energy_input_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_energy_input_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_energy_input_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/uhv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..8f612791940 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_energy_input_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_energy_input_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_energy_input_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_energy_input_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_energy_input_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_energy_input_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_energy_input_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_energy_output_hatch.json new file mode 100644 index 00000000000..0500512d8b1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/uhv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..dfbda9965b1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_energy_output_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_energy_output_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_energy_output_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_energy_output_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_energy_output_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_energy_output_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_energy_output_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/uhv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..b7221c11d32 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_energy_output_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_energy_output_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_energy_output_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_energy_output_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_energy_output_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_energy_output_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_energy_output_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_extractor.json b/src/generated/resources/assets/gtceu/blockstates/uhv_extractor.json new file mode 100644 index 00000000000..40f88426f38 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_extruder.json b/src/generated/resources/assets/gtceu/blockstates/uhv_extruder.json new file mode 100644 index 00000000000..b0a65a01605 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/uhv_fermenter.json new file mode 100644 index 00000000000..8ca8b712541 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/uhv_fluid_heater.json new file mode 100644 index 00000000000..7b5574d5933 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..e29c5dc0406 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/uhv_fluid_solidifier.json new file mode 100644 index 00000000000..3b73421bae8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/uhv_forge_hammer.json new file mode 100644 index 00000000000..ae186ce1c55 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/uhv_forming_press.json new file mode 100644 index 00000000000..4e7de7c105d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/uhv_gas_collector.json new file mode 100644 index 00000000000..e1fe5593068 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/uhv_input_bus.json new file mode 100644 index 00000000000..0794dfd47d7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_input_hatch.json new file mode 100644 index 00000000000..21081c0ecab --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/uhv_input_hatch_4x.json new file mode 100644 index 00000000000..52d9e4d08cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_input_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_input_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_input_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_input_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_input_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_input_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_input_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/uhv_input_hatch_9x.json new file mode 100644 index 00000000000..2279b25f0be --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_input_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_input_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_input_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_input_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_input_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_input_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_input_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_item_passthrough_hatch.json new file mode 100644 index 00000000000..fb47d104dc3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/uhv_laser_engraver.json new file mode 100644 index 00000000000..32f3fce37f7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_lathe.json b/src/generated/resources/assets/gtceu/blockstates/uhv_lathe.json new file mode 100644 index 00000000000..6498808ab72 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_macerator.json b/src/generated/resources/assets/gtceu/blockstates/uhv_macerator.json new file mode 100644 index 00000000000..2dd14b7f8aa --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/uhv_machine_hull.json new file mode 100644 index 00000000000..192b80a5693 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_mixer.json b/src/generated/resources/assets/gtceu/blockstates/uhv_mixer.json new file mode 100644 index 00000000000..4601b3a2cfa --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_muffler_hatch.json new file mode 100644 index 00000000000..62cc608cece --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/uhv_ore_washer.json new file mode 100644 index 00000000000..828f7881982 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/uhv_output_bus.json new file mode 100644 index 00000000000..7757154886c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_output_hatch.json new file mode 100644 index 00000000000..4406429f7ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/uhv_output_hatch_4x.json new file mode 100644 index 00000000000..61d23e1c7d6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_output_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_output_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_output_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_output_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_output_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_output_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_output_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/uhv_output_hatch_9x.json new file mode 100644 index 00000000000..a06124def60 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_output_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_output_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_output_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_output_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_output_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_output_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_output_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_packer.json b/src/generated/resources/assets/gtceu/blockstates/uhv_packer.json new file mode 100644 index 00000000000..0b371bb5cda --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/uhv_polarizer.json new file mode 100644 index 00000000000..bce2f9a3fb9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/uhv_quantum_chest.json new file mode 100644 index 00000000000..bd544368abc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_quantum_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uhv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/uhv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uhv_quantum_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uhv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/uhv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uhv_quantum_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uhv_quantum_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/uhv_quantum_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_quantum_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uhv_quantum_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uhv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/uhv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uhv_quantum_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uhv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/uhv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uhv_quantum_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uhv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/uhv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uhv_quantum_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/uhv_quantum_tank.json new file mode 100644 index 00000000000..56ad8997441 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_quantum_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uhv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/uhv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uhv_quantum_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uhv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/uhv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uhv_quantum_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uhv_quantum_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/uhv_quantum_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_quantum_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uhv_quantum_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uhv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/uhv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uhv_quantum_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uhv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/uhv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uhv_quantum_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uhv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/uhv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uhv_quantum_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/uhv_rock_crusher.json new file mode 100644 index 00000000000..43ce3520808 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_rotor_holder.json b/src/generated/resources/assets/gtceu/blockstates/uhv_rotor_holder.json new file mode 100644 index 00000000000..ece52651465 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_rotor_holder.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_rotor_holder", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_rotor_holder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_rotor_holder" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_rotor_holder", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_rotor_holder", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_rotor_holder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_scanner.json b/src/generated/resources/assets/gtceu/blockstates/uhv_scanner.json new file mode 100644 index 00000000000..678e9385c8a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_sifter.json b/src/generated/resources/assets/gtceu/blockstates/uhv_sifter.json new file mode 100644 index 00000000000..108bc5d2fe0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/uhv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..75d2524c9ba --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_substation_input_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_substation_input_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_substation_input_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_substation_input_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_substation_input_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_substation_input_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_substation_input_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/uhv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..a7e9e2a8471 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_substation_output_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_substation_output_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_substation_output_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_substation_output_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_substation_output_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_substation_output_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_substation_output_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/uhv_thermal_centrifuge.json new file mode 100644 index 00000000000..4ed787d83d5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/uhv_transformer_16a.json new file mode 100644 index 00000000000..35522818eab --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/uhv_transformer_1a.json new file mode 100644 index 00000000000..68d4b6f9c18 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/uhv_transformer_2a.json new file mode 100644 index 00000000000..3be9bb27a40 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/uhv_transformer_4a.json new file mode 100644 index 00000000000..2c66b7bea86 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/uhv_wiremill.json new file mode 100644 index 00000000000..2d2fe6fbcf4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..188613b3397 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_1024a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_1024a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_1024a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_1024a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_1024a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_1024a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_1024a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..25294136e77 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_1024a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_1024a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_1024a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_1024a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_1024a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_1024a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_1024a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uiv_16a_energy_converter.json new file mode 100644 index 00000000000..75d268bebcd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uiv_1a_energy_converter.json new file mode 100644 index 00000000000..0fafd65c6bf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..410c55af947 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_256a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_256a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_256a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_256a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_256a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_256a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_256a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..7d98ba8ef1d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_256a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_256a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_256a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_256a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_256a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_256a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_256a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..325f602ba07 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_4096a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_4096a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_4096a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_4096a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_4096a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_4096a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_4096a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..bc4b060724a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_4096a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_4096a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_4096a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_4096a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_4096a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_4096a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_4096a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uiv_4a_energy_converter.json new file mode 100644 index 00000000000..54cd37c9cae --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uiv_8a_energy_converter.json new file mode 100644 index 00000000000..3e1ccd06367 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/uiv_alloy_smelter.json new file mode 100644 index 00000000000..a05df0f8ee1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/uiv_arc_furnace.json new file mode 100644 index 00000000000..f62205f886c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_assembler.json b/src/generated/resources/assets/gtceu/blockstates/uiv_assembler.json new file mode 100644 index 00000000000..d8b079600f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/uiv_autoclave.json new file mode 100644 index 00000000000..a556bd9d102 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/uiv_battery_buffer_16x.json new file mode 100644 index 00000000000..f859e4cf3d4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/uiv_battery_buffer_4x.json new file mode 100644 index 00000000000..9a050921eb1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/uiv_battery_buffer_8x.json new file mode 100644 index 00000000000..4664e7c04a4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_bender.json b/src/generated/resources/assets/gtceu/blockstates/uiv_bender.json new file mode 100644 index 00000000000..6b2fc1f23ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_brewery.json b/src/generated/resources/assets/gtceu/blockstates/uiv_brewery.json new file mode 100644 index 00000000000..3c099408fa0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_canner.json b/src/generated/resources/assets/gtceu/blockstates/uiv_canner.json new file mode 100644 index 00000000000..0c76820342f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/uiv_centrifuge.json new file mode 100644 index 00000000000..ddd437c2ffa --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/uiv_charger_4x.json new file mode 100644 index 00000000000..3b4144036a2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/uiv_chemical_bath.json new file mode 100644 index 00000000000..a6bb826ae85 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/uiv_chemical_reactor.json new file mode 100644 index 00000000000..74ad33858c4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/uiv_circuit_assembler.json new file mode 100644 index 00000000000..09566bafe2e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_compressor.json b/src/generated/resources/assets/gtceu/blockstates/uiv_compressor.json new file mode 100644 index 00000000000..4b00d4b4a2d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_cutter.json b/src/generated/resources/assets/gtceu/blockstates/uiv_cutter.json new file mode 100644 index 00000000000..bfc00e29d84 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_diode.json b/src/generated/resources/assets/gtceu/blockstates/uiv_diode.json new file mode 100644 index 00000000000..64efaef9734 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_distillery.json b/src/generated/resources/assets/gtceu/blockstates/uiv_distillery.json new file mode 100644 index 00000000000..4b37bfb22f7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_dual_input_hatch.json new file mode 100644 index 00000000000..81d19172a96 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_dual_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_dual_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_dual_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_dual_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_dual_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_dual_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_dual_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_dual_output_hatch.json new file mode 100644 index 00000000000..a478358858f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_dual_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_dual_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_dual_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_dual_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_dual_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_dual_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_dual_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/uiv_electric_furnace.json new file mode 100644 index 00000000000..3a003563f49 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/uiv_electrolyzer.json new file mode 100644 index 00000000000..8af3b041a32 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/uiv_electromagnetic_separator.json new file mode 100644 index 00000000000..519acfe3c56 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_energy_input_hatch.json new file mode 100644 index 00000000000..94081cc0374 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/uiv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..9482c2c09dd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_energy_input_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_energy_input_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_energy_input_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_energy_input_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_energy_input_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_energy_input_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_energy_input_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/uiv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..3858ac83c1c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_energy_input_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_energy_input_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_energy_input_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_energy_input_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_energy_input_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_energy_input_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_energy_input_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_energy_output_hatch.json new file mode 100644 index 00000000000..1b3e0dda259 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/uiv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..691214e76ed --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_energy_output_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_energy_output_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_energy_output_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_energy_output_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_energy_output_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_energy_output_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_energy_output_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/uiv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..d4c927f1587 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_energy_output_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_energy_output_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_energy_output_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_energy_output_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_energy_output_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_energy_output_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_energy_output_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_extractor.json b/src/generated/resources/assets/gtceu/blockstates/uiv_extractor.json new file mode 100644 index 00000000000..91c9866805f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_extruder.json b/src/generated/resources/assets/gtceu/blockstates/uiv_extruder.json new file mode 100644 index 00000000000..d83ebe1edfb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/uiv_fermenter.json new file mode 100644 index 00000000000..0910cc02407 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/uiv_fluid_heater.json new file mode 100644 index 00000000000..9ff221f2419 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..a6395bc87d4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/uiv_fluid_solidifier.json new file mode 100644 index 00000000000..1c539054a68 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/uiv_forge_hammer.json new file mode 100644 index 00000000000..cb9cd4b3e98 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/uiv_forming_press.json new file mode 100644 index 00000000000..50601b066df --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/uiv_gas_collector.json new file mode 100644 index 00000000000..4832b7cefbd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/uiv_input_bus.json new file mode 100644 index 00000000000..cecfcb650a4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_input_hatch.json new file mode 100644 index 00000000000..1a142a22341 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/uiv_input_hatch_4x.json new file mode 100644 index 00000000000..61e5d1e738c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_input_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_input_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_input_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_input_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_input_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_input_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_input_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/uiv_input_hatch_9x.json new file mode 100644 index 00000000000..7984ae66659 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_input_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_input_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_input_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_input_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_input_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_input_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_input_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_item_passthrough_hatch.json new file mode 100644 index 00000000000..0c43a97ebae --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/uiv_laser_engraver.json new file mode 100644 index 00000000000..fe23f1e61ab --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_lathe.json b/src/generated/resources/assets/gtceu/blockstates/uiv_lathe.json new file mode 100644 index 00000000000..146c02fee0b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_macerator.json b/src/generated/resources/assets/gtceu/blockstates/uiv_macerator.json new file mode 100644 index 00000000000..d12c68edbf6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/uiv_machine_hull.json new file mode 100644 index 00000000000..34a63fa8ecf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_mixer.json b/src/generated/resources/assets/gtceu/blockstates/uiv_mixer.json new file mode 100644 index 00000000000..eca976cecf3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_muffler_hatch.json new file mode 100644 index 00000000000..dd65a0ec402 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/uiv_ore_washer.json new file mode 100644 index 00000000000..92d1b69e537 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/uiv_output_bus.json new file mode 100644 index 00000000000..aabd701c019 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_output_hatch.json new file mode 100644 index 00000000000..cead98db872 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/uiv_output_hatch_4x.json new file mode 100644 index 00000000000..bb32e53fc1c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_output_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_output_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_output_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_output_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_output_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_output_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_output_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/uiv_output_hatch_9x.json new file mode 100644 index 00000000000..55cbf0a819c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_output_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_output_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_output_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_output_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_output_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_output_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_output_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_packer.json b/src/generated/resources/assets/gtceu/blockstates/uiv_packer.json new file mode 100644 index 00000000000..6b1126bd486 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/uiv_polarizer.json new file mode 100644 index 00000000000..a164b225cf8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/uiv_quantum_chest.json new file mode 100644 index 00000000000..e03a7115f8a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_quantum_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uiv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/uiv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uiv_quantum_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uiv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/uiv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uiv_quantum_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uiv_quantum_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/uiv_quantum_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_quantum_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uiv_quantum_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uiv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/uiv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uiv_quantum_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uiv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/uiv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uiv_quantum_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uiv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/uiv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uiv_quantum_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/uiv_quantum_tank.json new file mode 100644 index 00000000000..7bf49e99838 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_quantum_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uiv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/uiv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uiv_quantum_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uiv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/uiv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uiv_quantum_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uiv_quantum_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/uiv_quantum_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_quantum_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uiv_quantum_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uiv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/uiv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uiv_quantum_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uiv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/uiv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uiv_quantum_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uiv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/uiv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uiv_quantum_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/uiv_rock_crusher.json new file mode 100644 index 00000000000..b26e3665bfd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_rotor_holder.json b/src/generated/resources/assets/gtceu/blockstates/uiv_rotor_holder.json new file mode 100644 index 00000000000..26fa82fdc5e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_rotor_holder.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_rotor_holder", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_rotor_holder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_rotor_holder" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_rotor_holder", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_rotor_holder", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_rotor_holder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_scanner.json b/src/generated/resources/assets/gtceu/blockstates/uiv_scanner.json new file mode 100644 index 00000000000..561703ab2ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_sifter.json b/src/generated/resources/assets/gtceu/blockstates/uiv_sifter.json new file mode 100644 index 00000000000..99be672c7cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/uiv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..9a346591796 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_substation_input_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_substation_input_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_substation_input_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_substation_input_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_substation_input_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_substation_input_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_substation_input_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/uiv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..fe7aec6f343 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_substation_output_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_substation_output_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_substation_output_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_substation_output_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_substation_output_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_substation_output_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_substation_output_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/uiv_thermal_centrifuge.json new file mode 100644 index 00000000000..a1dd897dd78 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/uiv_transformer_16a.json new file mode 100644 index 00000000000..2774567453c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/uiv_transformer_1a.json new file mode 100644 index 00000000000..6a547cd12d2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/uiv_transformer_2a.json new file mode 100644 index 00000000000..44663129623 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/uiv_transformer_4a.json new file mode 100644 index 00000000000..9c18f5f24b2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/uiv_wiremill.json new file mode 100644 index 00000000000..974b0e348c2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/ulv_16a_energy_converter.json new file mode 100644 index 00000000000..ec8e69a3b59 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/ulv_1a_energy_converter.json new file mode 100644 index 00000000000..5b1575769c6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/ulv_4a_energy_converter.json new file mode 100644 index 00000000000..8286913f821 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/ulv_8a_energy_converter.json new file mode 100644 index 00000000000..93a0113f4fc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/ulv_battery_buffer_16x.json new file mode 100644 index 00000000000..621a156cb57 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/ulv_battery_buffer_4x.json new file mode 100644 index 00000000000..10c66feee60 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/ulv_battery_buffer_8x.json new file mode 100644 index 00000000000..765277298e8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/ulv_charger_4x.json new file mode 100644 index 00000000000..bdd7832c8e7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/ulv_energy_input_hatch.json new file mode 100644 index 00000000000..0ab2334b72b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/ulv_energy_output_hatch.json new file mode 100644 index 00000000000..4e3239e256d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/ulv_input_bus.json new file mode 100644 index 00000000000..67542c9faa8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/ulv_input_hatch.json new file mode 100644 index 00000000000..30ff481ac75 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/ulv_machine_hull.json new file mode 100644 index 00000000000..b548c7710c1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/ulv_output_bus.json new file mode 100644 index 00000000000..39632c7e4e0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/ulv_output_hatch.json new file mode 100644 index 00000000000..834d6701caa --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/ulv_transformer_16a.json new file mode 100644 index 00000000000..02d7500215b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/ulv_transformer_1a.json new file mode 100644 index 00000000000..2fd79de7ca0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/ulv_transformer_2a.json new file mode 100644 index 00000000000..fafdfc45bbc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/ulv_transformer_4a.json new file mode 100644 index 00000000000..e5454e7c607 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..e7bdc4dc1cb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_1024a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_1024a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_1024a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_1024a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_1024a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_1024a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_1024a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..a8cc5b2a0ee --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_1024a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_1024a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_1024a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_1024a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_1024a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_1024a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_1024a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uv_16a_energy_converter.json new file mode 100644 index 00000000000..d20339a088e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uv_1a_energy_converter.json new file mode 100644 index 00000000000..a20d887c8bc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..7613650cf73 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_256a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_256a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_256a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_256a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_256a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_256a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_256a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..9eb0b6e9c4f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_256a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_256a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_256a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_256a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_256a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_256a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_256a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..d7c2f12816f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_4096a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_4096a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_4096a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_4096a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_4096a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_4096a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_4096a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..9ef92e5b365 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_4096a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_4096a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_4096a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_4096a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_4096a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_4096a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_4096a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uv_4a_energy_converter.json new file mode 100644 index 00000000000..278ed4d6b07 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uv_8a_energy_converter.json new file mode 100644 index 00000000000..7dd94bb54fc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/uv_alloy_smelter.json new file mode 100644 index 00000000000..77d145c2f69 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/uv_arc_furnace.json new file mode 100644 index 00000000000..b33df93560c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_assembler.json b/src/generated/resources/assets/gtceu/blockstates/uv_assembler.json new file mode 100644 index 00000000000..ce8084bfb3e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/uv_autoclave.json new file mode 100644 index 00000000000..c941afde970 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/uv_battery_buffer_16x.json new file mode 100644 index 00000000000..81b9621e699 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/uv_battery_buffer_4x.json new file mode 100644 index 00000000000..37d89d72709 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/uv_battery_buffer_8x.json new file mode 100644 index 00000000000..998c0a24366 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_bender.json b/src/generated/resources/assets/gtceu/blockstates/uv_bender.json new file mode 100644 index 00000000000..9b17183e662 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_brewery.json b/src/generated/resources/assets/gtceu/blockstates/uv_brewery.json new file mode 100644 index 00000000000..90821fedffe --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_canner.json b/src/generated/resources/assets/gtceu/blockstates/uv_canner.json new file mode 100644 index 00000000000..ccda03d50f2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/uv_centrifuge.json new file mode 100644 index 00000000000..47702fce85c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/uv_charger_4x.json new file mode 100644 index 00000000000..1151e3497a7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/uv_chemical_bath.json new file mode 100644 index 00000000000..b0ff375c048 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/uv_chemical_reactor.json new file mode 100644 index 00000000000..bcb20d2c69a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/uv_circuit_assembler.json new file mode 100644 index 00000000000..8f710c729e0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_compressor.json b/src/generated/resources/assets/gtceu/blockstates/uv_compressor.json new file mode 100644 index 00000000000..fd9bf1d9b01 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_cutter.json b/src/generated/resources/assets/gtceu/blockstates/uv_cutter.json new file mode 100644 index 00000000000..7f037bad6ba --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_diode.json b/src/generated/resources/assets/gtceu/blockstates/uv_diode.json new file mode 100644 index 00000000000..d9314ffb163 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_distillery.json b/src/generated/resources/assets/gtceu/blockstates/uv_distillery.json new file mode 100644 index 00000000000..219b1659546 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_dual_input_hatch.json new file mode 100644 index 00000000000..17a38db4595 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_dual_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_dual_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_dual_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_dual_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_dual_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_dual_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_dual_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_dual_output_hatch.json new file mode 100644 index 00000000000..9ee0359fae7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_dual_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_dual_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_dual_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_dual_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_dual_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_dual_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_dual_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/uv_electric_furnace.json new file mode 100644 index 00000000000..38b235fe65d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/uv_electrolyzer.json new file mode 100644 index 00000000000..17230637dcb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/uv_electromagnetic_separator.json new file mode 100644 index 00000000000..2f5cf166777 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_energy_input_hatch.json new file mode 100644 index 00000000000..90ccb6215b5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/uv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..67a3848f39f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_energy_input_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_energy_input_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_energy_input_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_energy_input_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_energy_input_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_energy_input_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_energy_input_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/uv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..b8f58bd780a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_energy_input_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_energy_input_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_energy_input_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_energy_input_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_energy_input_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_energy_input_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_energy_input_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_energy_output_hatch.json new file mode 100644 index 00000000000..729ab194748 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/uv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..5e4a683de29 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_energy_output_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_energy_output_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_energy_output_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_energy_output_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_energy_output_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_energy_output_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_energy_output_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/uv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..3b7fae34b2e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_energy_output_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_energy_output_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_energy_output_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_energy_output_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_energy_output_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_energy_output_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_energy_output_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_extractor.json b/src/generated/resources/assets/gtceu/blockstates/uv_extractor.json new file mode 100644 index 00000000000..b4a9ac5ab24 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_extruder.json b/src/generated/resources/assets/gtceu/blockstates/uv_extruder.json new file mode 100644 index 00000000000..c3af5a1e5dd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/uv_fermenter.json new file mode 100644 index 00000000000..9b603d6ca32 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/uv_fluid_heater.json new file mode 100644 index 00000000000..c215212a2d0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..e07f215782e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/uv_fluid_solidifier.json new file mode 100644 index 00000000000..9e00d9d390b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/uv_forge_hammer.json new file mode 100644 index 00000000000..ff927a1f334 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/uv_forming_press.json new file mode 100644 index 00000000000..3053884fa16 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_fusion_reactor.json b/src/generated/resources/assets/gtceu/blockstates/uv_fusion_reactor.json new file mode 100644 index 00000000000..3c3bc086ce3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_fusion_reactor.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_fusion_reactor", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/uv_fusion_reactor", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_fusion_reactor", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_fusion_reactor", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_fusion_reactor", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/uv_fusion_reactor", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_fusion_reactor", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_fusion_reactor", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_fusion_reactor" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/uv_fusion_reactor" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_fusion_reactor" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_fusion_reactor" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_fusion_reactor", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/uv_fusion_reactor", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_fusion_reactor", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_fusion_reactor", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_fusion_reactor", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_fusion_reactor", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/uv_fusion_reactor", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_fusion_reactor", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_fusion_reactor", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/uv_fusion_reactor", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_fusion_reactor", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_fusion_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/uv_gas_collector.json new file mode 100644 index 00000000000..4a192edccf8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/uv_input_bus.json new file mode 100644 index 00000000000..5aa0d96f12d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_input_hatch.json new file mode 100644 index 00000000000..25b5f7e7eb8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/uv_input_hatch_4x.json new file mode 100644 index 00000000000..8a6096d8579 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_input_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_input_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_input_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_input_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_input_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_input_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_input_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/uv_input_hatch_9x.json new file mode 100644 index 00000000000..48b3d58e127 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_input_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_input_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_input_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_input_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_input_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_input_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_input_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_item_passthrough_hatch.json new file mode 100644 index 00000000000..731b7a7b8ff --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/uv_laser_engraver.json new file mode 100644 index 00000000000..37d62cef0ce --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_lathe.json b/src/generated/resources/assets/gtceu/blockstates/uv_lathe.json new file mode 100644 index 00000000000..e5a8c0f6216 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_macerator.json b/src/generated/resources/assets/gtceu/blockstates/uv_macerator.json new file mode 100644 index 00000000000..a6a6db506f4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/uv_machine_hull.json new file mode 100644 index 00000000000..fc0b4f0b954 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_mixer.json b/src/generated/resources/assets/gtceu/blockstates/uv_mixer.json new file mode 100644 index 00000000000..3832d016fa2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_muffler_hatch.json new file mode 100644 index 00000000000..535a391bea0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/uv_ore_washer.json new file mode 100644 index 00000000000..aa3a73ca597 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/uv_output_bus.json new file mode 100644 index 00000000000..18e34f41c6f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_output_hatch.json new file mode 100644 index 00000000000..a8be74ae520 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/uv_output_hatch_4x.json new file mode 100644 index 00000000000..0c986f99193 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_output_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_output_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_output_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_output_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_output_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_output_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_output_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/uv_output_hatch_9x.json new file mode 100644 index 00000000000..d1cfbb4641f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_output_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_output_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_output_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_output_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_output_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_output_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_output_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_packer.json b/src/generated/resources/assets/gtceu/blockstates/uv_packer.json new file mode 100644 index 00000000000..6d6d9b4375b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_parallel_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_parallel_hatch.json new file mode 100644 index 00000000000..b7c500ef455 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_parallel_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_parallel_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_parallel_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_parallel_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_parallel_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_parallel_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_parallel_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/uv_polarizer.json new file mode 100644 index 00000000000..69bd8680788 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/uv_quantum_chest.json new file mode 100644 index 00000000000..7ea6c8c401f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_quantum_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/uv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_quantum_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/uv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_quantum_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_quantum_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/uv_quantum_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_quantum_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_quantum_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/uv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_quantum_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/uv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_quantum_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/uv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_quantum_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/uv_quantum_tank.json new file mode 100644 index 00000000000..ecb663d3d53 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_quantum_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/uv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_quantum_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/uv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_quantum_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_quantum_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/uv_quantum_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_quantum_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_quantum_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/uv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_quantum_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/uv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_quantum_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/uv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_quantum_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/uv_rock_crusher.json new file mode 100644 index 00000000000..57dafe54109 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_rotor_holder.json b/src/generated/resources/assets/gtceu/blockstates/uv_rotor_holder.json new file mode 100644 index 00000000000..ec0635411cc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_rotor_holder.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_rotor_holder", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_rotor_holder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_rotor_holder" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_rotor_holder", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_rotor_holder", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_rotor_holder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_scanner.json b/src/generated/resources/assets/gtceu/blockstates/uv_scanner.json new file mode 100644 index 00000000000..0cfafef5b15 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_sifter.json b/src/generated/resources/assets/gtceu/blockstates/uv_sifter.json new file mode 100644 index 00000000000..00a7d691ff6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/uv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..dff44acc54d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_substation_input_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_substation_input_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_substation_input_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_substation_input_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_substation_input_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_substation_input_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_substation_input_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/uv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..38208be7d57 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_substation_output_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_substation_output_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_substation_output_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_substation_output_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_substation_output_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_substation_output_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_substation_output_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/uv_thermal_centrifuge.json new file mode 100644 index 00000000000..34df07ffce3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/uv_transformer_16a.json new file mode 100644 index 00000000000..419970b4901 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/uv_transformer_1a.json new file mode 100644 index 00000000000..ca703222473 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/uv_transformer_2a.json new file mode 100644 index 00000000000..b242e854403 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/uv_transformer_4a.json new file mode 100644 index 00000000000..8009f3f70c4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/uv_wiremill.json new file mode 100644 index 00000000000..513cf7e0f93 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_world_accelerator.json b/src/generated/resources/assets/gtceu/blockstates/uv_world_accelerator.json new file mode 100644 index 00000000000..4b28309d2ce --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_world_accelerator.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/uv_world_accelerator" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..38ceab66c39 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_1024a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_1024a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_1024a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_1024a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_1024a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_1024a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_1024a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..76e4df64e44 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_1024a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_1024a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_1024a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_1024a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_1024a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_1024a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_1024a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uxv_16a_energy_converter.json new file mode 100644 index 00000000000..400edee9965 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uxv_1a_energy_converter.json new file mode 100644 index 00000000000..4049a102247 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..33d7b231f87 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_256a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_256a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_256a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_256a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_256a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_256a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_256a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..6e9e429e245 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_256a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_256a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_256a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_256a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_256a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_256a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_256a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..3f59d1f191e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_4096a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_4096a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_4096a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_4096a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_4096a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_4096a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_4096a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..5c9d826ca5f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_4096a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_4096a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_4096a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_4096a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_4096a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_4096a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_4096a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uxv_4a_energy_converter.json new file mode 100644 index 00000000000..61655e72157 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uxv_8a_energy_converter.json new file mode 100644 index 00000000000..9b50349b51c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/uxv_alloy_smelter.json new file mode 100644 index 00000000000..668ef5687cf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/uxv_arc_furnace.json new file mode 100644 index 00000000000..57fca9be45c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_assembler.json b/src/generated/resources/assets/gtceu/blockstates/uxv_assembler.json new file mode 100644 index 00000000000..85ebb069f0b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/uxv_autoclave.json new file mode 100644 index 00000000000..43f501564a1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/uxv_battery_buffer_16x.json new file mode 100644 index 00000000000..3d11fedb64e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/uxv_battery_buffer_4x.json new file mode 100644 index 00000000000..4eb1bd1542d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/uxv_battery_buffer_8x.json new file mode 100644 index 00000000000..9d0aad2b32e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_bender.json b/src/generated/resources/assets/gtceu/blockstates/uxv_bender.json new file mode 100644 index 00000000000..7a6fe70eb38 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_brewery.json b/src/generated/resources/assets/gtceu/blockstates/uxv_brewery.json new file mode 100644 index 00000000000..c3b4802ac0b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_canner.json b/src/generated/resources/assets/gtceu/blockstates/uxv_canner.json new file mode 100644 index 00000000000..4701eb5772f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/uxv_centrifuge.json new file mode 100644 index 00000000000..c5b47d66dde --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/uxv_charger_4x.json new file mode 100644 index 00000000000..5fb265d8bc6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/uxv_chemical_bath.json new file mode 100644 index 00000000000..1634ffb7f62 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/uxv_chemical_reactor.json new file mode 100644 index 00000000000..f32aff13cae --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/uxv_circuit_assembler.json new file mode 100644 index 00000000000..841a62eec88 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_compressor.json b/src/generated/resources/assets/gtceu/blockstates/uxv_compressor.json new file mode 100644 index 00000000000..59e7710ba23 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_cutter.json b/src/generated/resources/assets/gtceu/blockstates/uxv_cutter.json new file mode 100644 index 00000000000..6c7fb4f6f18 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_diode.json b/src/generated/resources/assets/gtceu/blockstates/uxv_diode.json new file mode 100644 index 00000000000..384bb439a7a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_distillery.json b/src/generated/resources/assets/gtceu/blockstates/uxv_distillery.json new file mode 100644 index 00000000000..fbbc6a2eb65 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_dual_input_hatch.json new file mode 100644 index 00000000000..e7f0345d61c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_dual_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_dual_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_dual_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_dual_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_dual_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_dual_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_dual_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_dual_output_hatch.json new file mode 100644 index 00000000000..7dd5b9c929b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_dual_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_dual_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_dual_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_dual_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_dual_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_dual_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_dual_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/uxv_electric_furnace.json new file mode 100644 index 00000000000..2c282e3af0d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/uxv_electrolyzer.json new file mode 100644 index 00000000000..c994c7692d6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/uxv_electromagnetic_separator.json new file mode 100644 index 00000000000..8315d264e26 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_energy_input_hatch.json new file mode 100644 index 00000000000..f9d7cec351b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/uxv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..0b9798bb1b7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_energy_input_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_energy_input_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_energy_input_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_energy_input_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_energy_input_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_energy_input_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_energy_input_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/uxv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..924d2e82d77 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_energy_input_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_energy_input_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_energy_input_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_energy_input_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_energy_input_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_energy_input_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_energy_input_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_energy_output_hatch.json new file mode 100644 index 00000000000..c2a0b512426 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/uxv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..9508753e8c6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_energy_output_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_energy_output_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_energy_output_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_energy_output_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_energy_output_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_energy_output_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_energy_output_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/uxv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..0a2fd52ef5b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_energy_output_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_energy_output_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_energy_output_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_energy_output_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_energy_output_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_energy_output_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_energy_output_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_extractor.json b/src/generated/resources/assets/gtceu/blockstates/uxv_extractor.json new file mode 100644 index 00000000000..e7376bb0f75 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_extruder.json b/src/generated/resources/assets/gtceu/blockstates/uxv_extruder.json new file mode 100644 index 00000000000..a883f410216 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/uxv_fermenter.json new file mode 100644 index 00000000000..1947d977240 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/uxv_fluid_heater.json new file mode 100644 index 00000000000..9f733f97214 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..08577072f75 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/uxv_fluid_solidifier.json new file mode 100644 index 00000000000..a943eb3d534 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/uxv_forge_hammer.json new file mode 100644 index 00000000000..9e6e7aee1e3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/uxv_forming_press.json new file mode 100644 index 00000000000..0b786c1fbd7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/uxv_gas_collector.json new file mode 100644 index 00000000000..0f70467f9c6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/uxv_input_bus.json new file mode 100644 index 00000000000..9e79f636bf5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_input_hatch.json new file mode 100644 index 00000000000..19b268ef978 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/uxv_input_hatch_4x.json new file mode 100644 index 00000000000..228bd57a6bb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_input_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_input_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_input_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_input_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_input_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_input_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_input_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/uxv_input_hatch_9x.json new file mode 100644 index 00000000000..bac13440f93 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_input_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_input_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_input_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_input_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_input_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_input_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_input_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_item_passthrough_hatch.json new file mode 100644 index 00000000000..fbacb1c0ac4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/uxv_laser_engraver.json new file mode 100644 index 00000000000..97606338cfe --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_lathe.json b/src/generated/resources/assets/gtceu/blockstates/uxv_lathe.json new file mode 100644 index 00000000000..773c6637f2e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_macerator.json b/src/generated/resources/assets/gtceu/blockstates/uxv_macerator.json new file mode 100644 index 00000000000..ce492a327cf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/uxv_machine_hull.json new file mode 100644 index 00000000000..b5cf9f5439f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_mixer.json b/src/generated/resources/assets/gtceu/blockstates/uxv_mixer.json new file mode 100644 index 00000000000..b6ac328b3ad --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_muffler_hatch.json new file mode 100644 index 00000000000..80fb2e6e18c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/uxv_ore_washer.json new file mode 100644 index 00000000000..f6f21840451 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/uxv_output_bus.json new file mode 100644 index 00000000000..c0ce3ffd472 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_output_hatch.json new file mode 100644 index 00000000000..b0e25944c77 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/uxv_output_hatch_4x.json new file mode 100644 index 00000000000..463c00b8410 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_output_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_output_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_output_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_output_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_output_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_output_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_output_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/uxv_output_hatch_9x.json new file mode 100644 index 00000000000..fbbd0c19f89 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_output_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_output_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_output_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_output_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_output_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_output_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_output_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_packer.json b/src/generated/resources/assets/gtceu/blockstates/uxv_packer.json new file mode 100644 index 00000000000..b5820bc57e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/uxv_polarizer.json new file mode 100644 index 00000000000..bde63309ed6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/uxv_quantum_chest.json new file mode 100644 index 00000000000..1b6d98bcc86 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_quantum_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uxv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/uxv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uxv_quantum_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uxv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/uxv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uxv_quantum_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uxv_quantum_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/uxv_quantum_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_quantum_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uxv_quantum_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uxv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/uxv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uxv_quantum_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uxv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/uxv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uxv_quantum_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uxv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/uxv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uxv_quantum_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/uxv_quantum_tank.json new file mode 100644 index 00000000000..db88fff044a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_quantum_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uxv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/uxv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uxv_quantum_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uxv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/uxv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uxv_quantum_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uxv_quantum_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/uxv_quantum_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_quantum_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uxv_quantum_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uxv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/uxv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uxv_quantum_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uxv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/uxv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uxv_quantum_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uxv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/uxv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uxv_quantum_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/uxv_rock_crusher.json new file mode 100644 index 00000000000..106ae426fab --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_rotor_holder.json b/src/generated/resources/assets/gtceu/blockstates/uxv_rotor_holder.json new file mode 100644 index 00000000000..e490686d492 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_rotor_holder.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_rotor_holder", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_rotor_holder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_rotor_holder" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_rotor_holder", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_rotor_holder", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_rotor_holder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_scanner.json b/src/generated/resources/assets/gtceu/blockstates/uxv_scanner.json new file mode 100644 index 00000000000..88c96d4444d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_sifter.json b/src/generated/resources/assets/gtceu/blockstates/uxv_sifter.json new file mode 100644 index 00000000000..76ba39d6cb9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/uxv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..dbfd4c41693 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_substation_input_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_substation_input_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_substation_input_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_substation_input_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_substation_input_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_substation_input_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_substation_input_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/uxv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..1ed711e9476 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_substation_output_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_substation_output_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_substation_output_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_substation_output_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_substation_output_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_substation_output_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_substation_output_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/uxv_thermal_centrifuge.json new file mode 100644 index 00000000000..54c6d5ca0c1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/uxv_transformer_16a.json new file mode 100644 index 00000000000..7354b0a90f9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/uxv_transformer_1a.json new file mode 100644 index 00000000000..e86aadf2ab4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/uxv_transformer_2a.json new file mode 100644 index 00000000000..15bd2760c22 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/uxv_transformer_4a.json new file mode 100644 index 00000000000..0d362bf6444 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/uxv_wiremill.json new file mode 100644 index 00000000000..5c597aebb07 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/vacuum_freezer.json b/src/generated/resources/assets/gtceu/blockstates/vacuum_freezer.json new file mode 100644 index 00000000000..19a856aeb86 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/vacuum_freezer.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/vacuum_freezer", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/vacuum_freezer", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/vacuum_freezer", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/vacuum_freezer", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/vacuum_freezer", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/vacuum_freezer", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/vacuum_freezer", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/vacuum_freezer", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/vacuum_freezer" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/vacuum_freezer" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/vacuum_freezer" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/vacuum_freezer" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/vacuum_freezer", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/vacuum_freezer", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/vacuum_freezer", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/vacuum_freezer", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/vacuum_freezer", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/vacuum_freezer", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/vacuum_freezer", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/vacuum_freezer", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/vacuum_freezer", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/vacuum_freezer", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/vacuum_freezer", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/vacuum_freezer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/wood_crate.json b/src/generated/resources/assets/gtceu/blockstates/wood_crate.json new file mode 100644 index 00000000000..859c2474bc9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/wood_crate.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/wood_crate" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/wood_drum.json b/src/generated/resources/assets/gtceu/blockstates/wood_drum.json new file mode 100644 index 00000000000..67886f74fda --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/wood_drum.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/wood_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/wooden_multiblock_tank.json b/src/generated/resources/assets/gtceu/blockstates/wooden_multiblock_tank.json new file mode 100644 index 00000000000..10ed37aa4e2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/wooden_multiblock_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/wooden_multiblock_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/wooden_multiblock_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/wooden_multiblock_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/wooden_multiblock_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/wooden_multiblock_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/wooden_multiblock_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/wooden_multiblock_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/wooden_multiblock_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/wooden_multiblock_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/wooden_tank_valve.json b/src/generated/resources/assets/gtceu/blockstates/wooden_tank_valve.json new file mode 100644 index 00000000000..4b111b5cf04 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/wooden_tank_valve.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/wooden_tank_valve", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/wooden_tank_valve", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/wooden_tank_valve" + }, + "facing=south": { + "model": "gtceu:block/machine/wooden_tank_valve", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/wooden_tank_valve", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/wooden_tank_valve", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..6653a857149 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_1024a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_1024a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_1024a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_1024a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_1024a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_1024a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_1024a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..bce4069bab8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_1024a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_1024a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_1024a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_1024a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_1024a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_1024a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_1024a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/zpm_16a_energy_converter.json new file mode 100644 index 00000000000..0ac26f335f4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/zpm_1a_energy_converter.json new file mode 100644 index 00000000000..1e329c60773 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_256a_laser_source_hatch.json new file mode 100644 index 00000000000..74ed16cc1ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_256a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_256a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_256a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_256a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_256a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_256a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_256a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_256a_laser_target_hatch.json new file mode 100644 index 00000000000..991d5d92a00 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_256a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_256a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_256a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_256a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_256a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_256a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_256a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..d2079fc0ddc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_4096a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_4096a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_4096a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_4096a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_4096a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_4096a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_4096a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..60303595630 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_4096a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_4096a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_4096a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_4096a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_4096a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_4096a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_4096a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/zpm_4a_energy_converter.json new file mode 100644 index 00000000000..66dda0b3384 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/zpm_8a_energy_converter.json new file mode 100644 index 00000000000..c5b3b19680b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/zpm_alloy_smelter.json new file mode 100644 index 00000000000..7cbd2b17a2d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/zpm_arc_furnace.json new file mode 100644 index 00000000000..24b0398f879 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_assembler.json b/src/generated/resources/assets/gtceu/blockstates/zpm_assembler.json new file mode 100644 index 00000000000..752dc5e3b55 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/zpm_autoclave.json new file mode 100644 index 00000000000..691c0caad13 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/zpm_battery_buffer_16x.json new file mode 100644 index 00000000000..74df8fbd620 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/zpm_battery_buffer_4x.json new file mode 100644 index 00000000000..6cf271ed39c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/zpm_battery_buffer_8x.json new file mode 100644 index 00000000000..4dba0125179 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_bender.json b/src/generated/resources/assets/gtceu/blockstates/zpm_bender.json new file mode 100644 index 00000000000..f1b842534be --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_brewery.json b/src/generated/resources/assets/gtceu/blockstates/zpm_brewery.json new file mode 100644 index 00000000000..bd184d180f3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_canner.json b/src/generated/resources/assets/gtceu/blockstates/zpm_canner.json new file mode 100644 index 00000000000..f8be60402a6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/zpm_centrifuge.json new file mode 100644 index 00000000000..d1bb58e3bf3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/zpm_charger_4x.json new file mode 100644 index 00000000000..b7527fde4e0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/zpm_chemical_bath.json new file mode 100644 index 00000000000..24460be56fb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/zpm_chemical_reactor.json new file mode 100644 index 00000000000..7d1cad26860 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/zpm_circuit_assembler.json new file mode 100644 index 00000000000..1e08765d27e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_compressor.json b/src/generated/resources/assets/gtceu/blockstates/zpm_compressor.json new file mode 100644 index 00000000000..58a74f822e9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_cutter.json b/src/generated/resources/assets/gtceu/blockstates/zpm_cutter.json new file mode 100644 index 00000000000..9c1928c38c7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_diode.json b/src/generated/resources/assets/gtceu/blockstates/zpm_diode.json new file mode 100644 index 00000000000..e935d2b395c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_distillery.json b/src/generated/resources/assets/gtceu/blockstates/zpm_distillery.json new file mode 100644 index 00000000000..29231cf6133 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_dual_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_dual_input_hatch.json new file mode 100644 index 00000000000..b167ab41a6e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_dual_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_dual_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_dual_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_dual_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_dual_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_dual_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_dual_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_dual_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_dual_output_hatch.json new file mode 100644 index 00000000000..57f6020f917 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_dual_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_dual_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_dual_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_dual_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_dual_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_dual_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_dual_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/zpm_electric_furnace.json new file mode 100644 index 00000000000..93c73c81728 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/zpm_electrolyzer.json new file mode 100644 index 00000000000..c13f81be591 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/zpm_electromagnetic_separator.json new file mode 100644 index 00000000000..c5cb3136664 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_energy_input_hatch.json new file mode 100644 index 00000000000..3888ca96115 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/zpm_energy_input_hatch_16a.json new file mode 100644 index 00000000000..28734d4de85 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_energy_input_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_energy_input_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_energy_input_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_energy_input_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_energy_input_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_energy_input_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_energy_input_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/zpm_energy_input_hatch_4a.json new file mode 100644 index 00000000000..a56b2e2bab9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_energy_input_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_energy_input_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_energy_input_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_energy_input_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_energy_input_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_energy_input_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_energy_input_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_energy_output_hatch.json new file mode 100644 index 00000000000..62c51273360 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/zpm_energy_output_hatch_16a.json new file mode 100644 index 00000000000..47044f82e74 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_energy_output_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_energy_output_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_energy_output_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_energy_output_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_energy_output_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_energy_output_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_energy_output_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/zpm_energy_output_hatch_4a.json new file mode 100644 index 00000000000..cce59016b1c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_energy_output_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_energy_output_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_energy_output_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_energy_output_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_energy_output_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_energy_output_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_energy_output_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_extractor.json b/src/generated/resources/assets/gtceu/blockstates/zpm_extractor.json new file mode 100644 index 00000000000..ef27ef70ce2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_extruder.json b/src/generated/resources/assets/gtceu/blockstates/zpm_extruder.json new file mode 100644 index 00000000000..7088f0ae13a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/zpm_fermenter.json new file mode 100644 index 00000000000..4b3e9c17b54 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/zpm_fluid_heater.json new file mode 100644 index 00000000000..a7c1df94d69 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..75176670c86 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/zpm_fluid_solidifier.json new file mode 100644 index 00000000000..3c04193c9b0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/zpm_forge_hammer.json new file mode 100644 index 00000000000..0eb5319320b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/zpm_forming_press.json new file mode 100644 index 00000000000..d58db44c701 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_fusion_reactor.json b/src/generated/resources/assets/gtceu/blockstates/zpm_fusion_reactor.json new file mode 100644 index 00000000000..a4b56a54f0d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_fusion_reactor.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_fusion_reactor", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_fusion_reactor", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_fusion_reactor" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_fusion_reactor" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_fusion_reactor" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_fusion_reactor" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_fusion_reactor", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/zpm_fusion_reactor", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_fusion_reactor", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/zpm_gas_collector.json new file mode 100644 index 00000000000..38453a324e3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/zpm_input_bus.json new file mode 100644 index 00000000000..cd1bcc635a1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_input_hatch.json new file mode 100644 index 00000000000..d914e6bd453 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_input_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/zpm_input_hatch_4x.json new file mode 100644 index 00000000000..1631126d7ab --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_input_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_input_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_input_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_input_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_input_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_input_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_input_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_input_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/zpm_input_hatch_9x.json new file mode 100644 index 00000000000..a32091c4618 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_input_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_input_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_input_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_input_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_input_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_input_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_input_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_item_passthrough_hatch.json new file mode 100644 index 00000000000..864045f4e56 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/zpm_laser_engraver.json new file mode 100644 index 00000000000..0a19d4a6e0c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_lathe.json b/src/generated/resources/assets/gtceu/blockstates/zpm_lathe.json new file mode 100644 index 00000000000..95f4722ac1b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_macerator.json b/src/generated/resources/assets/gtceu/blockstates/zpm_macerator.json new file mode 100644 index 00000000000..da3e3af99e9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/zpm_machine_hull.json new file mode 100644 index 00000000000..3744578a631 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_mixer.json b/src/generated/resources/assets/gtceu/blockstates/zpm_mixer.json new file mode 100644 index 00000000000..e6f2cf9adc5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_muffler_hatch.json new file mode 100644 index 00000000000..5fb7bafddb2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/zpm_ore_washer.json new file mode 100644 index 00000000000..f2886dfa095 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/zpm_output_bus.json new file mode 100644 index 00000000000..067beb8fc54 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_output_hatch.json new file mode 100644 index 00000000000..69fd1a50692 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_output_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/zpm_output_hatch_4x.json new file mode 100644 index 00000000000..64544324fa8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_output_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_output_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_output_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_output_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_output_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_output_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_output_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_output_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/zpm_output_hatch_9x.json new file mode 100644 index 00000000000..8d9ed94cfa2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_output_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_output_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_output_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_output_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_output_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_output_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_output_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_packer.json b/src/generated/resources/assets/gtceu/blockstates/zpm_packer.json new file mode 100644 index 00000000000..81a9c707295 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_parallel_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_parallel_hatch.json new file mode 100644 index 00000000000..b2be5a77ece --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_parallel_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_parallel_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_parallel_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_parallel_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_parallel_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_parallel_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_parallel_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/zpm_polarizer.json new file mode 100644 index 00000000000..acd7e838bd8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/zpm_quantum_chest.json new file mode 100644 index 00000000000..1203273aa37 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_quantum_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_quantum_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_quantum_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_quantum_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_quantum_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_quantum_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_quantum_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_quantum_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/zpm_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_quantum_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_quantum_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/zpm_quantum_tank.json new file mode 100644 index 00000000000..e31f2d56af0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_quantum_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_quantum_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_quantum_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_quantum_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_quantum_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_quantum_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_quantum_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_quantum_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/zpm_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_quantum_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_quantum_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/zpm_rock_crusher.json new file mode 100644 index 00000000000..20ddd280096 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_rotor_holder.json b/src/generated/resources/assets/gtceu/blockstates/zpm_rotor_holder.json new file mode 100644 index 00000000000..1055c5d5c29 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_rotor_holder.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_rotor_holder", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_rotor_holder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_rotor_holder" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_rotor_holder", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_rotor_holder", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_rotor_holder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_scanner.json b/src/generated/resources/assets/gtceu/blockstates/zpm_scanner.json new file mode 100644 index 00000000000..0f29cf56fa0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_sifter.json b/src/generated/resources/assets/gtceu/blockstates/zpm_sifter.json new file mode 100644 index 00000000000..03191e83ab3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/zpm_substation_input_hatch_64a.json new file mode 100644 index 00000000000..990873db383 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_substation_input_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_substation_input_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_substation_input_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_substation_input_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_substation_input_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_substation_input_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_substation_input_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/zpm_substation_output_hatch_64a.json new file mode 100644 index 00000000000..43098823fdd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_substation_output_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_substation_output_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_substation_output_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_substation_output_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_substation_output_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_substation_output_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_substation_output_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/zpm_thermal_centrifuge.json new file mode 100644 index 00000000000..4cba03cb770 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/zpm_transformer_16a.json new file mode 100644 index 00000000000..fee9d8a1d29 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/zpm_transformer_1a.json new file mode 100644 index 00000000000..38d6bc6ce08 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/zpm_transformer_2a.json new file mode 100644 index 00000000000..a313ffd4489 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/zpm_transformer_4a.json new file mode 100644 index 00000000000..32f0bc6f58b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/zpm_wiremill.json new file mode 100644 index 00000000000..e38bb7e5001 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_world_accelerator.json b/src/generated/resources/assets/gtceu/blockstates/zpm_world_accelerator.json new file mode 100644 index 00000000000..94d81ea2854 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_world_accelerator.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/zpm_world_accelerator" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index 84ae29a0571..f91c2058084 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -91,8 +91,8 @@ "behaviour.setting.output.direction.tooltip": "%s :uoıʇɔǝɹıp ʇndʇno %s", "behaviour.soft_hammer": "sǝuıɥɔɐW sǝʇɐʌıʇɔɐǝᗡ puɐ sǝʇɐʌıʇɔⱯ", "behaviour.soft_hammer.disabled": "pǝןqɐsıᗡ buıʞɹoM", + "behaviour.soft_hammer.disabled_cycle": "ǝןɔʎɔ ʇuǝɹɹnɔ ɹǝʇɟɐ pǝןqɐsıᗡ buıʞɹoM", "behaviour.soft_hammer.enabled": "pǝןqɐuƎ buıʞɹoM", - "behaviour.soft_hammer.idle_after_cycle": "ǝןɔʎɔ ʇuǝɹɹnɔ ɹǝʇɟɐ ǝuıɥɔɐɯ ǝsnɐԀ", "behaviour.wrench": "ʞɔıןɔʇɥbıᴚ uo sʞɔoןᗺ sǝʇɐʇoᴚ", "block.filter_casing.tooltip": "ʇuǝɯuoɹıʌuǝ ㄥ§ǝǝɹℲ-ǝןɔıʇɹɐԀɐ§ ɐ sǝʇɐǝɹƆ", "block.gtceu.acid_hazard_sign_block": "ʞɔoןᗺ ubıS pɹɐzɐH pıɔⱯ", @@ -109,6 +109,7 @@ "block.gtceu.assembly_line_unit": "buısɐƆ ןoɹʇuoƆ ʎןqɯǝssⱯ", "block.gtceu.atomic_casing": "buısɐƆ ɔıɯoʇⱯ", "block.gtceu.auto_maintenance_hatch": "ɥɔʇɐH ǝɔuɐuǝʇuıɐW oʇnⱯ", + "block.gtceu.basic_data_access_hatch": "ɥɔʇɐH ssǝɔɔⱯ ɐʇɐᗡ ɔısɐᗺ", "block.gtceu.bio_hazard_sign_block": "ʞɔoןᗺ ubıS pɹɐzɐH oıᗺ", "block.gtceu.black_borderless_lamp": "dɯɐꞀ ssǝןɹǝpɹoᗺ ʞɔɐןᗺ", "block.gtceu.black_lamp": "dɯɐꞀ ʞɔɐןᗺ", @@ -138,6 +139,7 @@ "block.gtceu.casing_coke_bricks": "sʞɔıɹᗺ uǝʌO ǝʞoƆ", "block.gtceu.casing_grate": "buısɐƆ ǝuıɥɔɐW ǝʇɐɹ⅁", "block.gtceu.causality_hazard_sign_block": "ʞɔoןᗺ ubıS pɹɐzɐH ʎʇıןɐsnɐƆ", + "block.gtceu.central_monitor": "ɹoʇıuoW ןɐɹʇuǝƆ", "block.gtceu.charcoal_pile_igniter": "ɹǝʇıubI ǝןıԀ ןɐoɔɹɐɥƆ", "block.gtceu.chiseled_dark_concrete": "ǝʇǝɹɔuoƆ ʞɹɐᗡ pǝןǝsıɥƆ", "block.gtceu.chiseled_light_concrete": "ǝʇǝɹɔuoƆ ʇɥbıꞀ pǝןǝsıɥƆ", @@ -799,6 +801,7 @@ "block.gtceu.mob_infestation_hazard_sign_block": "ʞɔoןᗺ ubıS pɹɐzɐH uoıʇɐʇsǝɟuI qoW", "block.gtceu.mob_spawner_hazard_sign_block": "ʞɔoןᗺ ubıS pɹɐzɐH ɹǝuʍɐdS qoW", "block.gtceu.molybdenum_disilicide_coil_block": "ʞɔoןᗺ ןıoƆ ǝpıɔıןısıᗡ ɯnuǝpqʎןoW", + "block.gtceu.monitor": "ɹoʇıuoW", "block.gtceu.mossy_dark_concrete_bricks": "sʞɔıɹᗺ ǝʇǝɹɔuoƆ ʞɹɐᗡ ʎssoW", "block.gtceu.mossy_dark_concrete_cobblestone": "ǝuoʇsǝןqqoƆ ǝʇǝɹɔuoƆ ʞɹɐᗡ ʎssoW", "block.gtceu.mossy_light_concrete_bricks": "sʞɔıɹᗺ ǝʇǝɹɔuoƆ ʇɥbıꞀ ʎssoW", @@ -1703,6 +1706,16 @@ "block.surface_rock": "ʞɔoᴚ ǝɔɐɟɹnS %s", "button.gtceu.mark_as_depleted.name": "pǝʇǝןdǝᗡ sɐ ʞɹɐW", "button.gtceu.toggle_waypoint.name": "ʇuıodʎɐM ǝןbbo⟘", + "command.gtceu.cape.failure.does_not_exist": "ʇsıxǝ ʇou sǝop %s ǝdɐƆ", + "command.gtceu.cape.give.failed": "pǝʞɔoןun ǝɹǝʍ sǝdɐɔ ʍǝu oN", + "command.gtceu.cape.give.success.multiple": "sɹǝʎɐןd %s ɹoɟ sǝdɐɔ %s pǝʞɔoןu∩", + "command.gtceu.cape.give.success.single": "%s ɹoɟ sǝdɐɔ %s pǝʞɔoןu∩", + "command.gtceu.cape.take.failed": "pǝʌoɯǝɹ ǝq pןnoɔ sǝdɐɔ oN", + "command.gtceu.cape.take.success.multiple": "sɹǝʎɐןd %s ɯoɹɟ sǝdɐɔ %s ʞoo⟘", + "command.gtceu.cape.take.success.single": "%s ɯoɹɟ sǝdɐɔ %s ʞoo⟘", + "command.gtceu.cape.use.failed": "¡)ʇsıxǝ ʇ,usǝop ʇı ɹo( ʇı ǝʌɐɥ ʇ,uop ʎǝɥʇ ǝsnɐɔǝq %s ǝdɐɔ ǝsn ʇ,uɐɔ %s", + "command.gtceu.cape.use.success": "%s ǝdɐɔ buısn ʍou sı %s", + "command.gtceu.cape.use.success.none": "ǝdɐɔ ɐ buısn ɹǝbuoן ou sı %s", "command.gtceu.dump_data.success": "%s oʇ %s ʎɹʇsıbǝɹ ɯoɹɟ sǝɔɹnosǝɹ %s pǝdɯnᗡ", "command.gtceu.medical_condition.get": ":suoıʇıpuoɔ ןɐɔıpǝɯ ǝsǝɥʇ sɐɥ %s ɹǝʎɐןԀ", "command.gtceu.medical_condition.get.element": "spuoɔǝs %s sǝʇnuıɯ %s :ɹ§%s uoıʇıpuoƆ", @@ -1716,6 +1729,7 @@ "config.gtceu.option.allUniqueStoneTypes": "sǝdʎ⟘ǝuoʇSǝnbıu∩ןןɐ", "config.gtceu.option.animationTime": "ǝɯı⟘uoıʇɐɯıuɐ", "config.gtceu.option.armorHud": "pnHɹoɯɹɐ", + "config.gtceu.option.batchDuration": "uoıʇɐɹnᗡɥɔʇɐq", "config.gtceu.option.bedrockOreDistance": "ǝɔuɐʇsıᗡǝɹOʞɔoɹpǝq", "config.gtceu.option.bedrockOreDropTagPrefix": "xıɟǝɹԀbɐ⟘doɹᗡǝɹOʞɔoɹpǝq", "config.gtceu.option.borderColor": "ɹoןoƆɹǝpɹoq", @@ -1725,6 +1739,8 @@ "config.gtceu.option.casingsPerCraft": "ʇɟɐɹƆɹǝԀsbuısɐɔ", "config.gtceu.option.cleanMultiblocks": "sʞɔoןqıʇןnWuɐǝןɔ", "config.gtceu.option.client": "ʇuǝıןɔ", + "config.gtceu.option.coloredTieredMachineOutline": "ǝuıןʇnOǝuıɥɔɐWpǝɹǝı⟘pǝɹoןoɔ", + "config.gtceu.option.coloredWireOutline": "ǝuıןʇnOǝɹıMpǝɹoןoɔ", "config.gtceu.option.compat": "ʇɐdɯoɔ", "config.gtceu.option.debug": "bnqǝp", "config.gtceu.option.debugWorldgen": "uǝbpןɹoMbnqǝp", @@ -1794,6 +1810,7 @@ "config.gtceu.option.machineSounds": "spunoSǝuıɥɔɐɯ", "config.gtceu.option.machines": "sǝuıɥɔɐɯ", "config.gtceu.option.machinesEmissiveTextures": "sǝɹnʇxǝ⟘ǝʌıssıɯƎsǝuıɥɔɐɯ", + "config.gtceu.option.machinesHaveBERsByDefault": "ʇןnɐɟǝᗡʎᗺsᴚƎᗺǝʌɐHsǝuıɥɔɐɯ", "config.gtceu.option.meHatchEnergyUsage": "ǝbɐs∩ʎbɹǝuƎɥɔʇɐHǝɯ", "config.gtceu.option.minerSpeed": "pǝǝdSɹǝuıɯ", "config.gtceu.option.minimap": "dɐɯıuıɯ", @@ -1819,7 +1836,6 @@ "config.gtceu.option.oreVeins": "suıǝΛǝɹo", "config.gtceu.option.ownerOPBypass": "ssɐdʎᗺԀOɹǝuʍo", "config.gtceu.option.prospectorEnergyUseMultiplier": "ɹǝıןdıʇןnWǝs∩ʎbɹǝuƎɹoʇɔǝdsoɹd", - "config.gtceu.option.recipeProgressLowEnergy": "ʎbɹǝuƎʍoꞀssǝɹboɹԀǝdıɔǝɹ", "config.gtceu.option.recipes": "sǝdıɔǝɹ", "config.gtceu.option.removeSmeltingForEBFMetals": "sןɐʇǝWℲᗺƎɹoℲbuıʇןǝɯSǝʌoɯǝɹ", "config.gtceu.option.removeVanillaBlockRecipes": "sǝdıɔǝᴚʞɔoןᗺɐןןıuɐΛǝʌoɯǝɹ", @@ -1874,6 +1890,7 @@ "config.jade.plugin_gtceu.cable_info": "oɟuI ǝןqɐƆ ]nƎƆ⟘⅁[", "config.jade.plugin_gtceu.controllable_provider": "ǝןqɐןןoɹʇuoƆ ]nƎƆ⟘⅁[", "config.jade.plugin_gtceu.electric_container_provider": "ɹǝuıɐʇuoƆ ɔıɹʇɔǝןƎ ]nƎƆ⟘⅁[", + "config.jade.plugin_gtceu.energy_converter_provider": "ǝpoW ɹǝʇɹǝʌuoƆ ʎbɹǝuƎ ]nƎƆ⟘⅁[", "config.jade.plugin_gtceu.exhaust_vent_info": "oɟuI ʇuǝΛ ʇsnɐɥxƎ ]nƎƆ⟘⅁[", "config.jade.plugin_gtceu.hazard_cleaner_provider": "ɹǝuɐǝןƆ pɹɐzɐH ]nƎƆ⟘⅁[", "config.jade.plugin_gtceu.machine_mode": "ǝpoW ǝuıɥɔɐW ]nƎƆ⟘⅁[", @@ -1971,6 +1988,10 @@ "cover.ender_fluid_link.private.tooltip.disabled.1": "ɹǝʌoɔ ǝɥʇ pǝɔɐןd ʎןןɐuıbıɹo oɥʍ ɹǝʎɐןd ǝɥʇ sǝsn ǝpoɯ ǝʇɐʌıɹԀ", "cover.ender_fluid_link.private.tooltip.enabled": "ǝpoɯ ʞuɐʇ ɔıןqnd oʇ ɥɔʇıʍS", "cover.ender_fluid_link.title": "ʞuıꞀ pınןℲ ɹǝpuƎ", + "cover.ender_fluid_link.tooltip.channel_description": "ʇxǝʇ ʇnduı ɥʇıʍ uoıʇdıɹɔsǝp ןǝuuɐɥɔ ʇǝS", + "cover.ender_fluid_link.tooltip.channel_name": "ʇxǝʇ ʇnduı ɥʇıʍ ǝɯɐu ןǝuuɐɥɔ ʇǝS", + "cover.ender_fluid_link.tooltip.clear_button": "uoıʇdıɹɔsǝp ןǝuuɐɥɔ ɹɐǝןƆ", + "cover.ender_fluid_link.tooltip.list_button": "ʇsıן ןǝuuɐɥɔ ʍoɥS", "cover.filter.blacklist.disabled": "ʇsıןǝʇıɥM", "cover.filter.blacklist.enabled": "ʇsıןʞɔɐןᗺ", "cover.filter.mode.filter_both": "ʇɔɐɹʇxƎ/ʇɹǝsuI ɹǝʇןıℲ", @@ -2161,8 +2182,23 @@ "gtceu.cable.superconductor": "ɹoʇɔnpuoɔɹǝdnSp§ %s", "gtceu.cable.voltage": ")ɐ§%s(ɐ§ %dɐ§ ɹ§:ǝbɐʇןoΛ xɐWɐ§", "gtceu.canner": "ɹǝuuɐƆ", + "gtceu.central_monitor.gui.create_group": "dnoɹb ǝʇɐǝɹƆ", + "gtceu.central_monitor.gui.currently_editing": "%s :buıʇıpǝ ʎןʇuǝɹɹnƆ", + "gtceu.central_monitor.gui.remove_from_group": "dnoɹb ɯoɹɟ ǝʌoɯǝᴚ", + "gtceu.central_monitor.gui.set_target": "ʇǝbɹɐʇ ʇǝS", + "gtceu.central_monitor.info_tooltip.0": "˙ʇı uı ǝןnpoɯ Ɩ ǝʌɐɥ ʎןuo ʎɐɯ dnoɹb Ɐ ˙ʇsɹıɟ sdnoɹb oʇuı ɯǝɥʇ ʇıןds oʇ ǝʌɐɥ noʎ 'sɹoʇıuoɯ ǝsn oʇ ɹǝpɹo uI", + "gtceu.central_monitor.info_tooltip.1": "˙,dnoɹb ǝʇɐǝɹƆ, ʞɔıןɔ uǝɥʇ 'buıʞɔıןɔ-ʇɟǝן ʎq ɯǝɥʇ ʇɔǝןǝS", + "gtceu.central_monitor.info_tooltip.2": "˙ǝbɐd ǝɯɐs ǝɥʇ uı ʇı ǝɹnbıɟuoɔ uɐɔ noʎ 'ǝןnpoɯ ɐ ʇɹǝsuı uɐɔ noʎ dnoɹb ǝɥʇ ɹoɟ ǝbɐd sbuıʇʇǝs ǝɥʇ uı uǝɥ⟘", + "gtceu.central_monitor.info_tooltip.3": "˙,dnoɹb ɯoɹɟ ǝʌoɯǝᴚ, ʞɔıןɔ puɐ sʇuǝuodɯoɔ s,ʇı ɟo ןןɐ ʇɔǝןǝs 'dnoɹb ɐ ǝʇǝןǝp o⟘", + "gtceu.central_monitor.info_tooltip.4": "˙ʇɔǝןǝsun oʇ uıɐbɐ ʞɔıןƆ ˙ǝɯɐu s,ʇı uo buıʞɔıןɔ ʎq dnoɹb ɐ ɟo sʇuǝuodɯoɔ ןןɐ ʇɔǝןǝs ʎןʞɔınb uɐɔ noʎ", + "gtceu.central_monitor.info_tooltip.5": "˙ʇuǝuodɯoɔ ʇǝbɹɐʇ ǝɥʇ uo ʞɔıןɔ-ʇɥbıɹ puɐ dnoɹb ʇɐɥʇ ɟo ʇuǝuodɯoɔ ʎuɐ ʇɔǝןǝs dnoɹb ɐ ɹoɟ ʇǝbɹɐʇ ɐ ʇǝs oʇ 'ʇǝbɹɐʇ ʎǝɥʇ ʞɔoןq ǝɥʇ uo buıpuǝdǝp sbuıɥʇ ʎɐןdsıp ʎɐɯ sǝןnpoɯ ǝɯoS", + "gtceu.central_monitor.info_tooltip.6": "˙ʇɐɥʇ ɹoɟ ɹǝʌoɔ ɹǝʇʇıɯsuɐɹʇ ssǝןǝɹıʍ ǝɥʇ ǝsn oʇ ǝʌɐɥ noʎ 'ʞɔoןqıʇןnɯ ǝɥʇ uı ʇou sı ʇɐɥʇ ʇǝbɹɐʇ ɐ ʇɔǝןǝs oʇ ɥsıʍ ʎɐɯ noʎ", + "gtceu.central_monitor.info_tooltip.7": "˙ʞɔoןqıʇןnɯ ǝɥʇ uı ɥɔʇɐɥ ssǝɔɔɐ ɐʇɐp ɐ oʇuı ʞɔıʇs ɐʇɐp ʇɐɥʇ ʇnd puɐ ʞɔıʇs ɐʇɐp ɐ ɥʇıʍ ʇı ʞɔıןɔ-ʇɥbıɹ 'ʞɔoןq ʇǝbɹɐʇ ǝɥʇ uo ɹǝʌoɔ ǝɥʇ ǝɔɐןԀ", + "gtceu.central_monitor.info_tooltip.8": "˙pǝɹɐǝddɐ ʇɐɥʇ pןǝıɟ ɹǝqɯnu ǝɥʇ uı ʞɔıʇs ɐʇɐp ɹnoʎ ɟo xǝpuı ʇoןs ǝɥʇ ʇǝs puɐ 'ʇǝbɹɐʇ ǝɥʇ sɐ ɥɔʇɐɥ ssǝɔɔɐ ɐʇɐp ǝɥʇ ʇɔǝןǝs uǝɥ⟘", + "gtceu.central_monitor.size": ")%d+Ɩ+%d(x)%d+Ɩ+%d( :ǝzıS", "gtceu.centrifuge": "ǝbnɟıɹʇuǝƆ", "gtceu.chance_logic.and": "ᗡNⱯ", + "gtceu.chance_logic.first": "⟘SᴚIℲ", "gtceu.chance_logic.none": "ƎNON", "gtceu.chance_logic.or": "ᴚO", "gtceu.chance_logic.xor": "ᴚOX", @@ -2172,33 +2208,22 @@ "gtceu.circuit_assembler": "ɹǝןqɯǝssⱯ ʇınɔɹıƆ", "gtceu.coke_oven": "uǝʌO ǝʞoƆ", "gtceu.combustion_generator": "ɹoʇɐɹǝuǝ⅁ uoıʇsnqɯoƆ", - "gtceu.command.copy.click_to_copy": "ʎdoɔ oʇ ʞɔıןƆ", - "gtceu.command.copy.copied_and_click": "uıɐbɐ ʎdoɔ oʇ ʞɔıןƆ ˙pɹɐoqdıןɔ oʇ pǝıdoɔ", - "gtceu.command.copy.copied_end": "pɹɐoqdıןɔ ǝɥʇ oʇ ]", - "gtceu.command.copy.copied_start": "[ pǝıdoƆ", - "gtceu.command.hand.electric": "%s :ʎɹǝʇʇɐᗺ sI ؛%d :ɹǝı⟘ - ∩Ǝ %d / %d :oɟuI ɔıɹʇɔǝןƎ", - "gtceu.command.hand.fluid": "%s :uıɐɹᗡ uɐƆ ؛%s :ןןıℲ uɐƆ ؛ᗺɯ %d / %d :oɟuI pınןℲ", - "gtceu.command.hand.fluid2": ":pI pınןℲ", - "gtceu.command.hand.groovy": "puɐɥ sb/9§ buısn ɹǝpısuoƆ", - "gtceu.command.hand.item_id": ")%d :ɐʇɐpɐʇǝW( %s :ɯǝʇI", - "gtceu.command.hand.material": ":pI ןɐıɹǝʇɐW", - "gtceu.command.hand.meta_item": ":pI ɯǝʇIɐʇǝW", - "gtceu.command.hand.no_item": "˙puɐɯɯoɔ sıɥʇ buıʇnɔǝxǝ ǝɹoɟǝq puɐɥ ɟɟo ɹo puɐɥ uıɐɯ uı buıɥʇǝɯos pןoɥ ʇsnɯ noʎ", - "gtceu.command.hand.not_a_player": "˙ɹǝʎɐןd ɐ ʎq ǝןqɐsn ʎןuo sı puɐɯɯoɔ sıɥ⟘", - "gtceu.command.hand.ore_prefix": ":xıɟǝɹd ǝɹO", - "gtceu.command.hand.tag_entries": ":sǝıɹʇuǝ bɐ⟘Ɛ§", - "gtceu.command.hand.tool_stats": "%s :ssɐןƆ sʇɐʇS ןoo⟘", - "gtceu.command.hand.usage": "puɐɥ nǝɔʇb/ :ǝbɐs∩", - "gtceu.command.recipecheck.begin": "˙˙˙ʞɔǝɥɔ ʇɔıןɟuoɔ ǝdıɔǝɹ buıʇɹɐʇS", - "gtceu.command.recipecheck.end": "oɟuı ǝɹoɯ ɹoɟ boן ɹǝʌɹǝs ǝɥʇ ʞɔǝɥƆ ˙sʇɔıןɟuoɔ ǝןqıssod %d punoɟ ʞɔǝɥɔ ʇɔıןɟuoɔ ǝdıɔǝᴚ", - "gtceu.command.recipecheck.end_no_conflicts": "¡punoɟ sʇɔıןɟuoɔ ǝdıɔǝɹ oN", - "gtceu.command.recipecheck.usage": "ʞɔǝɥɔǝdıɔǝɹ nǝɔʇb/ :ǝbɐs∩", - "gtceu.command.usage": ">ʞɔǝɥɔǝdıɔǝɹ/puɐɥ/uǝbpןɹoʍ< nǝɔʇb/ :ǝbɐs∩", - "gtceu.command.worldgen.reload.failed": "˙sɹoɹɹǝ ɹoɟ ǝןosuoɔ ʞɔǝɥƆ ˙pǝןıɐɟ pɐoןǝɹ uǝbpןɹoM", - "gtceu.command.worldgen.reload.success": "˙bıɟuoɔ ɯoɹɟ pǝpɐoןǝɹ ʎןןnɟssǝɔɔns uǝbpןɹoM", - "gtceu.command.worldgen.reload.usage": "pɐoןǝɹ uǝbpןɹoʍ nǝɔʇb/ :ǝbɐs∩", - "gtceu.command.worldgen.usage": ">pɐoןǝɹ< uǝbpןɹoʍ nǝɔʇb/ :ǝbɐs∩", "gtceu.compressor": "ɹossǝɹdɯoƆ", + "gtceu.computer_monitor_cover.error.bf_invalid": "%d ʇɐ ɹǝʇɔɐɹɐɥɔ pıןɐʌuI", + "gtceu.computer_monitor_cover.error.bf_invalid_num": "%d ɹǝqɯnu ןoqɯʎs buıssǝɔoɹd uǝɥʍ %d xǝpuı ʇɐ ɹǝqɯnu pıןɐʌuI", + "gtceu.computer_monitor_cover.error.exception": "%s :pǝɹɹnɔɔo uoıʇdǝɔxǝ pǝʇɔǝdxǝu∩", + "gtceu.computer_monitor_cover.error.invalid_args": "¡sʇuǝɯnbɹɐ pıןɐʌuI", + "gtceu.computer_monitor_cover.error.invalid_number": "¡,%s, ɹǝqɯnu pıןɐʌuI", + "gtceu.computer_monitor_cover.error.missing_item": "¡%d ʇoןs uı %s buıssıW", + "gtceu.computer_monitor_cover.error.no_ae": "¡ʞɹoʍʇǝu ᄅƎⱯ uɐ ǝʌɐɥ ʇou sǝop ɹǝpןoɥ ɹǝʌoƆ", + "gtceu.computer_monitor_cover.error.no_cover": "¡ɹǝʌoɔ oN", + "gtceu.computer_monitor_cover.error.no_placeholder": "¡,%s, :ɹǝpןoɥǝɔɐןd ɥɔns oN", + "gtceu.computer_monitor_cover.error.not_enough_args": "¡%d ʇob 'sbɹɐ %d ʇsɐǝן ʇɐ pǝʇɔǝdxƎ", + "gtceu.computer_monitor_cover.error.not_in_range": "%d ʇob ')ǝʌısnןɔuı( %d puɐ %d uǝǝʍʇǝq ǝq oʇ %s pǝʇɔǝdxƎ", + "gtceu.computer_monitor_cover.error.not_supported": "¡ɹǝʌoɔ/ʞɔoןq sıɥʇ ʎq pǝʇɹoddns ʇou sı ǝɹnʇɐǝɟ sıɥ⟘", + "gtceu.computer_monitor_cover.error.unclosed_bracket": "¡ʇǝʞɔɐɹq pǝsoןɔu∩", + "gtceu.computer_monitor_cover.error.unexpected_bracket": "¡ʇǝʞɔɐɹq buısoןɔ pǝʇɔǝdxǝu∩", + "gtceu.computer_monitor_cover.error.wrong_number_of_args": "¡%d ʇob 'sbɹɐ %d pǝʇɔǝdxƎ", "gtceu.cover.activity_detector.message_activity_inverted": "snʇɐʇS ʎʇıʌıʇɔⱯ pǝʇɹǝʌuI buıɹoʇıuoW", "gtceu.cover.activity_detector.message_activity_normal": "snʇɐʇS ʎʇıʌıʇɔⱯ ןɐɯɹoN buıɹoʇıuoW", "gtceu.cover.activity_detector_advanced.message_activity_inverted": "snʇɐʇS ssǝɹboɹԀ pǝʇɹǝʌuI buıɹoʇıuoW", @@ -2234,6 +2259,8 @@ "gtceu.direction.tooltip.left": "ʇɟǝꞀ", "gtceu.direction.tooltip.right": "ʇɥbıᴚ", "gtceu.direction.tooltip.up": "d∩", + "gtceu.display_source.computer_monitor_cover": "ɹǝʌoƆ ɹoʇıuoW ɹǝʇndɯoƆ", + "gtceu.display_target.computer_monitor_cover": "ɹǝʌoƆ ɹoʇıuoW ɹǝʇndɯoƆ", "gtceu.distillation_tower": "ɹǝʍo⟘ uoıʇɐןןıʇsıᗡ", "gtceu.distillery": "ʎɹǝןןıʇsıᗡ", "gtceu.duct_pipe.transfer_rate": "%s :ǝʇɐɹ ɹǝɟsuɐɹʇ ɹıⱯq§", @@ -2280,7 +2307,15 @@ "gtceu.fusion_reactor": "ɹoʇɔɐǝᴚ uoısnℲ", "gtceu.gas_collector": "ɹoʇɔǝןןoƆ sɐ⅁", "gtceu.gas_turbine": "ǝuıqɹn⟘ sɐ⅁", + "gtceu.gui.adv_stocking_config.min_fluid_count": "buıןןnԀ pǝʇɐɯoʇnⱯ ɹoɟ ǝzıS ʞɔɐʇS pınןℲ ɯnɯıuıW", + "gtceu.gui.adv_stocking_config.min_item_count": "buıןןnԀ pǝʇɐɯoʇnⱯ ɹoɟ ǝzıS ʞɔɐʇS ɯǝʇI ɯnɯıuıW", + "gtceu.gui.adv_stocking_config.ticks_per_cycle": "sǝʇɐpdn ʇsıן ɯǝʇı uǝǝʍʇǝq ʎɐןǝᗡ", + "gtceu.gui.adv_stocking_config.title": "buıʞɔoʇS ɔıʇɐɯoʇnⱯ ǝɹnbıɟuoƆ", "gtceu.gui.auto_output.name": "oʇnɐ", + "gtceu.gui.central_monitor.group": "%s :dnoɹ⅁", + "gtceu.gui.central_monitor.group_default_name": "%d# dnoɹ⅁", + "gtceu.gui.central_monitor.none": "ǝuou", + "gtceu.gui.central_monitor.text_scale": "ǝןɐɔs ʇxǝ⟘", "gtceu.gui.charger_slot.tooltip.0": "ɹ§ʇoןS ɹǝbɹɐɥƆɟ§", "gtceu.gui.charger_slot.tooltip.1": "ɹ§sǝıɹǝʇʇɐq %s ɯoɹɟ ɹǝʍod sʍɐɹᗡㄥ§", "gtceu.gui.charger_slot.tooltip.2": "sǝıɹǝʇʇɐq puɐ sןooʇ %s sǝbɹɐɥƆㄥ§", @@ -2289,6 +2324,18 @@ "gtceu.gui.chunkmode.enabled.0": "˙ǝןqɐsıᗡ oʇ ʞɔıןƆ :pǝןqɐuƎ ǝpoW ʞunɥƆ", "gtceu.gui.chunkmode.enabled.1": "˙ǝuıɥɔɐɯ ǝןpı uɐ sǝɹınbǝɹ buıɥɔʇıʍSㄥ§", "gtceu.gui.circuit.title": "sbuıʇʇǝS ʇınɔɹıƆ", + "gtceu.gui.computer_monitor_cover.edit_blank_placeholders": "sɹǝpןoɥǝɔɐןd ʞuɐןq ʇıpƎ", + "gtceu.gui.computer_monitor_cover.edit_displayed_text": "ʇxǝʇ pǝʎɐןdsıp ʇıpƎ", + "gtceu.gui.computer_monitor_cover.main_textbox_tooltip.0": "˙ǝɹǝɥ %d ǝuıן uo ʎɐןdsıp oʇ buıɹʇs ʇnduI", + "gtceu.gui.computer_monitor_cover.main_textbox_tooltip.1": ",∩Ǝ }ʎʇıɔɐdɐƆʎbɹǝuǝ{/}ʎbɹǝuǝ{ :ʎbɹǝuƎ, :ǝןdɯɐxǝ ɹoɟ 'sɹǝpןoɥǝɔɐןd ǝʌɐɥ uɐɔ ʇI", + "gtceu.gui.computer_monitor_cover.main_textbox_tooltip.2": "˙sɹǝpןoɥǝɔɐןd ɹǝɥʇo ǝpısuı ǝq osןɐ uɐɔ sɹǝpןoɥǝɔɐןԀ", + "gtceu.gui.computer_monitor_cover.placeholder_reference.0": ":sɹǝpןoɥǝɔɐןd ןןⱯ", + "gtceu.gui.computer_monitor_cover.placeholder_reference.1": ")oɟuı ǝɹoɯ ɹoɟ ɹǝʌoɥ(", + "gtceu.gui.computer_monitor_cover.second_page_textbox_tooltip.0": "˙ǝɹǝɥ ,}{, %s ɟo ǝɔɐןd uı pǝsn ǝq oʇ ɹǝpןoɥǝɔɐןd ʇnduI", + "gtceu.gui.computer_monitor_cover.second_page_textbox_tooltip.1": "˙sǝxoq ʇxǝʇ ǝsǝɥʇ uı ,ʎʇıɔɐdɐƆʎbɹǝuǝ, puɐ ,ʎbɹǝuǝ, puɐ ,∩Ǝ }{/}{ :ʎbɹǝuƎ, buıɹʇs ɐ ǝʌɐɥ uɐɔ noʎ 'ǝןdɯɐxǝ ɹoℲ", + "gtceu.gui.computer_monitor_cover.slot_tooltip.0": "ǝɔuǝɹǝɟǝɹ uɐɔ sɹǝpןoɥǝɔɐןd ǝɯos ʇɐɥʇ sɯǝʇı ɹoɟ ʇoןs Ɐ", + "gtceu.gui.computer_monitor_cover.slot_tooltip.1": "%d :ɹǝqɯnu ʇoןS", + "gtceu.gui.computer_monitor_cover.update_interval": ")sʞɔıʇ uı( ןɐʌɹǝʇuı ǝʇɐpd∩", "gtceu.gui.config_slot": "ɹ§ʇoןS bıɟuoƆɟ§", "gtceu.gui.config_slot.auto_pull_managed": "ןןnԀ-oʇnⱯ ʎq pǝbɐuɐW ㄥ§:pǝןqɐsıᗡㄣ§", "gtceu.gui.config_slot.remove": "ɹ§˙ʇoןs bıɟuoɔ ㄥ§ɹɐǝןɔㄣ§ oʇ ʞɔıןɔ ʇɥbıᴚㄥ§", @@ -2306,10 +2353,15 @@ "gtceu.gui.content.chance_boosted_logic": ")%s( %s%% :ɹǝı⟘ ʇɐ ǝɔuɐɥƆ", "gtceu.gui.content.chance_nc": "ɹ§pǝɯnsuoƆ ʇoNɔ§", "gtceu.gui.content.chance_nc_short": "ɹ§ƆNɔ§", + "gtceu.gui.content.chance_no_boost": "%s%% :ǝɔuɐɥƆ", + "gtceu.gui.content.chance_no_boost_logic": ")%s( %s%% :ǝɔuɐɥƆ", "gtceu.gui.content.chance_tier_boost_minus": "ɹǝıʇ/%s%%- :ǝɔuɐɥƆ snuoᗺ", "gtceu.gui.content.chance_tier_boost_plus": "ɹǝıʇ/%s%%+ :ǝɔuɐɥƆ snuoᗺ", "gtceu.gui.content.count_range": "x%s-%s", + "gtceu.gui.content.fluid_range": "ᗺɯ%s-%s", "gtceu.gui.content.per_tick": "ɹ§ʞɔı⟘ ɹǝԀ pǝɔnpoɹԀ/pǝɯnsuoƆɐ§", + "gtceu.gui.content.range": "%s-%s", + "gtceu.gui.content.times_item": "%s x", "gtceu.gui.content.tips.per_second_short": "ɹ§puoɔǝs/ɐ§", "gtceu.gui.content.tips.per_tick_short": "ɹ§ʞɔıʇ/ɐ§", "gtceu.gui.content.units.per_second": "s/", @@ -2371,6 +2423,9 @@ "gtceu.gui.silktouch.enabled.0": "˙ǝןqɐsıᗡ oʇ ʞɔıןƆ :pǝןqɐuƎ ɥɔno⟘ ʞןıS", "gtceu.gui.silktouch.enabled.1": "˙ǝuıɥɔɐɯ ǝןpı uɐ sǝɹınbǝɹ buıɥɔʇıʍSㄥ§", "gtceu.gui.sort": "ʇɹoS", + "gtceu.gui.title.adv_stocking_config.min_fluid_count": "ʇunoƆ pınןℲ ˙uıW", + "gtceu.gui.title.adv_stocking_config.min_item_count": "ʇunoƆ ɯǝʇI ˙uıW", + "gtceu.gui.title.adv_stocking_config.ticks_per_cycle": "ǝןɔʎƆ ɹǝԀ sʞɔı⟘", "gtceu.gui.title_bar.back": "ʞɔɐᗺ", "gtceu.gui.title_bar.page_switcher": "sǝbɐԀ", "gtceu.gui.toggle_view.disabled": ")spınןℲ( ʍǝıΛ ǝןbbo⟘", @@ -2391,8 +2446,11 @@ "gtceu.item_filter.footer": "ǝpıɹɹǝʌo oʇ ɯǝʇı ɥʇıʍ ʞɔıןƆǝ§", "gtceu.item_list.item_stored": "%d :pǝɹoʇSㄥ§", "gtceu.item_pipe.priority": "%dɟ§ :ʎʇıɹoıɹԀ6§", + "gtceu.jade.amperage_use": "Ɐ %s", + "gtceu.jade.at": " @ ", "gtceu.jade.cleaned_this_second": "s/%s :pɹɐzɐɥ pǝuɐǝןƆ", "gtceu.jade.energy_stored": "∩Ǝ %d / %d", + "gtceu.jade.fluid_use": "ʇ/ᗺɯ %s", "gtceu.jade.progress_computation": "∩MƆ %s / %s", "gtceu.jade.progress_sec": "s %s / %s", "gtceu.jade.progress_tick": "ʇ %s / %s", @@ -2511,14 +2569,16 @@ "gtceu.machine.available_recipe_map_4.tooltip": "%s '%s '%s '%s :sǝdʎ⟘ ǝdıɔǝᴚ ǝןqɐןıɐʌⱯ", "gtceu.machine.basic.input_from_output_side.allow": " :ǝpıS ʇndʇnO ɯoɹɟ ʇnduI ʍoןןⱯ", "gtceu.machine.basic.input_from_output_side.disallow": " :ǝpıS ʇndʇnO ɯoɹɟ ʇnduI ʍoןןɐsıᗡ", + "gtceu.machine.batch_disabled": "pǝןqɐsıᗡ buıɥɔʇɐᗺ", + "gtceu.machine.batch_enabled": "pǝןqɐuƎ buıɥɔʇɐᗺ", "gtceu.machine.bedrock_ore_miner.depletion": "%s%%ɟ§ :ǝʇɐᴚ uoıʇǝןdǝᗡq§", "gtceu.machine.bedrock_ore_miner.description": "˙ʞɔoɹpǝq ɹǝpun suıǝʌ ɯoɹɟ sǝɹo sןןıɹᗡㄥ§", "gtceu.machine.bedrock_ore_miner.production": "pǝʞɔoןɔɹǝʌo xɟ% 'x%dɟ§ :ɹǝıןdıʇןnW uoıʇɔnpoɹԀǝ§", "gtceu.machine.block_breaker.speed_bonus": "%d%%ɟ§ :snuoᗺ pǝǝdSǝ§", "gtceu.machine.block_breaker.tooltip": "sdoɹp sʇı sʇɔǝןןoɔ puɐ ǝɔɐɟ ʇuoɹɟ uo ʞɔoןq sǝuıWㄥ§", - "gtceu.machine.boiler.info.cooling.down": "%sɹ§uʍop buıןooƆ6§", - "gtceu.machine.boiler.info.heating.up": "%sɹ§dn buıʇɐǝHɔ§", - "gtceu.machine.boiler.info.producing.steam": ")ɹǝʇɐʍ buıןıoq(ɐ§ ", + "gtceu.machine.boiler.info.cooling.down": "ɹ§buıןooƆ6§", + "gtceu.machine.boiler.info.heating.up": "ɹ§buıʇɐǝHɔ§", + "gtceu.machine.boiler.info.production.data": "ʇ/ᗺɯ ɐ§%s buıɔnpoɹԀɐ§", "gtceu.machine.buffer.tooltip": "spınןℲ puɐ sɯǝʇI ǝɹoʇs oʇ ɹǝɟɟnᗺ ןןɐɯS Ɐ", "gtceu.machine.canner.jei_description": ")sןןǝƆ pınןℲ ɹo sʇǝʞɔnᗺ ˙b˙ǝ( ɹǝuuɐƆ pınןℲ ǝɥʇ ɥʇıʍ sɹǝuıɐʇuoɔ pınןɟ ʎuɐ ʎʇdɯǝ puɐ ןןıɟ uɐɔ noʎ", "gtceu.machine.central_monitor.tooltip": "¿ɯooᗡ unɹ ʇı uɐɔ ʇnᗺ", @@ -2648,7 +2708,7 @@ "gtceu.machine.hp_steam_forge_hammer.tooltip": "ɹǝɯɯɐH ǝbɹoℲㄥ§", "gtceu.machine.hp_steam_furnace.tooltip": "ɯɐǝʇS pǝssǝɹdɯoɔ ɥʇıʍ sbuıɥʇ buıʇןǝɯSㄥ§", "gtceu.machine.hp_steam_liquid_boiler.tooltip": "ɹǝןıoᗺ pınbıꞀ ɯɐǝʇS ןןɐɯS uɐɥʇ ɹǝʇsɐℲㄥ§", - "gtceu.machine.hp_steam_macerator.tooltip": "sǝɹO ɹnoʎ buıʇɐɹǝɔɐWㄥ§", + "gtceu.machine.hp_steam_macerator.tooltip": "sʇɔnpoɹdʎᗺ ʇnoɥʇıʍ sǝɹO ɹnoʎ buıʇɐɹǝɔɐWㄥ§", "gtceu.machine.hp_steam_rock_crusher.tooltip": "ʇuǝɔɐظpɐ ʎןןɐʇuozıɹoɥ ɐʌɐꞀ puɐ ɹǝʇɐM ǝɔɐןԀㄥ§", "gtceu.machine.hp_steam_solar_boiler.tooltip": "unS ʎq ɹǝʍoԀ ɯɐǝʇSㄥ§", "gtceu.machine.hp_steam_solid_boiler.tooltip": "ɹǝןıoᗺ ןǝnℲ pıןoS ɯɐǝʇS ןןɐɯS ǝɥʇ uɐɥʇ ɹǝʇsɐℲㄥ§", @@ -2786,7 +2846,7 @@ "gtceu.machine.lp_steam_forge_hammer.tooltip": "ɹǝɯɯɐH ǝbɹoℲㄥ§", "gtceu.machine.lp_steam_furnace.tooltip": "ɯɐǝʇS pǝssǝɹdɯoɔ ɥʇıʍ sbuıɥʇ buıʇןǝɯSㄥ§", "gtceu.machine.lp_steam_liquid_boiler.tooltip": "spınbıꞀ ɟɟo buıuunɹ ɹǝןıoᗺ Ɐㄥ§", - "gtceu.machine.lp_steam_macerator.tooltip": "sǝɹO ɹnoʎ buıʇɐɹǝɔɐWㄥ§", + "gtceu.machine.lp_steam_macerator.tooltip": "sʇɔnpoɹdʎᗺ ʇnoɥʇıʍ sǝɹO ɹnoʎ buıʇɐɹǝɔɐWㄥ§", "gtceu.machine.lp_steam_rock_crusher.tooltip": "ʇuǝɔɐظpɐ ʎןןɐʇuozıɹoɥ ɐʌɐꞀ puɐ ɹǝʇɐM ǝɔɐןԀㄥ§", "gtceu.machine.lp_steam_solar_boiler.tooltip": "unS ʎq ɹǝʍoԀ ɯɐǝʇSㄥ§", "gtceu.machine.lp_steam_solid_boiler.tooltip": "ɹǝʍoԀ ɯɐǝʇS ʇǝb oʇ ʎɐʍ ʎןɹɐǝ uⱯㄥ§", @@ -3153,6 +3213,7 @@ "gtceu.multiblock.active_transformer.max_input": "ʇ/∩Ǝ %sɟ§ :ʇnduI xɐWɐ§", "gtceu.multiblock.active_transformer.max_output": "ʇ/∩Ǝ %sɟ§ :ʇndʇnO xɐWɔ§", "gtceu.multiblock.assembly_line.description": "˙sʇuǝuodɯoɔ buıʇɟɐɹɔ pǝɔuɐʌpɐ buıʇɐǝɹɔ ɹoɟ pǝsn 'ǝuıɥɔɐW buıןqɯǝssⱯ ǝbɹɐן s,ʇı 'ʎɹoǝɥʇ uI ˙\"sǝɔıןs\" 9Ɩ oʇ ϛ ɟo buıʇsısuoɔ ǝɹnʇɔnɹʇs ʞɔoןqıʇןnɯ ǝbɹɐן ɐ sı ǝuıꞀ ʎןqɯǝssⱯ ǝɥ⟘", + "gtceu.multiblock.batch_enabled": ")x%s( pǝןqɐuƎ :ǝpoW buıɥɔʇɐᗺ", "gtceu.multiblock.blast_furnace.max_temperature": "%s :ʎʇıɔɐdɐƆ ʇɐǝH", "gtceu.multiblock.central_monitor.height": ":ʇɥbıǝH uǝǝɹɔS", "gtceu.multiblock.central_monitor.height_modify": "%d :ʇɥbıǝH ʎɟıpoW", @@ -3180,6 +3241,9 @@ "gtceu.multiblock.cracking_unit.energy": "%s%% :ǝbɐs∩ ʎbɹǝuƎ", "gtceu.multiblock.data_bank.description": "˙sǝןnpoW ɐʇɐᗡ uo ɐʇɐp ɥɔɹɐǝsǝɹ xǝןdɯoɔ ǝɹoɯ pɐǝɹ oʇ sǝuıꞀ ʎןqɯǝssⱯ sǝןqɐuǝ ʇı 'ʎןןɐuoıʇıppⱯ ˙sǝuıꞀ ʎןqɯǝssⱯ ǝןdıʇןnɯ uǝǝʍʇǝq ɐʇɐᗡ ɥɔɹɐǝsǝᴚ ǝuıꞀ ʎןqɯǝssⱯ buıɹɐɥs ɹoɟ pǝsn ǝɹnʇɔnɹʇs ʞɔoןqıʇןnɯ ɐ sı ʞuɐᗺ ɐʇɐᗡ ǝɥ⟘", "gtceu.multiblock.data_bank.providing": "˙ɐʇɐp buıpıʌoɹԀ", + "gtceu.multiblock.dimension": "%sx%sx%sɹ§ :suoısuǝɯıᗡǝ§", + "gtceu.multiblock.dimensions.0": " :suoısuǝɯıᗡ", + "gtceu.multiblock.dimensions.1": " %s :ɹ§ɥʇdǝᗡן§6§ '%s :ɹ§ʇɥbıǝHן§ɐ§ '%s :ɹ§ɥʇpıMן§ɔ§ ", "gtceu.multiblock.distillation_tower.description": "˙uoıʇısod ʎuɐ uı spınןɟ ʇɹǝsuı puɐ sɯǝʇı ʇndʇno uɐɔ ɹǝʎɐן ɯoʇʇoq ǝɥ⟘ ˙ǝuo puoɔǝs ǝɥʇ ɯoɹɟ buıʇɹɐʇs 'ɥɔʇɐɥ ʇndʇno ǝuo ʎןʇɔɐxǝ ǝʌɐɥ ʇsnɯ ɹǝʎɐן ɥɔɐƎ ˙sʇɔnpoɹdʎq ɹıǝɥʇ ɟo ǝɯos puɐ ןıO ɟo sǝdʎʇ snoıɹɐʌ ǝɥʇ buıןןıʇsıp ɹoɟ pǝsn ǝɹnʇɔnɹʇs ʞɔoןqıʇןnɯ ɐ sı ɹǝʍo⟘ uoıʇɐןןıʇsıᗡ ǝɥ⟘", "gtceu.multiblock.distillation_tower.distilling_fluid": "%s buıןןıʇsıᗡ", "gtceu.multiblock.electric_blast_furnace.description": "˙ʎoןןɐ ɥɐpɐnbɐu puɐ 'ɯnıuɐʇıʇ 'ןǝǝʇs ssǝןuıɐʇs 'ɯnıuıɯnןɐ sɐ ɥɔns 'sןɐʇǝɯ puɐ sʎoןןɐ ɹǝıʇ-ɥbıɥ buıuıɐʇqo ɹoɟ pǝɹınbǝɹ sı ʇI ˙sǝɹo buıuıɟǝɹ puɐ sןɐʇǝɯ buıʞooɔ 'sʎoןןɐ buıʇןǝɯs ɹoɟ pǝsn ǝɹnʇɔnɹʇs ʞɔoןqıʇןnɯ ɐ sı )ℲᗺƎ( ǝɔɐuɹnℲ ʇsɐןᗺ ɔıɹʇɔǝןƎ ǝɥ⟘", @@ -3388,12 +3452,179 @@ "gtceu.ownership.name.ftb": "sɯɐǝ⟘ ᗺ⟘Ⅎ", "gtceu.ownership.name.player": "ɹǝʎɐןԀ", "gtceu.packer": "ɹǝʞɔɐԀ", + "gtceu.part_sharing.disabled": "pǝןqɐsıᗡㄣ§ buıɹɐɥS ʞɔoןqıʇןnW", + "gtceu.part_sharing.enabled": "pǝןqɐuƎɐ§ buıɹɐɥS ʞɔoןqıʇןnW", + "gtceu.placeholder_info.active.0": "˙ǝsıʍɹǝɥʇo 0 'ǝdıɔǝɹ ɐ buıuunɹ ʎןʇuǝɹɹnɔ sı oʇ pǝɥɔɐʇʇɐ sı ɹǝʌoɔ ǝɥʇ ʞɔoןq ǝɥʇ ɟı Ɩ ɐ suɹnʇǝᴚ", + "gtceu.placeholder_info.active.1": ":ǝbɐs∩", + "gtceu.placeholder_info.active.2": "ǝdıɔǝɹ buıuunɹ ʎןʇuǝɹɹnɔ ɐ s,ǝɹǝɥʇ ɹǝɥʇǝɥʍ >- }ǝʌıʇɔɐ{ ", + "gtceu.placeholder_info.ae2crafting.0": "˙uo sı ɹǝʌoɔ sıɥʇ ʞɔoןq ǝɥʇ ɟo ʞɹoʍʇǝu ƎW ǝɥʇ uı buıʇɟɐɹɔ-oʇnɐ ʇnoqɐ uoıʇɐɯɹoɟuı suɹnʇǝᴚ", + "gtceu.placeholder_info.ae2crafting.1": ":ǝbɐs∩", + "gtceu.placeholder_info.ae2crafting.10": "ǝןpı sı ∩ԀƆ ǝɥʇ ɟı 0 ɹo ')spuoɔǝsouɐu uı( ʇɟɐɹɔ ǝɥʇ ɟo ʇɹɐʇs ǝɥʇ ɯoɹɟ pǝsdɐןǝ ǝɯıʇ ɟo ʇunoɯɐ ǝɥʇ >- }ǝɯıʇ >xǝpuı< ʇǝb buıʇɟɐɹɔᄅǝɐ{ ", + "gtceu.placeholder_info.ae2crafting.2": "ʞɹoʍʇǝu ƎW ǝɥʇ uı s∩ԀƆ buıʇɟɐɹɔ ɟo ʇunoɯɐ ǝɥʇ >- }ʇunoɯɐ ʇǝb buıʇɟɐɹɔᄅǝɐ{ ", + "gtceu.placeholder_info.ae2crafting.3": "sɐɥ ∩ԀƆ pǝıɟıɔǝds ǝɥʇ ǝbɐɹoʇs buıʇɟɐɹɔ ɟo ʇunoɯɐ ǝɥʇ >- }ǝbɐɹoʇs >xǝpuı< ʇǝb buıʇɟɐɹɔᄅǝɐ{ ", + "gtceu.placeholder_info.ae2crafting.4": "sɐɥ ∩ԀƆ pǝıɟıɔǝds ǝɥʇ sɹossǝɔoɹd-oɔ ɟo ʇunoɯɐ ǝɥʇ >- }spɐǝɹɥʇ >xǝpuı< ʇǝb buıʇɟɐɹɔᄅǝɐ{ ", + "gtceu.placeholder_info.ae2crafting.5": "∩ԀƆ buıʇɟɐɹɔ pǝıɟıɔǝds ǝɥʇ ɟo ǝɯɐu ǝɥʇ >- }ǝɯɐu >xǝpuı< ʇǝb buıʇɟɐɹɔᄅǝɐ{ ", + "gtceu.placeholder_info.ae2crafting.6": ")sʇsǝnbǝɹ ɥʇoq ɹo ɔıʇɐɯoʇnɐ 'ןɐnuɐɯ ɹoɟ pǝsn( ∩ԀƆ buıʇɟɐɹɔ pǝıɟıɔǝds ǝɥʇ ɟo ǝpoɯ uoıʇɔǝןǝs ǝɥʇ >- }ǝpoWuoıʇɔǝןǝs >xǝpuı< ʇǝb buıʇɟɐɹɔᄅǝɐ{ ", + "gtceu.placeholder_info.ae2crafting.7": "ǝןpı sı ∩ԀƆ ǝɥʇ ɟı 0 ɹo 'pǝʇsǝnbǝɹ sɐʍ ʇɐɥʇ ɯǝʇı ǝɥʇ ɟo ʇunoɯɐ ǝɥʇ >- }ʇunoɯɐ >xǝpuı< ʇǝb buıʇɟɐɹɔᄅǝɐ{ ", + "gtceu.placeholder_info.ae2crafting.8": "ǝןpı sı ∩ԀƆ ǝɥʇ ɟı 0 ɹo 'pǝʇsǝnbǝɹ sɐʍ ʇɐɥʇ ɯǝʇı ǝɥʇ ɟo ǝɯɐu ʎɐןdsıp ǝɥʇ >- }ɯǝʇı >xǝpuı< ʇǝb buıʇɟɐɹɔᄅǝɐ{ ", + "gtceu.placeholder_info.ae2crafting.9": "ǝןpı sı ∩ԀƆ ǝɥʇ ɟı 0 ɹo 'ssǝɹboɹd qoظ buıʇɟɐɹɔ ǝɥʇ >- }ssǝɹboɹd >xǝpuı< ʇǝb buıʇɟɐɹɔᄅǝɐ{ ", + "gtceu.placeholder_info.ae2energy.0": "˙uo sı ɹǝʌoɔ sıɥʇ ʞɔoןq ǝɥʇ ɟo ʞɹoʍʇǝu ƎW ǝɥʇ uı pǝɹoʇs ʎןʇuǝɹɹnɔ ʎbɹǝuǝ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.ae2energy.1": ":ǝbɐs∩", + "gtceu.placeholder_info.ae2energy.2": ")sʇıun ƎⱯ uı( ʞɹoʍʇǝu ƎW ǝɥʇ uı ʎbɹǝuǝ ǝɥʇ >- }ʎbɹǝuǝᄅǝɐ{ ", + "gtceu.placeholder_info.ae2fluidCount.0": "˙oʇ pǝɥɔɐʇʇɐ sı ɹǝʌoɔ sıɥʇ ʞɔoןq ǝɥʇ ɟo ʞɹoʍʇǝu ƎW ǝɥʇ uı sɯǝʇı sʇunoɔ ʇnq 'ʇunoƆpınןɟ sɐ ǝɯɐS", + "gtceu.placeholder_info.ae2fluidCount.1": "¡bɐן ǝsnɐɔ ʎɐɯ spınןɟ ןןɐ buıʇunoɔ ʇɐɥʇ ǝʇoN", + "gtceu.placeholder_info.ae2fluidCount.2": ":ǝbɐs∩", + "gtceu.placeholder_info.ae2fluidCount.3": "pǝıɟıɔǝds ɟı pIpınןɟ ɥʇıʍ pınןɟ ǝɥʇ ɹo 'spınןɟ ןןɐ ɟo ʇunoɯɐ ǝɥʇ >- }]pIpınןɟ[ ʇunoƆpınןɟ{ ", + "gtceu.placeholder_info.ae2itemCount.0": "˙oʇ pǝɥɔɐʇʇɐ sı ɹǝʌoɔ sıɥʇ ʞɔoןq ǝɥʇ ɟo ʞɹoʍʇǝu ƎW ǝɥʇ uı sɯǝʇı sʇunoɔ ʇnq 'ʇunoƆɯǝʇı sɐ ǝɯɐS", + "gtceu.placeholder_info.ae2itemCount.1": "¡bɐן ǝsnɐɔ ʎɐɯ sɯǝʇı ןןɐ ɹo ɹǝʇןıɟ ʎq buıʇunoɔ ʇɐɥʇ ǝʇoN", + "gtceu.placeholder_info.ae2itemCount.2": ":ǝbɐs∩", + "gtceu.placeholder_info.ae2itemCount.3": "ʇunoɯɐ ɯǝʇı ןɐʇoʇ >- }ʇunoƆɯǝʇı{ ", + "gtceu.placeholder_info.ae2itemCount.4": "pı‾ɯǝʇı oʇ ןɐnbǝ spı ɥʇıʍ sɯǝʇı ɟo ʇunoɯɐ >- }>pı‾ɯǝʇı< ʇunoƆɯǝʇı{ ", + "gtceu.placeholder_info.ae2itemCount.5": "ɹǝʌoɔ sıɥʇ ɟo ʇoןs pǝıɟıɔǝds uı ɹǝʇןıɟ buıɥɔʇɐɯ sɯǝʇı ɟo ʇunoɯɐ >- }>pı‾ʇoןs< ɹǝʇןıɟ ʇunoƆɯǝʇı{ ", + "gtceu.placeholder_info.ae2maxPower.0": "˙uo sı ɹǝʌoɔ sıɥʇ ʞɔoןq ǝɥʇ ɟo ʞɹoʍʇǝu ƎW ǝɥʇ ɟo ʎʇıɔɐdɐɔ ʎbɹǝuǝ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.ae2maxPower.1": ":ǝbɐs∩", + "gtceu.placeholder_info.ae2maxPower.2": "ʞɹoʍʇǝu ƎW ǝɥʇ ɟo ʎʇıɔɐdɐɔ ʎbɹǝuǝ ǝɥʇ >- }ɹǝʍoԀxɐɯᄅǝɐ{ ", + "gtceu.placeholder_info.ae2powerUsage.0": "˙uo sı ɹǝʌoɔ sıɥʇ ʞɔoןq ǝɥʇ ɟo ʞɹoʍʇǝu ƎW ǝɥʇ ɟo uoıʇdɯnsuoɔ ʎbɹǝuǝ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.ae2powerUsage.1": ":ǝbɐs∩", + "gtceu.placeholder_info.ae2powerUsage.2": "ʞɹoʍʇǝu ƎW ǝɥʇ ɟo uoıʇdɯnsuoɔ ʎbɹǝuǝ ǝɥʇ >- }ǝbɐs∩ɹǝʍodᄅǝɐ{ ", + "gtceu.placeholder_info.ae2spatial.0": "˙uo sı ɹǝʌoɔ sıɥʇ ʞɔoןq ǝɥʇ ɟo ʞɹoʍʇǝu ƎW ǝɥʇ uı O/I ןɐıʇɐds ʇnoqɐ uoıʇɐɯɹoɟuı suɹnʇǝᴚ", + "gtceu.placeholder_info.ae2spatial.1": ":ǝbɐs∩", + "gtceu.placeholder_info.ae2spatial.2": "O/I ןɐıʇɐds ǝʇɐıʇıuı oʇ pǝɹınbǝɹ ɹǝʍod ɟo ʇunoɯɐ ǝɥʇ >- }ɹǝʍod ןɐıʇɐdsᄅǝɐ{ ", + "gtceu.placeholder_info.ae2spatial.3": ")SԀS( ǝɹnʇɔnɹʇS ʇuǝɯuıɐʇuoƆ ןɐıʇɐdS ǝɥʇ ɟo ʎɔuǝıɔıɟɟǝ ǝɥʇ >- }ʎɔuǝıɔıɟɟǝ ןɐıʇɐdsᄅǝɐ{ ", + "gtceu.placeholder_info.ae2spatial.4": "),}Zǝzıs{x}ʎǝzıs{x}Xǝzıs{ :ǝzıS, :ǝןdɯɐxǝ( sıxɐ pǝıɟıɔǝds ǝɥʇ buoןɐ SԀS ǝɥʇ ɟo ǝzıs ǝɥʇ >- }>Z|ʎ|X<ǝzıs ןɐıʇɐdsᄅǝɐ{ ", + "gtceu.placeholder_info.amperage.0": "˙uo sı ɹǝʌoɔ ǝɥʇ ǝןqɐɔ/ǝɹıʍ ǝɥʇ uı ǝbɐɹǝdɯɐ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.amperage.1": ":ǝbɐs∩", + "gtceu.placeholder_info.amperage.2": "ǝןqɐɔ/ǝɹıʍ ǝɥʇ uı ǝʇɐɹǝdɯɐ ǝɥʇ >- }ǝbɐɹǝdɯɐ{ ", + "gtceu.placeholder_info.bf.0": ":ǝbɐs∩", + "gtceu.placeholder_info.bf.1": "buıɹʇs ʎʇdɯǝ >- }>ǝpoɔ< >xǝpuı‾ʇoןs‾ɯǝʇı‾ɐʇɐp< ɟq{ ", + "gtceu.placeholder_info.block.0": "˙)█( ןoqɯʎs ʞɔoןq ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.block.1": ":ǝbɐs∩", + "gtceu.placeholder_info.block.2": ",█, >- }ʞɔoןq{ ", + "gtceu.placeholder_info.calc.0": "˙uoıʇɐɹǝdo ɹo uoıʇɔunɟ ɥʇɐɯ ɐ ɟo ʇןnsǝɹ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.calc.1": ":ǝbɐs∩", + "gtceu.placeholder_info.calc.2": "buıɹʇs‾ʎuɐ >- }>buıɹʇs‾ʎuɐ< ɔןɐɔ{ ", + "gtceu.placeholder_info.calc.3": "uoıʇɐɹǝdo pǝıɟıɔǝds ǝɥʇ ɟo ʇןnsǝɹ ǝɥʇ >- }>bɹɐ< >~|ʇɹbs|ןıǝɔ|ɹooןɟ|punoɹ< ɔןɐɔ{ ", + "gtceu.placeholder_info.calc.4": "uoıʇɐɹǝdo pǝıɟıɔǝds ǝɥʇ ɟo ʇןnsǝɹ ǝɥʇ >- }>bɹɐ‾puoɔǝs< >%|<<|>>|//|/|*|-|+< >bɹɐ‾ʇsɹıɟ< ɔןɐɔ{ ", + "gtceu.placeholder_info.cmd.0": "˙ʇndʇno ɹıǝɥʇ suɹnʇǝɹ puɐ spuɐɯɯoɔ ʇɟɐɹɔǝuıW sǝʇnɔǝxƎ", + "gtceu.placeholder_info.cmd.1": "˙ʇı ɥʇıʍ buıʞɔıןɔ-ʇɥbıɹ ʎq ɟןǝsɹnoʎ oʇ ɯǝʇı ɐʇɐp ʎuɐ puıq 'ɹǝʎɐןd ɐ oʇ punoq ɯǝʇı ɐʇɐp ɐ sǝɹınbǝᴚ", + "gtceu.placeholder_info.cmd.2": ":ǝbɐs∩", + "gtceu.placeholder_info.cmd.3": "ʇndʇno puɐɯɯoɔ >- }>puɐɯɯoɔ< >xǝpuı‾ʇoןs< pɯɔ{ ", + "gtceu.placeholder_info.cmp.0": "sʇuǝɯnbɹɐ s,ʇı uı uoıssǝɹdxǝ ǝɥʇ uo pǝsɐq 0 ɹo Ɩ ɐ suɹnʇǝᴚ", + "gtceu.placeholder_info.cmp.1": ":ǝbɐs∩", + "gtceu.placeholder_info.cmp.2": "=¡ '== '=< '=> '< '> ɟo ǝuo sı ɹoʇɐɹǝdo '0 ɹo Ɩ >- }>q< >ɹoʇɐɹǝdo< >ɐ< dɯɔ{ ", + "gtceu.placeholder_info.color.0": "˙pǝsn ǝq uɐɔ sɹoןoɔ ʇɐɥɔ ʇɟɐɹɔǝuıɯ ʇןnɐɟǝp ןןⱯ ˙ʇuǝɯnbɹɐ ʇsɹıɟ ǝɥʇ ɯoɹɟ ɹoןoɔ ǝɥʇ ɥʇıʍ pǝɹoןoɔ 'ʇuǝɯnbɹɐ puoɔǝs ǝɥʇ ɯoɹɟ ʇxǝʇ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.color.1": ":ǝbɐs∩", + "gtceu.placeholder_info.color.2": "ʇxǝʇ pǝɹoןoɔ >- }>ʇxǝʇ< >ɹoןoɔ< ɹoןoɔ{ ", + "gtceu.placeholder_info.combine.0": ")sʇuǝɯnbɹɐ ǝɥʇ uǝǝʍʇǝq sǝɔɐds ןןɐ buıdɐɔsǝ ʎq( buıɹʇs ǝןbuıs ɐ oʇuı sʇuǝɯnbɹɐ s,ʇı ɟo ןןɐ sǝuıqɯoƆ", + "gtceu.placeholder_info.combine.1": "\"ouɯ \\ןʞظ \\ıɥb \\ɟǝp \\ɔqɐ\" >- }ouɯ ןʞظ ıɥb ɟǝp ɔqɐ ǝuıqɯoɔ{ :ǝןdɯɐxƎ", + "gtceu.placeholder_info.combine.2": ":ǝbɐs∩", + "gtceu.placeholder_info.combine.3": "sɹǝpןoɥǝɔɐןd ɹǝɥʇɹnɟ uı ʇuǝɯnbɹɐ ǝןbuıs ɐ sɐ pǝʇɐǝɹʇ ǝq ןןıʍ ʇɐɥʇ buıɹʇs ɐ >- }˙˙˙ ]Ɛbɹɐ[ ]ᄅbɹɐ[ ]Ɩbɹɐ[ ǝuıqɯoɔ{ ", + "gtceu.placeholder_info.count.0": ")\"0˙0\" =¡ \"0\" os 'sbuıɹʇs sɐ pǝɹɐdɯoɔ( ʇsɹıɟ ǝɥʇ oʇ ןɐnbǝ ǝɹɐ sʇuǝɯnbɹɐ pǝpıʌoɹd ǝɥʇ ɟo ʎuɐɯ ʍoɥ suɹnʇǝᴚ", + "gtceu.placeholder_info.count.1": ":ǝbɐs∩", + "gtceu.placeholder_info.count.2": "ʇsɹıɟ ǝɥʇ oʇ ןɐnbǝ ǝɹɐ ʇɐɥʇ sʇuǝɯnbɹɐ ɟo ʇunoɯɐ ǝɥʇ >- }˙˙˙ ]ㄣbɹɐ[ ]Ɛbɹɐ[ ]ᄅbɹɐ[ >Ɩbɹɐ< ʇunoɔ{ ", + "gtceu.placeholder_info.data.0": "˙sʇoןs ǝɥʇ ɟo ǝuo uı )ǝןnpoɯ/qɹo/ʞɔıʇs ɐʇɐp( ɯǝʇı ɐʇɐp ɐ ɯoɹɟ ɐʇɐp ǝɯos sǝʌǝıɹʇǝɹ ɹo sǝɹoʇS", + "gtceu.placeholder_info.data.1": "˙)ʇqu ɯǝʇı ɐʇɐp ǝɥʇ uı pǝɹoʇs sı ʇɐɥʇ )Ɩ - ʎʇıɔɐdɐɔ( oʇ 0 ɯoɹɟ ɹǝbǝʇuı uɐ sı d( d ǝnןɐʌ ǝɥʇ ɥʇıʍ pǝɔɐןdǝɹ ǝq ןןıʍ ʇı 'ʎʇdɯǝ ʇuǝɯnbɹɐ >xǝpuı< ǝɥʇ ǝʌɐǝן noʎ ɟI", + "gtceu.placeholder_info.data.2": ":ǝbɐs∩", + "gtceu.placeholder_info.data.3": "ʇoןs pǝıɟıɔǝds ǝɥʇ uı ɯǝʇı ǝɥʇ uı pǝɹoʇs ɐʇɐp ǝɥʇ >- }>xǝpuı< >ʇoןs< ʇǝb ɐʇɐp{ ", + "gtceu.placeholder_info.data.4": "buıɹʇs ʎʇdɯǝ uɐ suɹnʇǝɹ 'ʇoןs pǝıɟıɔǝds ǝɥʇ uı ɯǝʇı ǝɥʇ uı pǝɹoʇs ɐʇɐp ǝɥʇ sʇǝs >- }>ǝnןɐʌ< >xǝpuı< >ʇoןs< ʇǝs ɐʇɐp{ ", + "gtceu.placeholder_info.data.5": "d >- }>ʇoןs< dʇǝb ɐʇɐp{ ", + "gtceu.placeholder_info.data.6": "buıɹʇs ʎʇdɯǝ uɐ suɹnʇǝɹ 'd sʇǝs >- }>ǝnןɐʌ< >ʇoןs< dʇǝs ɐʇɐp{ ", + "gtceu.placeholder_info.data.7": "0 oʇ d sʇǝs 'ʎʇıɔɐdɐɔ oʇ ןɐnbǝ ɹo uɐɥʇ ǝɹoɯ sǝɯoɔǝq d ɟı 'Ɩ ʎq d sʇuǝɯǝɹɔuı >- }>ʇoןs< ɔuı ɐʇɐp{ ", + "gtceu.placeholder_info.data.8": ")Ɩ - ʎʇıɔɐdɐɔ( oʇ d sʇǝs '0 uɐɥʇ ssǝן sǝɯoɔǝq d ɟı 'Ɩ ʎq d sʇuǝɯǝɹɔǝp >- }>ʇoןs< ɔǝp ɐʇɐp{ ", + "gtceu.placeholder_info.displayTarget.0": "˙ʞuıן ʎɐןdsıp ɐ buısn ɹǝʌoɔ sıɥʇ oʇ pǝʇʇıɯsuɐɹʇ sɐʍ ʇɐɥʇ ǝuıן pǝıɟıɔǝds ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.displayTarget.1": ":ǝbɐs∩", + "gtceu.placeholder_info.displayTarget.2": ")00Ɩ-Ɩ sı ɹǝqɯnu ǝuıן( ǝuıן pǝıɟıɔǝds ǝɥʇ uo ʇxǝʇ ǝɥʇ >- }>ɹǝqɯnu‾ǝuıן< ʇǝbɹɐ⟘ʎɐןdsıp{ ", + "gtceu.placeholder_info.energy.0": "˙pǝɹoʇs ʎbɹǝuǝ ɟo ʇunoɯɐ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.energy.1": ":ǝbɐs∩", + "gtceu.placeholder_info.energy.2": "pǝɹoʇs ʎbɹǝuǝ ɟo ʇunoɯɐ ǝɥʇ >- }ʎbɹǝuǝ{ ", + "gtceu.placeholder_info.energyCapacity.0": "pǝɹoʇs ǝq uɐɔ ʇɐɥʇ ʎbɹǝuǝ ɟo ʇunoɯɐ xɐɯ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.energyCapacity.1": ":ǝbɐs∩", + "gtceu.placeholder_info.energyCapacity.2": "ʎʇıɔɐdɐɔ ʎbɹǝuǝ ǝɥʇ >- }ʎʇıɔɐdɐƆʎbɹǝuǝ{", + "gtceu.placeholder_info.fluidCount.0": "˙)pǝɹǝʇןıɟ ǝq uɐɔ( spınןɟ ɟo ʇunoɯɐ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.fluidCount.1": ":ǝbɐs∩", + "gtceu.placeholder_info.fluidCount.2": "pǝıɟıɔǝds ɟı pIpınןɟ ɥʇıʍ pınןɟ ǝɥʇ ɹo 'spınןɟ ןןɐ ɟo ʇunoɯɐ ǝɥʇ >- }]pIpınןɟ[ ʇunoƆpınןɟ{ ", + "gtceu.placeholder_info.formatInt.0": "ɹǝbǝʇuı pǝpıʌoɹd ǝɥʇ ɟo uoıʇɐʇuǝsǝɹdǝɹ buıɹʇs ɐ suɹnʇǝᴚ", + "gtceu.placeholder_info.formatInt.1": "Wㄣᄅ˙Ɩ >- }ㄥϛㄣ9ƐᄅƖ ʇuIʇɐɯɹoɟ{ :ǝןdɯɐxƎ", + "gtceu.placeholder_info.formatInt.2": ":ǝbɐs∩", + "gtceu.placeholder_info.formatInt.3": "ʇuı ǝɥʇ ɟo uoıʇɐʇuǝsǝɹdǝɹ buıɹʇs >- }>bɹɐ< ʇuIʇɐɯɹoɟ{ ", + "gtceu.placeholder_info.fromAscii.0": "ǝpoɔ IIƆSⱯ pǝpıʌoɹd ǝɥʇ ʎq pǝʇuǝsǝɹdǝɹ ɹǝʇɔɐɹɐɥɔ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.fromAscii.1": ":ǝbɐs∩", + "gtceu.placeholder_info.fromAscii.2": "ɹǝʇɔɐɹɐɥɔ ɐ >- }>ǝpoɔ‾ɹɐɥɔ< ııɔsⱯɯoɹɟ{ ", + "gtceu.placeholder_info.if.0": "˙0 oʇ ןɐnbǝ ʇou sı puɐ buıɹʇs ʎʇdɯǝ uɐ ʇou sı ʇı ɟı ǝnɹʇ pǝɹǝpısuoɔ sı uoıʇıpuoɔ ǝɥ⟘ ˙uoıʇıpuoɔ ǝɥʇ uo buıpuǝdǝp sʇuǝɯnbɹɐ ǝɥʇ ɟo ǝuo suɹnʇǝᴚ", + "gtceu.placeholder_info.if.1": ":ǝbɐs∩", + "gtceu.placeholder_info.if.2": "}]ǝsןɐɟ‾ɟı‾pǝuɹnʇǝɹ[ >ǝnɹʇ‾ɟı‾pǝuɹnʇǝɹ< >uoıʇıpuoɔ< ɟı{ ", + "gtceu.placeholder_info.itemCount.0": "˙)pǝɹǝʇןıɟ ǝq uɐɔ( sɯǝʇı ɟo ʇunoɯɐ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.itemCount.1": ":ǝbɐs∩", + "gtceu.placeholder_info.itemCount.2": "ʇunoɯɐ ɯǝʇı ןɐʇoʇ >- }ʇunoƆɯǝʇı{ ", + "gtceu.placeholder_info.itemCount.3": "pı‾ɯǝʇı oʇ ןɐnbǝ spı ɥʇıʍ sɯǝʇı ɟo ʇunoɯɐ >- }>pı‾ɯǝʇı< ʇunoƆɯǝʇı{ ", + "gtceu.placeholder_info.itemCount.4": "ɹǝʌoɔ sıɥʇ ɟo ʇoןs pǝıɟıɔǝds uı ɹǝʇןıɟ buıɥɔʇɐɯ sɯǝʇı ɟo ʇunoɯɐ >- }>pı‾ʇoןs< ɹǝʇןıɟ ʇunoƆɯǝʇı{ ", + "gtceu.placeholder_info.maintenance.0": "˙ǝsıʍɹǝɥʇo 0 'oʇ pǝɥɔɐʇʇɐ sı ɹǝʌoɔ ǝɥʇ ʞɔoןq ǝɥʇ uı sɯǝןqoɹd ǝɔuɐuǝʇuıɐɯ ǝɹɐ ǝɹǝɥʇ ɟı Ɩ ɐ suɹnʇǝᴚ", + "gtceu.placeholder_info.maintenance.1": ",}ʞO ᗡƎᴚI∩ὉƎᴚ \\⅁NIXIℲ }ǝɔuɐuǝʇuıɐɯ{ ɟı{ :snʇɐʇs ǝɔuɐuǝʇuıɐW, :ǝןdɯɐxƎ", + "gtceu.placeholder_info.maintenance.2": ":ǝbɐs∩", + "gtceu.placeholder_info.maintenance.3": "sɯǝןqoɹd ǝɔuɐuǝʇuıɐɯ ǝɹɐ ǝɹǝɥʇ ɹǝɥʇǝɥʍ >- }ǝɔuɐuǝʇuıɐɯ{ ", + "gtceu.placeholder_info.maxProgress.0": "˙oʇ pǝɥɔɐʇʇɐ sı ɹǝʌoɔ sıɥʇ ʞɔoןq ǝɥʇ ɟo ǝdıɔǝɹ buıuunɹ ʎןʇuǝɹɹnɔ ǝɥʇ ɟo ssǝɹboɹd ɯnɯıxɐɯ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.maxProgress.1": ",%}00Ɩ * }}ssǝɹboɹԀxɐɯ{ / }ssǝɹboɹd{ ɔןɐɔ{ ɔןɐɔ{ :ssǝɹboɹԀ, :ǝןdɯɐxƎ", + "gtceu.placeholder_info.maxProgress.2": ":ǝbɐs∩", + "gtceu.placeholder_info.maxProgress.3": "ǝdıɔǝɹ buıuunɹ ʎןʇuǝɹɹnɔ ǝɥʇ ɟo ssǝɹboɹd xɐɯ ǝɥʇ >- }ssǝɹboɹԀxɐɯ{ ", + "gtceu.placeholder_info.nbt.0": "ʇoןs pǝıɟıɔǝds ǝɥʇ uı ɯǝʇı ǝɥʇ ɟo ɐʇɐp ʇqu ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.nbt.1": ":ǝbɐs∩", + "gtceu.placeholder_info.nbt.2": "ɐʇɐp ʇqu >- }>ʇoןs< ʇqu{ ", + "gtceu.placeholder_info.obf.0": "˙pǝʇɐɔsnɟqo 'ʇuǝɯnbɹɐ ʇsɹıɟ ǝɥʇ ɯoɹɟ ʇxǝʇ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.obf.1": ":ǝbɐs∩", + "gtceu.placeholder_info.obf.2": "ʇxǝʇ pǝʇɐɔsnɟqo >- }>ʇxǝʇ< ɟqo{ ", + "gtceu.placeholder_info.previousText.0": "˙)buıddɐɹʍ-ǝuıן ǝɹoɟǝq( ǝuıן pǝıɟıɔǝds ǝɥʇ ʇɐ ɹǝʌoɔ sıɥʇ ʎq pǝʎɐןdsıp ʎןsnoıʌǝɹd sɐʍ ʇɐɥʇ ʇxǝʇ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.previousText.1": ":ǝbɐs∩", + "gtceu.placeholder_info.previousText.2": ")Ɩ ʇɐ sʇɹɐʇs xǝpuı( ǝuıן pǝıɟıɔǝds ǝɥʇ uo pǝʎɐןdsıp ʎןsnoıʌǝɹd ʇxǝʇ ǝɥʇ >- }>ǝuıן< ʇxǝ⟘snoıʌǝɹd{ ", + "gtceu.placeholder_info.progress.0": "˙oʇ pǝɥɔɐʇʇɐ sı ɹǝʌoɔ sıɥʇ ʞɔoןq ǝɥʇ ɟo ǝdıɔǝɹ buıuunɹ ʎןʇuǝɹɹnɔ ǝɥʇ ɟo ssǝɹboɹd ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.progress.1": "}ssǝɹboɹԀxɐɯ{ puɐ 0 uǝǝʍʇǝq ɹǝbǝʇuı uɐ sı ssǝɹboɹd ʇɐɥʇ ǝʇoN", + "gtceu.placeholder_info.progress.2": ":ǝbɐs∩", + "gtceu.placeholder_info.progress.3": "ǝdıɔǝɹ buıuunɹ ʎןʇuǝɹɹnɔ ǝɥʇ ɟo ssǝɹboɹd ǝɥʇ >- }ssǝɹboɹd{ ", + "gtceu.placeholder_info.random.0": "˙)ǝʌısnןɔuı( ןɐʌɹǝʇuı pǝıɟıɔǝds ǝɥʇ uı ɹǝqɯnu ɯopuɐɹ ɐ suɹnʇǝᴚ", + "gtceu.placeholder_info.random.1": ":ǝbɐs∩", + "gtceu.placeholder_info.random.2": ")ǝʌısnןɔuı( xɐɯ puɐ uıɯ uǝǝʍʇǝq ɹǝqɯnu ɯopuɐɹ ɐ >- }>xɐɯ< >uıɯ< ɯopuɐɹ{ ", + "gtceu.placeholder_info.redstone.0": "ɥʇbuǝɹʇs ʇndʇno ǝuoʇspǝɹ ǝɥʇ sʇǝs ɹo ɥʇbuǝɹʇs ןɐubıs ǝuoʇspǝɹ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.redstone.1": ":ǝbɐs∩", + "gtceu.placeholder_info.redstone.2": "ǝpıs pǝıɟıɔǝds ǝɥʇ ʇɐ )ϛƖ-0( ɥʇbuǝɹʇs ןɐubıs ǝuoʇspǝɹ >- }>ʇsǝʍ|ʇsɐǝ|ɥʇnos|ɥʇɹou|uʍop|dn< ʇǝb ǝuoʇspǝɹ{ ", + "gtceu.placeholder_info.redstone.3": ")9-0 'ʇɥbıɹ oʇ ʇɟǝן ɯoɹɟ( ɹǝןןoɹʇuoɔ ǝɥʇ ǝpısuı ʎɔuǝnbǝɹɟ ǝɥʇ ɟo xǝpuı ǝɥʇ sı xǝpuı‾ʇoןs‾bǝɹɟ ˙xǝpuı‾ʇoןs# ʇoןs uı ɹǝןןoɹʇuoɔ pǝʞuıן ɐ ʎq pǝıɟıɔǝds ʎɔuǝnbǝɹɟ ʞuıן ǝuoʇspǝɹ ǝʇɐǝɹƆ ɐ ɟo ɥʇbuǝɹʇs ןɐubıs ǝuoʇspǝɹ >- }>xǝpuı‾ʇoןs‾bǝɹɟ< >xǝpuı‾ʇoןs< ʞuıן ʇǝb ǝuoʇspǝɹ{ ", + "gtceu.placeholder_info.redstone.4": "ǝpıs s,ɹǝʌoɔ sıɥʇ ɯoɹɟ ɥʇbuǝɹʇs ʇndʇno ǝuoʇspǝɹ ǝɥʇ sʇǝs 'buıɹʇs ʎʇdɯǝ >- }>ɹǝʍod< ʇǝs ǝuoʇspǝɹ{ ", + "gtceu.placeholder_info.redstone.5": "ʎɔuǝnbǝɹɟ ʞuıן ǝuoʇspǝɹ ǝʇɐǝɹƆ pǝıɟıɔǝds ǝɥʇ uo ɹǝʍod ǝuoʇspǝɹ pǝıɟıɔǝds ǝɥʇ sʇsɐɔpɐoɹq 'buıɹʇs ʎʇdɯǝ >- }>ɹǝʍod< >xǝpuı‾ʇoןs‾bǝɹɟ< >xǝpuı‾ʇoןs< ʞuıן ʇǝs ǝuoʇspǝɹ{ ", + "gtceu.placeholder_info.repeat.0": "˙ʇuǝɯnbɹɐ ʇsɹıɟ ǝɥʇ uı pǝıɟıɔǝds sǝɯıʇ ɟo ʇunoɯɐ ǝɥʇ pǝʇɐǝdǝɹ 'sʇuǝɯnbɹɐ puoɔǝs ǝɥʇ ɯoɹɟ ʇxǝʇ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.repeat.1": ":ǝbɐs∩", + "gtceu.placeholder_info.repeat.2": "sǝɯıʇ ɟo ʇunoɯɐ pǝıɟıɔǝds ǝɥʇ pǝʇɐǝdǝɹ ʇxǝʇ >- }>ʇxǝʇ< >ʇunoɯɐ< ʇɐǝdǝɹ{ ", + "gtceu.placeholder_info.select.0": ")0 ɯoɹɟ buıʇɹɐʇs( xǝpuı pǝıɟıɔǝds ǝɥʇ ʇɐ ʇuǝɯnbɹɐ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.select.1": ":ǝbɐs∩", + "gtceu.placeholder_info.select.2": "xǝpuı pǝıɟıɔǝds ǝɥʇ ʇɐ ʇuǝɯnbɹɐ >- ˙˙˙ ]Ɛbɹɐ[ ]ᄅbɹɐ[ ]Ɩbɹɐ[ >xǝpuı< ʇɔǝןǝs{ ", + "gtceu.placeholder_info.strike.0": "ʇno pǝssoɹɔ sɐʍ ʇı ɟı sɐ ʇı buıʎɐןdsıp 'ʇxǝʇ ʇsɹıɟ ǝɥʇ ɯoɹɟ ʇxǝʇ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.strike.1": ":ǝbɐs∩", + "gtceu.placeholder_info.strike.2": "ʇxǝʇ ʇno-pǝssoɹɔ >- }>ʇxǝʇ< ǝʞıɹʇs{ ", + "gtceu.placeholder_info.subList.0": ")0 ɯoɹɟ buıʇɹɐʇs( )ǝʌısnןɔxǝ( ɹ oʇ )ǝʌısnןɔuı( ן ɯoɹɟ sǝxǝpuı ɥʇıʍ ɯoɹɟ sʇuǝɯnbɹɐ suɹnʇǝᴚ", + "gtceu.placeholder_info.subList.1": ":ǝbɐs∩", + "gtceu.placeholder_info.subList.2": "sǝɔɐds ʎq pǝʇɐɹɐdǝs ɹ oʇ ן ɯoɹɟ sǝxǝpuı ɥʇıʍ sʇuǝɯnbɹɐ ןןɐ >- }˙˙˙ ]Ɩbɹɐ[ ]0bɹɐ[ >ʇɥbıɹ< >ʇɟǝן< ʇsıꞀqns{ ", + "gtceu.placeholder_info.tick.0": "˙pǝɔɐןd sɐʍ ɹǝʌoɔ sıɥʇ uǝɥʍ ɯoɹɟ pǝssɐd sʞɔıʇ ɟo ʇunoɯɐ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.tick.1": ":ǝbɐs∩", + "gtceu.placeholder_info.tick.2": "sʞɔıʇ ɟo ʇunoɯɐ ǝɥʇ >- }ʞɔıʇ{ ", + "gtceu.placeholder_info.tm.0": "ןoqɯʎs ™ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.tm.1": ":ǝbɐs∩", + "gtceu.placeholder_info.tm.2": "ןoqɯʎs ™ ǝɥʇ >- }ɯʇ{ ", + "gtceu.placeholder_info.toAscii.0": "ɹǝʇɔɐɹɐɥɔ pǝpıʌoɹd ǝɥʇ ɟo ǝpoɔ IIƆSⱯ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.toAscii.1": ":ǝbɐs∩", + "gtceu.placeholder_info.toAscii.2": "ɹǝʇɔɐɹɐɥɔ ǝɥʇ ɟo ǝpoɔ IIƆSⱯ >- }>ɹǝʇɔɐɹɐɥɔ< ııɔsⱯoʇ{ ", + "gtceu.placeholder_info.toChars.0": "ɯǝɥʇ uǝǝʍʇǝq sǝɔɐds ɥʇıʍ buıɹʇs pǝpıʌoɹd ǝɥʇ ɟo sɹǝʇɔɐɹɐɥɔ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.toChars.1": ",ǝ ן d ɯ ɐ x ǝ, >- }ǝןdɯɐxǝ sɹɐɥƆoʇ{ :ǝןdɯɐxƎ", + "gtceu.placeholder_info.toChars.2": ":ǝbɐs∩", + "gtceu.placeholder_info.toChars.3": "sɹǝʇɔɐɹɐɥɔ >- }>bɹɐ< sɹɐɥƆoʇ{ ", + "gtceu.placeholder_info.underline.0": "pǝuıןɹǝpun 'ʇuǝɯnbɹɐ ʇsɹıɟ ǝɥʇ ɯoɹɟ ʇxǝʇ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.underline.1": ":ǝbɐs∩", + "gtceu.placeholder_info.underline.2": "ʇxǝʇ pǝuıןɹǝpun >- }>ʇxǝʇ< ǝuıןɹǝpun{ ", + "gtceu.placeholder_info.voltage.0": "˙uo sı ɹǝʌoɔ ǝɥʇ ǝןqɐɔ/ǝɹıʍ ǝɥʇ uı ǝbɐʇןoʌ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.voltage.1": ":ǝbɐs∩", + "gtceu.placeholder_info.voltage.2": "ǝןqɐɔ/ǝɹıʍ ǝɥʇ uı ǝbɐʇןoʌ ǝɥʇ >- }ǝbɐʇןoʌ{ ", "gtceu.plasma_generator": "ɹoʇɐɹǝuǝ⅁ ɐɯsɐןԀ", "gtceu.polarizer": "ɹǝzıɹɐןoԀ", "gtceu.primitive_blast_furnace": "ǝɔɐuɹnℲ ʇsɐןᗺ ǝʌıʇıɯıɹԀ", "gtceu.pyrolyse_oven": "uǝʌO ǝsʎןoɹʎԀ", - "gtceu.recipe.amperage": "%s :ǝbɐɹǝdɯⱯ", - "gtceu.recipe.category.arc_furnace_recycling": "buıddɐɹɔS ɐɯsɐןԀ", + "gtceu.recipe.byproduct_tier": "+ɹ§%s ɯoɹɟ sʇɔnpoɹdʎᗺ", + "gtceu.recipe.category.arc_furnace_recycling": "buıddɐɹɔS ɔɹⱯ", "gtceu.recipe.category.chem_dyes": "buıǝʎᗡ ןɐɔıɯǝɥƆ", "gtceu.recipe.category.extractor_recycling": "buıʇןǝɯǝᴚ dɐɹɔS", "gtceu.recipe.category.ingot_molding": "buıpןoW ןɐʇǝW", @@ -3411,8 +3642,9 @@ "gtceu.recipe.duration": "sɔǝs %s :uoıʇɐɹnᗡ", "gtceu.recipe.environmental_hazard": "%s ǝʌɐɥ ʇsnɯ ɐǝɹⱯɔ§", "gtceu.recipe.environmental_hazard.reverse": "%s ɟo ǝǝɹɟ ǝq ʇsnɯ ɐǝɹⱯɔ§", - "gtceu.recipe.eu": "ʇ/∩Ǝ %s :ǝbɐs∩", - "gtceu.recipe.eu_inverted": "ʇ/∩Ǝ %s :uoıʇɐɹǝuǝ⅁", + "gtceu.recipe.eu": "%s @ Ɐ %s :ǝbɐs∩", + "gtceu.recipe.eu.total": "ʇ/∩Ǝ %s", + "gtceu.recipe.eu_inverted": "%s @ Ɐ %s :uoıʇɐɹǝuǝ⅁", "gtceu.recipe.eu_to_start": "%s∩Ǝ%s :ʇɹɐʇS o⟘ ∩Ǝ", "gtceu.recipe.explosive": "%s :ǝʌısoןdxƎ", "gtceu.recipe.max_eu": "∩Ǝ %s :∩Ǝ ˙xɐW", @@ -3422,6 +3654,8 @@ "gtceu.recipe.temperature": "ʞ%s :dɯǝ⟘", "gtceu.recipe.total": "∩Ǝ %s :ןɐʇo⟘", "gtceu.recipe.total_computation": "∩MƆ %s :uoıʇɐʇndɯoƆ", + "gtceu.recipe.total_eu": "ʇ/∩Ǝ %s :ǝbɐs∩ ןɐʇo⟘", + "gtceu.recipe.voltage": "%s @ Ɐ %s :ǝbɐs∩", "gtceu.recipe_logic.condition_fails": "sןıɐℲ uoıʇıpuoƆ", "gtceu.recipe_logic.insufficient_fuel": "ןǝnℲ ʇuǝıɔıɟɟnsuI", "gtceu.recipe_logic.insufficient_in": "sʇnduI ʇuǝıɔıɟɟnsuI", @@ -3519,9 +3753,12 @@ "gtceu.tool_action.wire_cutter.connect": "suoıʇɔǝuuoƆ ʇǝs oʇ sɹǝʇʇnƆ ǝɹıM ǝs∩8§", "gtceu.tool_action.wrench.connect": "suoıʇɔǝuuoƆ ʞɔoןq oʇ ʞɐǝus 'suoıʇɔǝuuoƆ ʇǝs oʇ ɥɔuǝɹM ǝs∩8§", "gtceu.tool_action.wrench.set_facing": "buıɔɐℲ ʇǝs oʇ ɥɔuǝɹM ǝs∩8§", + "gtceu.tooltip.computer_monitor_config": "ɐʇɐp uoıʇɐɹnbıɟuoɔ ɹǝʌoɔ ɹoʇıuoɯ ɹǝʇndɯoɔ buıɹoʇS", + "gtceu.tooltip.computer_monitor_data": "%s :ɐʇɐp buıɹoʇS", "gtceu.tooltip.fluid_pipe_hold_shift": "oɟuI ʇuǝɯuıɐʇuoƆ pınןℲ ʍoɥs oʇ ⟘ℲIHS pןoHㄥ§", "gtceu.tooltip.hold_ctrl": "oɟuı ǝɹoɯ ɹoɟ Ꞁᴚ⟘Ɔ pןoHㄥ§", "gtceu.tooltip.hold_shift": "oɟuı ǝɹoɯ ɹoɟ ⟘ℲIHS pןoHㄥ§", + "gtceu.tooltip.player_bind": "%s :ɹǝʎɐןd oʇ punoᗺ", "gtceu.tooltip.potion.each": "ɹ§buıuǝddɐɥ ɟo ǝɔuɐɥɔㄥ§ %s%% ɹ§ɐ ɥʇıʍ sʞɔıʇㄥ§ %s ɹ§ɹoɟㄥ§ %s %s", "gtceu.tooltip.potion.header": ":sʇɔǝɟɟǝ suıɐʇuoƆ9§", "gtceu.tooltip.proxy_bind": "%s %s %s ʇɐ ɹǝɟɟnᗺ uɹǝʇʇɐԀ ɐ oʇ buıpuıᗺɟ§", @@ -3529,6 +3766,7 @@ "gtceu.tooltip.status.trinary.true": "ǝnɹ⟘", "gtceu.tooltip.status.trinary.unknown": "uʍouʞu∩", "gtceu.tooltip.tool_fluid_hold_shift": "oɟuI ןoo⟘ puɐ ʇuǝɯuıɐʇuoƆ pınןℲ ʍoɥs oʇ ⟘ℲIHS pןoHㄥ§", + "gtceu.tooltip.wireless_transmitter_bind": "%s buıɔɐɟ %s %s %s ʇɐ ɹǝʌoɔ ɹǝʇʇıɯsuɐɹʇ ɐ oʇ buıpuıᗺ", "gtceu.top.allow_output_input": "ʇnduI ʍoןןⱯ", "gtceu.top.auto_output": "ʇndʇnO oʇnⱯ", "gtceu.top.buffer_bound_pos": "%s :Z '%s :ʎ '%s :X - o⟘ punoᗺ", @@ -3578,10 +3816,12 @@ "gtceu.top.valid_structure": "pǝɯɹoℲ ǝɹnʇɔnɹʇS", "gtceu.top.working_disabled": "pǝןqɐsıᗡ buıʞɹoM", "gtceu.universal.clear_nbt_recipe.tooltip": "¡sʇuǝʇuoɔ ןןɐ ʎoɹʇsǝp ןןıʍ sıɥ⟘ɔ§", - "gtceu.universal.disabled": "pǝןqɐsıᗡㄣ§ buıɹɐɥS ʞɔoןqıʇןnW", - "gtceu.universal.enabled": "pǝןqɐuƎɐ§ buıɹɐɥS ʞɔoןqıʇןnW", "gtceu.universal.kiloliters": "ᗺ %s", "gtceu.universal.liters": "ᗺɯ %s", + "gtceu.universal.padded_parentheses": " )%s( ", + "gtceu.universal.padded_spaced_parentheses": " ) %s ( ", + "gtceu.universal.parentheses": ")%s(", + "gtceu.universal.spaced_parentheses": ") %s (", "gtceu.universal.tooltip.amperage_in": "Ɐ%dɟ§ :NI ǝbɐɹǝdɯⱯǝ§", "gtceu.universal.tooltip.amperage_in_out": "Ɐ%dɟ§ :⟘∩O/NI ǝbɐɹǝdɯⱯǝ§", "gtceu.universal.tooltip.amperage_in_out_till": "Ɐ%dɟ§ :oʇ dn ⟘∩O/NI ǝbɐɹǝdɯⱯǝ§", @@ -3675,6 +3915,10 @@ "item.gtceu.aluminium_fluid_cell": "ןןǝƆ ɯnıuıɯnןⱯ %s", "item.gtceu.anvil_casting_mold": ")ןıʌuⱯ( pןoW buıʇsɐƆ", "item.gtceu.anvil_casting_mold.tooltip": "sןıʌuⱯ buıdɐɥs ɹoɟ pןoWㄥ§", + "item.gtceu.armor.boots": "sʇooᗺ %s", + "item.gtceu.armor.chestplate": "ǝʇɐןdʇsǝɥƆ %s", + "item.gtceu.armor.helmet": "ʇǝɯןǝH %s", + "item.gtceu.armor.leggings": "sbuıbbǝꞀ %s", "item.gtceu.ash_dust": "sǝɥsⱯ", "item.gtceu.axe_extruder_mold.tooltip": "sǝxⱯ buıʞɐɯ ɹoɟ ǝdɐɥS ɹǝpnɹʇxƎㄥ§", "item.gtceu.ball_casting_mold": ")ןןɐᗺ( pןoW buıʇsɐƆ", @@ -3688,9 +3932,7 @@ "item.gtceu.basic_integrated_circuit.tooltip.1": "ʇınɔɹıƆ ɹǝı⟘-ΛꞀ9§", "item.gtceu.basic_tape": "ǝdɐ⟘", "item.gtceu.basic_tape.tooltip": "sɯǝʇı ɹıǝɥʇ buıddoɹp ʇnoɥʇıʍ sǝʇɐɹɔ dn ʞɔıd oʇ pǝsn ǝq uɐƆ\nsǝnssı ןɐɔıuɐɥɔǝɯ ɹoɟ ɥbnouǝ buoɹʇs ʇoNㄥ§", - "item.gtceu.battery.charge_detailed.0": ")ㄥ§buıuıɐɯǝɹ %s %s/%sɐ§(ㄥ§ %s ɹǝı⟘ - ㄥ§∩Ǝ %s/%sɐ§", - "item.gtceu.battery.charge_detailed.1": ")ㄥ§buıuıɐɯǝɹ %s %s/%sǝ§(ㄥ§ %s ɹǝı⟘ - ㄥ§∩Ǝ %s/%sǝ§", - "item.gtceu.battery.charge_detailed.2": ")ㄥ§buıuıɐɯǝɹ %s %s/%sɔ§(ㄥ§ %s ɹǝı⟘ - ㄥ§∩Ǝ %s/%sɔ§", + "item.gtceu.battery.charge_detailed": ")ㄥ§buıuıɐɯǝɹ %s %s/%s(ㄥ§ %s ɹǝı⟘ - ㄥ§∩Ǝ %s/%s", "item.gtceu.battery.charge_time": ")%s( ɹǝʍoԀ ɟo %s %s spןoHɐ§", "item.gtceu.battery.charge_unit.hour": "sɹnoɥ", "item.gtceu.battery.charge_unit.minute": "sǝʇnuıɯ", @@ -3945,6 +4187,7 @@ "item.gtceu.ilc_chip.tooltip": "ʇınɔɹıƆ ɔıboꞀ pǝʇɐɹbǝʇuIㄥ§", "item.gtceu.ilc_wafer": "ɹǝɟɐM ƆꞀI", "item.gtceu.ilc_wafer.tooltip": "ʇınɔɹıƆ pǝʇɐɹbǝʇuI ʍɐᴚㄥ§", + "item.gtceu.image_module": "ǝןnpoW ǝbɐɯI", "item.gtceu.impure_bentonite_dust": "ǝʇıuoʇuǝᗺ ɟo ǝןıԀ ǝɹndɯI", "item.gtceu.impure_cassiterite_sand_dust": "puɐS ǝʇıɹǝʇıssɐƆ ɟo ǝןıԀ ǝɹndɯI", "item.gtceu.impure_pitchblende_dust": "ǝpuǝןqɥɔʇıԀ ɟo ǝןıԀ ǝɹndɯI", @@ -4008,7 +4251,6 @@ "item.gtceu.lime_dye_spray_can": ")ǝɯıꞀ( uɐƆ ʎɐɹdS", "item.gtceu.lime_glass_lens": ")ǝɯıꞀ( suǝꞀ ssɐן⅁", "item.gtceu.liquid_fuel_jetpack": "ʞɔɐdʇǝſ ןǝnℲ pınbıꞀ", - "item.gtceu.long_rod_extruder_mold": ")poᴚ buoꞀ( pןoW ɹǝpnɹʇxƎ", "item.gtceu.long_treated_wood_rod": "ʞɔıʇS pooM pǝʇɐǝɹ⟘ buoꞀ", "item.gtceu.long_wood_rod": "ʞɔıʇS pooM buoꞀ", "item.gtceu.lpic_chip": "dıɥƆ ƆIԀꞀ", @@ -4380,6 +4622,7 @@ "item.gtceu.tantalum_capacitor": "ɹoʇıɔɐdɐƆ ɯnןɐʇuɐ⟘", "item.gtceu.terminal": "ןɐuıɯɹǝ⟘", "item.gtceu.terminal.tooltip": "ʞɔoןq-ıʇןnɯ ǝɥʇ pןınq ʎןןɐɔıʇɐɯoʇnɐ oʇ ɹǝןןoɹʇuoɔ ɐ uo ʞɔıןƆ-ᴚ + ʇɟıɥS", + "item.gtceu.text_module": "ǝןnpoW ʇxǝ⟘", "item.gtceu.tiny_ash_dust": "sǝɥsⱯ ɟo ǝןıԀ ʎuı⟘", "item.gtceu.tiny_basaltic_mineral_sand_dust": "puɐS ןɐɹǝuıW ɔıʇןɐsɐᗺ ɟo ǝןıԀ ʎuı⟘", "item.gtceu.tiny_bentonite_dust": "ǝʇıuoʇuǝᗺ ɟo ǝןıԀ ʎuı⟘", @@ -4612,6 +4855,7 @@ "item.gtceu.white_dye_spray_can": ")ǝʇıɥM( uɐƆ ʎɐɹdS", "item.gtceu.wire_extruder_mold": ")ǝɹıM( pןoW ɹǝpnɹʇxƎ", "item.gtceu.wire_extruder_mold.tooltip": "sǝɹıM buıʞɐɯ ɹoɟ ǝdɐɥS ɹǝpnɹʇxƎㄥ§", + "item.gtceu.wireless_transmitter_cover": "ɹǝʇʇıɯsuɐɹ⟘ ssǝןǝɹıM", "item.gtceu.wood_bolt": "ʞɔıʇS pooM ʇɹoɥS", "item.gtceu.wood_dust": "dןnԀ pooM", "item.gtceu.wood_plate": "ʞuɐןԀ pooM", @@ -4645,9 +4889,14 @@ "itemGroup.gtceu.material_item": "sɯǝʇI ןɐıɹǝʇɐW nƎƆɥɔǝ⟘bǝɹ⅁", "itemGroup.gtceu.material_pipe": "sǝdıԀ ןɐıɹǝʇɐW nƎƆɥɔǝ⟘bǝɹ⅁", "itemGroup.gtceu.tool": "sןoo⟘ nƎƆɥɔǝ⟘bǝɹ⅁", + "ldlib.gui.editor.group.widget.gtm_container": "sʇǝbpıM ɹǝuıɐʇuoƆ W⟘⅁", "ldlib.gui.editor.register.editor.gtceu.mui": "ʇɔǝظoɹԀ I∩ ǝuıɥɔɐW", "ldlib.gui.editor.register.editor.gtceu.rtui": "ʇɔǝظoɹԀ I∩ ǝdʎ⟘ǝdıɔǝᴚ", "ldlib.gui.editor.register.editor.gtceu.template_tab": "sǝʇɐןdɯǝʇ", + "ldlib.gui.editor.register.widget.container.gtm_fluid_slot": "ʇoןS pınןℲ W⟘⅁", + "ldlib.gui.editor.register.widget.container.gtm_item_slot": "ʇoןS ɯǝʇI W⟘⅁", + "ldlib.gui.editor.register.widget.container.gtm_phantom_fluid_slot": "ʇoןS pınןℲ ɯoʇuɐɥԀ W⟘⅁", + "ldlib.gui.editor.register.widget.container.gtm_phantom_item_slot": "ʇoןS ɯǝʇI ɯoʇuɐɥԀ W⟘⅁", "mataarmor.hud.supply_mode": "%s :ǝpoW ʎןddnS", "material.gtceu.acetic_acid": "pıɔⱯ ɔıʇǝɔⱯ", "material.gtceu.acetic_anhydride": "ǝpıɹpʎɥuⱯ ɔıʇǝɔⱯ", @@ -4694,6 +4943,9 @@ "material.gtceu.bastnasite": "ǝʇısɐuʇsɐᗺ", "material.gtceu.battery_alloy": "ʎoןןⱯ ʎɹǝʇʇɐᗺ", "material.gtceu.bauxite": "ǝʇıxnɐᗺ", + "material.gtceu.bauxite_slag": "bɐןS ǝʇıxnɐᗺ", + "material.gtceu.bauxite_sludge": "ǝbpnןS ǝʇıxnɐᗺ", + "material.gtceu.bauxite_slurry": "ʎɹɹnןS ǝʇıxnɐᗺ", "material.gtceu.bentonite": "ǝʇıuoʇuǝᗺ", "material.gtceu.benzene": "ǝuǝzuǝᗺ", "material.gtceu.berkelium": "ɯnıןǝʞɹǝᗺ", @@ -4776,6 +5028,7 @@ "material.gtceu.cooperite": "ǝʇıuopןǝɥS", "material.gtceu.copernicium": "ɯnıɔıuɹǝdoƆ", "material.gtceu.copper": "ɹǝddoƆ", + "material.gtceu.cracked_bauxite_slurry": "ʎɹɹnןS ǝʇıxnɐᗺ pǝʞɔɐɹƆ", "material.gtceu.creosote": "ǝʇosoǝɹƆ", "material.gtceu.cumene": "ǝuǝɯnƆ", "material.gtceu.cupric_oxide": "ǝpıxO ɔıɹdnƆ", @@ -4787,6 +5040,7 @@ "material.gtceu.damascus_steel": "ןǝǝʇS snɔsɐɯɐᗡ", "material.gtceu.dark_ash": "ɥsⱯ ʞɹɐᗡ", "material.gtceu.darmstadtium": "ɯnıʇpɐʇsɯɹɐᗡ", + "material.gtceu.decalcified_bauxite_sludge": "ǝbpnןS ǝʇıxnɐᗺ pǝıɟıɔןɐɔǝᗡ", "material.gtceu.deepslate": "ǝʇɐןsdǝǝᗡ", "material.gtceu.depleted_uranium_hexafluoride": "ǝpıɹonןɟɐxǝH ɯnıuɐɹ∩ pǝʇǝןdǝᗡ", "material.gtceu.deuterium": "ɯnıɹǝʇnǝᗡ", @@ -4918,6 +5172,7 @@ "material.gtceu.hypochlorous_acid": "pıɔⱯ snoɹoןɥɔodʎH", "material.gtceu.ice": "ǝɔI", "material.gtceu.ilmenite": "ǝʇıuǝɯןI", + "material.gtceu.ilmenite_slag": "bɐןS ǝʇıuǝɯןI", "material.gtceu.impure_enriched_naquadah_solution": "uoıʇnןoS ɥɐpɐnbɐN pǝɥɔıɹuƎ ǝɹndɯI", "material.gtceu.impure_naquadria_solution": "uoıʇnןoS ɐıɹpɐnbɐN ǝɹndɯI", "material.gtceu.incoloy_ma_956": "9ϛ6-ⱯW ʎoןoɔuI", @@ -5286,7 +5541,7 @@ "material.gtceu.xenon": "uouǝX", "material.gtceu.yellow_dye": "ǝʎᗡ ʍoןןǝʎ", "material.gtceu.yellow_garnet": "ʇǝuɹɐ⅁ ʍoןןǝʎ", - "material.gtceu.yellow_limonite": "ǝʇıuoɯıꞀ ʍoןןǝʎ", + "material.gtceu.yellow_limonite": "ǝʇıuoɯıꞀ", "material.gtceu.ytterbium": "ɯnıqɹǝʇʇʎ", "material.gtceu.yttrium": "ɯnıɹʇʇʎ", "material.gtceu.yttrium_barium_cuprate": "ǝʇɐɹdnƆ ɯnıɹɐᗺ ɯnıɹʇʇʎ", @@ -5507,6 +5762,7 @@ "tagprefix.spring": "buıɹdS %s", "tagprefix.stairs": "sɹıɐʇS %s", "tagprefix.stone": "ǝɹO %s", + "tagprefix.surface_rock": "ʞɔoᴚ ǝɔɐɟɹnS %s", "tagprefix.tiny_dust": "ʇsnᗡ %s ɟo ǝןıԀ ʎuı⟘", "tagprefix.tuff": "ǝɹO %s ɟɟn⟘", "tagprefix.turbine_blade": "ǝpɐןᗺ ǝuıqɹn⟘ %s", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index 5e737f48bf8..acc5ccda0f3 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -91,8 +91,8 @@ "behaviour.setting.output.direction.tooltip": "%s output direction: %s", "behaviour.soft_hammer": "Activates and Deactivates Machines", "behaviour.soft_hammer.disabled": "Working Disabled", + "behaviour.soft_hammer.disabled_cycle": "Working Disabled after current cycle", "behaviour.soft_hammer.enabled": "Working Enabled", - "behaviour.soft_hammer.idle_after_cycle": "Pause machine after current cycle", "behaviour.wrench": "Rotates Blocks on Rightclick", "block.filter_casing.tooltip": "Creates a §aParticle-Free§7 environment", "block.gtceu.acid_hazard_sign_block": "Acid Hazard Sign Block", @@ -109,6 +109,7 @@ "block.gtceu.assembly_line_unit": "Assembly Control Casing", "block.gtceu.atomic_casing": "Atomic Casing", "block.gtceu.auto_maintenance_hatch": "Auto Maintenance Hatch", + "block.gtceu.basic_data_access_hatch": "Basic Data Access Hatch", "block.gtceu.bio_hazard_sign_block": "Bio Hazard Sign Block", "block.gtceu.black_borderless_lamp": "Black Borderless Lamp", "block.gtceu.black_lamp": "Black Lamp", @@ -138,6 +139,7 @@ "block.gtceu.casing_coke_bricks": "Coke Oven Bricks", "block.gtceu.casing_grate": "Grate Machine Casing", "block.gtceu.causality_hazard_sign_block": "Causality Hazard Sign Block", + "block.gtceu.central_monitor": "Central Monitor", "block.gtceu.charcoal_pile_igniter": "Charcoal Pile Igniter", "block.gtceu.chiseled_dark_concrete": "Chiseled Dark Concrete", "block.gtceu.chiseled_light_concrete": "Chiseled Light Concrete", @@ -799,6 +801,7 @@ "block.gtceu.mob_infestation_hazard_sign_block": "Mob Infestation Hazard Sign Block", "block.gtceu.mob_spawner_hazard_sign_block": "Mob Spawner Hazard Sign Block", "block.gtceu.molybdenum_disilicide_coil_block": "Molybdenum Disilicide Coil Block", + "block.gtceu.monitor": "Monitor", "block.gtceu.mossy_dark_concrete_bricks": "Mossy Dark Concrete Bricks", "block.gtceu.mossy_dark_concrete_cobblestone": "Mossy Dark Concrete Cobblestone", "block.gtceu.mossy_light_concrete_bricks": "Mossy Light Concrete Bricks", @@ -1703,6 +1706,16 @@ "block.surface_rock": "%s Surface Rock", "button.gtceu.mark_as_depleted.name": "Mark as Depleted", "button.gtceu.toggle_waypoint.name": "Toggle Waypoint", + "command.gtceu.cape.failure.does_not_exist": "Cape %s does not exist", + "command.gtceu.cape.give.failed": "No new capes were unlocked", + "command.gtceu.cape.give.success.multiple": "Unlocked %s capes for %s players", + "command.gtceu.cape.give.success.single": "Unlocked %s capes for %s", + "command.gtceu.cape.take.failed": "No capes could be removed", + "command.gtceu.cape.take.success.multiple": "Took %s capes from %s players", + "command.gtceu.cape.take.success.single": "Took %s capes from %s", + "command.gtceu.cape.use.failed": "%s can't use cape %s because they don't have it (or it doesn't exist)!", + "command.gtceu.cape.use.success": "%s is now using cape %s", + "command.gtceu.cape.use.success.none": "%s is no longer using a cape", "command.gtceu.dump_data.success": "Dumped %s resources from registry %s to %s", "command.gtceu.medical_condition.get": "Player %s has these medical conditions:", "command.gtceu.medical_condition.get.element": "Condition %s§r: %s minutes %s seconds", @@ -1716,6 +1729,7 @@ "config.gtceu.option.allUniqueStoneTypes": "allUniqueStoneTypes", "config.gtceu.option.animationTime": "animationTime", "config.gtceu.option.armorHud": "armorHud", + "config.gtceu.option.batchDuration": "batchDuration", "config.gtceu.option.bedrockOreDistance": "bedrockOreDistance", "config.gtceu.option.bedrockOreDropTagPrefix": "bedrockOreDropTagPrefix", "config.gtceu.option.borderColor": "borderColor", @@ -1725,6 +1739,8 @@ "config.gtceu.option.casingsPerCraft": "casingsPerCraft", "config.gtceu.option.cleanMultiblocks": "cleanMultiblocks", "config.gtceu.option.client": "client", + "config.gtceu.option.coloredTieredMachineOutline": "coloredTieredMachineOutline", + "config.gtceu.option.coloredWireOutline": "coloredWireOutline", "config.gtceu.option.compat": "compat", "config.gtceu.option.debug": "debug", "config.gtceu.option.debugWorldgen": "debugWorldgen", @@ -1794,6 +1810,7 @@ "config.gtceu.option.machineSounds": "machineSounds", "config.gtceu.option.machines": "machines", "config.gtceu.option.machinesEmissiveTextures": "machinesEmissiveTextures", + "config.gtceu.option.machinesHaveBERsByDefault": "machinesHaveBERsByDefault", "config.gtceu.option.meHatchEnergyUsage": "meHatchEnergyUsage", "config.gtceu.option.minerSpeed": "minerSpeed", "config.gtceu.option.minimap": "minimap", @@ -1819,7 +1836,6 @@ "config.gtceu.option.oreVeins": "oreVeins", "config.gtceu.option.ownerOPBypass": "ownerOPBypass", "config.gtceu.option.prospectorEnergyUseMultiplier": "prospectorEnergyUseMultiplier", - "config.gtceu.option.recipeProgressLowEnergy": "recipeProgressLowEnergy", "config.gtceu.option.recipes": "recipes", "config.gtceu.option.removeSmeltingForEBFMetals": "removeSmeltingForEBFMetals", "config.gtceu.option.removeVanillaBlockRecipes": "removeVanillaBlockRecipes", @@ -1874,6 +1890,7 @@ "config.jade.plugin_gtceu.cable_info": "[GTCEu] Cable Info", "config.jade.plugin_gtceu.controllable_provider": "[GTCEu] Controllable", "config.jade.plugin_gtceu.electric_container_provider": "[GTCEu] Electric Container", + "config.jade.plugin_gtceu.energy_converter_provider": "[GTCEu] Energy Converter Mode", "config.jade.plugin_gtceu.exhaust_vent_info": "[GTCEu] Exhaust Vent Info", "config.jade.plugin_gtceu.hazard_cleaner_provider": "[GTCEu] Hazard Cleaner", "config.jade.plugin_gtceu.machine_mode": "[GTCEu] Machine Mode", @@ -1971,6 +1988,10 @@ "cover.ender_fluid_link.private.tooltip.disabled.1": "Private mode uses the player who originally placed the cover", "cover.ender_fluid_link.private.tooltip.enabled": "Switch to public tank mode", "cover.ender_fluid_link.title": "Ender Fluid Link", + "cover.ender_fluid_link.tooltip.channel_description": "Set channel description with input text", + "cover.ender_fluid_link.tooltip.channel_name": "Set channel name with input text", + "cover.ender_fluid_link.tooltip.clear_button": "Clear channel description", + "cover.ender_fluid_link.tooltip.list_button": "Show channel list", "cover.filter.blacklist.disabled": "Whitelist", "cover.filter.blacklist.enabled": "Blacklist", "cover.filter.mode.filter_both": "Filter Insert/Extract", @@ -2161,8 +2182,23 @@ "gtceu.cable.superconductor": "%s §dSuperconductor", "gtceu.cable.voltage": "§aMax Voltage:§r §a%d §a(%s§a)", "gtceu.canner": "Canner", + "gtceu.central_monitor.gui.create_group": "Create group", + "gtceu.central_monitor.gui.currently_editing": "Currently editing: %s", + "gtceu.central_monitor.gui.remove_from_group": "Remove from group", + "gtceu.central_monitor.gui.set_target": "Set target", + "gtceu.central_monitor.info_tooltip.0": "In order to use monitors, you have to split them into groups first. A group may only have 1 module in it.", + "gtceu.central_monitor.info_tooltip.1": "Select them by left-clicking, then click 'Create group'.", + "gtceu.central_monitor.info_tooltip.2": "Then in the settings page for the group you can insert a module, you can configure it in the same page.", + "gtceu.central_monitor.info_tooltip.3": "To delete a group, select all of it's components and click 'Remove from group'.", + "gtceu.central_monitor.info_tooltip.4": "You can quickly select all components of a group by clicking on it's name. Click again to unselect.", + "gtceu.central_monitor.info_tooltip.5": "Some modules may display things depending on the block they target, to set a target for a group select any component of that group and right-click on the target component.", + "gtceu.central_monitor.info_tooltip.6": "You may wish to select a target that is not in the multiblock, you have to use the wireless transmitter cover for that.", + "gtceu.central_monitor.info_tooltip.7": "Place the cover on the target block, right-click it with a data stick and put that data stick into a data access hatch in the multiblock.", + "gtceu.central_monitor.info_tooltip.8": "Then select the data access hatch as the target, and set the slot index of your data stick in the number field that appeared.", + "gtceu.central_monitor.size": "Size: (%d+1+%d)x(%d+1+%d)", "gtceu.centrifuge": "Centrifuge", "gtceu.chance_logic.and": "AND", + "gtceu.chance_logic.first": "FIRST", "gtceu.chance_logic.none": "NONE", "gtceu.chance_logic.or": "OR", "gtceu.chance_logic.xor": "XOR", @@ -2172,33 +2208,22 @@ "gtceu.circuit_assembler": "Circuit Assembler", "gtceu.coke_oven": "Coke Oven", "gtceu.combustion_generator": "Combustion Generator", - "gtceu.command.copy.click_to_copy": "Click to copy", - "gtceu.command.copy.copied_and_click": "copied to clipboard. Click to copy again", - "gtceu.command.copy.copied_end": "] to the clipboard", - "gtceu.command.copy.copied_start": "Copied [", - "gtceu.command.hand.electric": "Electric Info: %d / %d EU - Tier: %d; Is Battery: %s", - "gtceu.command.hand.fluid": "Fluid Info: %d / %d mB; Can Fill: %s; Can Drain: %s", - "gtceu.command.hand.fluid2": "Fluid Id:", - "gtceu.command.hand.groovy": "Consider using §6/gs hand", - "gtceu.command.hand.item_id": "Item: %s (Metadata: %d)", - "gtceu.command.hand.material": "Material Id:", - "gtceu.command.hand.meta_item": "MetaItem Id:", - "gtceu.command.hand.no_item": "You must hold something in main hand or off hand before executing this command.", - "gtceu.command.hand.not_a_player": "This command is only usable by a player.", - "gtceu.command.hand.ore_prefix": "Ore prefix:", - "gtceu.command.hand.tag_entries": "§3Tag entries:", - "gtceu.command.hand.tool_stats": "Tool Stats Class: %s", - "gtceu.command.hand.usage": "Usage: /gtceu hand", - "gtceu.command.recipecheck.begin": "Starting recipe conflict check...", - "gtceu.command.recipecheck.end": "Recipe conflict check found %d possible conflicts. Check the server log for more info", - "gtceu.command.recipecheck.end_no_conflicts": "No recipe conflicts found!", - "gtceu.command.recipecheck.usage": "Usage: /gtceu recipecheck", - "gtceu.command.usage": "Usage: /gtceu ", - "gtceu.command.worldgen.reload.failed": "Worldgen reload failed. Check console for errors.", - "gtceu.command.worldgen.reload.success": "Worldgen successfully reloaded from config.", - "gtceu.command.worldgen.reload.usage": "Usage: /gtceu worldgen reload", - "gtceu.command.worldgen.usage": "Usage: /gtceu worldgen ", "gtceu.compressor": "Compressor", + "gtceu.computer_monitor_cover.error.bf_invalid": "Invalid character at %d", + "gtceu.computer_monitor_cover.error.bf_invalid_num": "Invalid number at index %d when processing symbol number %d", + "gtceu.computer_monitor_cover.error.exception": "Unexpected exception occurred: %s", + "gtceu.computer_monitor_cover.error.invalid_args": "Invalid arguments!", + "gtceu.computer_monitor_cover.error.invalid_number": "Invalid number '%s'!", + "gtceu.computer_monitor_cover.error.missing_item": "Missing %s in slot %d!", + "gtceu.computer_monitor_cover.error.no_ae": "Cover holder does not have an AE2 network!", + "gtceu.computer_monitor_cover.error.no_cover": "No cover!", + "gtceu.computer_monitor_cover.error.no_placeholder": "No such placeholder: '%s'!", + "gtceu.computer_monitor_cover.error.not_enough_args": "Expected at least %d args, got %d!", + "gtceu.computer_monitor_cover.error.not_in_range": "Expected %s to be between %d and %d (inclusive), got %d", + "gtceu.computer_monitor_cover.error.not_supported": "This feature is not supported by this block/cover!", + "gtceu.computer_monitor_cover.error.unclosed_bracket": "Unclosed bracket!", + "gtceu.computer_monitor_cover.error.unexpected_bracket": "Unexpected closing bracket!", + "gtceu.computer_monitor_cover.error.wrong_number_of_args": "Expected %d args, got %d!", "gtceu.cover.activity_detector.message_activity_inverted": "Monitoring Inverted Activity Status", "gtceu.cover.activity_detector.message_activity_normal": "Monitoring Normal Activity Status", "gtceu.cover.activity_detector_advanced.message_activity_inverted": "Monitoring Inverted Progress Status", @@ -2234,6 +2259,8 @@ "gtceu.direction.tooltip.left": "Left", "gtceu.direction.tooltip.right": "Right", "gtceu.direction.tooltip.up": "Up", + "gtceu.display_source.computer_monitor_cover": "Computer Monitor Cover", + "gtceu.display_target.computer_monitor_cover": "Computer Monitor Cover", "gtceu.distillation_tower": "Distillation Tower", "gtceu.distillery": "Distillery", "gtceu.duct_pipe.transfer_rate": "§bAir transfer rate: %s", @@ -2280,7 +2307,15 @@ "gtceu.fusion_reactor": "Fusion Reactor", "gtceu.gas_collector": "Gas Collector", "gtceu.gas_turbine": "Gas Turbine", + "gtceu.gui.adv_stocking_config.min_fluid_count": "Minimum Fluid Stack Size for Automated Pulling", + "gtceu.gui.adv_stocking_config.min_item_count": "Minimum Item Stack Size for Automated Pulling", + "gtceu.gui.adv_stocking_config.ticks_per_cycle": "Delay between item list updates", + "gtceu.gui.adv_stocking_config.title": "Configure Automatic Stocking", "gtceu.gui.auto_output.name": "auto", + "gtceu.gui.central_monitor.group": "Group: %s", + "gtceu.gui.central_monitor.group_default_name": "Group #%d", + "gtceu.gui.central_monitor.none": "none", + "gtceu.gui.central_monitor.text_scale": "Text scale", "gtceu.gui.charger_slot.tooltip.0": "§fCharger Slot§r", "gtceu.gui.charger_slot.tooltip.1": "§7Draws power from %s batteries§r", "gtceu.gui.charger_slot.tooltip.2": "§7Charges %s tools and batteries", @@ -2289,6 +2324,18 @@ "gtceu.gui.chunkmode.enabled.0": "Chunk Mode Enabled: Click to Disable.", "gtceu.gui.chunkmode.enabled.1": "§7Switching requires an idle machine.", "gtceu.gui.circuit.title": "Circuit Settings", + "gtceu.gui.computer_monitor_cover.edit_blank_placeholders": "Edit blank placeholders", + "gtceu.gui.computer_monitor_cover.edit_displayed_text": "Edit displayed text", + "gtceu.gui.computer_monitor_cover.main_textbox_tooltip.0": "Input string to display on line %d here.", + "gtceu.gui.computer_monitor_cover.main_textbox_tooltip.1": "It can have placeholders, for example: 'Energy: {energy}/{energyCapacity} EU'", + "gtceu.gui.computer_monitor_cover.main_textbox_tooltip.2": "Placeholders can also be inside other placeholders.", + "gtceu.gui.computer_monitor_cover.placeholder_reference.0": "All placeholders:", + "gtceu.gui.computer_monitor_cover.placeholder_reference.1": "(hover for more info)", + "gtceu.gui.computer_monitor_cover.second_page_textbox_tooltip.0": "Input placeholder to be used in place of %s '{}' here.", + "gtceu.gui.computer_monitor_cover.second_page_textbox_tooltip.1": "For example, you can have a string 'Energy: {}/{} EU' and 'energy' and 'energyCapacity' in these text boxes.", + "gtceu.gui.computer_monitor_cover.slot_tooltip.0": "A slot for items that some placeholders can reference", + "gtceu.gui.computer_monitor_cover.slot_tooltip.1": "Slot number: %d", + "gtceu.gui.computer_monitor_cover.update_interval": "Update interval (in ticks)", "gtceu.gui.config_slot": "§fConfig Slot§r", "gtceu.gui.config_slot.auto_pull_managed": "§4Disabled:§7 Managed by Auto-Pull", "gtceu.gui.config_slot.remove": "§7Right click to §4clear§7 config slot.§r", @@ -2306,10 +2353,15 @@ "gtceu.gui.content.chance_boosted_logic": "Chance at Tier: %s%% (%s)", "gtceu.gui.content.chance_nc": "§cNot Consumed§r", "gtceu.gui.content.chance_nc_short": "§cNC§r", + "gtceu.gui.content.chance_no_boost": "Chance: %s%%", + "gtceu.gui.content.chance_no_boost_logic": "Chance: %s%% (%s)", "gtceu.gui.content.chance_tier_boost_minus": "Bonus Chance: -%s%%/tier", "gtceu.gui.content.chance_tier_boost_plus": "Bonus Chance: +%s%%/tier", "gtceu.gui.content.count_range": "%s-%sx", + "gtceu.gui.content.fluid_range": "%s-%smB", "gtceu.gui.content.per_tick": "§aConsumed/Produced Per Tick§r", + "gtceu.gui.content.range": "%s-%s", + "gtceu.gui.content.times_item": "x %s", "gtceu.gui.content.tips.per_second_short": "§a/second§r", "gtceu.gui.content.tips.per_tick_short": "§a/tick§r", "gtceu.gui.content.units.per_second": "/s", @@ -2371,6 +2423,9 @@ "gtceu.gui.silktouch.enabled.0": "Silk Touch Enabled: Click to Disable.", "gtceu.gui.silktouch.enabled.1": "§7Switching requires an idle machine.", "gtceu.gui.sort": "Sort", + "gtceu.gui.title.adv_stocking_config.min_fluid_count": "Min. Fluid Count", + "gtceu.gui.title.adv_stocking_config.min_item_count": "Min. Item Count", + "gtceu.gui.title.adv_stocking_config.ticks_per_cycle": "Ticks Per Cycle", "gtceu.gui.title_bar.back": "Back", "gtceu.gui.title_bar.page_switcher": "Pages", "gtceu.gui.toggle_view.disabled": "Toggle View (Fluids)", @@ -2391,8 +2446,11 @@ "gtceu.item_filter.footer": "§eClick with item to override", "gtceu.item_list.item_stored": "§7Stored: %d", "gtceu.item_pipe.priority": "§9Priority: §f%d", + "gtceu.jade.amperage_use": "%s A", + "gtceu.jade.at": " @ ", "gtceu.jade.cleaned_this_second": "Cleaned hazard: %s/s", "gtceu.jade.energy_stored": "%d / %d EU", + "gtceu.jade.fluid_use": "%s mB/t", "gtceu.jade.progress_computation": "%s / %s CWU", "gtceu.jade.progress_sec": "%s / %s s", "gtceu.jade.progress_tick": "%s / %s t", @@ -2511,14 +2569,16 @@ "gtceu.machine.available_recipe_map_4.tooltip": "Available Recipe Types: %s, %s, %s, %s", "gtceu.machine.basic.input_from_output_side.allow": "Allow Input from Output Side: ", "gtceu.machine.basic.input_from_output_side.disallow": "Disallow Input from Output Side: ", + "gtceu.machine.batch_disabled": "Batching Disabled", + "gtceu.machine.batch_enabled": "Batching Enabled", "gtceu.machine.bedrock_ore_miner.depletion": "§bDepletion Rate: §f%s%%", "gtceu.machine.bedrock_ore_miner.description": "§7Drills ores from veins under bedrock.", "gtceu.machine.bedrock_ore_miner.production": "§eProduction Multiplier: §f%dx, %fx overclocked", "gtceu.machine.block_breaker.speed_bonus": "§eSpeed Bonus: §f%d%%", "gtceu.machine.block_breaker.tooltip": "§7Mines block on front face and collects its drops", - "gtceu.machine.boiler.info.cooling.down": "§9Cooling down§r%s", - "gtceu.machine.boiler.info.heating.up": "§cHeating up§r%s", - "gtceu.machine.boiler.info.producing.steam": " §a(boiling water)", + "gtceu.machine.boiler.info.cooling.down": "§9Cooling§r", + "gtceu.machine.boiler.info.heating.up": "§cHeating§r", + "gtceu.machine.boiler.info.production.data": "§aProducing %s§a mB/t", "gtceu.machine.buffer.tooltip": "A Small Buffer to store Items and Fluids", "gtceu.machine.canner.jei_description": "You can fill and empty any fluid containers with the Fluid Canner (e.g. Buckets or Fluid Cells)", "gtceu.machine.central_monitor.tooltip": "But can it run Doom?", @@ -2648,7 +2708,7 @@ "gtceu.machine.hp_steam_forge_hammer.tooltip": "§7Forge Hammer", "gtceu.machine.hp_steam_furnace.tooltip": "§7Smelting things with compressed Steam", "gtceu.machine.hp_steam_liquid_boiler.tooltip": "§7Faster than Small Steam Liquid Boiler", - "gtceu.machine.hp_steam_macerator.tooltip": "§7Macerating your Ores", + "gtceu.machine.hp_steam_macerator.tooltip": "§7Macerating your Ores without Byproducts", "gtceu.machine.hp_steam_rock_crusher.tooltip": "§7Place Water and Lava horizontally adjacent", "gtceu.machine.hp_steam_solar_boiler.tooltip": "§7Steam Power by Sun", "gtceu.machine.hp_steam_solid_boiler.tooltip": "§7Faster than the Small Steam Solid Fuel Boiler", @@ -2786,7 +2846,7 @@ "gtceu.machine.lp_steam_forge_hammer.tooltip": "§7Forge Hammer", "gtceu.machine.lp_steam_furnace.tooltip": "§7Smelting things with compressed Steam", "gtceu.machine.lp_steam_liquid_boiler.tooltip": "§7A Boiler running off Liquids", - "gtceu.machine.lp_steam_macerator.tooltip": "§7Macerating your Ores", + "gtceu.machine.lp_steam_macerator.tooltip": "§7Macerating your Ores without Byproducts", "gtceu.machine.lp_steam_rock_crusher.tooltip": "§7Place Water and Lava horizontally adjacent", "gtceu.machine.lp_steam_solar_boiler.tooltip": "§7Steam Power by Sun", "gtceu.machine.lp_steam_solid_boiler.tooltip": "§7An early way to get Steam Power", @@ -3153,6 +3213,7 @@ "gtceu.multiblock.active_transformer.max_input": "§aMax Input: §f%s EU/t", "gtceu.multiblock.active_transformer.max_output": "§cMax Output: §f%s EU/t", "gtceu.multiblock.assembly_line.description": "The Assembly Line is a large multiblock structure consisting of 5 to 16 \"slices\". In theory, it's large Assembling Machine, used for creating advanced crafting components.", + "gtceu.multiblock.batch_enabled": "Batching Mode: Enabled (%sx)", "gtceu.multiblock.blast_furnace.max_temperature": "Heat Capacity: %s", "gtceu.multiblock.central_monitor.height": "Screen Height:", "gtceu.multiblock.central_monitor.height_modify": "Modify Height: %d", @@ -3180,6 +3241,9 @@ "gtceu.multiblock.cracking_unit.energy": "Energy Usage: %s%%", "gtceu.multiblock.data_bank.description": "The Data Bank is a multiblock structure used for sharing Assembly Line Research Data between multiple Assembly Lines. Additionally, it enables Assembly Lines to read more complex research data on Data Modules.", "gtceu.multiblock.data_bank.providing": "Providing data.", + "gtceu.multiblock.dimension": "§eDimensions: §r%sx%sx%s", + "gtceu.multiblock.dimensions.0": "Dimensions: ", + "gtceu.multiblock.dimensions.1": " §c§lWidth§r: %s, §a§lHeight§r: %s, §9§lDepth§r: %s ", "gtceu.multiblock.distillation_tower.description": "The Distillation Tower is a multiblock structure used for distilling the various types of Oil and some of their byproducts. Each layer must have exactly one output hatch, starting from the second one. The bottom layer can output items and insert fluids in any position.", "gtceu.multiblock.distillation_tower.distilling_fluid": "Distilling %s", "gtceu.multiblock.electric_blast_furnace.description": "The Electric Blast Furnace (EBF) is a multiblock structure used for smelting alloys, cooking metals and refining ores. It is required for obtaining high-tier alloys and metals, such as aluminium, stainless steel, titanium, and naquadah alloy.", @@ -3388,12 +3452,179 @@ "gtceu.ownership.name.ftb": "FTB Teams", "gtceu.ownership.name.player": "Player", "gtceu.packer": "Packer", + "gtceu.part_sharing.disabled": "Multiblock Sharing §4Disabled", + "gtceu.part_sharing.enabled": "Multiblock Sharing §aEnabled", + "gtceu.placeholder_info.active.0": "Returns a 1 if the block the cover is attached to is currently running a recipe, 0 otherwise.", + "gtceu.placeholder_info.active.1": "Usage:", + "gtceu.placeholder_info.active.2": " {active} -> whether there's a currently running recipe", + "gtceu.placeholder_info.ae2crafting.0": "Returns information about auto-crafting in the ME network of the block this cover is on.", + "gtceu.placeholder_info.ae2crafting.1": "Usage:", + "gtceu.placeholder_info.ae2crafting.10": " {ae2crafting get time} -> the amount of time elapsed from the start of the craft (in nanoseconds), or 0 if the CPU is idle", + "gtceu.placeholder_info.ae2crafting.2": " {ae2crafting get amount} -> the amount of crafting CPUs in the ME network", + "gtceu.placeholder_info.ae2crafting.3": " {ae2crafting get storage} -> the amount of crafting storage the specified CPU has", + "gtceu.placeholder_info.ae2crafting.4": " {ae2crafting get threads} -> the amount of co-processors the specified CPU has", + "gtceu.placeholder_info.ae2crafting.5": " {ae2crafting get name} -> the name of the specified crafting CPU", + "gtceu.placeholder_info.ae2crafting.6": " {ae2crafting get selectionMode} -> the selection mode of the specified crafting CPU (used for manual, automatic or both requests)", + "gtceu.placeholder_info.ae2crafting.7": " {ae2crafting get amount} -> the amount of the item that was requested, or 0 if the CPU is idle", + "gtceu.placeholder_info.ae2crafting.8": " {ae2crafting get item} -> the display name of the item that was requested, or 0 if the CPU is idle", + "gtceu.placeholder_info.ae2crafting.9": " {ae2crafting get progress} -> the crafting job progress, or 0 if the CPU is idle", + "gtceu.placeholder_info.ae2energy.0": "Returns the energy currently stored in the ME network of the block this cover is on.", + "gtceu.placeholder_info.ae2energy.1": "Usage:", + "gtceu.placeholder_info.ae2energy.2": " {ae2energy} -> the energy in the ME network (in AE units)", + "gtceu.placeholder_info.ae2fluidCount.0": "Same as fluidCount, but counts items in the ME network of the block this cover is attached to.", + "gtceu.placeholder_info.ae2fluidCount.1": "Note that counting all fluids may cause lag!", + "gtceu.placeholder_info.ae2fluidCount.2": "Usage:", + "gtceu.placeholder_info.ae2fluidCount.3": " {fluidCount [fluidId]} -> the amount of all fluids, or the fluid with fluidId if specified", + "gtceu.placeholder_info.ae2itemCount.0": "Same as itemCount, but counts items in the ME network of the block this cover is attached to.", + "gtceu.placeholder_info.ae2itemCount.1": "Note that counting by filter or all items may cause lag!", + "gtceu.placeholder_info.ae2itemCount.2": "Usage:", + "gtceu.placeholder_info.ae2itemCount.3": " {itemCount} -> total item amount", + "gtceu.placeholder_info.ae2itemCount.4": " {itemCount } -> amount of items with ids equal to item_id", + "gtceu.placeholder_info.ae2itemCount.5": " {itemCount filter } -> amount of items matching filter in specified slot of this cover", + "gtceu.placeholder_info.ae2maxPower.0": "Returns the energy capacity of the ME network of the block this cover is on.", + "gtceu.placeholder_info.ae2maxPower.1": "Usage:", + "gtceu.placeholder_info.ae2maxPower.2": " {ae2maxPower} -> the energy capacity of the ME network", + "gtceu.placeholder_info.ae2powerUsage.0": "Returns the energy consumption of the ME network of the block this cover is on.", + "gtceu.placeholder_info.ae2powerUsage.1": "Usage:", + "gtceu.placeholder_info.ae2powerUsage.2": " {ae2powerUsage} -> the energy consumption of the ME network", + "gtceu.placeholder_info.ae2spatial.0": "Returns information about spatial I/O in the ME network of the block this cover is on.", + "gtceu.placeholder_info.ae2spatial.1": "Usage:", + "gtceu.placeholder_info.ae2spatial.2": " {ae2spatial power} -> the amount of power required to initiate spatial I/O", + "gtceu.placeholder_info.ae2spatial.3": " {ae2spatial efficiency} -> the efficiency of the Spatial Containment Structure (SPS)", + "gtceu.placeholder_info.ae2spatial.4": " {ae2spatial size} -> the size of the SPS along the specified axis (example: 'Size: {sizeX}x{sizeY}x{sizeZ}')", + "gtceu.placeholder_info.amperage.0": "Returns the amperage in the wire/cable the cover is on.", + "gtceu.placeholder_info.amperage.1": "Usage:", + "gtceu.placeholder_info.amperage.2": " {amperage} -> the amperate in the wire/cable", + "gtceu.placeholder_info.bf.0": "Usage:", + "gtceu.placeholder_info.bf.1": " {bf } -> empty string", + "gtceu.placeholder_info.block.0": "Returns the block symbol (█).", + "gtceu.placeholder_info.block.1": "Usage:", + "gtceu.placeholder_info.block.2": " {block} -> '█'", + "gtceu.placeholder_info.calc.0": "Returns the result of a math function or operation.", + "gtceu.placeholder_info.calc.1": "Usage:", + "gtceu.placeholder_info.calc.2": " {calc } -> any_string", + "gtceu.placeholder_info.calc.3": " {calc } -> the result of the specified operation", + "gtceu.placeholder_info.calc.4": " {calc <+|-|*|/|//|>>|<<|%> } -> the result of the specified operation", + "gtceu.placeholder_info.cmd.0": "Executes Minecraft commands and returns their output.", + "gtceu.placeholder_info.cmd.1": "Requires a data item bound to a player, bind any data item to yourself by right-clicking with it.", + "gtceu.placeholder_info.cmd.2": "Usage:", + "gtceu.placeholder_info.cmd.3": " {cmd } -> command output", + "gtceu.placeholder_info.cmp.0": "Returns a 1 or 0 based on the expression in it's arguments", + "gtceu.placeholder_info.cmp.1": "Usage:", + "gtceu.placeholder_info.cmp.2": " {cmp } -> 1 or 0, operator is one of >, <, >=, <=, ==, !=", + "gtceu.placeholder_info.color.0": "Returns the text from the second argument, colored with the color from the first argument. All default minecraft chat colors can be used.", + "gtceu.placeholder_info.color.1": "Usage:", + "gtceu.placeholder_info.color.2": " {color } -> colored text", + "gtceu.placeholder_info.combine.0": "Combines all of it's arguments into a single string (by escaping all spaces between the arguments)", + "gtceu.placeholder_info.combine.1": "Example: {combine abc def ghi jkl mno} -> \"abc\\ def\\ ghi\\ jkl\\ mno\"", + "gtceu.placeholder_info.combine.2": "Usage:", + "gtceu.placeholder_info.combine.3": " {combine [arg1] [arg2] [arg3] ...} -> a string that will be treated as a single argument in further placeholders", + "gtceu.placeholder_info.count.0": "Returns how many of the provided arguments are equal to the first (compared as strings, so \"0\" != \"0.0\")", + "gtceu.placeholder_info.count.1": "Usage:", + "gtceu.placeholder_info.count.2": " {count [arg2] [arg3] [arg4] ...} -> the amount of arguments that are equal to the first", + "gtceu.placeholder_info.data.0": "Stores or retrieves some data from a data item (data stick/orb/module) in one of the slots.", + "gtceu.placeholder_info.data.1": "If you leave the argument empty, it will be replaced with the value p (p is an integer from 0 to (capacity - 1) that is stored in the data item nbt).", + "gtceu.placeholder_info.data.2": "Usage:", + "gtceu.placeholder_info.data.3": " {data get } -> the data stored in the item in the specified slot", + "gtceu.placeholder_info.data.4": " {data set } -> sets the data stored in the item in the specified slot, returns an empty string", + "gtceu.placeholder_info.data.5": " {data getp } -> p", + "gtceu.placeholder_info.data.6": " {data setp } -> sets p, returns an empty string", + "gtceu.placeholder_info.data.7": " {data inc } -> increments p by 1, if p becomes more than or equal to capacity, sets p to 0", + "gtceu.placeholder_info.data.8": " {data dec } -> decrements p by 1, if p becomes less than 0, sets p to (capacity - 1)", + "gtceu.placeholder_info.displayTarget.0": "Returns the specified line that was transmitted to this cover using a display link.", + "gtceu.placeholder_info.displayTarget.1": "Usage:", + "gtceu.placeholder_info.displayTarget.2": " {displayTarget } -> the text on the specified line (line number is 1-100)", + "gtceu.placeholder_info.energy.0": "Returns the amount of energy stored.", + "gtceu.placeholder_info.energy.1": "Usage:", + "gtceu.placeholder_info.energy.2": " {energy} -> the amount of energy stored", + "gtceu.placeholder_info.energyCapacity.0": "Returns the max amount of energy that can be stored", + "gtceu.placeholder_info.energyCapacity.1": "Usage:", + "gtceu.placeholder_info.energyCapacity.2": "{energyCapacity} -> the energy capacity", + "gtceu.placeholder_info.fluidCount.0": "Returns the amount of fluids (can be filtered).", + "gtceu.placeholder_info.fluidCount.1": "Usage:", + "gtceu.placeholder_info.fluidCount.2": " {fluidCount [fluidId]} -> the amount of all fluids, or the fluid with fluidId if specified", + "gtceu.placeholder_info.formatInt.0": "Returns a string representation of the provided integer", + "gtceu.placeholder_info.formatInt.1": "Example: {formatInt 1236457} -> 1.24M", + "gtceu.placeholder_info.formatInt.2": "Usage:", + "gtceu.placeholder_info.formatInt.3": " {formatInt } -> string representation of the int", + "gtceu.placeholder_info.fromAscii.0": "Returns the character represented by the provided ASCII code", + "gtceu.placeholder_info.fromAscii.1": "Usage:", + "gtceu.placeholder_info.fromAscii.2": " {fromAscii } -> a character", + "gtceu.placeholder_info.if.0": "Returns one of the arguments depending on the condition. The condition is considered true if it is not an empty string and is not equal to 0.", + "gtceu.placeholder_info.if.1": "Usage:", + "gtceu.placeholder_info.if.2": " {if [returned_if_false]}", + "gtceu.placeholder_info.itemCount.0": "Returns the amount of items (can be filtered).", + "gtceu.placeholder_info.itemCount.1": "Usage:", + "gtceu.placeholder_info.itemCount.2": " {itemCount} -> total item amount", + "gtceu.placeholder_info.itemCount.3": " {itemCount } -> amount of items with ids equal to item_id", + "gtceu.placeholder_info.itemCount.4": " {itemCount filter } -> amount of items matching filter in specified slot of this cover", + "gtceu.placeholder_info.maintenance.0": "Returns a 1 if there are maintenance problems in the block the cover is attached to, 0 otherwise.", + "gtceu.placeholder_info.maintenance.1": "Example: 'Maintenance status: {if {maintenance} FIXING\\ REQUIRED OK}'", + "gtceu.placeholder_info.maintenance.2": "Usage:", + "gtceu.placeholder_info.maintenance.3": " {maintenance} -> whether there are maintenance problems", + "gtceu.placeholder_info.maxProgress.0": "Returns the maximum progress of the currently running recipe of the block this cover is attached to.", + "gtceu.placeholder_info.maxProgress.1": "Example: 'Progress: {calc {calc {progress} / {maxProgress}} * 100}%'", + "gtceu.placeholder_info.maxProgress.2": "Usage:", + "gtceu.placeholder_info.maxProgress.3": " {maxProgress} -> the max progress of the currently running recipe", + "gtceu.placeholder_info.nbt.0": "Returns the nbt data of the item in the specified slot", + "gtceu.placeholder_info.nbt.1": "Usage:", + "gtceu.placeholder_info.nbt.2": " {nbt } -> nbt data", + "gtceu.placeholder_info.obf.0": "Returns the text from the first argument, obfuscated.", + "gtceu.placeholder_info.obf.1": "Usage:", + "gtceu.placeholder_info.obf.2": " {obf } -> obfuscated text", + "gtceu.placeholder_info.previousText.0": "Returns the text that was previously displayed by this cover at the specified line (before line-wrapping).", + "gtceu.placeholder_info.previousText.1": "Usage:", + "gtceu.placeholder_info.previousText.2": " {previousText } -> the text previously displayed on the specified line (index starts at 1)", + "gtceu.placeholder_info.progress.0": "Returns the progress of the currently running recipe of the block this cover is attached to.", + "gtceu.placeholder_info.progress.1": "Note that progress is an integer between 0 and {maxProgress}", + "gtceu.placeholder_info.progress.2": "Usage:", + "gtceu.placeholder_info.progress.3": " {progress} -> the progress of the currently running recipe", + "gtceu.placeholder_info.random.0": "Returns a random number in the specified interval (inclusive).", + "gtceu.placeholder_info.random.1": "Usage:", + "gtceu.placeholder_info.random.2": " {random } -> a random number between min and max (inclusive)", + "gtceu.placeholder_info.redstone.0": "Returns the redstone signal strength or sets the redstone output strength", + "gtceu.placeholder_info.redstone.1": "Usage:", + "gtceu.placeholder_info.redstone.2": " {redstone get } -> redstone signal strength (0-15) at the specified side", + "gtceu.placeholder_info.redstone.3": " {redstone get link } -> redstone signal strength of a Create redstone link frequency specified by a linked controller in slot #slot_index. freq_slot_index is the index of the frequency inside the controller (from left to right, 0-6)", + "gtceu.placeholder_info.redstone.4": " {redstone set } -> empty string, sets the redstone output strength from this cover's side", + "gtceu.placeholder_info.redstone.5": " {redstone set link } -> empty string, broadcasts the specified redstone power on the specified Create redstone link frequency", + "gtceu.placeholder_info.repeat.0": "Returns the text from the second arguments, repeated the amount of times specified in the first argument.", + "gtceu.placeholder_info.repeat.1": "Usage:", + "gtceu.placeholder_info.repeat.2": " {repeat } -> text repeated the specified amount of times", + "gtceu.placeholder_info.select.0": "Returns the argument at the specified index (starting from 0)", + "gtceu.placeholder_info.select.1": "Usage:", + "gtceu.placeholder_info.select.2": " {select [arg1] [arg2] [arg3] ... -> argument at the specified index", + "gtceu.placeholder_info.strike.0": "Returns the text from the first text, displaying it as if it was crossed out", + "gtceu.placeholder_info.strike.1": "Usage:", + "gtceu.placeholder_info.strike.2": " {strike } -> crossed-out text", + "gtceu.placeholder_info.subList.0": "Returns arguments from with indexes from l (inclusive) to r (exclusive) (starting from 0)", + "gtceu.placeholder_info.subList.1": "Usage:", + "gtceu.placeholder_info.subList.2": " {subList [arg0] [arg1] ...} -> all arguments with indexes from l to r separated by spaces", + "gtceu.placeholder_info.tick.0": "Returns the amount of ticks passed from when this cover was placed.", + "gtceu.placeholder_info.tick.1": "Usage:", + "gtceu.placeholder_info.tick.2": " {tick} -> the amount of ticks", + "gtceu.placeholder_info.tm.0": "Returns the ™ symbol", + "gtceu.placeholder_info.tm.1": "Usage:", + "gtceu.placeholder_info.tm.2": " {tm} -> the ™ symbol", + "gtceu.placeholder_info.toAscii.0": "Returns the ASCII code of the provided character", + "gtceu.placeholder_info.toAscii.1": "Usage:", + "gtceu.placeholder_info.toAscii.2": " {toAscii } -> ASCII code of the character", + "gtceu.placeholder_info.toChars.0": "Returns the characters of the provided string with spaces between them", + "gtceu.placeholder_info.toChars.1": "Example: {toChars example} -> 'e x a m p l e'", + "gtceu.placeholder_info.toChars.2": "Usage:", + "gtceu.placeholder_info.toChars.3": " {toChars } -> characters", + "gtceu.placeholder_info.underline.0": "Returns the text from the first argument, underlined", + "gtceu.placeholder_info.underline.1": "Usage:", + "gtceu.placeholder_info.underline.2": " {underline } -> underlined text", + "gtceu.placeholder_info.voltage.0": "Returns the voltage in the wire/cable the cover is on.", + "gtceu.placeholder_info.voltage.1": "Usage:", + "gtceu.placeholder_info.voltage.2": " {voltage} -> the voltage in the wire/cable", "gtceu.plasma_generator": "Plasma Generator", "gtceu.polarizer": "Polarizer", "gtceu.primitive_blast_furnace": "Primitive Blast Furnace", "gtceu.pyrolyse_oven": "Pyrolyse Oven", - "gtceu.recipe.amperage": "Amperage: %s", - "gtceu.recipe.category.arc_furnace_recycling": "Plasma Scrapping", + "gtceu.recipe.byproduct_tier": "Byproducts from %s§r+", + "gtceu.recipe.category.arc_furnace_recycling": "Arc Scrapping", "gtceu.recipe.category.chem_dyes": "Chemical Dyeing", "gtceu.recipe.category.extractor_recycling": "Scrap Remelting", "gtceu.recipe.category.ingot_molding": "Metal Molding", @@ -3411,8 +3642,9 @@ "gtceu.recipe.duration": "Duration: %s secs", "gtceu.recipe.environmental_hazard": "§cArea must have %s", "gtceu.recipe.environmental_hazard.reverse": "§cArea must be free of %s", - "gtceu.recipe.eu": "Usage: %s EU/t", - "gtceu.recipe.eu_inverted": "Generation: %s EU/t", + "gtceu.recipe.eu": "Usage: %s A @ %s", + "gtceu.recipe.eu.total": "%s EU/t", + "gtceu.recipe.eu_inverted": "Generation: %s A @ %s", "gtceu.recipe.eu_to_start": "EU To Start: %sEU%s", "gtceu.recipe.explosive": "Explosive: %s", "gtceu.recipe.max_eu": "Max. EU: %s EU", @@ -3422,6 +3654,8 @@ "gtceu.recipe.temperature": "Temp: %sK", "gtceu.recipe.total": "Total: %s EU", "gtceu.recipe.total_computation": "Computation: %s CWU", + "gtceu.recipe.total_eu": "Total Usage: %s EU/t", + "gtceu.recipe.voltage": "Usage: %s A @ %s", "gtceu.recipe_logic.condition_fails": "Condition Fails", "gtceu.recipe_logic.insufficient_fuel": "Insufficient Fuel", "gtceu.recipe_logic.insufficient_in": "Insufficient Inputs", @@ -3519,9 +3753,12 @@ "gtceu.tool_action.wire_cutter.connect": "§8Use Wire Cutters to set Connections", "gtceu.tool_action.wrench.connect": "§8Use Wrench to set Connections, sneak to block Connections", "gtceu.tool_action.wrench.set_facing": "§8Use Wrench to set Facing", + "gtceu.tooltip.computer_monitor_config": "Storing computer monitor cover configuration data", + "gtceu.tooltip.computer_monitor_data": "Storing data: %s", "gtceu.tooltip.fluid_pipe_hold_shift": "§7Hold SHIFT to show Fluid Containment Info", "gtceu.tooltip.hold_ctrl": "§7Hold CTRL for more info", "gtceu.tooltip.hold_shift": "§7Hold SHIFT for more info", + "gtceu.tooltip.player_bind": "Bound to player: %s", "gtceu.tooltip.potion.each": "%s %s §7for§r %s §7ticks with a§r %s%% §7chance of happening§r", "gtceu.tooltip.potion.header": "§6Contains effects:", "gtceu.tooltip.proxy_bind": "§fBinding to a Pattern Buffer at %s %s %s", @@ -3529,6 +3766,7 @@ "gtceu.tooltip.status.trinary.true": "True", "gtceu.tooltip.status.trinary.unknown": "Unknown", "gtceu.tooltip.tool_fluid_hold_shift": "§7Hold SHIFT to show Fluid Containment and Tool Info", + "gtceu.tooltip.wireless_transmitter_bind": "Binding to a transmitter cover at %s %s %s facing %s", "gtceu.top.allow_output_input": "Allow Input", "gtceu.top.auto_output": "Auto Output", "gtceu.top.buffer_bound_pos": "Bound To - X: %s, Y: %s, Z: %s", @@ -3578,10 +3816,12 @@ "gtceu.top.valid_structure": "Structure Formed", "gtceu.top.working_disabled": "Working Disabled", "gtceu.universal.clear_nbt_recipe.tooltip": "§cThis will destroy all contents!", - "gtceu.universal.disabled": "Multiblock Sharing §4Disabled", - "gtceu.universal.enabled": "Multiblock Sharing §aEnabled", "gtceu.universal.kiloliters": "%s B", "gtceu.universal.liters": "%s mB", + "gtceu.universal.padded_parentheses": " (%s) ", + "gtceu.universal.padded_spaced_parentheses": " ( %s ) ", + "gtceu.universal.parentheses": "(%s)", + "gtceu.universal.spaced_parentheses": "( %s )", "gtceu.universal.tooltip.amperage_in": "§eAmperage IN: §f%dA", "gtceu.universal.tooltip.amperage_in_out": "§eAmperage IN/OUT: §f%dA", "gtceu.universal.tooltip.amperage_in_out_till": "§eAmperage IN/OUT up to: §f%dA", @@ -3675,6 +3915,10 @@ "item.gtceu.aluminium_fluid_cell": "%s Aluminium Cell", "item.gtceu.anvil_casting_mold": "Casting Mold (Anvil)", "item.gtceu.anvil_casting_mold.tooltip": "§7Mold for shaping Anvils", + "item.gtceu.armor.boots": "%s Boots", + "item.gtceu.armor.chestplate": "%s Chestplate", + "item.gtceu.armor.helmet": "%s Helmet", + "item.gtceu.armor.leggings": "%s Leggings", "item.gtceu.ash_dust": "Ashes", "item.gtceu.axe_extruder_mold.tooltip": "§7Extruder Shape for making Axes", "item.gtceu.ball_casting_mold": "Casting Mold (Ball)", @@ -3688,9 +3932,7 @@ "item.gtceu.basic_integrated_circuit.tooltip.1": "§6LV-Tier Circuit", "item.gtceu.basic_tape": "Tape", "item.gtceu.basic_tape.tooltip": "§7Not strong enough for mechanical issues\nCan be used to pick up crates without dropping their items", - "item.gtceu.battery.charge_detailed.0": "§a%s/%s EU§7 - Tier %s §7(§a%s/%s %s remaining§7)", - "item.gtceu.battery.charge_detailed.1": "§e%s/%s EU§7 - Tier %s §7(§e%s/%s %s remaining§7)", - "item.gtceu.battery.charge_detailed.2": "§c%s/%s EU§7 - Tier %s §7(§c%s/%s %s remaining§7)", + "item.gtceu.battery.charge_detailed": "%s/%s EU§7 - Tier %s §7(%s/%s %s remaining§7)", "item.gtceu.battery.charge_time": "§aHolds %s %s of Power (%s)", "item.gtceu.battery.charge_unit.hour": "hours", "item.gtceu.battery.charge_unit.minute": "minutes", @@ -3945,6 +4187,7 @@ "item.gtceu.ilc_chip.tooltip": "§7Integrated Logic Circuit", "item.gtceu.ilc_wafer": "ILC Wafer", "item.gtceu.ilc_wafer.tooltip": "§7Raw Integrated Circuit", + "item.gtceu.image_module": "Image Module", "item.gtceu.impure_bentonite_dust": "Impure Pile of Bentonite", "item.gtceu.impure_cassiterite_sand_dust": "Impure Pile of Cassiterite Sand", "item.gtceu.impure_pitchblende_dust": "Impure Pile of Pitchblende", @@ -4008,7 +4251,6 @@ "item.gtceu.lime_dye_spray_can": "Spray Can (Lime)", "item.gtceu.lime_glass_lens": "Glass Lens (Lime)", "item.gtceu.liquid_fuel_jetpack": "Liquid Fuel Jetpack", - "item.gtceu.long_rod_extruder_mold": "Extruder Mold (Long Rod)", "item.gtceu.long_treated_wood_rod": "Long Treated Wood Stick", "item.gtceu.long_wood_rod": "Long Wood Stick", "item.gtceu.lpic_chip": "LPIC Chip", @@ -4380,6 +4622,7 @@ "item.gtceu.tantalum_capacitor": "Tantalum Capacitor", "item.gtceu.terminal": "Terminal", "item.gtceu.terminal.tooltip": "Shift + R-Click on a controller to automatically build the multi-block", + "item.gtceu.text_module": "Text Module", "item.gtceu.tiny_ash_dust": "Tiny Pile of Ashes", "item.gtceu.tiny_basaltic_mineral_sand_dust": "Tiny Pile of Basaltic Mineral Sand", "item.gtceu.tiny_bentonite_dust": "Tiny Pile of Bentonite", @@ -4612,6 +4855,7 @@ "item.gtceu.white_dye_spray_can": "Spray Can (White)", "item.gtceu.wire_extruder_mold": "Extruder Mold (Wire)", "item.gtceu.wire_extruder_mold.tooltip": "§7Extruder Shape for making Wires", + "item.gtceu.wireless_transmitter_cover": "Wireless Transmitter", "item.gtceu.wood_bolt": "Short Wood Stick", "item.gtceu.wood_dust": "Wood Pulp", "item.gtceu.wood_plate": "Wood Plank", @@ -4645,9 +4889,14 @@ "itemGroup.gtceu.material_item": "GregTechCEu Material Items", "itemGroup.gtceu.material_pipe": "GregTechCEu Material Pipes", "itemGroup.gtceu.tool": "GregTechCEu Tools", + "ldlib.gui.editor.group.widget.gtm_container": "GTM Container Widgets", "ldlib.gui.editor.register.editor.gtceu.mui": "Machine UI Project", "ldlib.gui.editor.register.editor.gtceu.rtui": "RecipeType UI Project", "ldlib.gui.editor.register.editor.gtceu.template_tab": "templates", + "ldlib.gui.editor.register.widget.container.gtm_fluid_slot": "GTM Fluid Slot", + "ldlib.gui.editor.register.widget.container.gtm_item_slot": "GTM Item Slot", + "ldlib.gui.editor.register.widget.container.gtm_phantom_fluid_slot": "GTM Phantom Fluid Slot", + "ldlib.gui.editor.register.widget.container.gtm_phantom_item_slot": "GTM Phantom Item Slot", "mataarmor.hud.supply_mode": "Supply Mode: %s", "material.gtceu.acetic_acid": "Acetic Acid", "material.gtceu.acetic_anhydride": "Acetic Anhydride", @@ -4694,6 +4943,9 @@ "material.gtceu.bastnasite": "Bastnasite", "material.gtceu.battery_alloy": "Battery Alloy", "material.gtceu.bauxite": "Bauxite", + "material.gtceu.bauxite_slag": "Bauxite Slag", + "material.gtceu.bauxite_sludge": "Bauxite Sludge", + "material.gtceu.bauxite_slurry": "Bauxite Slurry", "material.gtceu.bentonite": "Bentonite", "material.gtceu.benzene": "Benzene", "material.gtceu.berkelium": "Berkelium", @@ -4776,6 +5028,7 @@ "material.gtceu.cooperite": "Sheldonite", "material.gtceu.copernicium": "Copernicium", "material.gtceu.copper": "Copper", + "material.gtceu.cracked_bauxite_slurry": "Cracked Bauxite Slurry", "material.gtceu.creosote": "Creosote", "material.gtceu.cumene": "Cumene", "material.gtceu.cupric_oxide": "Cupric Oxide", @@ -4787,6 +5040,7 @@ "material.gtceu.damascus_steel": "Damascus Steel", "material.gtceu.dark_ash": "Dark Ash", "material.gtceu.darmstadtium": "Darmstadtium", + "material.gtceu.decalcified_bauxite_sludge": "Decalcified Bauxite Sludge", "material.gtceu.deepslate": "Deepslate", "material.gtceu.depleted_uranium_hexafluoride": "Depleted Uranium Hexafluoride", "material.gtceu.deuterium": "Deuterium", @@ -4918,6 +5172,7 @@ "material.gtceu.hypochlorous_acid": "Hypochlorous Acid", "material.gtceu.ice": "Ice", "material.gtceu.ilmenite": "Ilmenite", + "material.gtceu.ilmenite_slag": "Ilmenite Slag", "material.gtceu.impure_enriched_naquadah_solution": "Impure Enriched Naquadah Solution", "material.gtceu.impure_naquadria_solution": "Impure Naquadria Solution", "material.gtceu.incoloy_ma_956": "Incoloy MA-956", @@ -5286,7 +5541,7 @@ "material.gtceu.xenon": "Xenon", "material.gtceu.yellow_dye": "Yellow Dye", "material.gtceu.yellow_garnet": "Yellow Garnet", - "material.gtceu.yellow_limonite": "Yellow Limonite", + "material.gtceu.yellow_limonite": "Limonite", "material.gtceu.ytterbium": "Ytterbium", "material.gtceu.yttrium": "Yttrium", "material.gtceu.yttrium_barium_cuprate": "Yttrium Barium Cuprate", @@ -5507,6 +5762,7 @@ "tagprefix.spring": "%s Spring", "tagprefix.stairs": "%s Stairs", "tagprefix.stone": "%s Ore", + "tagprefix.surface_rock": "%s Surface Rock", "tagprefix.tiny_dust": "Tiny Pile of %s Dust", "tagprefix.tuff": "Tuff %s Ore", "tagprefix.turbine_blade": "%s Turbine Blade", diff --git a/src/generated/resources/assets/gtceu/models/block/casings/steam/bricked_bronze.json b/src/generated/resources/assets/gtceu/models/block/casings/steam/bricked_bronze.json new file mode 100644 index 00000000000..5b489e3bb62 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/steam/bricked_bronze.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/steam/bricked_bronze/bottom", + "side": "gtceu:block/casings/steam/bricked_bronze/side", + "top": "gtceu:block/casings/steam/bricked_bronze/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/steam/bricked_steel.json b/src/generated/resources/assets/gtceu/models/block/casings/steam/bricked_steel.json new file mode 100644 index 00000000000..dae1b325422 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/steam/bricked_steel.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/steam/bricked_steel/bottom", + "side": "gtceu:block/casings/steam/bricked_steel/side", + "top": "gtceu:block/casings/steam/bricked_steel/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/ev.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/ev.json new file mode 100644 index 00000000000..f695c06b821 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/ev.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/hv.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/hv.json new file mode 100644 index 00000000000..fb36daa0102 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/hv.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/iv.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/iv.json new file mode 100644 index 00000000000..c96cf6b9faa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/iv.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/luv.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/luv.json new file mode 100644 index 00000000000..7f3255db968 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/luv.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/lv.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/lv.json new file mode 100644 index 00000000000..654f8153135 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/lv.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/max.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/max.json new file mode 100644 index 00000000000..84ff9be417a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/max.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/mv.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/mv.json new file mode 100644 index 00000000000..acccb60a6ee --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/mv.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/opv.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/opv.json new file mode 100644 index 00000000000..8741d720901 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/opv.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/uev.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/uev.json new file mode 100644 index 00000000000..ba4b571f7d4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/uev.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/uhv.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/uhv.json new file mode 100644 index 00000000000..cf311351cd1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/uhv.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/uiv.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/uiv.json new file mode 100644 index 00000000000..913f2e6aa45 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/uiv.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/ulv.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/ulv.json new file mode 100644 index 00000000000..559139c9999 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/ulv.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/uv.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/uv.json new file mode 100644 index 00000000000..13ec96a4fae --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/uv.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/uxv.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/uxv.json new file mode 100644 index 00000000000..d9000c0d604 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/uxv.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/zpm.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/zpm.json new file mode 100644 index 00000000000..9d652faa48f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/zpm.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/ev_hermetic_casing.json b/src/generated/resources/assets/gtceu/models/block/ev_hermetic_casing.json index db820cbdadb..f6136e99b68 100644 --- a/src/generated/resources/assets/gtceu/models/block/ev_hermetic_casing.json +++ b/src/generated/resources/assets/gtceu/models/block/ev_hermetic_casing.json @@ -3,7 +3,6 @@ "textures": { "bot_bottom": "gtceu:block/casings/voltage/ev/bottom", "bot_side": "gtceu:block/casings/voltage/ev/side", - "bot_top": "gtceu:block/casings/voltage/ev/top", - "top_side": "gtceu:block/casings/hermetic_casing/hermetic_casing_overlay" + "bot_top": "gtceu:block/casings/voltage/ev/top" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/hpca_active_cooler_component_base.json b/src/generated/resources/assets/gtceu/models/block/hpca_active_cooler_component_base.json new file mode 100644 index 00000000000..815ad6e9e35 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/hpca_active_cooler_component_base.json @@ -0,0 +1,10 @@ +{ + "parent": "gtceu:block/machine/template/part/hpca_part_machine", + "textures": { + "back": "gtceu:block/casings/hpca/advanced_computer_casing/back", + "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", + "front": "gtceu:block/casings/hpca/advanced_computer_casing/front", + "side": "gtceu:block/casings/hpca/advanced_computer_casing/side", + "top": "gtceu:block/casings/hpca/advanced_computer_casing/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/hpca_advanced_computation_component_base.json b/src/generated/resources/assets/gtceu/models/block/hpca_advanced_computation_component_base.json new file mode 100644 index 00000000000..815ad6e9e35 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/hpca_advanced_computation_component_base.json @@ -0,0 +1,10 @@ +{ + "parent": "gtceu:block/machine/template/part/hpca_part_machine", + "textures": { + "back": "gtceu:block/casings/hpca/advanced_computer_casing/back", + "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", + "front": "gtceu:block/casings/hpca/advanced_computer_casing/front", + "side": "gtceu:block/casings/hpca/advanced_computer_casing/side", + "top": "gtceu:block/casings/hpca/advanced_computer_casing/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/hpca_bridge_component_base.json b/src/generated/resources/assets/gtceu/models/block/hpca_bridge_component_base.json new file mode 100644 index 00000000000..1bb505af931 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/hpca_bridge_component_base.json @@ -0,0 +1,10 @@ +{ + "parent": "gtceu:block/machine/template/part/hpca_part_machine", + "textures": { + "back": "gtceu:block/casings/hpca/computer_casing/back", + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "front": "gtceu:block/casings/hpca/computer_casing/front", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/hpca_computation_component_base.json b/src/generated/resources/assets/gtceu/models/block/hpca_computation_component_base.json new file mode 100644 index 00000000000..1bb505af931 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/hpca_computation_component_base.json @@ -0,0 +1,10 @@ +{ + "parent": "gtceu:block/machine/template/part/hpca_part_machine", + "textures": { + "back": "gtceu:block/casings/hpca/computer_casing/back", + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "front": "gtceu:block/casings/hpca/computer_casing/front", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/hpca_empty_component_base.json b/src/generated/resources/assets/gtceu/models/block/hpca_empty_component_base.json new file mode 100644 index 00000000000..1bb505af931 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/hpca_empty_component_base.json @@ -0,0 +1,10 @@ +{ + "parent": "gtceu:block/machine/template/part/hpca_part_machine", + "textures": { + "back": "gtceu:block/casings/hpca/computer_casing/back", + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "front": "gtceu:block/casings/hpca/computer_casing/front", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/hpca_heat_sink_component_base.json b/src/generated/resources/assets/gtceu/models/block/hpca_heat_sink_component_base.json new file mode 100644 index 00000000000..1bb505af931 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/hpca_heat_sink_component_base.json @@ -0,0 +1,10 @@ +{ + "parent": "gtceu:block/machine/template/part/hpca_part_machine", + "textures": { + "back": "gtceu:block/casings/hpca/computer_casing/back", + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "front": "gtceu:block/casings/hpca/computer_casing/front", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/hv_hermetic_casing.json b/src/generated/resources/assets/gtceu/models/block/hv_hermetic_casing.json index 74ab0592701..09920a47d69 100644 --- a/src/generated/resources/assets/gtceu/models/block/hv_hermetic_casing.json +++ b/src/generated/resources/assets/gtceu/models/block/hv_hermetic_casing.json @@ -3,7 +3,6 @@ "textures": { "bot_bottom": "gtceu:block/casings/voltage/hv/bottom", "bot_side": "gtceu:block/casings/voltage/hv/side", - "bot_top": "gtceu:block/casings/voltage/hv/top", - "top_side": "gtceu:block/casings/hermetic_casing/hermetic_casing_overlay" + "bot_top": "gtceu:block/casings/voltage/hv/top" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/iv_hermetic_casing.json b/src/generated/resources/assets/gtceu/models/block/iv_hermetic_casing.json index 71ffb1feca5..41dbf9dbcde 100644 --- a/src/generated/resources/assets/gtceu/models/block/iv_hermetic_casing.json +++ b/src/generated/resources/assets/gtceu/models/block/iv_hermetic_casing.json @@ -3,7 +3,6 @@ "textures": { "bot_bottom": "gtceu:block/casings/voltage/iv/bottom", "bot_side": "gtceu:block/casings/voltage/iv/side", - "bot_top": "gtceu:block/casings/voltage/iv/top", - "top_side": "gtceu:block/casings/hermetic_casing/hermetic_casing_overlay" + "bot_top": "gtceu:block/casings/voltage/iv/top" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/luv_hermetic_casing.json b/src/generated/resources/assets/gtceu/models/block/luv_hermetic_casing.json index 352f566667e..c9b4992a3de 100644 --- a/src/generated/resources/assets/gtceu/models/block/luv_hermetic_casing.json +++ b/src/generated/resources/assets/gtceu/models/block/luv_hermetic_casing.json @@ -3,7 +3,6 @@ "textures": { "bot_bottom": "gtceu:block/casings/voltage/luv/bottom", "bot_side": "gtceu:block/casings/voltage/luv/side", - "bot_top": "gtceu:block/casings/voltage/luv/top", - "top_side": "gtceu:block/casings/hermetic_casing/hermetic_casing_overlay" + "bot_top": "gtceu:block/casings/voltage/luv/top" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/lv_hermetic_casing.json b/src/generated/resources/assets/gtceu/models/block/lv_hermetic_casing.json index 009df4f62e0..9a0a31bd72e 100644 --- a/src/generated/resources/assets/gtceu/models/block/lv_hermetic_casing.json +++ b/src/generated/resources/assets/gtceu/models/block/lv_hermetic_casing.json @@ -3,7 +3,6 @@ "textures": { "bot_bottom": "gtceu:block/casings/voltage/lv/bottom", "bot_side": "gtceu:block/casings/voltage/lv/side", - "bot_top": "gtceu:block/casings/voltage/lv/top", - "top_side": "gtceu:block/casings/hermetic_casing/hermetic_casing_overlay" + "bot_top": "gtceu:block/casings/voltage/lv/top" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/active_transformer.json b/src/generated/resources/assets/gtceu/models/block/machine/active_transformer.json new file mode 100644 index 00000000000..c95af0da5ff --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/active_transformer.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:active_transformer", + "texture_overrides": { + "all": "gtceu:block/casings/hpca/high_power_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/advanced_data_access_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/advanced_data_access_hatch.json new file mode 100644 index 00000000000..c9c3494ed1a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/advanced_data_access_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:advanced_data_access_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/data_access_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/alloy_blast_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/alloy_blast_smelter.json new file mode 100644 index 00000000000..22b0fb2312f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/alloy_blast_smelter.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:alloy_blast_smelter", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/aluminium_crate.json b/src/generated/resources/assets/gtceu/models/block/machine/aluminium_crate.json new file mode 100644 index 00000000000..795f15d9ff8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/aluminium_crate.json @@ -0,0 +1,13 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:aluminium_crate", + "variants": { + "taped=false": { + "model": "gtceu:block/machine/template/crate/metal_crate" + }, + "taped=true": { + "model": "gtceu:block/machine/template/crate/metal_crate_taped" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/aluminium_drum.json b/src/generated/resources/assets/gtceu/models/block/machine/aluminium_drum.json new file mode 100644 index 00000000000..99490cad767 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/aluminium_drum.json @@ -0,0 +1,10 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:aluminium_drum", + "variants": { + "": { + "model": "gtceu:block/machine/template/drum/metal_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/assembly_line.json b/src/generated/resources/assets/gtceu/models/block/machine/assembly_line.json new file mode 100644 index 00000000000..d23cca31534 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/assembly_line.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:assembly_line", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/assembly_line/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/assembly_line/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/assembly_line/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/assembly_line/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/assembly_line/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/assembly_line/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/assembly_line/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/assembly_line/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/assembly_line/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/assembly_line/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/assembly_line/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/assembly_line/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/assembly_line/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/assembly_line/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/assembly_line/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/assembly_line/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/auto_maintenance_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/auto_maintenance_hatch.json new file mode 100644 index 00000000000..b26d9902e26 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/auto_maintenance_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:auto_maintenance_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/auto_maintenance_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/basic_data_access_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/basic_data_access_hatch.json new file mode 100644 index 00000000000..9c1ec49c439 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/basic_data_access_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:basic_data_access_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/data_access_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/bronze_crate.json b/src/generated/resources/assets/gtceu/models/block/machine/bronze_crate.json new file mode 100644 index 00000000000..c7e736a254b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/bronze_crate.json @@ -0,0 +1,13 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:bronze_crate", + "variants": { + "taped=false": { + "model": "gtceu:block/machine/template/crate/metal_crate" + }, + "taped=true": { + "model": "gtceu:block/machine/template/crate/metal_crate_taped" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/bronze_drum.json b/src/generated/resources/assets/gtceu/models/block/machine/bronze_drum.json new file mode 100644 index 00000000000..6c1d00a5283 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/bronze_drum.json @@ -0,0 +1,10 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:bronze_drum", + "variants": { + "": { + "model": "gtceu:block/machine/template/drum/metal_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/bronze_large_boiler.json b/src/generated/resources/assets/gtceu/models/block/machine/bronze_large_boiler.json new file mode 100644 index 00000000000..f478f07e7c0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/bronze_large_boiler.json @@ -0,0 +1,110 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:boiler_multi_parts", + "casing_block": { + "Name": "gtceu:steam_machine_casing" + }, + "firebox_active": { + "Name": "gtceu:bronze_firebox_casing", + "Properties": { + "active": "true" + } + }, + "firebox_idle": { + "Name": "gtceu:bronze_firebox_casing", + "Properties": { + "active": "false" + } + } + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:bronze_large_boiler", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/central_monitor.json b/src/generated/resources/assets/gtceu/models/block/machine/central_monitor.json new file mode 100644 index 00000000000..04b093f56b3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/central_monitor.json @@ -0,0 +1,91 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:central_monitor" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:central_monitor", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/central_monitor/overlay_front" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/central_monitor/overlay_front" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/central_monitor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/central_monitor/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/central_monitor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/central_monitor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/central_monitor/overlay_front" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/central_monitor/overlay_front" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/central_monitor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/central_monitor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/central_monitor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/central_monitor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/charcoal_pile_igniter.json b/src/generated/resources/assets/gtceu/models/block/machine/charcoal_pile_igniter.json new file mode 100644 index 00000000000..3a5e7853c6a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/charcoal_pile_igniter.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:charcoal_pile_igniter", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_top": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top", + "overlay_top_emissive": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_top": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top", + "overlay_top_emissive": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_top": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_top": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_top": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top", + "overlay_top_emissive": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_top": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top", + "overlay_top_emissive": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_top": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_top": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/cleaning_maintenance_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/cleaning_maintenance_hatch.json new file mode 100644 index 00000000000..8bfdd8c3132 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/cleaning_maintenance_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:cleaning_maintenance_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/cleaning_maintenance_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/cleanroom.json b/src/generated/resources/assets/gtceu/models/block/machine/cleanroom.json new file mode 100644 index 00000000000..195a9079761 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/cleanroom.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:cleanroom", + "texture_overrides": { + "all": "gtceu:block/casings/cleanroom/plascrete" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/cleanroom/plascrete", + "overlay_bottom": "gtceu:block/multiblock/cleanroom/overlay_bottom", + "overlay_top": "gtceu:block/multiblock/cleanroom/overlay_top" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/cleanroom/plascrete", + "overlay_bottom": "gtceu:block/multiblock/cleanroom/overlay_bottom", + "overlay_top": "gtceu:block/multiblock/cleanroom/overlay_top" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/cleanroom/plascrete", + "overlay_bottom": "gtceu:block/multiblock/cleanroom/overlay_bottom_active", + "overlay_top": "gtceu:block/multiblock/cleanroom/overlay_top_active" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/cleanroom/plascrete", + "overlay_bottom": "gtceu:block/multiblock/cleanroom/overlay_bottom_active", + "overlay_top": "gtceu:block/multiblock/cleanroom/overlay_top_active" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/cleanroom/plascrete", + "overlay_bottom": "gtceu:block/multiblock/cleanroom/overlay_bottom", + "overlay_top": "gtceu:block/multiblock/cleanroom/overlay_top" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/cleanroom/plascrete", + "overlay_bottom": "gtceu:block/multiblock/cleanroom/overlay_bottom", + "overlay_top": "gtceu:block/multiblock/cleanroom/overlay_top" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/cleanroom/plascrete", + "overlay_bottom": "gtceu:block/multiblock/cleanroom/overlay_bottom_active", + "overlay_top": "gtceu:block/multiblock/cleanroom/overlay_top_active" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/cleanroom/plascrete", + "overlay_bottom": "gtceu:block/multiblock/cleanroom/overlay_bottom_active", + "overlay_top": "gtceu:block/multiblock/cleanroom/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/coke_oven.json b/src/generated/resources/assets/gtceu/models/block/machine/coke_oven.json new file mode 100644 index 00000000000..e500e679c4b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/coke_oven.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:coke_oven", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_coke_bricks" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_coke_bricks", + "overlay_front": "gtceu:block/multiblock/coke_oven/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/coke_oven/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_coke_bricks", + "overlay_front": "gtceu:block/multiblock/coke_oven/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/coke_oven/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_coke_bricks", + "overlay_front": "gtceu:block/multiblock/coke_oven/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/coke_oven/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_coke_bricks", + "overlay_front": "gtceu:block/multiblock/coke_oven/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/coke_oven/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_coke_bricks", + "overlay_front": "gtceu:block/multiblock/coke_oven/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/coke_oven/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_coke_bricks", + "overlay_front": "gtceu:block/multiblock/coke_oven/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/coke_oven/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_coke_bricks", + "overlay_front": "gtceu:block/multiblock/coke_oven/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/coke_oven/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_coke_bricks", + "overlay_front": "gtceu:block/multiblock/coke_oven/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/coke_oven/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/coke_oven_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/coke_oven_hatch.json new file mode 100644 index 00000000000..e4c7e5a2175 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/coke_oven_hatch.json @@ -0,0 +1,10 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:coke_oven_hatch", + "variants": { + "": { + "model": "gtceu:block/machine/part/coke_oven_hatch" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/computation_receiver_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/computation_receiver_hatch.json new file mode 100644 index 00000000000..4240368b861 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/computation_receiver_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:computation_receiver_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/computation_data_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/computation_transmitter_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/computation_transmitter_hatch.json new file mode 100644 index 00000000000..20870efd607 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/computation_transmitter_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:computation_transmitter_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/computation_data_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/configurable_maintenance_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/configurable_maintenance_hatch.json new file mode 100644 index 00000000000..dce746fd759 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/configurable_maintenance_hatch.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:configurable_maintenance_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "taped=false": { + "model": { + "parent": "gtceu:block/machine/part/configurable_maintenance_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "taped=true": { + "model": { + "parent": "gtceu:block/machine/part/configurable_maintenance_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_2": "gtceu:block/overlay/machine/overlay_maintenance_taped", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/cracker.json b/src/generated/resources/assets/gtceu/models/block/machine/cracker.json new file mode 100644 index 00000000000..4d5d39779bb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/cracker.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:cracker", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/cracking_unit/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/cracking_unit/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/cracking_unit/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/cracking_unit/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/cracking_unit/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/cracking_unit/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/cracking_unit/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/cracking_unit/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/cracking_unit/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/cracking_unit/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/cracking_unit/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/cracking_unit/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/cracking_unit/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/cracking_unit/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/cracking_unit/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/cracking_unit/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/creative_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/creative_chest.json new file mode 100644 index 00000000000..7640c737d6c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/creative_chest.json @@ -0,0 +1,15 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:creative_chest", + "variants": { + "": { + "model": "gtceu:block/machine/template/quantum/creative_container" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/creative_computation_provider.json b/src/generated/resources/assets/gtceu/models/block/machine/creative_computation_provider.json new file mode 100644 index 00000000000..8eaae19f6ca --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/creative_computation_provider.json @@ -0,0 +1,24 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:creative_computation_provider", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/sided/single", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_data_hatch_optical", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_data_hatch_optical_emissive", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/creative_data_access_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/creative_data_access_hatch.json new file mode 100644 index 00000000000..4739e980e39 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/creative_data_access_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:creative_data_access_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/data_access_hatch_creative", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/creative_energy.json b/src/generated/resources/assets/gtceu/models/block/machine/creative_energy.json new file mode 100644 index 00000000000..0357c5b8388 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/creative_energy.json @@ -0,0 +1,24 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:creative_energy", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/sided/single", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/void", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_energy_emitter", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/creative_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/creative_tank.json new file mode 100644 index 00000000000..ab7369dbfe9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/creative_tank.json @@ -0,0 +1,15 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:creative_tank", + "variants": { + "": { + "model": "gtceu:block/machine/template/quantum/creative_container" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/data_access_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/data_access_hatch.json new file mode 100644 index 00000000000..79056e271de --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/data_access_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:data_access_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/data_access_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/data_bank.json b/src/generated/resources/assets/gtceu/models/block/machine/data_bank.json new file mode 100644 index 00000000000..f98a0432a7b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/data_bank.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:data_bank", + "texture_overrides": { + "all": "gtceu:block/casings/hpca/high_power_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/data_receiver_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/data_receiver_hatch.json new file mode 100644 index 00000000000..cd3ced20683 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/data_receiver_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:data_receiver_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/optical_data_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/data_transmitter_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/data_transmitter_hatch.json new file mode 100644 index 00000000000..084069f1f97 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/data_transmitter_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:data_transmitter_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/optical_data_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/distillation_tower.json b/src/generated/resources/assets/gtceu/models/block/machine/distillation_tower.json new file mode 100644 index 00000000000..7772e339f21 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/distillation_tower.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:distillation_tower", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/distillation_tower/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/distillation_tower/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/distillation_tower/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/distillation_tower/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/distillation_tower/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/distillation_tower/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/distillation_tower/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/distillation_tower/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/distillation_tower/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/distillation_tower/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/distillation_tower/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/distillation_tower/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/distillation_tower/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/distillation_tower/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/distillation_tower/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/distillation_tower/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/electric_blast_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/electric_blast_furnace.json new file mode 100644 index 00000000000..90e3f5a4fb4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/electric_blast_furnace.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:electric_blast_furnace", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/electric_blast_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/electric_blast_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_16a_energy_converter.json new file mode 100644 index 00000000000..2732e1a6c04 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_16a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_1a_energy_converter.json new file mode 100644 index 00000000000..9797cad8ad3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_1a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_4a_energy_converter.json new file mode 100644 index 00000000000..927d0cca478 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_4a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_8a_energy_converter.json new file mode 100644 index 00000000000..520e2523e9b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_8a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_air_scrubber.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_air_scrubber.json new file mode 100644 index 00000000000..6ebf0bfacd4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_air_scrubber.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_air_scrubber", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_alloy_smelter.json new file mode 100644 index 00000000000..25f2008d3d2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_arc_furnace.json new file mode 100644 index 00000000000..7b00c912276 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_assembler.json new file mode 100644 index 00000000000..1f54432c568 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_autoclave.json new file mode 100644 index 00000000000..7c6157c86e4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_battery_buffer_16x.json new file mode 100644 index 00000000000..05f9a3a2c58 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_battery_buffer_4x.json new file mode 100644 index 00000000000..41ac87fe993 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_battery_buffer_8x.json new file mode 100644 index 00000000000..a76218bb2ad --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_bedrock_ore_miner.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_bedrock_ore_miner.json new file mode 100644 index 00000000000..74d79232910 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_bedrock_ore_miner.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_bedrock_ore_miner", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_bender.json new file mode 100644 index 00000000000..66758f40433 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_block_breaker.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_block_breaker.json new file mode 100644 index 00000000000..c5e0820dd49 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_block_breaker.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_block_breaker", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_brewery.json new file mode 100644 index 00000000000..14812b288ee --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_canner.json new file mode 100644 index 00000000000..3cd55fac429 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_centrifuge.json new file mode 100644 index 00000000000..3b52aacbc44 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_charger_4x.json new file mode 100644 index 00000000000..5ffc336ab90 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_chemical_bath.json new file mode 100644 index 00000000000..12b2f1cb255 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_chemical_reactor.json new file mode 100644 index 00000000000..fa0ec632ed2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_circuit_assembler.json new file mode 100644 index 00000000000..66f5473b097 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_compressor.json new file mode 100644 index 00000000000..fbd631d3cf0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_cutter.json new file mode 100644 index 00000000000..a1de81d4e03 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_diode.json new file mode 100644 index 00000000000..155b5b80395 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_diode.json @@ -0,0 +1,92 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_distillery.json new file mode 100644 index 00000000000..5e27a9e8b1c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_electric_furnace.json new file mode 100644 index 00000000000..e7efeb372ed --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_electrolyzer.json new file mode 100644 index 00000000000..7b4b4eb81fe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_electromagnetic_separator.json new file mode 100644 index 00000000000..1ed129b9b2f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_input_hatch.json new file mode 100644 index 00000000000..09382cd3d7a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_input_hatch_16a.json new file mode 100644 index 00000000000..1aa9927dbc3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_input_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_energy_input_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_input_hatch_4a.json new file mode 100644 index 00000000000..3d4f73bb00b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_input_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_energy_input_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_output_hatch.json new file mode 100644 index 00000000000..1117466ffd0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_output_hatch_16a.json new file mode 100644 index 00000000000..bb52b788d49 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_output_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_energy_output_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_output_hatch_4a.json new file mode 100644 index 00000000000..cdef545c895 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_output_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_energy_output_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_extractor.json new file mode 100644 index 00000000000..4dc0b187727 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_extruder.json new file mode 100644 index 00000000000..3561155983d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_fermenter.json new file mode 100644 index 00000000000..848bd370d14 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_fisher.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_fisher.json new file mode 100644 index 00000000000..2a3ac1ca67d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_fisher.json @@ -0,0 +1,19 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_fisher", + "variants": { + "": { + "model": { + "parent": "gtceu:block/overlay/2_layer/top_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_screen", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_qtank_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_drilling_rig.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_drilling_rig.json new file mode 100644 index 00000000000..026f28a663a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_drilling_rig.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_fluid_drilling_rig", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_heater.json new file mode 100644 index 00000000000..3ae7e30ac8d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..31b6bc30352 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_solidifier.json new file mode 100644 index 00000000000..1056c59e675 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_forge_hammer.json new file mode 100644 index 00000000000..69fcd69d877 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_forming_press.json new file mode 100644 index 00000000000..9b695605bab --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_gas_collector.json new file mode 100644 index 00000000000..a733d703244 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_input_bus.json new file mode 100644 index 00000000000..07266c3b50e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch.json new file mode 100644 index 00000000000..74430e116c1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch_4x.json new file mode 100644 index 00000000000..78934aa9896 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch_4x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_input_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch_9x.json new file mode 100644 index 00000000000..bdf92ca1083 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch_9x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_input_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_item_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_item_collector.json new file mode 100644 index 00000000000..cdc17a7190e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_item_collector.json @@ -0,0 +1,55 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_item_collector", + "variants": { + "active=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "active=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "active=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "active=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top_active", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_item_passthrough_hatch.json new file mode 100644 index 00000000000..4ac49ceaab4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_large_miner.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_large_miner.json new file mode 100644 index 00000000000..ae33b1cc272 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_large_miner.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_large_miner", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/large_miner_active", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/large_miner_active", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/large_miner_active", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/large_miner_active", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_laser_engraver.json new file mode 100644 index 00000000000..788df865fdf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_lathe.json new file mode 100644 index 00000000000..ad648b675ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_macerator.json new file mode 100644 index 00000000000..8fdb4bf6f17 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_machine_hull.json new file mode 100644 index 00000000000..841df9b0460 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_mixer.json new file mode 100644 index 00000000000..e5612ee50d1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_muffler_hatch.json new file mode 100644 index 00000000000..9f8faac1662 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_ore_washer.json new file mode 100644 index 00000000000..052adf50ca3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_output_bus.json new file mode 100644 index 00000000000..42c5c3590f7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch.json new file mode 100644 index 00000000000..25abd397d64 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch_4x.json new file mode 100644 index 00000000000..362b3e0b071 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch_4x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_output_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch_9x.json new file mode 100644 index 00000000000..b9c252adac7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch_9x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_output_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_packer.json new file mode 100644 index 00000000000..79da342c997 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_polarizer.json new file mode 100644 index 00000000000..e3cd1988c62 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_pump.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_pump.json new file mode 100644 index 00000000000..a46e72967a7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_pump.json @@ -0,0 +1,17 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_pump", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/pump_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_rock_crusher.json new file mode 100644 index 00000000000..c6da4412fac --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_rotor_holder.json new file mode 100644 index 00000000000..57af1d762b5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_rotor_holder.json @@ -0,0 +1,46 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_rotor_holder", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/machine/template/rotor_holder/block", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/overlay" + }, + "when": { + "is_formed": "true" + } + } + ], + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_scanner.json new file mode 100644 index 00000000000..5996044a2c4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_sifter.json new file mode 100644 index 00000000000..8d16469429f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_substation_input_hatch_64a.json new file mode 100644 index 00000000000..c99f5154a82 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_substation_input_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_substation_input_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_substation_output_hatch_64a.json new file mode 100644 index 00000000000..93e8ec1d212 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_substation_output_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_substation_output_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_super_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_super_chest.json new file mode 100644 index 00000000000..0fbf60fdb2b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_super_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:ev_super_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_super_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_super_tank.json new file mode 100644 index 00000000000..93dc2b7938c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_super_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:ev_super_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_thermal_centrifuge.json new file mode 100644 index 00000000000..9c79c4bc992 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_16a.json new file mode 100644 index 00000000000..fdb3dfb2a79 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_16a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_1a.json new file mode 100644 index 00000000000..af245d907e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_1a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_2a.json new file mode 100644 index 00000000000..15a77896859 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_2a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_4a.json new file mode 100644 index 00000000000..a035a3d6184 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_4a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_wiremill.json new file mode 100644 index 00000000000..c0321e2fa96 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_world_accelerator.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_world_accelerator.json new file mode 100644 index 00000000000..a5f6fe65943 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_world_accelerator.json @@ -0,0 +1,135 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_world_accelerator", + "variants": { + "active=false,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "active=false,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/extreme_combustion_engine.json b/src/generated/resources/assets/gtceu/models/block/machine/extreme_combustion_engine.json new file mode 100644 index 00000000000..371c8c117c9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/extreme_combustion_engine.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:extreme_combustion_engine", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/gas_large_turbine.json b/src/generated/resources/assets/gtceu/models/block/machine/gas_large_turbine.json new file mode 100644 index 00000000000..86f698c3735 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/gas_large_turbine.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:gas_large_turbine", + "texture_overrides": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_stainless_steel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_stainless_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_stainless_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_stainless_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_stainless_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_stainless_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_stainless_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_stainless_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_stainless_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/gold_drum.json b/src/generated/resources/assets/gtceu/models/block/machine/gold_drum.json new file mode 100644 index 00000000000..49751d2398c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/gold_drum.json @@ -0,0 +1,10 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:gold_drum", + "variants": { + "": { + "model": "gtceu:block/machine/template/drum/metal_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/high_performance_computation_array.json b/src/generated/resources/assets/gtceu/models/block/machine/high_performance_computation_array.json new file mode 100644 index 00000000000..fc6cb8535b5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/high_performance_computation_array.json @@ -0,0 +1,108 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:high_performance_computation_array", + "texture_overrides": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/hpca/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/hpca/overlay_front_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/hpca/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/hpca/overlay_front_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/hpca/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/hpca/overlay_front_active_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/hpca/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/hpca/overlay_front_active_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/hpca/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/hpca/overlay_front_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/hpca/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/hpca/overlay_front_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/hpca/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/hpca/overlay_front_active_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/hpca/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/hpca/overlay_front_active_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_alloy_smelter.json new file mode 100644 index 00000000000..f97d22d0b6b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_alloy_smelter.json @@ -0,0 +1,116 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hp_steam_alloy_smelter", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_compressor.json new file mode 100644 index 00000000000..f0fb549b741 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_compressor.json @@ -0,0 +1,132 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hp_steam_compressor", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_extractor.json new file mode 100644 index 00000000000..0e61fc1df98 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_extractor.json @@ -0,0 +1,132 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hp_steam_extractor", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_forge_hammer.json new file mode 100644 index 00000000000..0399b372a01 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_forge_hammer.json @@ -0,0 +1,114 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hp_steam_forge_hammer", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_furnace.json new file mode 100644 index 00000000000..99f78893ac1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_furnace.json @@ -0,0 +1,116 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hp_steam_furnace", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/furnace/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/furnace/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/furnace/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/furnace/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_liquid_boiler.json b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_liquid_boiler.json new file mode 100644 index 00000000000..a8d0abf1b74 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_liquid_boiler.json @@ -0,0 +1,63 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hp_steam_liquid_boiler", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/lava/overlay_front", + "overlay_front_emissive": "gtceu:block/generators/boiler/lava/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/lava/overlay_front_active", + "overlay_front_emissive": "gtceu:block/generators/boiler/lava/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/lava/overlay_front_active", + "overlay_front_emissive": "gtceu:block/generators/boiler/lava/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/lava/overlay_front", + "overlay_front_emissive": "gtceu:block/generators/boiler/lava/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_macerator.json new file mode 100644 index 00000000000..aeb2724ada5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_macerator.json @@ -0,0 +1,124 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hp_steam_macerator", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_miner.json b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_miner.json new file mode 100644 index 00000000000..79ec434f91c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_miner.json @@ -0,0 +1,124 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hp_steam_miner", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_back": "gtceu:block/machines/high_pressure_steam_miner/overlay_back", + "overlay_bottom": "gtceu:block/machines/high_pressure_steam_miner/overlay_bottom", + "overlay_front": "gtceu:block/machines/high_pressure_steam_miner/overlay_front", + "overlay_side": "gtceu:block/machines/high_pressure_steam_miner/overlay_side" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_back": "gtceu:block/machines/high_pressure_steam_miner/overlay_back", + "overlay_bottom": "gtceu:block/machines/high_pressure_steam_miner/overlay_bottom", + "overlay_front": "gtceu:block/machines/high_pressure_steam_miner/overlay_front", + "overlay_side": "gtceu:block/machines/high_pressure_steam_miner/overlay_side" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_back": "gtceu:block/machines/high_pressure_steam_miner/overlay_back", + "overlay_bottom": "gtceu:block/machines/high_pressure_steam_miner/overlay_bottom", + "overlay_front": "gtceu:block/machines/high_pressure_steam_miner/overlay_front", + "overlay_side": "gtceu:block/machines/high_pressure_steam_miner/overlay_side" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_back": "gtceu:block/machines/high_pressure_steam_miner/overlay_back", + "overlay_bottom": "gtceu:block/machines/high_pressure_steam_miner/overlay_bottom", + "overlay_front": "gtceu:block/machines/high_pressure_steam_miner/overlay_front", + "overlay_side": "gtceu:block/machines/high_pressure_steam_miner/overlay_side" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_rock_crusher.json new file mode 100644 index 00000000000..e80cf020cd9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_rock_crusher.json @@ -0,0 +1,112 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hp_steam_rock_crusher", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_solar_boiler.json b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_solar_boiler.json new file mode 100644 index 00000000000..f98e7f075f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_solar_boiler.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hp_steam_solar_boiler", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_top": "gtceu:block/generators/boiler/solar/overlay_top" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_top": "gtceu:block/generators/boiler/solar/overlay_top_active" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_top": "gtceu:block/generators/boiler/solar/overlay_top_active" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_top": "gtceu:block/generators/boiler/solar/overlay_top" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_solid_boiler.json b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_solid_boiler.json new file mode 100644 index 00000000000..6fd6a1ff32c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_solid_boiler.json @@ -0,0 +1,63 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hp_steam_solid_boiler", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/coal/overlay_front", + "overlay_front_emissive": "gtceu:block/generators/boiler/coal/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/coal/overlay_front_active", + "overlay_front_emissive": "gtceu:block/generators/boiler/coal/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/coal/overlay_front_active", + "overlay_front_emissive": "gtceu:block/generators/boiler/coal/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/coal/overlay_front", + "overlay_front_emissive": "gtceu:block/generators/boiler/coal/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hpca_active_cooler_component.json b/src/generated/resources/assets/gtceu/models/block/machine/hpca_active_cooler_component.json new file mode 100644 index 00000000000..8b92564809c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hpca_active_cooler_component.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hpca_active_cooler_component", + "variants": { + "active=false,hpca_part_damaged=false": { + "model": { + "parent": "gtceu:block/hpca_active_cooler_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/active_cooler", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=false,hpca_part_damaged=true": { + "model": { + "parent": "gtceu:block/hpca_active_cooler_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/damaged_advanced", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=true,hpca_part_damaged=false": { + "model": { + "parent": "gtceu:block/hpca_active_cooler_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/active_cooler_active", + "overlay_emissive": "gtceu:block/overlay/machine/hpca/active_cooler_active_emissive" + } + } + }, + "active=true,hpca_part_damaged=true": { + "model": { + "parent": "gtceu:block/hpca_active_cooler_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/damaged_advanced_active", + "overlay_emissive": "gtceu:block/overlay/machine/hpca/damaged_advanced_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hpca_advanced_computation_component.json b/src/generated/resources/assets/gtceu/models/block/machine/hpca_advanced_computation_component.json new file mode 100644 index 00000000000..b61039a9cda --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hpca_advanced_computation_component.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hpca_advanced_computation_component", + "variants": { + "active=false,hpca_part_damaged=false": { + "model": { + "parent": "gtceu:block/hpca_advanced_computation_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/advanced_computation", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=false,hpca_part_damaged=true": { + "model": { + "parent": "gtceu:block/hpca_advanced_computation_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/damaged_advanced", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=true,hpca_part_damaged=false": { + "model": { + "parent": "gtceu:block/hpca_advanced_computation_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/advanced_computation_active", + "overlay_emissive": "gtceu:block/overlay/machine/hpca/advanced_computation_active_emissive" + } + } + }, + "active=true,hpca_part_damaged=true": { + "model": { + "parent": "gtceu:block/hpca_advanced_computation_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/damaged_advanced_active", + "overlay_emissive": "gtceu:block/overlay/machine/hpca/damaged_advanced_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hpca_bridge_component.json b/src/generated/resources/assets/gtceu/models/block/machine/hpca_bridge_component.json new file mode 100644 index 00000000000..a36898fbafd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hpca_bridge_component.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hpca_bridge_component", + "variants": { + "active=false,hpca_part_damaged=false": { + "model": { + "parent": "gtceu:block/hpca_bridge_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/bridge", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=false,hpca_part_damaged=true": { + "model": { + "parent": "gtceu:block/hpca_bridge_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/damaged", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=true,hpca_part_damaged=false": { + "model": { + "parent": "gtceu:block/hpca_bridge_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/bridge_active", + "overlay_emissive": "gtceu:block/overlay/machine/hpca/bridge_active_emissive" + } + } + }, + "active=true,hpca_part_damaged=true": { + "model": { + "parent": "gtceu:block/hpca_bridge_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/damaged_active", + "overlay_emissive": "gtceu:block/overlay/machine/hpca/damaged_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hpca_computation_component.json b/src/generated/resources/assets/gtceu/models/block/machine/hpca_computation_component.json new file mode 100644 index 00000000000..d70f11d1800 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hpca_computation_component.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hpca_computation_component", + "variants": { + "active=false,hpca_part_damaged=false": { + "model": { + "parent": "gtceu:block/hpca_computation_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/computation", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=false,hpca_part_damaged=true": { + "model": { + "parent": "gtceu:block/hpca_computation_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/damaged", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=true,hpca_part_damaged=false": { + "model": { + "parent": "gtceu:block/hpca_computation_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/computation_active", + "overlay_emissive": "gtceu:block/overlay/machine/hpca/computation_active_emissive" + } + } + }, + "active=true,hpca_part_damaged=true": { + "model": { + "parent": "gtceu:block/hpca_computation_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/damaged_active", + "overlay_emissive": "gtceu:block/overlay/machine/hpca/damaged_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hpca_empty_component.json b/src/generated/resources/assets/gtceu/models/block/machine/hpca_empty_component.json new file mode 100644 index 00000000000..c7e602f8bac --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hpca_empty_component.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hpca_empty_component", + "variants": { + "active=false,hpca_part_damaged=false": { + "model": { + "parent": "gtceu:block/hpca_empty_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/empty", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=false,hpca_part_damaged=true": { + "model": { + "parent": "gtceu:block/hpca_empty_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/damaged", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=true,hpca_part_damaged=false": { + "model": { + "parent": "gtceu:block/hpca_empty_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/empty", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=true,hpca_part_damaged=true": { + "model": { + "parent": "gtceu:block/hpca_empty_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/damaged_active", + "overlay_emissive": "gtceu:block/overlay/machine/hpca/damaged_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hpca_heat_sink_component.json b/src/generated/resources/assets/gtceu/models/block/machine/hpca_heat_sink_component.json new file mode 100644 index 00000000000..40b2d987a4f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hpca_heat_sink_component.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hpca_heat_sink_component", + "variants": { + "active=false,hpca_part_damaged=false": { + "model": { + "parent": "gtceu:block/hpca_heat_sink_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/heat_sink", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=false,hpca_part_damaged=true": { + "model": { + "parent": "gtceu:block/hpca_heat_sink_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/damaged", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=true,hpca_part_damaged=false": { + "model": { + "parent": "gtceu:block/hpca_heat_sink_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/heat_sink", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=true,hpca_part_damaged=true": { + "model": { + "parent": "gtceu:block/hpca_heat_sink_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/damaged_active", + "overlay_emissive": "gtceu:block/overlay/machine/hpca/damaged_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_16a_energy_converter.json new file mode 100644 index 00000000000..7f7d14f6e38 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_16a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_1a_energy_converter.json new file mode 100644 index 00000000000..0dd01d05319 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_1a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_4a_energy_converter.json new file mode 100644 index 00000000000..2bbf7a4351d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_4a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_8a_energy_converter.json new file mode 100644 index 00000000000..5a8ce315abf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_8a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_air_scrubber.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_air_scrubber.json new file mode 100644 index 00000000000..5296bcca553 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_air_scrubber.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_air_scrubber", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_alloy_smelter.json new file mode 100644 index 00000000000..dabba92c905 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_arc_furnace.json new file mode 100644 index 00000000000..e2164bcdf1a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_assembler.json new file mode 100644 index 00000000000..763679135fa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_autoclave.json new file mode 100644 index 00000000000..296231d8d9f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_battery_buffer_16x.json new file mode 100644 index 00000000000..438446d4572 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_battery_buffer_4x.json new file mode 100644 index 00000000000..987ef9967f0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_battery_buffer_8x.json new file mode 100644 index 00000000000..6c679f124ad --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_bedrock_ore_miner.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_bedrock_ore_miner.json new file mode 100644 index 00000000000..dddd3e9b557 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_bedrock_ore_miner.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_bedrock_ore_miner", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_bender.json new file mode 100644 index 00000000000..2f2ebe09e3d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_block_breaker.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_block_breaker.json new file mode 100644 index 00000000000..a4933fea0e4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_block_breaker.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_block_breaker", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_brewery.json new file mode 100644 index 00000000000..f5cf8eda862 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_buffer.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_buffer.json new file mode 100644 index 00000000000..2369425f171 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_buffer.json @@ -0,0 +1,24 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_buffer", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/sided/single", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_buffer", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_buffer_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_canner.json new file mode 100644 index 00000000000..5376b99026b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_centrifuge.json new file mode 100644 index 00000000000..98947f511a6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_charger_4x.json new file mode 100644 index 00000000000..d2a820313ca --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_chemical_bath.json new file mode 100644 index 00000000000..072e7c7e023 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_chemical_reactor.json new file mode 100644 index 00000000000..835c03c7703 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_circuit_assembler.json new file mode 100644 index 00000000000..4a5a79ae908 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_combustion.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_combustion.json new file mode 100644 index 00000000000..272ac046858 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_combustion.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_combustion", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_top": "gtceu:block/generators/combustion/overlay_top", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_top": "gtceu:block/generators/combustion/overlay_top", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_top": "gtceu:block/generators/combustion/overlay_top_active", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_top": "gtceu:block/generators/combustion/overlay_top_active", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_compressor.json new file mode 100644 index 00000000000..b38bd9452b3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_cutter.json new file mode 100644 index 00000000000..b4b362210b4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_diode.json new file mode 100644 index 00000000000..35f015c19f9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_diode.json @@ -0,0 +1,92 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_distillery.json new file mode 100644 index 00000000000..33629837fb7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_electric_furnace.json new file mode 100644 index 00000000000..6b069a77aab --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_electrolyzer.json new file mode 100644 index 00000000000..7e8dc3d66cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_electromagnetic_separator.json new file mode 100644 index 00000000000..8096f494914 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_energy_input_hatch.json new file mode 100644 index 00000000000..4087dce65ef --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_energy_output_hatch.json new file mode 100644 index 00000000000..c9c40f5cc5b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_extractor.json new file mode 100644 index 00000000000..ed89594c342 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_extruder.json new file mode 100644 index 00000000000..d2d2d45d250 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_fermenter.json new file mode 100644 index 00000000000..f487b774187 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_fisher.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_fisher.json new file mode 100644 index 00000000000..9b0d31386e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_fisher.json @@ -0,0 +1,19 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_fisher", + "variants": { + "": { + "model": { + "parent": "gtceu:block/overlay/2_layer/top_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_screen", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_qtank_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_drilling_rig.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_drilling_rig.json new file mode 100644 index 00000000000..9be7c0cd463 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_drilling_rig.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_fluid_drilling_rig", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_heater.json new file mode 100644 index 00000000000..c13ade311e9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..42124781a20 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_solidifier.json new file mode 100644 index 00000000000..1c72e1fb755 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_forge_hammer.json new file mode 100644 index 00000000000..4d5389edbc6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_forming_press.json new file mode 100644 index 00000000000..bf3631e309c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_gas_collector.json new file mode 100644 index 00000000000..f81e58cc3c4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_gas_turbine.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_gas_turbine.json new file mode 100644 index 00000000000..1ebd0e0fc5e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_gas_turbine.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_gas_turbine", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side_active", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side_active", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_input_bus.json new file mode 100644 index 00000000000..a67ad9ced90 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_input_hatch.json new file mode 100644 index 00000000000..becbe694803 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_item_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_item_collector.json new file mode 100644 index 00000000000..30f74a848ca --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_item_collector.json @@ -0,0 +1,55 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_item_collector", + "variants": { + "active=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "active=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "active=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "active=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top_active", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_item_passthrough_hatch.json new file mode 100644 index 00000000000..e9b29bd3061 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_laser_engraver.json new file mode 100644 index 00000000000..57371f020b3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_lathe.json new file mode 100644 index 00000000000..96a0a79ded6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_macerator.json new file mode 100644 index 00000000000..aa958744c9f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_machine_hull.json new file mode 100644 index 00000000000..c856ea736c4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_miner.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_miner.json new file mode 100644 index 00000000000..3c111cb08b6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_miner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_miner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/miner/overlay_back", + "overlay_front": "gtceu:block/machines/miner/overlay_front", + "overlay_side": "gtceu:block/machines/miner/overlay_side", + "overlay_top": "gtceu:block/machines/miner/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/miner/overlay_back", + "overlay_front": "gtceu:block/machines/miner/overlay_front", + "overlay_side": "gtceu:block/machines/miner/overlay_side", + "overlay_top": "gtceu:block/machines/miner/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/miner/overlay_back", + "overlay_front": "gtceu:block/machines/miner/overlay_front", + "overlay_side": "gtceu:block/machines/miner/overlay_side", + "overlay_top": "gtceu:block/machines/miner/overlay_top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/miner/overlay_back", + "overlay_front": "gtceu:block/machines/miner/overlay_front", + "overlay_side": "gtceu:block/machines/miner/overlay_side", + "overlay_top": "gtceu:block/machines/miner/overlay_top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_mixer.json new file mode 100644 index 00000000000..44b2124e3a9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_muffler_hatch.json new file mode 100644 index 00000000000..bc919c55e02 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_ore_washer.json new file mode 100644 index 00000000000..73ea3d790dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_output_bus.json new file mode 100644 index 00000000000..ecf59021f8b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_output_hatch.json new file mode 100644 index 00000000000..df3214b2704 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_packer.json new file mode 100644 index 00000000000..6c148c28b85 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_polarizer.json new file mode 100644 index 00000000000..ed43df35b16 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_pump.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_pump.json new file mode 100644 index 00000000000..0800616efa0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_pump.json @@ -0,0 +1,17 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_pump", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/pump_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_rock_crusher.json new file mode 100644 index 00000000000..ff8c7f82afc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_rotor_holder.json new file mode 100644 index 00000000000..3157d8c5e46 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_rotor_holder.json @@ -0,0 +1,46 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_rotor_holder", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/machine/template/rotor_holder/block", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/overlay" + }, + "when": { + "is_formed": "true" + } + } + ], + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_scanner.json new file mode 100644 index 00000000000..30e92b9f2fe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_sifter.json new file mode 100644 index 00000000000..5b5287075fd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_steam_turbine.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_steam_turbine.json new file mode 100644 index 00000000000..18a4e532358 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_steam_turbine.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_steam_turbine", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side_active", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side_active", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_super_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_super_chest.json new file mode 100644 index 00000000000..3fc1592d12c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_super_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:hv_super_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_super_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_super_tank.json new file mode 100644 index 00000000000..ea46e580922 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_super_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:hv_super_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_thermal_centrifuge.json new file mode 100644 index 00000000000..3bcd79f69cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_16a.json new file mode 100644 index 00000000000..b2ae7935afd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_16a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_1a.json new file mode 100644 index 00000000000..ace15ee821e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_1a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_2a.json new file mode 100644 index 00000000000..cf95c176c7f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_2a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_4a.json new file mode 100644 index 00000000000..36905578d87 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_4a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_wiremill.json new file mode 100644 index 00000000000..a683fb486bb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_world_accelerator.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_world_accelerator.json new file mode 100644 index 00000000000..059cb8f45b6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_world_accelerator.json @@ -0,0 +1,135 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_world_accelerator", + "variants": { + "active=false,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "active=false,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/implosion_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/implosion_compressor.json new file mode 100644 index 00000000000..4c8ce61063e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/implosion_compressor.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:implosion_compressor", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/implosion_compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/implosion_compressor/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/implosion_compressor/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/implosion_compressor/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/implosion_compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/implosion_compressor/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/implosion_compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/implosion_compressor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/implosion_compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/implosion_compressor/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/implosion_compressor/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/implosion_compressor/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/implosion_compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/implosion_compressor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/implosion_compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/implosion_compressor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..5d7566c853f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_1024a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_1024a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..c7bffbfca5f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_1024a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_1024a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_16a_energy_converter.json new file mode 100644 index 00000000000..f00d9762b95 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_16a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_1a_energy_converter.json new file mode 100644 index 00000000000..b1aa772f85c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_1a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..864a7b6619a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_256a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_256a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..81cda300317 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_256a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_256a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..b4911bae298 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_4096a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_4096a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..dbd333c8593 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_4096a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_4096a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_4a_energy_converter.json new file mode 100644 index 00000000000..1fe5d86dc60 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_4a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_8a_energy_converter.json new file mode 100644 index 00000000000..a4fe383034e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_8a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_alloy_smelter.json new file mode 100644 index 00000000000..b139f8b8d87 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_arc_furnace.json new file mode 100644 index 00000000000..f99bd4792f4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_assembler.json new file mode 100644 index 00000000000..31c68ef6856 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_autoclave.json new file mode 100644 index 00000000000..c3fe3032752 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_battery_buffer_16x.json new file mode 100644 index 00000000000..a507d9d48d8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_battery_buffer_4x.json new file mode 100644 index 00000000000..19ef5e4fb2e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_battery_buffer_8x.json new file mode 100644 index 00000000000..ed8ad4bf3bf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_bender.json new file mode 100644 index 00000000000..7e56e36e0f2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_brewery.json new file mode 100644 index 00000000000..b2de603c62c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_canner.json new file mode 100644 index 00000000000..a11298b7986 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_centrifuge.json new file mode 100644 index 00000000000..09c323ba331 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_charger_4x.json new file mode 100644 index 00000000000..eafa1b8edf4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_chemical_bath.json new file mode 100644 index 00000000000..93f48175067 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_chemical_reactor.json new file mode 100644 index 00000000000..26fd8740291 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_circuit_assembler.json new file mode 100644 index 00000000000..dcf1b694641 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_compressor.json new file mode 100644 index 00000000000..b4ea8a0ae84 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_cutter.json new file mode 100644 index 00000000000..7d257b939a6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_diode.json new file mode 100644 index 00000000000..9b379db7b66 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_diode.json @@ -0,0 +1,92 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_distillery.json new file mode 100644 index 00000000000..686d5bc836f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_electric_furnace.json new file mode 100644 index 00000000000..a2a9a4d29bc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_electrolyzer.json new file mode 100644 index 00000000000..c6d1e1cd05c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_electromagnetic_separator.json new file mode 100644 index 00000000000..5ff6ec9676d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_input_hatch.json new file mode 100644 index 00000000000..e88fd8fb524 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..c724b5a5960 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_input_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_energy_input_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..8a061ee5c8a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_input_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_energy_input_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_output_hatch.json new file mode 100644 index 00000000000..1b231f31c25 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..bf1f9565dd6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_output_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_energy_output_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..f70add003c0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_output_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_energy_output_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_extractor.json new file mode 100644 index 00000000000..4e3fe87be4c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_extruder.json new file mode 100644 index 00000000000..35df9b9d9dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_fermenter.json new file mode 100644 index 00000000000..c7e4716c75c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_fisher.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_fisher.json new file mode 100644 index 00000000000..e2ab934328f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_fisher.json @@ -0,0 +1,19 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_fisher", + "variants": { + "": { + "model": { + "parent": "gtceu:block/overlay/2_layer/top_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_screen", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_qtank_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_fluid_heater.json new file mode 100644 index 00000000000..d1398934f3d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..c210cbcd319 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_fluid_solidifier.json new file mode 100644 index 00000000000..a2de694e696 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_forge_hammer.json new file mode 100644 index 00000000000..427b616453f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_forming_press.json new file mode 100644 index 00000000000..2f62a08627b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_gas_collector.json new file mode 100644 index 00000000000..e0644766e62 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_input_bus.json new file mode 100644 index 00000000000..92d54201168 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch.json new file mode 100644 index 00000000000..9b6eb4d9bff --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch_4x.json new file mode 100644 index 00000000000..0f1c3fe5335 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch_4x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_input_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch_9x.json new file mode 100644 index 00000000000..fc4fc583e61 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch_9x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_input_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_item_passthrough_hatch.json new file mode 100644 index 00000000000..36128042a79 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_large_miner.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_large_miner.json new file mode 100644 index 00000000000..352943eab17 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_large_miner.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_large_miner", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/large_miner_active", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/large_miner_active", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/large_miner_active", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/large_miner_active", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_laser_engraver.json new file mode 100644 index 00000000000..64fcb4a0f28 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_lathe.json new file mode 100644 index 00000000000..d2aecd4810a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_macerator.json new file mode 100644 index 00000000000..43e922d1976 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_machine_hull.json new file mode 100644 index 00000000000..7d63fb91a4d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_mixer.json new file mode 100644 index 00000000000..559b1b5e8db --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_muffler_hatch.json new file mode 100644 index 00000000000..3fe2f96e231 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_ore_washer.json new file mode 100644 index 00000000000..71ff7b5b690 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_output_bus.json new file mode 100644 index 00000000000..77c7d8d1b07 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch.json new file mode 100644 index 00000000000..52182d2cd41 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch_4x.json new file mode 100644 index 00000000000..9e77d9d2c4d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch_4x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_output_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch_9x.json new file mode 100644 index 00000000000..3e35871adf3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch_9x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_output_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_packer.json new file mode 100644 index 00000000000..5c91556bbac --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_parallel_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_parallel_hatch.json new file mode 100644 index 00000000000..201b3e4a00b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_parallel_hatch.json @@ -0,0 +1,48 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_parallel_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk1/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk1/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk1/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk1/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk1/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk1/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk1/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk1/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_polarizer.json new file mode 100644 index 00000000000..99206728961 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_quantum_chest.json new file mode 100644 index 00000000000..f6e5758c15b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_quantum_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:iv_quantum_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_quantum_tank.json new file mode 100644 index 00000000000..4b1f4970f3c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_quantum_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:iv_quantum_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_rock_crusher.json new file mode 100644 index 00000000000..c0b3fafc4a6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_rotor_holder.json new file mode 100644 index 00000000000..a6ac8c5643a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_rotor_holder.json @@ -0,0 +1,46 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_rotor_holder", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/machine/template/rotor_holder/block", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/overlay" + }, + "when": { + "is_formed": "true" + } + } + ], + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_scanner.json new file mode 100644 index 00000000000..fc31029941c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_sifter.json new file mode 100644 index 00000000000..0d7f7bfa263 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..6bbb41c45ac --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_substation_input_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_substation_input_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..439bc4873f4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_substation_output_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_substation_output_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_thermal_centrifuge.json new file mode 100644 index 00000000000..2742d55c014 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_16a.json new file mode 100644 index 00000000000..7b75caa363b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_16a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_1a.json new file mode 100644 index 00000000000..cac711c5ae6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_1a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_2a.json new file mode 100644 index 00000000000..2144efdd721 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_2a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_4a.json new file mode 100644 index 00000000000..1a0fd2722f9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_4a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_wiremill.json new file mode 100644 index 00000000000..39a7d92ab72 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_world_accelerator.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_world_accelerator.json new file mode 100644 index 00000000000..ddd2c26282c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_world_accelerator.json @@ -0,0 +1,135 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_world_accelerator", + "variants": { + "active=false,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "active=false,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_arc_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/large_arc_smelter.json new file mode 100644 index 00000000000..fc909b60a04 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_arc_smelter.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_arc_smelter", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/large_assembler.json new file mode 100644 index 00000000000..39f996df789 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_assembler.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_assembler", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/large_autoclave.json new file mode 100644 index 00000000000..d88b350ce40 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_autoclave.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_autoclave", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/watertight_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_brewer.json b/src/generated/resources/assets/gtceu/models/block/machine/large_brewer.json new file mode 100644 index 00000000000..bfc31717386 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_brewer.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_brewer", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/corrosion_proof_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/corrosion_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_brewer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/corrosion_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/corrosion_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/corrosion_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/corrosion_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_brewer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/corrosion_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/corrosion_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/corrosion_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/large_centrifuge.json new file mode 100644 index 00000000000..07f2cf93514 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_centrifuge.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_centrifuge", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/large_chemical_bath.json new file mode 100644 index 00000000000..39a158f2a12 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_chemical_bath.json @@ -0,0 +1,99 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:fluid_area", + "block_light": 15, + "offset_face": -0.125, + "overwrite_light": true, + "sky_light": 15 + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:large_chemical_bath", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/watertight_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/large_chemical_reactor.json new file mode 100644 index 00000000000..b8329792d0b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_chemical_reactor.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_chemical_reactor", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_inert_ptfe" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_inert_ptfe", + "overlay_front": "gtceu:block/multiblock/large_chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_inert_ptfe", + "overlay_front": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_inert_ptfe", + "overlay_front": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_inert_ptfe", + "overlay_front": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_inert_ptfe", + "overlay_front": "gtceu:block/multiblock/large_chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_inert_ptfe", + "overlay_front": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_inert_ptfe", + "overlay_front": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_inert_ptfe", + "overlay_front": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/large_circuit_assembler.json new file mode 100644 index 00000000000..cc07bbe188c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_circuit_assembler.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_circuit_assembler", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_combustion_engine.json b/src/generated/resources/assets/gtceu/models/block/machine/large_combustion_engine.json new file mode 100644 index 00000000000..c2fd1bdc736 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_combustion_engine.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_combustion_engine", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/large_cutter.json new file mode 100644 index 00000000000..118bb24e6b7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_cutter.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_cutter", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/shock_proof_cutting_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/shock_proof_cutting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_cutter/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/shock_proof_cutting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/shock_proof_cutting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/shock_proof_cutting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/shock_proof_cutting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_cutter/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/shock_proof_cutting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/shock_proof_cutting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/shock_proof_cutting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/large_distillery.json new file mode 100644 index 00000000000..c3f6da624ba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_distillery.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_distillery", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/watertight_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/large_electrolyzer.json new file mode 100644 index 00000000000..3751ab04082 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_electrolyzer.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_electrolyzer", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/nonconducting_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_electromagnet.json b/src/generated/resources/assets/gtceu/models/block/machine/large_electromagnet.json new file mode 100644 index 00000000000..f6d8125f278 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_electromagnet.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_electromagnet", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/nonconducting_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_engraving_laser.json b/src/generated/resources/assets/gtceu/models/block/machine/large_engraving_laser.json new file mode 100644 index 00000000000..31a60cd2a85 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_engraving_laser.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_engraving_laser", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/laser_safe_engraving_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/laser_safe_engraving_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/laser_safe_engraving_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/laser_safe_engraving_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/laser_safe_engraving_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/laser_safe_engraving_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/laser_safe_engraving_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/laser_safe_engraving_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/laser_safe_engraving_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/large_extractor.json new file mode 100644 index 00000000000..0b017db9cc4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_extractor.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_extractor", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/watertight_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/large_extruder.json new file mode 100644 index 00000000000..b76f2f2ffdf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_extruder.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_extruder", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/stress_proof_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_maceration_tower.json b/src/generated/resources/assets/gtceu/models/block/machine/large_maceration_tower.json new file mode 100644 index 00000000000..f9d75dba0e7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_maceration_tower.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_maceration_tower", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/secure_maceration_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/secure_maceration_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/secure_maceration_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/secure_maceration_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/secure_maceration_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/secure_maceration_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/secure_maceration_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/secure_maceration_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/secure_maceration_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_material_press.json b/src/generated/resources/assets/gtceu/models/block/machine/large_material_press.json new file mode 100644 index 00000000000..6a6474926ed --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_material_press.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_material_press", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/stress_proof_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_material_press/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_material_press/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/large_mixer.json new file mode 100644 index 00000000000..1795d5f9124 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_mixer.json @@ -0,0 +1,99 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:fluid_area", + "block_light": 15, + "offset_face": -0.125, + "overwrite_light": true, + "sky_light": 15 + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:large_mixer", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/reaction_safe_mixing_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/reaction_safe_mixing_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_mixer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/reaction_safe_mixing_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/reaction_safe_mixing_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/reaction_safe_mixing_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/reaction_safe_mixing_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_mixer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/reaction_safe_mixing_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/reaction_safe_mixing_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/reaction_safe_mixing_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/large_packer.json new file mode 100644 index 00000000000..5a1e1d28abd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_packer.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_packer", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/gcym/large_packer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_packer/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/gcym/large_packer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_packer/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/gcym/large_packer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_packer/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/gcym/large_packer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_packer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/gcym/large_packer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_packer/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/gcym/large_packer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_packer/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/gcym/large_packer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_packer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/gcym/large_packer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_packer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_sifting_funnel.json b/src/generated/resources/assets/gtceu/models/block/machine/large_sifting_funnel.json new file mode 100644 index 00000000000..d0facada8be --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_sifting_funnel.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_sifting_funnel", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/large_solidifier.json new file mode 100644 index 00000000000..130de4b18ab --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_solidifier.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_solidifier", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/watertight_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/large_wiremill.json new file mode 100644 index 00000000000..83b9d1f5277 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_wiremill.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_wiremill", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/stress_proof_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_alloy_smelter.json new file mode 100644 index 00000000000..7e52451d52c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_alloy_smelter.json @@ -0,0 +1,116 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lp_steam_alloy_smelter", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_compressor.json new file mode 100644 index 00000000000..0d61d56b9fe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_compressor.json @@ -0,0 +1,132 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lp_steam_compressor", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_extractor.json new file mode 100644 index 00000000000..ad851c77e82 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_extractor.json @@ -0,0 +1,132 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lp_steam_extractor", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_forge_hammer.json new file mode 100644 index 00000000000..853a7cbb881 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_forge_hammer.json @@ -0,0 +1,114 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lp_steam_forge_hammer", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_furnace.json new file mode 100644 index 00000000000..8a56990041c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_furnace.json @@ -0,0 +1,116 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lp_steam_furnace", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/furnace/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/furnace/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/furnace/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/furnace/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_liquid_boiler.json b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_liquid_boiler.json new file mode 100644 index 00000000000..efc31aa8daf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_liquid_boiler.json @@ -0,0 +1,63 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lp_steam_liquid_boiler", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/lava/overlay_front", + "overlay_front_emissive": "gtceu:block/generators/boiler/lava/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/lava/overlay_front_active", + "overlay_front_emissive": "gtceu:block/generators/boiler/lava/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/lava/overlay_front_active", + "overlay_front_emissive": "gtceu:block/generators/boiler/lava/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/lava/overlay_front", + "overlay_front_emissive": "gtceu:block/generators/boiler/lava/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_macerator.json new file mode 100644 index 00000000000..e05723a2f67 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_macerator.json @@ -0,0 +1,124 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lp_steam_macerator", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_miner.json b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_miner.json new file mode 100644 index 00000000000..c2e1558f61e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_miner.json @@ -0,0 +1,124 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lp_steam_miner", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_back": "gtceu:block/machines/steam_miner/overlay_back", + "overlay_bottom": "gtceu:block/machines/steam_miner/overlay_bottom", + "overlay_front": "gtceu:block/machines/steam_miner/overlay_front", + "overlay_side": "gtceu:block/machines/steam_miner/overlay_side" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_back": "gtceu:block/machines/steam_miner/overlay_back", + "overlay_bottom": "gtceu:block/machines/steam_miner/overlay_bottom", + "overlay_front": "gtceu:block/machines/steam_miner/overlay_front", + "overlay_side": "gtceu:block/machines/steam_miner/overlay_side" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_back": "gtceu:block/machines/steam_miner/overlay_back", + "overlay_bottom": "gtceu:block/machines/steam_miner/overlay_bottom", + "overlay_front": "gtceu:block/machines/steam_miner/overlay_front", + "overlay_side": "gtceu:block/machines/steam_miner/overlay_side" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_back": "gtceu:block/machines/steam_miner/overlay_back", + "overlay_bottom": "gtceu:block/machines/steam_miner/overlay_bottom", + "overlay_front": "gtceu:block/machines/steam_miner/overlay_front", + "overlay_side": "gtceu:block/machines/steam_miner/overlay_side" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_rock_crusher.json new file mode 100644 index 00000000000..e965895bcae --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_rock_crusher.json @@ -0,0 +1,112 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lp_steam_rock_crusher", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_solar_boiler.json b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_solar_boiler.json new file mode 100644 index 00000000000..c90416b1d89 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_solar_boiler.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lp_steam_solar_boiler", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_top": "gtceu:block/generators/boiler/solar/overlay_top" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_top": "gtceu:block/generators/boiler/solar/overlay_top_active" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_top": "gtceu:block/generators/boiler/solar/overlay_top_active" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_top": "gtceu:block/generators/boiler/solar/overlay_top" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_solid_boiler.json b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_solid_boiler.json new file mode 100644 index 00000000000..8fdf3e8da71 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_solid_boiler.json @@ -0,0 +1,63 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lp_steam_solid_boiler", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/coal/overlay_front", + "overlay_front_emissive": "gtceu:block/generators/boiler/coal/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/coal/overlay_front_active", + "overlay_front_emissive": "gtceu:block/generators/boiler/coal/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/coal/overlay_front_active", + "overlay_front_emissive": "gtceu:block/generators/boiler/coal/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/coal/overlay_front", + "overlay_front_emissive": "gtceu:block/generators/boiler/coal/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..6ef3541d6cb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_1024a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_1024a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..edda0aeb046 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_1024a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_1024a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_16a_energy_converter.json new file mode 100644 index 00000000000..6460c0727d7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_16a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_1a_energy_converter.json new file mode 100644 index 00000000000..e962584365e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_1a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..8dea42bada4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_256a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_256a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..496d9a50f65 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_256a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_256a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..85494a36998 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_4096a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_4096a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..527259c4cd9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_4096a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_4096a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_4a_energy_converter.json new file mode 100644 index 00000000000..def4ce8e457 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_4a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_8a_energy_converter.json new file mode 100644 index 00000000000..36efddf09f1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_8a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_alloy_smelter.json new file mode 100644 index 00000000000..7ee350bb5fe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_arc_furnace.json new file mode 100644 index 00000000000..ac6990de7ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_assembler.json new file mode 100644 index 00000000000..a86b562f5c6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_autoclave.json new file mode 100644 index 00000000000..d1143268f97 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_battery_buffer_16x.json new file mode 100644 index 00000000000..19a46e68a90 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_battery_buffer_4x.json new file mode 100644 index 00000000000..845ea75105c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_battery_buffer_8x.json new file mode 100644 index 00000000000..1a4baa77c17 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_bender.json new file mode 100644 index 00000000000..19cd3063fe3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_brewery.json new file mode 100644 index 00000000000..3ed9fc23d83 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_canner.json new file mode 100644 index 00000000000..3713b3216ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_centrifuge.json new file mode 100644 index 00000000000..ace9433b39e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_charger_4x.json new file mode 100644 index 00000000000..a6607818014 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_chemical_bath.json new file mode 100644 index 00000000000..9aa01dde7c9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_chemical_reactor.json new file mode 100644 index 00000000000..75de7797f6f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_circuit_assembler.json new file mode 100644 index 00000000000..7f61c557b80 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_compressor.json new file mode 100644 index 00000000000..5715796675f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_cutter.json new file mode 100644 index 00000000000..4d441570c10 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_diode.json new file mode 100644 index 00000000000..fb8fbe9fd7a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_diode.json @@ -0,0 +1,92 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_distillery.json new file mode 100644 index 00000000000..7fecf0b7367 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_dual_input_hatch.json new file mode 100644 index 00000000000..6b8a0180db1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_dual_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_dual_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_dual_output_hatch.json new file mode 100644 index 00000000000..ec008ad0dc7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_dual_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_dual_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_electric_furnace.json new file mode 100644 index 00000000000..c674ee8d242 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_electrolyzer.json new file mode 100644 index 00000000000..2474dbbfdf3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_electromagnetic_separator.json new file mode 100644 index 00000000000..c40711c2c65 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_input_hatch.json new file mode 100644 index 00000000000..68621cbdc91 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..3c9d3ea91c5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_input_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_energy_input_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..3bc6503b8d3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_input_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_energy_input_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_output_hatch.json new file mode 100644 index 00000000000..bac0cd2835c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..78bb180947f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_output_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_energy_output_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..8898abbf4bc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_output_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_energy_output_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_extractor.json new file mode 100644 index 00000000000..9ee7b5b023d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_extruder.json new file mode 100644 index 00000000000..7b1b63944df --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_fermenter.json new file mode 100644 index 00000000000..86e4ed0f03b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_fisher.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_fisher.json new file mode 100644 index 00000000000..7f47bf29d5f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_fisher.json @@ -0,0 +1,19 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_fisher", + "variants": { + "": { + "model": { + "parent": "gtceu:block/overlay/2_layer/top_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_screen", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_qtank_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_fluid_heater.json new file mode 100644 index 00000000000..318473c4e55 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..67d979cef4e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_fluid_solidifier.json new file mode 100644 index 00000000000..1dc608edd40 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_forge_hammer.json new file mode 100644 index 00000000000..e741023a9e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_forming_press.json new file mode 100644 index 00000000000..5f59eded59a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_fusion_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_fusion_reactor.json new file mode 100644 index 00000000000..6e5fbe2d625 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_fusion_reactor.json @@ -0,0 +1,95 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:fusion_ring" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:luv_fusion_reactor", + "texture_overrides": { + "all": "gtceu:block/casings/fusion/fusion_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_gas_collector.json new file mode 100644 index 00000000000..5b6411fb3ff --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_input_bus.json new file mode 100644 index 00000000000..19346c670b1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch.json new file mode 100644 index 00000000000..253f22fc33b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch_4x.json new file mode 100644 index 00000000000..fddb5205bc7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch_4x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_input_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch_9x.json new file mode 100644 index 00000000000..3a2302e0bce --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch_9x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_input_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_item_passthrough_hatch.json new file mode 100644 index 00000000000..ef02bf83ddf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_large_miner.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_large_miner.json new file mode 100644 index 00000000000..b5b9577163c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_large_miner.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_large_miner", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/large_miner_active", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/large_miner_active", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/large_miner_active", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/large_miner_active", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_laser_engraver.json new file mode 100644 index 00000000000..598ada929ba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_lathe.json new file mode 100644 index 00000000000..b55f322796b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_macerator.json new file mode 100644 index 00000000000..e7622ea488e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_machine_hull.json new file mode 100644 index 00000000000..bf5a2117071 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_mixer.json new file mode 100644 index 00000000000..2d440a654ee --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_muffler_hatch.json new file mode 100644 index 00000000000..59e96796afd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_ore_washer.json new file mode 100644 index 00000000000..b11c062e369 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_output_bus.json new file mode 100644 index 00000000000..d92dcdf4d12 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch.json new file mode 100644 index 00000000000..58c8bd23514 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch_4x.json new file mode 100644 index 00000000000..ba59aa73f6a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch_4x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_output_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch_9x.json new file mode 100644 index 00000000000..056d5b06cf2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch_9x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_output_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_packer.json new file mode 100644 index 00000000000..a985c18721f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_parallel_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_parallel_hatch.json new file mode 100644 index 00000000000..a5ad885d5e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_parallel_hatch.json @@ -0,0 +1,48 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_parallel_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk2/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk2/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk2/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk2/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk2/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk2/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk2/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk2/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_polarizer.json new file mode 100644 index 00000000000..a743c223f7b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_quantum_chest.json new file mode 100644 index 00000000000..780781714a7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_quantum_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:luv_quantum_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_quantum_tank.json new file mode 100644 index 00000000000..65355a402fa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_quantum_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:luv_quantum_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_rock_crusher.json new file mode 100644 index 00000000000..2a5281ecae6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_rotor_holder.json new file mode 100644 index 00000000000..6ed6838d370 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_rotor_holder.json @@ -0,0 +1,46 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_rotor_holder", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/machine/template/rotor_holder/block", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/overlay" + }, + "when": { + "is_formed": "true" + } + } + ], + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_scanner.json new file mode 100644 index 00000000000..993160a9f21 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_sifter.json new file mode 100644 index 00000000000..0f2b1d05306 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..3b7edde5155 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_substation_input_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_substation_input_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..d0bee4bf091 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_substation_output_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_substation_output_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_thermal_centrifuge.json new file mode 100644 index 00000000000..299b886047d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_16a.json new file mode 100644 index 00000000000..a74c18ce3cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_16a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_1a.json new file mode 100644 index 00000000000..51598d8d385 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_1a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_2a.json new file mode 100644 index 00000000000..9053a69ddf8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_2a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_4a.json new file mode 100644 index 00000000000..20309114743 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_4a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_wiremill.json new file mode 100644 index 00000000000..9a73902e6be --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_world_accelerator.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_world_accelerator.json new file mode 100644 index 00000000000..07ce91ba5f6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_world_accelerator.json @@ -0,0 +1,135 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_world_accelerator", + "variants": { + "active=false,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "active=false,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_16a_energy_converter.json new file mode 100644 index 00000000000..05fc2bd2216 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_16a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_1a_energy_converter.json new file mode 100644 index 00000000000..14d2cea358b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_1a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_4a_energy_converter.json new file mode 100644 index 00000000000..8c0c96f60a7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_4a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_8a_energy_converter.json new file mode 100644 index 00000000000..a6d4e48d555 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_8a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_air_scrubber.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_air_scrubber.json new file mode 100644 index 00000000000..a42ea4207bd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_air_scrubber.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_air_scrubber", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_alloy_smelter.json new file mode 100644 index 00000000000..00b39438025 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_arc_furnace.json new file mode 100644 index 00000000000..cac2af458cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_assembler.json new file mode 100644 index 00000000000..e5ccbbd1fe1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_autoclave.json new file mode 100644 index 00000000000..3a88818a2d3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_battery_buffer_16x.json new file mode 100644 index 00000000000..0274307c90e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_battery_buffer_4x.json new file mode 100644 index 00000000000..6405bc48d15 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_battery_buffer_8x.json new file mode 100644 index 00000000000..7cad7b0f6d8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_bender.json new file mode 100644 index 00000000000..89760a5a49d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_block_breaker.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_block_breaker.json new file mode 100644 index 00000000000..6611b1806ca --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_block_breaker.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_block_breaker", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_brewery.json new file mode 100644 index 00000000000..28e6c931bb3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_buffer.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_buffer.json new file mode 100644 index 00000000000..c24baf90b3d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_buffer.json @@ -0,0 +1,24 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_buffer", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/sided/single", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_buffer", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_buffer_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_canner.json new file mode 100644 index 00000000000..3e59f15eed6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_centrifuge.json new file mode 100644 index 00000000000..f6da6ebbf28 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_charger_4x.json new file mode 100644 index 00000000000..6a0533b5286 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_chemical_bath.json new file mode 100644 index 00000000000..7f694aba23e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_chemical_reactor.json new file mode 100644 index 00000000000..ef52119fa31 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_circuit_assembler.json new file mode 100644 index 00000000000..472eb4a51cc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_combustion.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_combustion.json new file mode 100644 index 00000000000..ac174b63bde --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_combustion.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_combustion", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_top": "gtceu:block/generators/combustion/overlay_top", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_top": "gtceu:block/generators/combustion/overlay_top", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_top": "gtceu:block/generators/combustion/overlay_top_active", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_top": "gtceu:block/generators/combustion/overlay_top_active", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_compressor.json new file mode 100644 index 00000000000..99eec3703e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_cutter.json new file mode 100644 index 00000000000..3a6ad88663e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_diode.json new file mode 100644 index 00000000000..7c792ee34ce --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_diode.json @@ -0,0 +1,92 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_distillery.json new file mode 100644 index 00000000000..6d4417b41a3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_electric_furnace.json new file mode 100644 index 00000000000..67aa4e917aa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_electrolyzer.json new file mode 100644 index 00000000000..c02820ce48c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_electromagnetic_separator.json new file mode 100644 index 00000000000..f7f332b4d06 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_energy_input_hatch.json new file mode 100644 index 00000000000..12c85f1239b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_energy_output_hatch.json new file mode 100644 index 00000000000..83042f5c8d6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_extractor.json new file mode 100644 index 00000000000..2384f71c837 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_extruder.json new file mode 100644 index 00000000000..ea8737d4978 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_fermenter.json new file mode 100644 index 00000000000..b1c4c899733 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_fisher.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_fisher.json new file mode 100644 index 00000000000..8ab7db422d5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_fisher.json @@ -0,0 +1,19 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_fisher", + "variants": { + "": { + "model": { + "parent": "gtceu:block/overlay/2_layer/top_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_screen", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_qtank_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_fluid_heater.json new file mode 100644 index 00000000000..d21a6ae9c69 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..aa899b21410 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_fluid_solidifier.json new file mode 100644 index 00000000000..17bd5112ee6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_forge_hammer.json new file mode 100644 index 00000000000..88f7fa18fa6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_forming_press.json new file mode 100644 index 00000000000..40b523c29d1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_gas_collector.json new file mode 100644 index 00000000000..a84c2ad9e20 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_gas_turbine.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_gas_turbine.json new file mode 100644 index 00000000000..dd2e94ccff8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_gas_turbine.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_gas_turbine", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side_active", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side_active", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_input_bus.json new file mode 100644 index 00000000000..be70094c1f1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_input_hatch.json new file mode 100644 index 00000000000..a968b5aad43 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_item_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_item_collector.json new file mode 100644 index 00000000000..e7091b0c688 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_item_collector.json @@ -0,0 +1,55 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_item_collector", + "variants": { + "active=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "active=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "active=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "active=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top_active", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_item_passthrough_hatch.json new file mode 100644 index 00000000000..4e81bc94d7a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_laser_engraver.json new file mode 100644 index 00000000000..dd43f24397b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_lathe.json new file mode 100644 index 00000000000..7d0f8bd458d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_macerator.json new file mode 100644 index 00000000000..62712ff8286 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_machine_hull.json new file mode 100644 index 00000000000..2f2b0e25ae9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_miner.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_miner.json new file mode 100644 index 00000000000..d25ed08236d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_miner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_miner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/miner/overlay_back", + "overlay_front": "gtceu:block/machines/miner/overlay_front", + "overlay_side": "gtceu:block/machines/miner/overlay_side", + "overlay_top": "gtceu:block/machines/miner/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/miner/overlay_back", + "overlay_front": "gtceu:block/machines/miner/overlay_front", + "overlay_side": "gtceu:block/machines/miner/overlay_side", + "overlay_top": "gtceu:block/machines/miner/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/miner/overlay_back", + "overlay_front": "gtceu:block/machines/miner/overlay_front", + "overlay_side": "gtceu:block/machines/miner/overlay_side", + "overlay_top": "gtceu:block/machines/miner/overlay_top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/miner/overlay_back", + "overlay_front": "gtceu:block/machines/miner/overlay_front", + "overlay_side": "gtceu:block/machines/miner/overlay_side", + "overlay_top": "gtceu:block/machines/miner/overlay_top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_mixer.json new file mode 100644 index 00000000000..cad24e95bf5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_muffler_hatch.json new file mode 100644 index 00000000000..47f7eb2dab3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_ore_washer.json new file mode 100644 index 00000000000..37cfd5e94fa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_output_bus.json new file mode 100644 index 00000000000..53d7e4d643a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_output_hatch.json new file mode 100644 index 00000000000..ac1b89fd6b0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_packer.json new file mode 100644 index 00000000000..331c1439e80 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_polarizer.json new file mode 100644 index 00000000000..57be97fa652 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_pump.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_pump.json new file mode 100644 index 00000000000..7f91b5b260b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_pump.json @@ -0,0 +1,17 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_pump", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/pump_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_rock_crusher.json new file mode 100644 index 00000000000..38da7ed68b3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_scanner.json new file mode 100644 index 00000000000..79e23cfc3c0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_sifter.json new file mode 100644 index 00000000000..f0dc38113bb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_steam_turbine.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_steam_turbine.json new file mode 100644 index 00000000000..ad4ac9fbf93 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_steam_turbine.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_steam_turbine", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side_active", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side_active", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_super_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_super_chest.json new file mode 100644 index 00000000000..7353e60692a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_super_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:lv_super_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_super_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_super_tank.json new file mode 100644 index 00000000000..a7b6ee0c7d2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_super_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:lv_super_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_thermal_centrifuge.json new file mode 100644 index 00000000000..d0b6749c853 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_16a.json new file mode 100644 index 00000000000..733e8e6cc74 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_16a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_1a.json new file mode 100644 index 00000000000..36fe2cc6f3e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_1a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_2a.json new file mode 100644 index 00000000000..93361fd4ed8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_2a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_4a.json new file mode 100644 index 00000000000..e8188934be9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_4a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_wiremill.json new file mode 100644 index 00000000000..9ff5ff1a706 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_world_accelerator.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_world_accelerator.json new file mode 100644 index 00000000000..3c3f8fe36ac --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_world_accelerator.json @@ -0,0 +1,135 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_world_accelerator", + "variants": { + "active=false,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "active=false,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/maintenance_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/maintenance_hatch.json new file mode 100644 index 00000000000..127be0cb2bc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/maintenance_hatch.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:maintenance_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "taped=false": { + "model": { + "parent": "gtceu:block/machine/part/maintenance_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "taped=true": { + "model": { + "parent": "gtceu:block/machine/part/maintenance_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_2": "gtceu:block/overlay/machine/overlay_maintenance_taped", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/max_16a_energy_converter.json new file mode 100644 index 00000000000..a7a850d6d60 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_16a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/max_1a_energy_converter.json new file mode 100644 index 00000000000..6f460753085 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_1a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/max_4a_energy_converter.json new file mode 100644 index 00000000000..3fa4e20b86b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_4a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/max_8a_energy_converter.json new file mode 100644 index 00000000000..064ac0d4032 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_8a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/max_battery_buffer_16x.json new file mode 100644 index 00000000000..d25036d10e8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/max_battery_buffer_4x.json new file mode 100644 index 00000000000..a2d6526339d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/max_battery_buffer_8x.json new file mode 100644 index 00000000000..71de77137b4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/max_charger_4x.json new file mode 100644 index 00000000000..7fb13d6beea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/max_dual_input_hatch.json new file mode 100644 index 00000000000..6bc2ec01f53 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_dual_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_dual_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/max_dual_output_hatch.json new file mode 100644 index 00000000000..0db7da940cb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_dual_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_dual_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/max_energy_input_hatch.json new file mode 100644 index 00000000000..63d1f308f05 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/max_energy_input_hatch_16a.json new file mode 100644 index 00000000000..b44773b888f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_energy_input_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_energy_input_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/max_energy_input_hatch_4a.json new file mode 100644 index 00000000000..42c353dae5b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_energy_input_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_energy_input_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/max_energy_output_hatch.json new file mode 100644 index 00000000000..3f1abf29fa0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/max_energy_output_hatch_16a.json new file mode 100644 index 00000000000..299b09696d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_energy_output_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_energy_output_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/max_energy_output_hatch_4a.json new file mode 100644 index 00000000000..6270c3ec029 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_energy_output_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_energy_output_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/max_input_bus.json new file mode 100644 index 00000000000..88cef882c84 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch.json new file mode 100644 index 00000000000..a9a78e5ea7e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch_4x.json new file mode 100644 index 00000000000..162675606eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch_4x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_input_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch_9x.json new file mode 100644 index 00000000000..87e69c1b1ab --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch_9x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_input_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/max_machine_hull.json new file mode 100644 index 00000000000..7c738280ed5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/max_output_bus.json new file mode 100644 index 00000000000..911281a9402 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch.json new file mode 100644 index 00000000000..025e5838e39 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch_4x.json new file mode 100644 index 00000000000..82a7d908144 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch_4x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_output_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch_9x.json new file mode 100644 index 00000000000..e9afb2666f0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch_9x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_output_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/max_substation_input_hatch_64a.json new file mode 100644 index 00000000000..338119a9a51 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_substation_input_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_substation_input_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/max_substation_output_hatch_64a.json new file mode 100644 index 00000000000..3e50afdcec5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_substation_output_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_substation_output_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/me_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/me_input_bus.json new file mode 100644 index 00000000000..89cbfb0b5ee --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/me_input_bus.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:me_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/appeng/me_input_bus", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/appeng/me_input_bus", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/me_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/me_input_hatch.json new file mode 100644 index 00000000000..e06ab9b2c09 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/me_input_hatch.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:me_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/appeng/me_input_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/appeng/me_input_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/me_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/me_output_bus.json new file mode 100644 index 00000000000..b3d24ae564a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/me_output_bus.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:me_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/appeng/me_output_bus", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/appeng/me_output_bus", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/me_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/me_output_hatch.json new file mode 100644 index 00000000000..676ee091e01 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/me_output_hatch.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:me_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/appeng/me_output_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/appeng/me_output_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/me_pattern_buffer.json b/src/generated/resources/assets/gtceu/models/block/machine/me_pattern_buffer.json new file mode 100644 index 00000000000..bda8d106e21 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/me_pattern_buffer.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:me_pattern_buffer", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/appeng/me_buffer_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/appeng/me_buffer_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/me_pattern_buffer_proxy.json b/src/generated/resources/assets/gtceu/models/block/machine/me_pattern_buffer_proxy.json new file mode 100644 index 00000000000..aed406bbd4e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/me_pattern_buffer_proxy.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:me_pattern_buffer_proxy", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/appeng/me_buffer_hatch_proxy", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/appeng/me_buffer_hatch_proxy", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/me_stocking_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/me_stocking_input_bus.json new file mode 100644 index 00000000000..f53958681de --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/me_stocking_input_bus.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:me_stocking_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/appeng/me_input_bus", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/appeng/me_input_bus", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/me_stocking_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/me_stocking_input_hatch.json new file mode 100644 index 00000000000..5262fb2a7c5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/me_stocking_input_hatch.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:me_stocking_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/appeng/me_input_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/appeng/me_input_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mega_blast_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/mega_blast_furnace.json new file mode 100644 index 00000000000..f2f3c8c68c1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mega_blast_furnace.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mega_blast_furnace", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mega_vacuum_freezer.json b/src/generated/resources/assets/gtceu/models/block/machine/mega_vacuum_freezer.json new file mode 100644 index 00000000000..f0b08ec9fdb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mega_vacuum_freezer.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mega_vacuum_freezer", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/monitor.json b/src/generated/resources/assets/gtceu/models/block/machine/monitor.json new file mode 100644 index 00000000000..a299f6adee3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/monitor.json @@ -0,0 +1,18 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:monitor", + "replaceable_textures": [ + "all" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/computer_monitor", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/multi_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/multi_smelter.json new file mode 100644 index 00000000000..778412fc072 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/multi_smelter.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:multi_smelter", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/multi_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/multi_furnace/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/multi_furnace/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/multi_furnace/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/multi_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/multi_furnace/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/multi_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/multi_furnace/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/multi_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/multi_furnace/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/multi_furnace/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/multi_furnace/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/multi_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/multi_furnace/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/multi_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/multi_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_16a_energy_converter.json new file mode 100644 index 00000000000..81b92b13df2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_16a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_1a_energy_converter.json new file mode 100644 index 00000000000..2c78c515023 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_1a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_4a_energy_converter.json new file mode 100644 index 00000000000..4383cd121f4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_4a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_8a_energy_converter.json new file mode 100644 index 00000000000..e811cce1564 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_8a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_air_scrubber.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_air_scrubber.json new file mode 100644 index 00000000000..e51f591a463 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_air_scrubber.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_air_scrubber", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_alloy_smelter.json new file mode 100644 index 00000000000..dd239978361 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_arc_furnace.json new file mode 100644 index 00000000000..bf173832fc9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_assembler.json new file mode 100644 index 00000000000..49e25624307 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_autoclave.json new file mode 100644 index 00000000000..93faa260acf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_battery_buffer_16x.json new file mode 100644 index 00000000000..41f36f5a202 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_battery_buffer_4x.json new file mode 100644 index 00000000000..6f5f593ea23 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_battery_buffer_8x.json new file mode 100644 index 00000000000..af07d3209a9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_bedrock_ore_miner.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_bedrock_ore_miner.json new file mode 100644 index 00000000000..ef76189664c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_bedrock_ore_miner.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_bedrock_ore_miner", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_bender.json new file mode 100644 index 00000000000..19793208e4e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_block_breaker.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_block_breaker.json new file mode 100644 index 00000000000..b8fe7bee9af --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_block_breaker.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_block_breaker", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_brewery.json new file mode 100644 index 00000000000..1a13657e5cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_buffer.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_buffer.json new file mode 100644 index 00000000000..fc14c622e54 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_buffer.json @@ -0,0 +1,24 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_buffer", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/sided/single", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_buffer", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_buffer_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_canner.json new file mode 100644 index 00000000000..8cd38a10719 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_centrifuge.json new file mode 100644 index 00000000000..6992bfc5387 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_charger_4x.json new file mode 100644 index 00000000000..a57bc79e2aa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_chemical_bath.json new file mode 100644 index 00000000000..04411ea511d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_chemical_reactor.json new file mode 100644 index 00000000000..0c00c7f99d0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_circuit_assembler.json new file mode 100644 index 00000000000..9272580ceaa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_combustion.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_combustion.json new file mode 100644 index 00000000000..ddbe65c07e0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_combustion.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_combustion", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_top": "gtceu:block/generators/combustion/overlay_top", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_top": "gtceu:block/generators/combustion/overlay_top", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_top": "gtceu:block/generators/combustion/overlay_top_active", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_top": "gtceu:block/generators/combustion/overlay_top_active", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_compressor.json new file mode 100644 index 00000000000..823ed364ec4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_cutter.json new file mode 100644 index 00000000000..17b78290a7e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_diode.json new file mode 100644 index 00000000000..f3eb15ef48d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_diode.json @@ -0,0 +1,92 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_distillery.json new file mode 100644 index 00000000000..8eaa0cccee0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_electric_furnace.json new file mode 100644 index 00000000000..76a3a2e3f54 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_electrolyzer.json new file mode 100644 index 00000000000..f369c34bfca --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_electromagnetic_separator.json new file mode 100644 index 00000000000..c4039e6b788 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_energy_input_hatch.json new file mode 100644 index 00000000000..1266d74341a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_energy_output_hatch.json new file mode 100644 index 00000000000..cfeba12a098 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_extractor.json new file mode 100644 index 00000000000..72db7f01879 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_extruder.json new file mode 100644 index 00000000000..1566c1f4cbc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_fermenter.json new file mode 100644 index 00000000000..ab6484a48e4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_fisher.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_fisher.json new file mode 100644 index 00000000000..fc605853a5f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_fisher.json @@ -0,0 +1,19 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_fisher", + "variants": { + "": { + "model": { + "parent": "gtceu:block/overlay/2_layer/top_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_screen", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_qtank_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_drilling_rig.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_drilling_rig.json new file mode 100644 index 00000000000..b6d09c740aa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_drilling_rig.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_fluid_drilling_rig", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_heater.json new file mode 100644 index 00000000000..bfd6dc2cf2e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..fcb029ca77d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_solidifier.json new file mode 100644 index 00000000000..0164d4695f5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_forge_hammer.json new file mode 100644 index 00000000000..7a1f823c38d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_forming_press.json new file mode 100644 index 00000000000..36f8b739944 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_gas_collector.json new file mode 100644 index 00000000000..472463e9abf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_gas_turbine.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_gas_turbine.json new file mode 100644 index 00000000000..269157fd035 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_gas_turbine.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_gas_turbine", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side_active", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side_active", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_input_bus.json new file mode 100644 index 00000000000..3b7b55c18e6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_input_hatch.json new file mode 100644 index 00000000000..f282ae71758 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_item_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_item_collector.json new file mode 100644 index 00000000000..3fc5d58a31b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_item_collector.json @@ -0,0 +1,55 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_item_collector", + "variants": { + "active=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "active=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "active=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "active=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top_active", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_item_passthrough_hatch.json new file mode 100644 index 00000000000..44d6f6a95fc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_laser_engraver.json new file mode 100644 index 00000000000..3cc2f356023 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_lathe.json new file mode 100644 index 00000000000..08d5a558dce --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_macerator.json new file mode 100644 index 00000000000..a8c351e0e30 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_machine_hull.json new file mode 100644 index 00000000000..3b6a1e93ed3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_miner.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_miner.json new file mode 100644 index 00000000000..a528fdec08b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_miner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_miner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/miner/overlay_back", + "overlay_front": "gtceu:block/machines/miner/overlay_front", + "overlay_side": "gtceu:block/machines/miner/overlay_side", + "overlay_top": "gtceu:block/machines/miner/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/miner/overlay_back", + "overlay_front": "gtceu:block/machines/miner/overlay_front", + "overlay_side": "gtceu:block/machines/miner/overlay_side", + "overlay_top": "gtceu:block/machines/miner/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/miner/overlay_back", + "overlay_front": "gtceu:block/machines/miner/overlay_front", + "overlay_side": "gtceu:block/machines/miner/overlay_side", + "overlay_top": "gtceu:block/machines/miner/overlay_top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/miner/overlay_back", + "overlay_front": "gtceu:block/machines/miner/overlay_front", + "overlay_side": "gtceu:block/machines/miner/overlay_side", + "overlay_top": "gtceu:block/machines/miner/overlay_top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_mixer.json new file mode 100644 index 00000000000..0ac44a4761c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_muffler_hatch.json new file mode 100644 index 00000000000..1d786b2cf74 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_ore_washer.json new file mode 100644 index 00000000000..717945bc881 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_output_bus.json new file mode 100644 index 00000000000..1ca97cb57a6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_output_hatch.json new file mode 100644 index 00000000000..3d3deb6119b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_packer.json new file mode 100644 index 00000000000..d8ac2bffbb3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_polarizer.json new file mode 100644 index 00000000000..d42c8be4850 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_pump.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_pump.json new file mode 100644 index 00000000000..43740918017 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_pump.json @@ -0,0 +1,17 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_pump", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/pump_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_rock_crusher.json new file mode 100644 index 00000000000..96ceb135124 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_scanner.json new file mode 100644 index 00000000000..95c643936e9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_sifter.json new file mode 100644 index 00000000000..71a0c7d2c28 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_steam_turbine.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_steam_turbine.json new file mode 100644 index 00000000000..21f4ba61468 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_steam_turbine.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_steam_turbine", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side_active", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/generator_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side_active", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_super_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_super_chest.json new file mode 100644 index 00000000000..efe05eea34c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_super_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:mv_super_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_super_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_super_tank.json new file mode 100644 index 00000000000..5c1fcac9abf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_super_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:mv_super_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_thermal_centrifuge.json new file mode 100644 index 00000000000..babc0a0089e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_16a.json new file mode 100644 index 00000000000..8c247eb2f4c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_16a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_1a.json new file mode 100644 index 00000000000..a4d00ff0489 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_1a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_2a.json new file mode 100644 index 00000000000..d7679824a9d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_2a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_4a.json new file mode 100644 index 00000000000..359a9e8d45a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_4a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_wiremill.json new file mode 100644 index 00000000000..a645a24c0e9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_world_accelerator.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_world_accelerator.json new file mode 100644 index 00000000000..008568f69d0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_world_accelerator.json @@ -0,0 +1,135 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_world_accelerator", + "variants": { + "active=false,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "active=false,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/network_switch.json b/src/generated/resources/assets/gtceu/models/block/machine/network_switch.json new file mode 100644 index 00000000000..d740748c911 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/network_switch.json @@ -0,0 +1,108 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:network_switch", + "texture_overrides": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/network_switch/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/network_switch/overlay_front_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/network_switch/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/network_switch/overlay_front_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/network_switch/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/network_switch/overlay_front_active_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/network_switch/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/network_switch/overlay_front_active_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/network_switch/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/network_switch/overlay_front_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/network_switch/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/network_switch/overlay_front_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/network_switch/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/network_switch/overlay_front_active_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/network_switch/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/network_switch/overlay_front_active_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/object_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/object_holder.json new file mode 100644 index 00000000000..872ff35f168 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/object_holder.json @@ -0,0 +1,46 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:object_holder", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/object_holder/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/object_holder/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/object_holder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/object_holder/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/object_holder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/object_holder/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..2198a1d5bc1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_1024a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_1024a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..132b2d7f44d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_1024a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_1024a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_16a_energy_converter.json new file mode 100644 index 00000000000..613278232e7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_16a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_1a_energy_converter.json new file mode 100644 index 00000000000..e174072aebe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_1a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..406932f333c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_256a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_256a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..ec39219be46 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_256a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_256a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..e39575ce5d8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_4096a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_4096a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..5f7f8ff6aa6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_4096a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_4096a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_4a_energy_converter.json new file mode 100644 index 00000000000..24edd69c809 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_4a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_8a_energy_converter.json new file mode 100644 index 00000000000..6cb6bc9de28 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_8a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_alloy_smelter.json new file mode 100644 index 00000000000..208aaf5868a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_arc_furnace.json new file mode 100644 index 00000000000..e780ca92f59 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_assembler.json new file mode 100644 index 00000000000..fdc27529521 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_autoclave.json new file mode 100644 index 00000000000..4fe810d4c77 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_battery_buffer_16x.json new file mode 100644 index 00000000000..0e6dd9532de --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_battery_buffer_4x.json new file mode 100644 index 00000000000..24228b751a2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_battery_buffer_8x.json new file mode 100644 index 00000000000..be94c2f5113 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_bender.json new file mode 100644 index 00000000000..0445eca8f48 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_brewery.json new file mode 100644 index 00000000000..828d39bacdc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_canner.json new file mode 100644 index 00000000000..94472765cd4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_centrifuge.json new file mode 100644 index 00000000000..02779b456c5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_charger_4x.json new file mode 100644 index 00000000000..323b757af13 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_chemical_bath.json new file mode 100644 index 00000000000..e9c3018f97d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_chemical_reactor.json new file mode 100644 index 00000000000..25003a0e281 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_circuit_assembler.json new file mode 100644 index 00000000000..76719b6ee34 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_compressor.json new file mode 100644 index 00000000000..59b17fbcf6f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_cutter.json new file mode 100644 index 00000000000..2b6d2feddef --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_diode.json new file mode 100644 index 00000000000..b960c266fef --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_diode.json @@ -0,0 +1,92 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_distillery.json new file mode 100644 index 00000000000..fea59608dc4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_dual_input_hatch.json new file mode 100644 index 00000000000..2a2c99073f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_dual_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_dual_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_dual_output_hatch.json new file mode 100644 index 00000000000..4c0a4c96a87 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_dual_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_dual_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_electric_furnace.json new file mode 100644 index 00000000000..a4bf7162c13 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_electrolyzer.json new file mode 100644 index 00000000000..6e688e380ef --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_electromagnetic_separator.json new file mode 100644 index 00000000000..e799f8483c5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_input_hatch.json new file mode 100644 index 00000000000..20d72c37b81 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..e14edfacf81 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_input_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_energy_input_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..636d08a4db0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_input_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_energy_input_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_output_hatch.json new file mode 100644 index 00000000000..50b70193a5e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..6061f1ced13 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_output_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_energy_output_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..cd74035049b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_output_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_energy_output_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_extractor.json new file mode 100644 index 00000000000..f41343f8723 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_extruder.json new file mode 100644 index 00000000000..84bddffc256 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_fermenter.json new file mode 100644 index 00000000000..3bd4a55c28c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_fluid_heater.json new file mode 100644 index 00000000000..ad38c52dcc0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..c735cfe8346 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_fluid_solidifier.json new file mode 100644 index 00000000000..8060427b286 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_forge_hammer.json new file mode 100644 index 00000000000..b1caebbd4e4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_forming_press.json new file mode 100644 index 00000000000..44fe85f61d2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_gas_collector.json new file mode 100644 index 00000000000..09303f0b7cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_input_bus.json new file mode 100644 index 00000000000..e92b1473530 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch.json new file mode 100644 index 00000000000..bb55daf624b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch_4x.json new file mode 100644 index 00000000000..e87e62d80cc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch_4x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_input_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch_9x.json new file mode 100644 index 00000000000..fc73ca2a5ce --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch_9x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_input_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_item_passthrough_hatch.json new file mode 100644 index 00000000000..377a6fb5f79 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_laser_engraver.json new file mode 100644 index 00000000000..918e093e70e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_lathe.json new file mode 100644 index 00000000000..f88a8999db9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_macerator.json new file mode 100644 index 00000000000..96d1f8ea8c9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_machine_hull.json new file mode 100644 index 00000000000..97d45d3a7ae --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_mixer.json new file mode 100644 index 00000000000..3ea49c73c59 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_muffler_hatch.json new file mode 100644 index 00000000000..d17e9b63afb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_ore_washer.json new file mode 100644 index 00000000000..2f62348957e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_output_bus.json new file mode 100644 index 00000000000..15e745d1a6e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch.json new file mode 100644 index 00000000000..775fae93ee9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch_4x.json new file mode 100644 index 00000000000..097b63dd769 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch_4x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_output_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch_9x.json new file mode 100644 index 00000000000..4c92a855efa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch_9x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_output_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_packer.json new file mode 100644 index 00000000000..60e13506bed --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_polarizer.json new file mode 100644 index 00000000000..538ab83e411 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_quantum_chest.json new file mode 100644 index 00000000000..6bd9b829012 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_quantum_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:opv_quantum_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_quantum_tank.json new file mode 100644 index 00000000000..5d7df8a74af --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_quantum_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:opv_quantum_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_rock_crusher.json new file mode 100644 index 00000000000..169a9d13f4a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_rotor_holder.json new file mode 100644 index 00000000000..f4b9ce832d3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_rotor_holder.json @@ -0,0 +1,46 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_rotor_holder", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/machine/template/rotor_holder/block", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/overlay" + }, + "when": { + "is_formed": "true" + } + } + ], + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_scanner.json new file mode 100644 index 00000000000..003d606e038 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_sifter.json new file mode 100644 index 00000000000..4b5eb23995f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..6992e1f36ff --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_substation_input_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_substation_input_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..ad1b218ad79 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_substation_output_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_substation_output_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_thermal_centrifuge.json new file mode 100644 index 00000000000..300ab5dbffb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_16a.json new file mode 100644 index 00000000000..d3d695d0f09 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_16a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_1a.json new file mode 100644 index 00000000000..c75c96accdf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_1a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_2a.json new file mode 100644 index 00000000000..d0444677d60 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_2a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_4a.json new file mode 100644 index 00000000000..c7952537671 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_4a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_wiremill.json new file mode 100644 index 00000000000..5f504f80549 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/plasma_large_turbine.json b/src/generated/resources/assets/gtceu/models/block/machine/plasma_large_turbine.json new file mode 100644 index 00000000000..862d77347ed --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/plasma_large_turbine.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:plasma_large_turbine", + "texture_overrides": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_tungstensteel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/power_substation.json b/src/generated/resources/assets/gtceu/models/block/machine/power_substation.json new file mode 100644 index 00000000000..a23b6ccc232 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/power_substation.json @@ -0,0 +1,86 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:power_substation", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_palladium_substation" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_palladium_substation", + "overlay_front": "gtceu:block/multiblock/power_substation/overlay_front" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_palladium_substation", + "overlay_front": "gtceu:block/multiblock/power_substation/overlay_front" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_palladium_substation", + "overlay_front": "gtceu:block/multiblock/power_substation/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/power_substation/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_palladium_substation", + "overlay_front": "gtceu:block/multiblock/power_substation/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/power_substation/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_palladium_substation", + "overlay_front": "gtceu:block/multiblock/power_substation/overlay_front" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_palladium_substation", + "overlay_front": "gtceu:block/multiblock/power_substation/overlay_front" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_palladium_substation", + "overlay_front": "gtceu:block/multiblock/power_substation/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/power_substation/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_palladium_substation", + "overlay_front": "gtceu:block/multiblock/power_substation/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/power_substation/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/primitive_blast_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/primitive_blast_furnace.json new file mode 100644 index 00000000000..8400fc66237 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/primitive_blast_furnace.json @@ -0,0 +1,100 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:fluid_area", + "block_light": 15, + "fixed_fluid": "minecraft:lava", + "offset_face": -0.125, + "overwrite_light": true, + "sky_light": 15 + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:primitive_blast_furnace", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_primitive_bricks" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_primitive_bricks", + "overlay_front": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_primitive_bricks", + "overlay_front": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_primitive_bricks", + "overlay_front": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_primitive_bricks", + "overlay_front": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_primitive_bricks", + "overlay_front": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_primitive_bricks", + "overlay_front": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_primitive_bricks", + "overlay_front": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_primitive_bricks", + "overlay_front": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/primitive_pump.json b/src/generated/resources/assets/gtceu/models/block/machine/primitive_pump.json new file mode 100644 index 00000000000..b49de1c4598 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/primitive_pump.json @@ -0,0 +1,108 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:primitive_pump", + "texture_overrides": { + "bottom": "gtceu:block/casings/pump_deck/bottom", + "side": "gtceu:block/casings/pump_deck/side", + "top": "gtceu:block/casings/pump_deck/top" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/pump_deck/bottom", + "overlay_front": "gtceu:block/multiblock/primitive_pump/overlay_front", + "side": "gtceu:block/casings/pump_deck/side", + "top": "gtceu:block/casings/pump_deck/top" + } + }, + "uvlock": true + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/pump_deck/bottom", + "overlay_front": "gtceu:block/multiblock/primitive_pump/overlay_front", + "side": "gtceu:block/casings/pump_deck/side", + "top": "gtceu:block/casings/pump_deck/top" + } + }, + "uvlock": true + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/pump_deck/bottom", + "overlay_front": "gtceu:block/multiblock/primitive_pump/overlay_front", + "side": "gtceu:block/casings/pump_deck/side", + "top": "gtceu:block/casings/pump_deck/top" + } + }, + "uvlock": true + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/pump_deck/bottom", + "overlay_front": "gtceu:block/multiblock/primitive_pump/overlay_front", + "side": "gtceu:block/casings/pump_deck/side", + "top": "gtceu:block/casings/pump_deck/top" + } + }, + "uvlock": true + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/pump_deck/bottom", + "overlay_front": "gtceu:block/multiblock/primitive_pump/overlay_front", + "side": "gtceu:block/casings/pump_deck/side", + "top": "gtceu:block/casings/pump_deck/top" + } + }, + "uvlock": true + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/pump_deck/bottom", + "overlay_front": "gtceu:block/multiblock/primitive_pump/overlay_front", + "side": "gtceu:block/casings/pump_deck/side", + "top": "gtceu:block/casings/pump_deck/top" + } + }, + "uvlock": true + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/pump_deck/bottom", + "overlay_front": "gtceu:block/multiblock/primitive_pump/overlay_front", + "side": "gtceu:block/casings/pump_deck/side", + "top": "gtceu:block/casings/pump_deck/top" + } + }, + "uvlock": true + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/pump_deck/bottom", + "overlay_front": "gtceu:block/multiblock/primitive_pump/overlay_front", + "side": "gtceu:block/casings/pump_deck/side", + "top": "gtceu:block/casings/pump_deck/top" + } + }, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/pump_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/pump_hatch.json new file mode 100644 index 00000000000..91d6dd3315b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/pump_hatch.json @@ -0,0 +1,15 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:pump_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": "gtceu:block/machine/part/pump_hatch" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/pyrolyse_oven.json b/src/generated/resources/assets/gtceu/models/block/machine/pyrolyse_oven.json new file mode 100644 index 00000000000..d933c7901c6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/pyrolyse_oven.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:pyrolyse_oven", + "texture_overrides": { + "all": "gtceu:block/casings/voltage/ulv/side" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/voltage/ulv/side", + "overlay_front": "gtceu:block/multiblock/pyrolyse_oven/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/voltage/ulv/side", + "overlay_front": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/voltage/ulv/side", + "overlay_front": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/voltage/ulv/side", + "overlay_front": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/voltage/ulv/side", + "overlay_front": "gtceu:block/multiblock/pyrolyse_oven/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/voltage/ulv/side", + "overlay_front": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/voltage/ulv/side", + "overlay_front": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/voltage/ulv/side", + "overlay_front": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/research_station.json b/src/generated/resources/assets/gtceu/models/block/machine/research_station.json new file mode 100644 index 00000000000..735333e2c99 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/research_station.json @@ -0,0 +1,108 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:research_station", + "texture_overrides": { + "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", + "side": "gtceu:block/casings/hpca/advanced_computer_casing/side", + "top": "gtceu:block/casings/hpca/advanced_computer_casing/top" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/research_station/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/research_station/overlay_front_emissive", + "side": "gtceu:block/casings/hpca/advanced_computer_casing/side", + "top": "gtceu:block/casings/hpca/advanced_computer_casing/top" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/research_station/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/research_station/overlay_front_emissive", + "side": "gtceu:block/casings/hpca/advanced_computer_casing/side", + "top": "gtceu:block/casings/hpca/advanced_computer_casing/top" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/research_station/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/research_station/overlay_front_active_emissive", + "side": "gtceu:block/casings/hpca/advanced_computer_casing/side", + "top": "gtceu:block/casings/hpca/advanced_computer_casing/top" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/research_station/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/research_station/overlay_front_active_emissive", + "side": "gtceu:block/casings/hpca/advanced_computer_casing/side", + "top": "gtceu:block/casings/hpca/advanced_computer_casing/top" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/research_station/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/research_station/overlay_front_emissive", + "side": "gtceu:block/casings/hpca/advanced_computer_casing/side", + "top": "gtceu:block/casings/hpca/advanced_computer_casing/top" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/research_station/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/research_station/overlay_front_emissive", + "side": "gtceu:block/casings/hpca/advanced_computer_casing/side", + "top": "gtceu:block/casings/hpca/advanced_computer_casing/top" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/research_station/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/research_station/overlay_front_active_emissive", + "side": "gtceu:block/casings/hpca/advanced_computer_casing/side", + "top": "gtceu:block/casings/hpca/advanced_computer_casing/top" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/research_station/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/research_station/overlay_front_active_emissive", + "side": "gtceu:block/casings/hpca/advanced_computer_casing/side", + "top": "gtceu:block/casings/hpca/advanced_computer_casing/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/reservoir_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/reservoir_hatch.json new file mode 100644 index 00000000000..1c3b22e1e59 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/reservoir_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:reservoir_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/reservoir_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/stainless_steel_crate.json b/src/generated/resources/assets/gtceu/models/block/machine/stainless_steel_crate.json new file mode 100644 index 00000000000..42b29fe99af --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/stainless_steel_crate.json @@ -0,0 +1,13 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:stainless_steel_crate", + "variants": { + "taped=false": { + "model": "gtceu:block/machine/template/crate/metal_crate" + }, + "taped=true": { + "model": "gtceu:block/machine/template/crate/metal_crate_taped" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/stainless_steel_drum.json b/src/generated/resources/assets/gtceu/models/block/machine/stainless_steel_drum.json new file mode 100644 index 00000000000..455c3a42454 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/stainless_steel_drum.json @@ -0,0 +1,10 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:stainless_steel_drum", + "variants": { + "": { + "model": "gtceu:block/machine/template/drum/metal_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/steam_grinder.json b/src/generated/resources/assets/gtceu/models/block/machine/steam_grinder.json new file mode 100644 index 00000000000..e74ccaa6402 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/steam_grinder.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:steam_grinder", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_grinder/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/steam_grinder/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_grinder/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/steam_grinder/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_grinder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/steam_grinder/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_grinder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/steam_grinder/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_grinder/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/steam_grinder/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_grinder/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/steam_grinder/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_grinder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/steam_grinder/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_grinder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/steam_grinder/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/steam_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/steam_input_bus.json new file mode 100644 index 00000000000..3a74ff80f90 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/steam_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:steam_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/steam/bronze/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/steam/bronze/side", + "top": "gtceu:block/casings/steam/bronze/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/steam/bronze/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/steam/bronze/side", + "top": "gtceu:block/casings/steam/bronze/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/steam_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/steam_input_hatch.json new file mode 100644 index 00000000000..42273458b86 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/steam_input_hatch.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:steam_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "steel=false": { + "model": { + "parent": "gtceu:block/machine/part/steam_hatch", + "textures": { + "bottom": "gtceu:block/casings/steam/bronze/bottom", + "side": "gtceu:block/casings/steam/bronze/side", + "top": "gtceu:block/casings/steam/bronze/top" + } + } + }, + "steel=true": { + "model": { + "parent": "gtceu:block/machine/part/steam_hatch", + "textures": { + "bottom": "gtceu:block/casings/steam/steel/bottom", + "side": "gtceu:block/casings/steam/steel/side", + "top": "gtceu:block/casings/steam/steel/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/steam_large_turbine.json b/src/generated/resources/assets/gtceu/models/block/machine/steam_large_turbine.json new file mode 100644 index 00000000000..8afd1cbeac8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/steam_large_turbine.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:steam_large_turbine", + "texture_overrides": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_steel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/steam_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/steam_output_bus.json new file mode 100644 index 00000000000..634e5cb66fa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/steam_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:steam_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/steam/bronze/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/steam/bronze/side", + "top": "gtceu:block/casings/steam/bronze/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/steam/bronze/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/steam/bronze/side", + "top": "gtceu:block/casings/steam/bronze/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/steam_oven.json b/src/generated/resources/assets/gtceu/models/block/machine/steam_oven.json new file mode 100644 index 00000000000..40e6d83cc65 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/steam_oven.json @@ -0,0 +1,110 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:boiler_multi_parts", + "casing_block": { + "Name": "gtceu:steam_machine_casing" + }, + "firebox_active": { + "Name": "gtceu:bronze_firebox_casing", + "Properties": { + "active": "true" + } + }, + "firebox_idle": { + "Name": "gtceu:bronze_firebox_casing", + "Properties": { + "active": "false" + } + } + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:steam_oven", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_oven/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/steam_oven/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_oven/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/steam_oven/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_oven/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/steam_oven/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_oven/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/steam_oven/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_oven/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/steam_oven/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_oven/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/steam_oven/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_oven/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/steam_oven/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_oven/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/steam_oven/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/steel_crate.json b/src/generated/resources/assets/gtceu/models/block/machine/steel_crate.json new file mode 100644 index 00000000000..ee839b57b96 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/steel_crate.json @@ -0,0 +1,13 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:steel_crate", + "variants": { + "taped=false": { + "model": "gtceu:block/machine/template/crate/metal_crate" + }, + "taped=true": { + "model": "gtceu:block/machine/template/crate/metal_crate_taped" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/steel_drum.json b/src/generated/resources/assets/gtceu/models/block/machine/steel_drum.json new file mode 100644 index 00000000000..9541468fa3e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/steel_drum.json @@ -0,0 +1,10 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:steel_drum", + "variants": { + "": { + "model": "gtceu:block/machine/template/drum/metal_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/steel_large_boiler.json b/src/generated/resources/assets/gtceu/models/block/machine/steel_large_boiler.json new file mode 100644 index 00000000000..7c3ae4c812a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/steel_large_boiler.json @@ -0,0 +1,110 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:boiler_multi_parts", + "casing_block": { + "Name": "gtceu:solid_machine_casing" + }, + "firebox_active": { + "Name": "gtceu:steel_firebox_casing", + "Properties": { + "active": "true" + } + }, + "firebox_idle": { + "Name": "gtceu:steel_firebox_casing", + "Properties": { + "active": "false" + } + } + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:steel_large_boiler", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/steel_multiblock_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/steel_multiblock_tank.json new file mode 100644 index 00000000000..9d44e82ec13 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/steel_multiblock_tank.json @@ -0,0 +1,82 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:steel_multiblock_tank", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front_active" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front_active" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front_active" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/steel_tank_valve.json b/src/generated/resources/assets/gtceu/models/block/machine/steel_tank_valve.json new file mode 100644 index 00000000000..5b27818ea56 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/steel_tank_valve.json @@ -0,0 +1,46 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:steel_tank_valve", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel" + }, + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/tank_valve/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/tank_valve/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/tank_valve/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/tank_valve/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/titanium_crate.json b/src/generated/resources/assets/gtceu/models/block/machine/titanium_crate.json new file mode 100644 index 00000000000..59aa457dcba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/titanium_crate.json @@ -0,0 +1,13 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:titanium_crate", + "variants": { + "taped=false": { + "model": "gtceu:block/machine/template/crate/metal_crate" + }, + "taped=true": { + "model": "gtceu:block/machine/template/crate/metal_crate_taped" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/titanium_drum.json b/src/generated/resources/assets/gtceu/models/block/machine/titanium_drum.json new file mode 100644 index 00000000000..6aea2675eba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/titanium_drum.json @@ -0,0 +1,10 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:titanium_drum", + "variants": { + "": { + "model": "gtceu:block/machine/template/drum/metal_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/titanium_large_boiler.json b/src/generated/resources/assets/gtceu/models/block/machine/titanium_large_boiler.json new file mode 100644 index 00000000000..8ee47846df7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/titanium_large_boiler.json @@ -0,0 +1,110 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:boiler_multi_parts", + "casing_block": { + "Name": "gtceu:stable_machine_casing" + }, + "firebox_active": { + "Name": "gtceu:titanium_firebox_casing", + "Properties": { + "active": "true" + } + }, + "firebox_idle": { + "Name": "gtceu:titanium_firebox_casing", + "Properties": { + "active": "false" + } + } + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:titanium_large_boiler", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/tungsten_steel_crate.json b/src/generated/resources/assets/gtceu/models/block/machine/tungsten_steel_crate.json new file mode 100644 index 00000000000..6a2fe2598a0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/tungsten_steel_crate.json @@ -0,0 +1,13 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:tungsten_steel_crate", + "variants": { + "taped=false": { + "model": "gtceu:block/machine/template/crate/metal_crate" + }, + "taped=true": { + "model": "gtceu:block/machine/template/crate/metal_crate_taped" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/tungsten_steel_drum.json b/src/generated/resources/assets/gtceu/models/block/machine/tungsten_steel_drum.json new file mode 100644 index 00000000000..5d7264fc061 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/tungsten_steel_drum.json @@ -0,0 +1,10 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:tungsten_steel_drum", + "variants": { + "": { + "model": "gtceu:block/machine/template/drum/metal_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/tungstensteel_large_boiler.json b/src/generated/resources/assets/gtceu/models/block/machine/tungstensteel_large_boiler.json new file mode 100644 index 00000000000..b4ea2381761 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/tungstensteel_large_boiler.json @@ -0,0 +1,110 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:boiler_multi_parts", + "casing_block": { + "Name": "gtceu:robust_machine_casing" + }, + "firebox_active": { + "Name": "gtceu:tungstensteel_firebox_casing", + "Properties": { + "active": "true" + } + }, + "firebox_idle": { + "Name": "gtceu:tungstensteel_firebox_casing", + "Properties": { + "active": "false" + } + } + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:tungstensteel_large_boiler", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..9bc9f100134 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_1024a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_1024a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..e6c8c6fb249 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_1024a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_1024a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_16a_energy_converter.json new file mode 100644 index 00000000000..af1b0fca24d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_16a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_1a_energy_converter.json new file mode 100644 index 00000000000..c8dfee5b643 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_1a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_256a_laser_source_hatch.json new file mode 100644 index 00000000000..a0fb02e5f6c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_256a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_256a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_256a_laser_target_hatch.json new file mode 100644 index 00000000000..d108a0ff5a7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_256a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_256a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..a5e57c22455 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_4096a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_4096a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..e5c6ca9582b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_4096a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_4096a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_4a_energy_converter.json new file mode 100644 index 00000000000..4b3150d04bd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_4a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_8a_energy_converter.json new file mode 100644 index 00000000000..37151126681 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_8a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_alloy_smelter.json new file mode 100644 index 00000000000..4d3955e24fd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_arc_furnace.json new file mode 100644 index 00000000000..19ca7bf1949 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_assembler.json new file mode 100644 index 00000000000..36d7dfd42e0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_autoclave.json new file mode 100644 index 00000000000..1803f70a407 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_battery_buffer_16x.json new file mode 100644 index 00000000000..d3567a2cc52 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_battery_buffer_4x.json new file mode 100644 index 00000000000..e82ab4866bf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_battery_buffer_8x.json new file mode 100644 index 00000000000..6615396a5c9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_bender.json new file mode 100644 index 00000000000..c8ae8a9e1db --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_brewery.json new file mode 100644 index 00000000000..94d1fd56780 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_canner.json new file mode 100644 index 00000000000..eb4920ddc6f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_centrifuge.json new file mode 100644 index 00000000000..c1c9e4f47db --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_charger_4x.json new file mode 100644 index 00000000000..1d35cc40bf4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_chemical_bath.json new file mode 100644 index 00000000000..88d30498af7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_chemical_reactor.json new file mode 100644 index 00000000000..10cfe7a87fc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_circuit_assembler.json new file mode 100644 index 00000000000..1191a4cab23 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_compressor.json new file mode 100644 index 00000000000..3641a476a81 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_cutter.json new file mode 100644 index 00000000000..80fd12f4223 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_diode.json new file mode 100644 index 00000000000..edf3354cd31 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_diode.json @@ -0,0 +1,92 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_distillery.json new file mode 100644 index 00000000000..a1a59e23895 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_dual_input_hatch.json new file mode 100644 index 00000000000..61080e01daf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_dual_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_dual_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_dual_output_hatch.json new file mode 100644 index 00000000000..d6b8d3cba0d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_dual_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_dual_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_electric_furnace.json new file mode 100644 index 00000000000..eb89a67da67 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_electrolyzer.json new file mode 100644 index 00000000000..6dc0120b6eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_electromagnetic_separator.json new file mode 100644 index 00000000000..650c3a5e000 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_input_hatch.json new file mode 100644 index 00000000000..2184ed6823f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_input_hatch_16a.json new file mode 100644 index 00000000000..55dad825f25 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_input_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_energy_input_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_input_hatch_4a.json new file mode 100644 index 00000000000..57f4f25aa2a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_input_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_energy_input_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_output_hatch.json new file mode 100644 index 00000000000..2f4e1a7be51 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_output_hatch_16a.json new file mode 100644 index 00000000000..1eabd90b995 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_output_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_energy_output_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_output_hatch_4a.json new file mode 100644 index 00000000000..e72194fb6e4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_output_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_energy_output_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_extractor.json new file mode 100644 index 00000000000..71fb3fa9482 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_extruder.json new file mode 100644 index 00000000000..aa2d776e304 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_fermenter.json new file mode 100644 index 00000000000..22a8fdf9bcd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_fluid_heater.json new file mode 100644 index 00000000000..33660a110ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..0be7a570eda --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_fluid_solidifier.json new file mode 100644 index 00000000000..2e95440ddda --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_forge_hammer.json new file mode 100644 index 00000000000..d563729914e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_forming_press.json new file mode 100644 index 00000000000..89e36adac83 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_gas_collector.json new file mode 100644 index 00000000000..9552d12148f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_input_bus.json new file mode 100644 index 00000000000..909b5be4c02 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch.json new file mode 100644 index 00000000000..42f8ed7322c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch_4x.json new file mode 100644 index 00000000000..955a4525ae2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch_4x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_input_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch_9x.json new file mode 100644 index 00000000000..cb9d37722c5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch_9x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_input_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_item_passthrough_hatch.json new file mode 100644 index 00000000000..21d581c0aeb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_laser_engraver.json new file mode 100644 index 00000000000..091ae47799d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_lathe.json new file mode 100644 index 00000000000..62d45111b97 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_macerator.json new file mode 100644 index 00000000000..7824891425a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_machine_hull.json new file mode 100644 index 00000000000..afaab5a41dd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_mixer.json new file mode 100644 index 00000000000..245831f38e3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_muffler_hatch.json new file mode 100644 index 00000000000..6fa4d299427 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_ore_washer.json new file mode 100644 index 00000000000..6b3d9fbccbf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_output_bus.json new file mode 100644 index 00000000000..f241a9a344a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch.json new file mode 100644 index 00000000000..45a3c77d785 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch_4x.json new file mode 100644 index 00000000000..fdb79a2ab2e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch_4x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_output_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch_9x.json new file mode 100644 index 00000000000..895ac0102e9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch_9x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_output_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_packer.json new file mode 100644 index 00000000000..f6364de04f5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_polarizer.json new file mode 100644 index 00000000000..6a9e4590d07 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_quantum_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_quantum_chest.json new file mode 100644 index 00000000000..b8a274535a7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_quantum_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:uev_quantum_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_quantum_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_quantum_tank.json new file mode 100644 index 00000000000..f9ac062a745 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_quantum_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:uev_quantum_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_rock_crusher.json new file mode 100644 index 00000000000..b6e98bf6556 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_rotor_holder.json new file mode 100644 index 00000000000..5358c536d05 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_rotor_holder.json @@ -0,0 +1,46 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_rotor_holder", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/machine/template/rotor_holder/block", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/overlay" + }, + "when": { + "is_formed": "true" + } + } + ], + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_scanner.json new file mode 100644 index 00000000000..2fc4fe9eb5c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_sifter.json new file mode 100644 index 00000000000..81c4db90ef0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_substation_input_hatch_64a.json new file mode 100644 index 00000000000..2942e0cb0ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_substation_input_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_substation_input_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_substation_output_hatch_64a.json new file mode 100644 index 00000000000..15b2855ab30 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_substation_output_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_substation_output_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_thermal_centrifuge.json new file mode 100644 index 00000000000..82576c5d2d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_16a.json new file mode 100644 index 00000000000..80478799d75 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_16a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_1a.json new file mode 100644 index 00000000000..f6bdfed8051 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_1a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_2a.json new file mode 100644 index 00000000000..e7d4d28912f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_2a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_4a.json new file mode 100644 index 00000000000..28fcc48a735 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_4a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_wiremill.json new file mode 100644 index 00000000000..064717826c3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..2b295d486eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_1024a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_1024a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..29c65c916b9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_1024a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_1024a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_16a_energy_converter.json new file mode 100644 index 00000000000..91d1400e863 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_16a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_1a_energy_converter.json new file mode 100644 index 00000000000..ecb475a86d3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_1a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..e4ef57ee986 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_256a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_256a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..0d896279fe1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_256a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_256a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..fbca82a9478 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_4096a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_4096a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..8fd1e625c20 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_4096a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_4096a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_4a_energy_converter.json new file mode 100644 index 00000000000..2f165b5eff1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_4a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_8a_energy_converter.json new file mode 100644 index 00000000000..c36ee7a60c9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_8a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_alloy_smelter.json new file mode 100644 index 00000000000..8a56fab2487 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_arc_furnace.json new file mode 100644 index 00000000000..e209a1e379f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_assembler.json new file mode 100644 index 00000000000..6fa1f71da1d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_autoclave.json new file mode 100644 index 00000000000..62b502bcbed --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_battery_buffer_16x.json new file mode 100644 index 00000000000..b6763449db4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_battery_buffer_4x.json new file mode 100644 index 00000000000..53e92572b4a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_battery_buffer_8x.json new file mode 100644 index 00000000000..5c4469ee7de --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_bender.json new file mode 100644 index 00000000000..77c787b8730 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_brewery.json new file mode 100644 index 00000000000..959f729ea90 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_canner.json new file mode 100644 index 00000000000..4172957ebc1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_centrifuge.json new file mode 100644 index 00000000000..06cf8e04b3d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_charger_4x.json new file mode 100644 index 00000000000..c563c4472e8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_chemical_bath.json new file mode 100644 index 00000000000..fdd7b6a8581 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_chemical_reactor.json new file mode 100644 index 00000000000..6064dec6e38 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_circuit_assembler.json new file mode 100644 index 00000000000..47a98937ff5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_compressor.json new file mode 100644 index 00000000000..284731d9017 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_cutter.json new file mode 100644 index 00000000000..353beaaec06 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_diode.json new file mode 100644 index 00000000000..f986a1b308f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_diode.json @@ -0,0 +1,92 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_distillery.json new file mode 100644 index 00000000000..6c04f514b1c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_dual_input_hatch.json new file mode 100644 index 00000000000..bdbc8734c83 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_dual_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_dual_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_dual_output_hatch.json new file mode 100644 index 00000000000..9d819ec51c2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_dual_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_dual_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_electric_furnace.json new file mode 100644 index 00000000000..0d59c394e20 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_electrolyzer.json new file mode 100644 index 00000000000..2e8c167dc88 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_electromagnetic_separator.json new file mode 100644 index 00000000000..a51afd59cb3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_input_hatch.json new file mode 100644 index 00000000000..658fbadb901 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..92b745d9708 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_input_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_energy_input_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..5f198ecc49e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_input_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_energy_input_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_output_hatch.json new file mode 100644 index 00000000000..ac68e46266a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..14024b7b10a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_output_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_energy_output_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..835051a3175 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_output_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_energy_output_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_extractor.json new file mode 100644 index 00000000000..9a586137172 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_extruder.json new file mode 100644 index 00000000000..1a01fed3033 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_fermenter.json new file mode 100644 index 00000000000..ab6ac537069 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_fluid_heater.json new file mode 100644 index 00000000000..ce5d4ded380 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..63360c9fa25 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_fluid_solidifier.json new file mode 100644 index 00000000000..4678da5ad95 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_forge_hammer.json new file mode 100644 index 00000000000..d7d76e9a513 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_forming_press.json new file mode 100644 index 00000000000..914c94db017 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_gas_collector.json new file mode 100644 index 00000000000..ab090d2b3b8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_bus.json new file mode 100644 index 00000000000..e16e67e69b3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch.json new file mode 100644 index 00000000000..5fe10d8d313 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch_4x.json new file mode 100644 index 00000000000..d64d0b7ce92 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch_4x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_input_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch_9x.json new file mode 100644 index 00000000000..f3861294655 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch_9x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_input_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_item_passthrough_hatch.json new file mode 100644 index 00000000000..f2a0c32f330 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_laser_engraver.json new file mode 100644 index 00000000000..1fdeef83c06 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_lathe.json new file mode 100644 index 00000000000..3b997687900 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_macerator.json new file mode 100644 index 00000000000..06701df33a9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_machine_hull.json new file mode 100644 index 00000000000..f355f064d83 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_mixer.json new file mode 100644 index 00000000000..1a756b22765 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_muffler_hatch.json new file mode 100644 index 00000000000..f8899a7600a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_ore_washer.json new file mode 100644 index 00000000000..911ed856fae --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_bus.json new file mode 100644 index 00000000000..074d676e6a8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch.json new file mode 100644 index 00000000000..53220f28bf9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch_4x.json new file mode 100644 index 00000000000..16e23fa0094 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch_4x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_output_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch_9x.json new file mode 100644 index 00000000000..30021e01a4b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch_9x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_output_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_packer.json new file mode 100644 index 00000000000..0e1b6a2d780 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_polarizer.json new file mode 100644 index 00000000000..f79a03fe176 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_quantum_chest.json new file mode 100644 index 00000000000..57e79bee1a4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_quantum_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:uhv_quantum_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_quantum_tank.json new file mode 100644 index 00000000000..34c32c27ee3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_quantum_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:uhv_quantum_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_rock_crusher.json new file mode 100644 index 00000000000..446ebe11244 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_rotor_holder.json new file mode 100644 index 00000000000..1a9dda92f1e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_rotor_holder.json @@ -0,0 +1,46 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_rotor_holder", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/machine/template/rotor_holder/block", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/overlay" + }, + "when": { + "is_formed": "true" + } + } + ], + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_scanner.json new file mode 100644 index 00000000000..079c2785b32 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_sifter.json new file mode 100644 index 00000000000..880feffbcb6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..1a3a565a06c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_substation_input_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_substation_input_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..5e8cd2ef092 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_substation_output_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_substation_output_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_thermal_centrifuge.json new file mode 100644 index 00000000000..2c8eefc5aee --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_16a.json new file mode 100644 index 00000000000..3d581b448d5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_16a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_1a.json new file mode 100644 index 00000000000..2e73b1c2cfc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_1a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_2a.json new file mode 100644 index 00000000000..980b6b5738e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_2a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_4a.json new file mode 100644 index 00000000000..ec0d2e3dcd1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_4a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_wiremill.json new file mode 100644 index 00000000000..3b676e30dad --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..e0645fea0d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_1024a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_1024a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..1580e0cf017 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_1024a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_1024a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_16a_energy_converter.json new file mode 100644 index 00000000000..0f3c931c26b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_16a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_1a_energy_converter.json new file mode 100644 index 00000000000..ca0429318c4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_1a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..0cf11b4f6fe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_256a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_256a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..9e47bb8f7c2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_256a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_256a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..24671686e3e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_4096a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_4096a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..e1bf7ddf9ac --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_4096a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_4096a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_4a_energy_converter.json new file mode 100644 index 00000000000..fb41af858b0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_4a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_8a_energy_converter.json new file mode 100644 index 00000000000..24f03d65d75 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_8a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_alloy_smelter.json new file mode 100644 index 00000000000..962172e0f84 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_arc_furnace.json new file mode 100644 index 00000000000..76bd119e447 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_assembler.json new file mode 100644 index 00000000000..2690d67ed15 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_autoclave.json new file mode 100644 index 00000000000..a28e20bce0c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_battery_buffer_16x.json new file mode 100644 index 00000000000..b64dbba3b86 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_battery_buffer_4x.json new file mode 100644 index 00000000000..85d9e562359 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_battery_buffer_8x.json new file mode 100644 index 00000000000..e15ba48497f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_bender.json new file mode 100644 index 00000000000..5b3b5b6e995 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_brewery.json new file mode 100644 index 00000000000..3f735e42d75 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_canner.json new file mode 100644 index 00000000000..07a818bbe7f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_centrifuge.json new file mode 100644 index 00000000000..1e743cc1852 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_charger_4x.json new file mode 100644 index 00000000000..bb494ad09ab --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_chemical_bath.json new file mode 100644 index 00000000000..0f012fe2cb9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_chemical_reactor.json new file mode 100644 index 00000000000..b2b057c01d2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_circuit_assembler.json new file mode 100644 index 00000000000..84f5d501d75 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_compressor.json new file mode 100644 index 00000000000..b191ab16ab6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_cutter.json new file mode 100644 index 00000000000..abf9be506bc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_diode.json new file mode 100644 index 00000000000..e49881bf0fb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_diode.json @@ -0,0 +1,92 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_distillery.json new file mode 100644 index 00000000000..e0b2adfd3fb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_dual_input_hatch.json new file mode 100644 index 00000000000..342ce64aa5c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_dual_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_dual_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_dual_output_hatch.json new file mode 100644 index 00000000000..f76c3ed5592 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_dual_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_dual_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_electric_furnace.json new file mode 100644 index 00000000000..6c3881efb05 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_electrolyzer.json new file mode 100644 index 00000000000..13df94e0722 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_electromagnetic_separator.json new file mode 100644 index 00000000000..c9329a715ce --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_input_hatch.json new file mode 100644 index 00000000000..8e0dabf6348 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..59c0fe795d2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_input_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_energy_input_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..1fcdec1cbe8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_input_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_energy_input_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_output_hatch.json new file mode 100644 index 00000000000..6af06358efb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..c7d9937be25 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_output_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_energy_output_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..12e9442c1e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_output_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_energy_output_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_extractor.json new file mode 100644 index 00000000000..08c58e7dbb2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_extruder.json new file mode 100644 index 00000000000..8553e351a84 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_fermenter.json new file mode 100644 index 00000000000..08cf7842aa7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_fluid_heater.json new file mode 100644 index 00000000000..a7f07dabe96 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..be84eecaa86 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_fluid_solidifier.json new file mode 100644 index 00000000000..d810b93c44b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_forge_hammer.json new file mode 100644 index 00000000000..26bad9008dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_forming_press.json new file mode 100644 index 00000000000..2e4df26f61d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_gas_collector.json new file mode 100644 index 00000000000..c9b225add88 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_bus.json new file mode 100644 index 00000000000..4ab67fc490b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch.json new file mode 100644 index 00000000000..f31f8627a4a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch_4x.json new file mode 100644 index 00000000000..692ad755c9d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch_4x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_input_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch_9x.json new file mode 100644 index 00000000000..71e800cd74d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch_9x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_input_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_item_passthrough_hatch.json new file mode 100644 index 00000000000..28f7660231f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_laser_engraver.json new file mode 100644 index 00000000000..99fd1aaba77 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_lathe.json new file mode 100644 index 00000000000..82bb5a4ba03 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_macerator.json new file mode 100644 index 00000000000..2899cfff710 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_machine_hull.json new file mode 100644 index 00000000000..a8ad6fdf63b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_mixer.json new file mode 100644 index 00000000000..5a38f5f79ad --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_muffler_hatch.json new file mode 100644 index 00000000000..50868106c04 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_ore_washer.json new file mode 100644 index 00000000000..fe6e3e982ed --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_bus.json new file mode 100644 index 00000000000..ad4119f76ce --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch.json new file mode 100644 index 00000000000..4b9a99c1738 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch_4x.json new file mode 100644 index 00000000000..26b69242c08 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch_4x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_output_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch_9x.json new file mode 100644 index 00000000000..72b1a674e85 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch_9x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_output_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_packer.json new file mode 100644 index 00000000000..9ebf12f5151 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_polarizer.json new file mode 100644 index 00000000000..94e6d35561f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_quantum_chest.json new file mode 100644 index 00000000000..80a111c3a1c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_quantum_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:uiv_quantum_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_quantum_tank.json new file mode 100644 index 00000000000..45e29653f50 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_quantum_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:uiv_quantum_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_rock_crusher.json new file mode 100644 index 00000000000..c9febd542a5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_rotor_holder.json new file mode 100644 index 00000000000..8a37036aada --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_rotor_holder.json @@ -0,0 +1,46 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_rotor_holder", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/machine/template/rotor_holder/block", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/overlay" + }, + "when": { + "is_formed": "true" + } + } + ], + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_scanner.json new file mode 100644 index 00000000000..de1f52ae821 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_sifter.json new file mode 100644 index 00000000000..0e99210c3b6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..c9e2bd9d674 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_substation_input_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_substation_input_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..1d1f0c00876 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_substation_output_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_substation_output_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_thermal_centrifuge.json new file mode 100644 index 00000000000..2faca94762b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_16a.json new file mode 100644 index 00000000000..11212f56d67 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_16a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_1a.json new file mode 100644 index 00000000000..e6264513543 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_1a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_2a.json new file mode 100644 index 00000000000..c8b9f4c932c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_2a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_4a.json new file mode 100644 index 00000000000..45df909caee --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_4a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_wiremill.json new file mode 100644 index 00000000000..b618209c1a0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_16a_energy_converter.json new file mode 100644 index 00000000000..6e6aeee52da --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_16a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_1a_energy_converter.json new file mode 100644 index 00000000000..691353a8a71 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_1a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_4a_energy_converter.json new file mode 100644 index 00000000000..4891b9c2797 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_4a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_8a_energy_converter.json new file mode 100644 index 00000000000..03aa212c457 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_8a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_battery_buffer_16x.json new file mode 100644 index 00000000000..c85e2bcb846 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_battery_buffer_4x.json new file mode 100644 index 00000000000..f8511557ca7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_battery_buffer_8x.json new file mode 100644 index 00000000000..1959548094b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_charger_4x.json new file mode 100644 index 00000000000..1ac64473946 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_energy_input_hatch.json new file mode 100644 index 00000000000..6fd5ec93735 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_energy_output_hatch.json new file mode 100644 index 00000000000..eee84e10566 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_input_bus.json new file mode 100644 index 00000000000..bbb52e92d67 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_input_hatch.json new file mode 100644 index 00000000000..9ab374bde5c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_machine_hull.json new file mode 100644 index 00000000000..5c676d791ef --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_output_bus.json new file mode 100644 index 00000000000..9e7fb11a4ef --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_output_hatch.json new file mode 100644 index 00000000000..bb01d9a887e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_16a.json new file mode 100644 index 00000000000..79ee4a35aa4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_16a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_1a.json new file mode 100644 index 00000000000..8eeab3d4959 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_1a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_2a.json new file mode 100644 index 00000000000..8079368f2bd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_2a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_4a.json new file mode 100644 index 00000000000..dda72d670c1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_4a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..06027f6ad9e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_1024a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_1024a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..c366cb890cb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_1024a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_1024a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_16a_energy_converter.json new file mode 100644 index 00000000000..47b5e0aff7b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_16a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_1a_energy_converter.json new file mode 100644 index 00000000000..459596ee63d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_1a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..bb2811a8478 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_256a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_256a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..cde5b216a49 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_256a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_256a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..28078740d74 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_4096a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_4096a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..c74f3646270 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_4096a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_4096a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_4a_energy_converter.json new file mode 100644 index 00000000000..28e2f3bb55f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_4a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_8a_energy_converter.json new file mode 100644 index 00000000000..be0b20243e6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_8a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_alloy_smelter.json new file mode 100644 index 00000000000..fb33fb56e57 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_arc_furnace.json new file mode 100644 index 00000000000..82a00bbcb0d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_assembler.json new file mode 100644 index 00000000000..edc0cbf6045 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_autoclave.json new file mode 100644 index 00000000000..202b7141dfd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_battery_buffer_16x.json new file mode 100644 index 00000000000..849b9c615b1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_battery_buffer_4x.json new file mode 100644 index 00000000000..0903d156fb2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_battery_buffer_8x.json new file mode 100644 index 00000000000..f7d84ee765c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_bender.json new file mode 100644 index 00000000000..771b1d410d1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_brewery.json new file mode 100644 index 00000000000..59a19662785 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_canner.json new file mode 100644 index 00000000000..e5b96125540 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_centrifuge.json new file mode 100644 index 00000000000..f434d0e695f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_charger_4x.json new file mode 100644 index 00000000000..01b3b91c660 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_chemical_bath.json new file mode 100644 index 00000000000..b444c855815 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_chemical_reactor.json new file mode 100644 index 00000000000..f81582479ff --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_circuit_assembler.json new file mode 100644 index 00000000000..88d8889144e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_compressor.json new file mode 100644 index 00000000000..44715594b1f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_cutter.json new file mode 100644 index 00000000000..430d1236c04 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_diode.json new file mode 100644 index 00000000000..9971133b00d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_diode.json @@ -0,0 +1,92 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_distillery.json new file mode 100644 index 00000000000..1face64d8f7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_dual_input_hatch.json new file mode 100644 index 00000000000..421b36c710f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_dual_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_dual_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_dual_output_hatch.json new file mode 100644 index 00000000000..46ed70078ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_dual_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_dual_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_electric_furnace.json new file mode 100644 index 00000000000..8d596ae26b6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_electrolyzer.json new file mode 100644 index 00000000000..f07012635e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_electromagnetic_separator.json new file mode 100644 index 00000000000..0c1d350ef8e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_input_hatch.json new file mode 100644 index 00000000000..47dfafd93db --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..a790bc4c42e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_input_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_energy_input_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..3386727eef4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_input_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_energy_input_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_output_hatch.json new file mode 100644 index 00000000000..026f843ef8a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..e1538d95ea2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_output_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_energy_output_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..eccec884d5c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_output_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_energy_output_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_extractor.json new file mode 100644 index 00000000000..72ba9aa52a1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_extruder.json new file mode 100644 index 00000000000..fe8305c900a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_fermenter.json new file mode 100644 index 00000000000..36d4f47a9f9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_fluid_heater.json new file mode 100644 index 00000000000..79a29450c89 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..6d8f1b87380 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_fluid_solidifier.json new file mode 100644 index 00000000000..26b539b0caf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_forge_hammer.json new file mode 100644 index 00000000000..7def4a0244a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_forming_press.json new file mode 100644 index 00000000000..7f0cc4e79be --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_fusion_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_fusion_reactor.json new file mode 100644 index 00000000000..d9f8007608d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_fusion_reactor.json @@ -0,0 +1,95 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:fusion_ring" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:uv_fusion_reactor", + "texture_overrides": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk3" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk3", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk3", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk3", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk3", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk3", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk3", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk3", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk3", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_gas_collector.json new file mode 100644 index 00000000000..7a482133b89 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_input_bus.json new file mode 100644 index 00000000000..6909e2c6298 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch.json new file mode 100644 index 00000000000..27c5ef7053e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch_4x.json new file mode 100644 index 00000000000..3502846e076 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch_4x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_input_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch_9x.json new file mode 100644 index 00000000000..3cf2adee71e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch_9x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_input_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_item_passthrough_hatch.json new file mode 100644 index 00000000000..e6aa491a46e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_laser_engraver.json new file mode 100644 index 00000000000..8663965c203 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_lathe.json new file mode 100644 index 00000000000..1220ec2c2cb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_macerator.json new file mode 100644 index 00000000000..cfed999d863 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_machine_hull.json new file mode 100644 index 00000000000..eb7532c7555 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_mixer.json new file mode 100644 index 00000000000..e9543ddc39d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_muffler_hatch.json new file mode 100644 index 00000000000..5aa8be89f8c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_ore_washer.json new file mode 100644 index 00000000000..f9ab7794a91 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_output_bus.json new file mode 100644 index 00000000000..d0daad4c252 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch.json new file mode 100644 index 00000000000..0715bae4101 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch_4x.json new file mode 100644 index 00000000000..375c995de3b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch_4x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_output_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch_9x.json new file mode 100644 index 00000000000..e66063bf712 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch_9x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_output_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_packer.json new file mode 100644 index 00000000000..b25e9950cbe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_parallel_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_parallel_hatch.json new file mode 100644 index 00000000000..9a00c16157a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_parallel_hatch.json @@ -0,0 +1,48 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_parallel_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk4/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk4/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk4/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk4/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk4/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk4/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk4/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk4/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_polarizer.json new file mode 100644 index 00000000000..d30334d6de9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_quantum_chest.json new file mode 100644 index 00000000000..80b06c0ef28 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_quantum_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:uv_quantum_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_quantum_tank.json new file mode 100644 index 00000000000..e4a867cde49 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_quantum_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:uv_quantum_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_rock_crusher.json new file mode 100644 index 00000000000..d67516a8ce4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_rotor_holder.json new file mode 100644 index 00000000000..5b9c19e609b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_rotor_holder.json @@ -0,0 +1,46 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_rotor_holder", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/machine/template/rotor_holder/block", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/overlay" + }, + "when": { + "is_formed": "true" + } + } + ], + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_scanner.json new file mode 100644 index 00000000000..1aabbed47b4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_sifter.json new file mode 100644 index 00000000000..2ed4f10c17c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..86c8188f0d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_substation_input_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_substation_input_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..eca666c5f2f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_substation_output_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_substation_output_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_thermal_centrifuge.json new file mode 100644 index 00000000000..279c0664d91 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_16a.json new file mode 100644 index 00000000000..4067d8ad8d7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_16a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_1a.json new file mode 100644 index 00000000000..52eae135edb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_1a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_2a.json new file mode 100644 index 00000000000..fa1d93c3df5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_2a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_4a.json new file mode 100644 index 00000000000..3b839155667 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_4a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_wiremill.json new file mode 100644 index 00000000000..4eb236f17db --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_world_accelerator.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_world_accelerator.json new file mode 100644 index 00000000000..bafbbb4dd6e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_world_accelerator.json @@ -0,0 +1,135 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_world_accelerator", + "variants": { + "active=false,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "active=false,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..38a2e72aea4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_1024a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_1024a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..cfa5fa91a44 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_1024a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_1024a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_16a_energy_converter.json new file mode 100644 index 00000000000..18c1b5172e4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_16a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_1a_energy_converter.json new file mode 100644 index 00000000000..097e33dff78 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_1a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..90997b793f0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_256a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_256a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..2f76ef50fd6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_256a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_256a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..15a9e454c79 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_4096a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_4096a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..5b8ad190293 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_4096a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_4096a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_4a_energy_converter.json new file mode 100644 index 00000000000..0d418890885 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_4a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_8a_energy_converter.json new file mode 100644 index 00000000000..9fb7773afed --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_8a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_alloy_smelter.json new file mode 100644 index 00000000000..328f7c3fe3a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_arc_furnace.json new file mode 100644 index 00000000000..b62d42108a3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_assembler.json new file mode 100644 index 00000000000..3061903067b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_autoclave.json new file mode 100644 index 00000000000..8fc62eff641 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_battery_buffer_16x.json new file mode 100644 index 00000000000..0af6759bfba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_battery_buffer_4x.json new file mode 100644 index 00000000000..7327b69d1d7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_battery_buffer_8x.json new file mode 100644 index 00000000000..fb3044fe9cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_bender.json new file mode 100644 index 00000000000..0b1cf5dab20 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_brewery.json new file mode 100644 index 00000000000..0365737a2da --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_canner.json new file mode 100644 index 00000000000..b544f334a35 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_centrifuge.json new file mode 100644 index 00000000000..414f59beee8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_charger_4x.json new file mode 100644 index 00000000000..634c95b2c66 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_chemical_bath.json new file mode 100644 index 00000000000..6f39e5492b9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_chemical_reactor.json new file mode 100644 index 00000000000..218c096d15f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_circuit_assembler.json new file mode 100644 index 00000000000..598576e896a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_compressor.json new file mode 100644 index 00000000000..a3cc549f7af --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_cutter.json new file mode 100644 index 00000000000..1fd0ceb1f18 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_diode.json new file mode 100644 index 00000000000..f6c93f15c71 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_diode.json @@ -0,0 +1,92 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_distillery.json new file mode 100644 index 00000000000..8f5c4755db6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_dual_input_hatch.json new file mode 100644 index 00000000000..a5c8bb36745 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_dual_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_dual_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_dual_output_hatch.json new file mode 100644 index 00000000000..1599409d83b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_dual_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_dual_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_electric_furnace.json new file mode 100644 index 00000000000..1939173ec68 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_electrolyzer.json new file mode 100644 index 00000000000..d30fb874d91 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_electromagnetic_separator.json new file mode 100644 index 00000000000..28b0e4678dd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_input_hatch.json new file mode 100644 index 00000000000..6a088fdd3b2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..72e4137eccd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_input_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_energy_input_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..012d9f12577 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_input_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_energy_input_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_output_hatch.json new file mode 100644 index 00000000000..786607b3182 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..95a9cd52dfa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_output_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_energy_output_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..8b0c37c836f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_output_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_energy_output_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_extractor.json new file mode 100644 index 00000000000..88e0b569d24 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_extruder.json new file mode 100644 index 00000000000..91e5acaadc2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_fermenter.json new file mode 100644 index 00000000000..bbc1d61d794 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_fluid_heater.json new file mode 100644 index 00000000000..827f866f360 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..a76b05c2560 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_fluid_solidifier.json new file mode 100644 index 00000000000..f40988d048d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_forge_hammer.json new file mode 100644 index 00000000000..7cc80f7ca6c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_forming_press.json new file mode 100644 index 00000000000..8dcf917bc7b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_gas_collector.json new file mode 100644 index 00000000000..f7098b7edde --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_bus.json new file mode 100644 index 00000000000..23510926a16 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch.json new file mode 100644 index 00000000000..6377fea136e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch_4x.json new file mode 100644 index 00000000000..5b9c97c5905 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch_4x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_input_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch_9x.json new file mode 100644 index 00000000000..f2a61d8112d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch_9x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_input_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_item_passthrough_hatch.json new file mode 100644 index 00000000000..3db36774e8d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_laser_engraver.json new file mode 100644 index 00000000000..f2c4e33bcce --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_lathe.json new file mode 100644 index 00000000000..81389b51a37 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_macerator.json new file mode 100644 index 00000000000..6a7fa5091e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_machine_hull.json new file mode 100644 index 00000000000..04b8f04b056 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_mixer.json new file mode 100644 index 00000000000..3282a45a852 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_muffler_hatch.json new file mode 100644 index 00000000000..733249cc048 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_ore_washer.json new file mode 100644 index 00000000000..d238777d5ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_bus.json new file mode 100644 index 00000000000..dd83959ec9a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch.json new file mode 100644 index 00000000000..dbbfd2c68d8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch_4x.json new file mode 100644 index 00000000000..70c95b9abf2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch_4x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_output_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch_9x.json new file mode 100644 index 00000000000..4050b75da17 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch_9x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_output_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_packer.json new file mode 100644 index 00000000000..4f5c2571b32 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_polarizer.json new file mode 100644 index 00000000000..ea4af252ac4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_quantum_chest.json new file mode 100644 index 00000000000..639554319ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_quantum_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:uxv_quantum_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_quantum_tank.json new file mode 100644 index 00000000000..4213cfc9dba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_quantum_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:uxv_quantum_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_rock_crusher.json new file mode 100644 index 00000000000..3c4131082c5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_rotor_holder.json new file mode 100644 index 00000000000..030cbdd8e96 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_rotor_holder.json @@ -0,0 +1,46 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_rotor_holder", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/machine/template/rotor_holder/block", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/overlay" + }, + "when": { + "is_formed": "true" + } + } + ], + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_scanner.json new file mode 100644 index 00000000000..c62f7aaa1ba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_sifter.json new file mode 100644 index 00000000000..c25556ff7ab --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..0d8101cd2d1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_substation_input_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_substation_input_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..29e98ce5994 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_substation_output_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_substation_output_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_thermal_centrifuge.json new file mode 100644 index 00000000000..6c4cc5dfb9c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_16a.json new file mode 100644 index 00000000000..21f7efebca4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_16a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_1a.json new file mode 100644 index 00000000000..5c9dec3b981 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_1a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_2a.json new file mode 100644 index 00000000000..24631965390 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_2a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_4a.json new file mode 100644 index 00000000000..20f13202ac4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_4a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_wiremill.json new file mode 100644 index 00000000000..bf7df412b3a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/vacuum_freezer.json b/src/generated/resources/assets/gtceu/models/block/machine/vacuum_freezer.json new file mode 100644 index 00000000000..865bff111df --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/vacuum_freezer.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:vacuum_freezer", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/vacuum_freezer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/vacuum_freezer/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/vacuum_freezer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/vacuum_freezer/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/vacuum_freezer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/vacuum_freezer/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/vacuum_freezer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/vacuum_freezer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/vacuum_freezer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/vacuum_freezer/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/vacuum_freezer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/vacuum_freezer/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/vacuum_freezer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/vacuum_freezer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/vacuum_freezer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/vacuum_freezer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/wood_crate.json b/src/generated/resources/assets/gtceu/models/block/machine/wood_crate.json new file mode 100644 index 00000000000..aa8ec85c1c8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/wood_crate.json @@ -0,0 +1,13 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:wood_crate", + "variants": { + "taped=false": { + "model": "gtceu:block/machine/template/crate/wooden_crate" + }, + "taped=true": { + "model": "gtceu:block/machine/template/crate/wooden_crate_taped" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/wood_drum.json b/src/generated/resources/assets/gtceu/models/block/machine/wood_drum.json new file mode 100644 index 00000000000..6ba4c4d6c39 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/wood_drum.json @@ -0,0 +1,10 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:wood_drum", + "variants": { + "": { + "model": "gtceu:block/machine/template/drum/wooden_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/wooden_multiblock_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/wooden_multiblock_tank.json new file mode 100644 index 00000000000..f9a986c2a29 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/wooden_multiblock_tank.json @@ -0,0 +1,100 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:wooden_multiblock_tank", + "texture_overrides": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front_active", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front_active", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front_active", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front_active", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/wooden_tank_valve.json b/src/generated/resources/assets/gtceu/models/block/machine/wooden_tank_valve.json new file mode 100644 index 00000000000..9952521b919 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/wooden_tank_valve.json @@ -0,0 +1,56 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:wooden_tank_valve", + "texture_overrides": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + }, + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "overlay_front": "gtceu:block/multiblock/tank_valve/overlay_front", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "overlay_front": "gtceu:block/multiblock/tank_valve/overlay_front", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "overlay_front": "gtceu:block/multiblock/tank_valve/overlay_front_active", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "overlay_front": "gtceu:block/multiblock/tank_valve/overlay_front_active", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..669c2ad9991 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_1024a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_1024a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..0b0e603b537 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_1024a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_1024a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_16a_energy_converter.json new file mode 100644 index 00000000000..284f4be5aa1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_16a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_1a_energy_converter.json new file mode 100644 index 00000000000..4e393f33ee9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_1a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_256a_laser_source_hatch.json new file mode 100644 index 00000000000..92b5736bf58 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_256a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_256a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_256a_laser_target_hatch.json new file mode 100644 index 00000000000..eb922870a23 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_256a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_256a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..d75f0169c14 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_4096a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_4096a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..a3611571319 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_4096a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_4096a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_4a_energy_converter.json new file mode 100644 index 00000000000..3151b477bc2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_4a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_8a_energy_converter.json new file mode 100644 index 00000000000..3dcdacae0ad --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_8a_energy_converter.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_alloy_smelter.json new file mode 100644 index 00000000000..0d2ff4e2431 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_arc_furnace.json new file mode 100644 index 00000000000..55058eed594 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_assembler.json new file mode 100644 index 00000000000..463fe8cd31f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_autoclave.json new file mode 100644 index 00000000000..96e4df9581f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_battery_buffer_16x.json new file mode 100644 index 00000000000..40b2d1bf289 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_battery_buffer_4x.json new file mode 100644 index 00000000000..95e911d6e25 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_battery_buffer_8x.json new file mode 100644 index 00000000000..90ac7e88fef --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_bender.json new file mode 100644 index 00000000000..8e95db06e46 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_brewery.json new file mode 100644 index 00000000000..0cfb4d89d1a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_canner.json new file mode 100644 index 00000000000..0e77c7bfbd1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_centrifuge.json new file mode 100644 index 00000000000..cddcb07a472 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_charger_4x.json new file mode 100644 index 00000000000..e77af6e0415 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_chemical_bath.json new file mode 100644 index 00000000000..cc6ea03c4a4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_chemical_reactor.json new file mode 100644 index 00000000000..4a5a8fab5f6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_circuit_assembler.json new file mode 100644 index 00000000000..95e7f16ea75 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_compressor.json new file mode 100644 index 00000000000..4098de9724e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_cutter.json new file mode 100644 index 00000000000..f6c7a9e9179 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_diode.json new file mode 100644 index 00000000000..ae61d017bb5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_diode.json @@ -0,0 +1,92 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_distillery.json new file mode 100644 index 00000000000..37b17c82af3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_dual_input_hatch.json new file mode 100644 index 00000000000..dab2ac0bf86 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_dual_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_dual_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_dual_output_hatch.json new file mode 100644 index 00000000000..3e3b7b43554 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_dual_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_dual_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_electric_furnace.json new file mode 100644 index 00000000000..e062d95b026 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_electrolyzer.json new file mode 100644 index 00000000000..72e9ce21e77 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_electromagnetic_separator.json new file mode 100644 index 00000000000..16d9fd5bc73 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_input_hatch.json new file mode 100644 index 00000000000..c75c27975d6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_input_hatch_16a.json new file mode 100644 index 00000000000..8bd84d8b36e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_input_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_energy_input_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_input_hatch_4a.json new file mode 100644 index 00000000000..eecd0c34ac1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_input_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_energy_input_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_output_hatch.json new file mode 100644 index 00000000000..70de3b85e57 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_output_hatch_16a.json new file mode 100644 index 00000000000..80624af3807 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_output_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_energy_output_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_output_hatch_4a.json new file mode 100644 index 00000000000..be489fdd729 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_output_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_energy_output_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_extractor.json new file mode 100644 index 00000000000..82c53c06e34 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_extruder.json new file mode 100644 index 00000000000..e12524293b4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_fermenter.json new file mode 100644 index 00000000000..9a365f1f580 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_fluid_heater.json new file mode 100644 index 00000000000..197004523dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..4cebad48db4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_fluid_solidifier.json new file mode 100644 index 00000000000..879925f0cb3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_forge_hammer.json new file mode 100644 index 00000000000..bff6622c1a6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_forming_press.json new file mode 100644 index 00000000000..89cf009b788 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_fusion_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_fusion_reactor.json new file mode 100644 index 00000000000..4a6504969cb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_fusion_reactor.json @@ -0,0 +1,95 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:fusion_ring" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:zpm_fusion_reactor", + "texture_overrides": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk2" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk2", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk2", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk2", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk2", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk2", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk2", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk2", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk2", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_gas_collector.json new file mode 100644 index 00000000000..d2f3331340d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_bus.json new file mode 100644 index 00000000000..6a8d3fe5631 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch.json new file mode 100644 index 00000000000..303b95b7edc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch_4x.json new file mode 100644 index 00000000000..3927f45ef4c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch_4x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_input_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch_9x.json new file mode 100644 index 00000000000..90a08f34d78 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch_9x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_input_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_item_passthrough_hatch.json new file mode 100644 index 00000000000..769910a99d0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_laser_engraver.json new file mode 100644 index 00000000000..1ea95430352 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_lathe.json new file mode 100644 index 00000000000..23f2625e368 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_macerator.json new file mode 100644 index 00000000000..e4fc6801df3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_machine_hull.json new file mode 100644 index 00000000000..79330b4a87f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_mixer.json new file mode 100644 index 00000000000..637f3978bb6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_muffler_hatch.json new file mode 100644 index 00000000000..7ad28fd468f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_ore_washer.json new file mode 100644 index 00000000000..543ae8d64bc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_bus.json new file mode 100644 index 00000000000..b60823a6975 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch.json new file mode 100644 index 00000000000..e5bb1f949d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch_4x.json new file mode 100644 index 00000000000..a6d648d8df5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch_4x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_output_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch_9x.json new file mode 100644 index 00000000000..f374dd5281d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch_9x.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_output_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_packer.json new file mode 100644 index 00000000000..a98f933a195 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_parallel_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_parallel_hatch.json new file mode 100644 index 00000000000..f2b9562e6c2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_parallel_hatch.json @@ -0,0 +1,48 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_parallel_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk3/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk3/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk3/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk3/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk3/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk3/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk3/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk3/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_polarizer.json new file mode 100644 index 00000000000..94c5eff001a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_quantum_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_quantum_chest.json new file mode 100644 index 00000000000..d63289f23f6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_quantum_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:zpm_quantum_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_quantum_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_quantum_tank.json new file mode 100644 index 00000000000..a8232f38717 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_quantum_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:zpm_quantum_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_rock_crusher.json new file mode 100644 index 00000000000..a8ba43ebf5e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_rotor_holder.json new file mode 100644 index 00000000000..ed22c1f7613 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_rotor_holder.json @@ -0,0 +1,46 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_rotor_holder", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/machine/template/rotor_holder/block", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/overlay" + }, + "when": { + "is_formed": "true" + } + } + ], + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_scanner.json new file mode 100644 index 00000000000..33bf18dc003 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_sifter.json new file mode 100644 index 00000000000..6f50f2fe46f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_substation_input_hatch_64a.json new file mode 100644 index 00000000000..bd45d419ecf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_substation_input_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_substation_input_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_substation_output_hatch_64a.json new file mode 100644 index 00000000000..79b19ed88ad --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_substation_output_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_substation_output_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_thermal_centrifuge.json new file mode 100644 index 00000000000..d7c63ad26a6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_16a.json new file mode 100644 index 00000000000..ff3c1d3b07e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_16a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_1a.json new file mode 100644 index 00000000000..8d505b57b07 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_1a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_2a.json new file mode 100644 index 00000000000..cc15ae67af1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_2a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_4a.json new file mode 100644 index 00000000000..d7dc424ae6b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_4a.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_wiremill.json new file mode 100644 index 00000000000..a7522f3059b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_world_accelerator.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_world_accelerator.json new file mode 100644 index 00000000000..ef28c121ee5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_world_accelerator.json @@ -0,0 +1,135 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_world_accelerator", + "variants": { + "active=false,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "active=false,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/mv_hermetic_casing.json b/src/generated/resources/assets/gtceu/models/block/mv_hermetic_casing.json index bc5b000bf09..2140f732299 100644 --- a/src/generated/resources/assets/gtceu/models/block/mv_hermetic_casing.json +++ b/src/generated/resources/assets/gtceu/models/block/mv_hermetic_casing.json @@ -3,7 +3,6 @@ "textures": { "bot_bottom": "gtceu:block/casings/voltage/mv/bottom", "bot_side": "gtceu:block/casings/voltage/mv/side", - "bot_top": "gtceu:block/casings/voltage/mv/top", - "top_side": "gtceu:block/casings/hermetic_casing/hermetic_casing_overlay" + "bot_top": "gtceu:block/casings/voltage/mv/top" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/overlay/machine/overlay_steam_vent.json b/src/generated/resources/assets/gtceu/models/block/overlay/machine/overlay_steam_vent.json new file mode 100644 index 00000000000..27f03aea812 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/overlay/machine/overlay_steam_vent.json @@ -0,0 +1,25 @@ +{ + "elements": [ + { + "faces": { + "north": { + "cullface": "north", + "texture": "#steam_vent" + } + }, + "from": [ + 0, + 0, + -0.002 + ], + "to": [ + 16, + 16, + -0.002 + ] + } + ], + "textures": { + "steam_vent": "gtceu:block/overlay/machine/overlay_steam_vent" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/rubber_leaves.json b/src/generated/resources/assets/gtceu/models/block/rubber_leaves.json similarity index 100% rename from src/main/resources/assets/gtceu/models/block/rubber_leaves.json rename to src/generated/resources/assets/gtceu/models/block/rubber_leaves.json diff --git a/src/generated/resources/assets/gtceu/models/block/uhv_hermetic_casing.json b/src/generated/resources/assets/gtceu/models/block/uhv_hermetic_casing.json index 488fa45d866..f22c7a8178c 100644 --- a/src/generated/resources/assets/gtceu/models/block/uhv_hermetic_casing.json +++ b/src/generated/resources/assets/gtceu/models/block/uhv_hermetic_casing.json @@ -3,7 +3,6 @@ "textures": { "bot_bottom": "gtceu:block/casings/voltage/uhv/bottom", "bot_side": "gtceu:block/casings/voltage/uhv/side", - "bot_top": "gtceu:block/casings/voltage/uhv/top", - "top_side": "gtceu:block/casings/hermetic_casing/hermetic_casing_overlay" + "bot_top": "gtceu:block/casings/voltage/uhv/top" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/uv_hermetic_casing.json b/src/generated/resources/assets/gtceu/models/block/uv_hermetic_casing.json index 917514255e5..0d51f656aeb 100644 --- a/src/generated/resources/assets/gtceu/models/block/uv_hermetic_casing.json +++ b/src/generated/resources/assets/gtceu/models/block/uv_hermetic_casing.json @@ -3,7 +3,6 @@ "textures": { "bot_bottom": "gtceu:block/casings/voltage/uv/bottom", "bot_side": "gtceu:block/casings/voltage/uv/side", - "bot_top": "gtceu:block/casings/voltage/uv/top", - "top_side": "gtceu:block/casings/hermetic_casing/hermetic_casing_overlay" + "bot_top": "gtceu:block/casings/voltage/uv/top" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/zpm_hermetic_casing.json b/src/generated/resources/assets/gtceu/models/block/zpm_hermetic_casing.json index 12e9c34be3b..7fd92952d34 100644 --- a/src/generated/resources/assets/gtceu/models/block/zpm_hermetic_casing.json +++ b/src/generated/resources/assets/gtceu/models/block/zpm_hermetic_casing.json @@ -3,7 +3,6 @@ "textures": { "bot_bottom": "gtceu:block/casings/voltage/zpm/bottom", "bot_side": "gtceu:block/casings/voltage/zpm/side", - "bot_top": "gtceu:block/casings/voltage/zpm/top", - "top_side": "gtceu:block/casings/hermetic_casing/hermetic_casing_overlay" + "bot_top": "gtceu:block/casings/voltage/zpm/top" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/active_transformer.json b/src/generated/resources/assets/gtceu/models/item/active_transformer.json new file mode 100644 index 00000000000..a2124782cc3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/active_transformer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/active_transformer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/advanced_data_access_hatch.json b/src/generated/resources/assets/gtceu/models/item/advanced_data_access_hatch.json new file mode 100644 index 00000000000..2077d767f28 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/advanced_data_access_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/advanced_data_access_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/alloy_blast_smelter.json b/src/generated/resources/assets/gtceu/models/item/alloy_blast_smelter.json new file mode 100644 index 00000000000..0c875d39b7a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/alloy_blast_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/alloy_blast_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/aluminium_crate.json b/src/generated/resources/assets/gtceu/models/item/aluminium_crate.json new file mode 100644 index 00000000000..38eb0609228 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/aluminium_crate.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/aluminium_crate" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/aluminium_drum.json b/src/generated/resources/assets/gtceu/models/item/aluminium_drum.json new file mode 100644 index 00000000000..90c5e586297 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/aluminium_drum.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/aluminium_drum" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/assembly_line.json b/src/generated/resources/assets/gtceu/models/item/assembly_line.json new file mode 100644 index 00000000000..2df5df48e41 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/assembly_line.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/assembly_line" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/auto_maintenance_hatch.json b/src/generated/resources/assets/gtceu/models/item/auto_maintenance_hatch.json new file mode 100644 index 00000000000..e6716077d41 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/auto_maintenance_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/auto_maintenance_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/basic_data_access_hatch.json b/src/generated/resources/assets/gtceu/models/item/basic_data_access_hatch.json new file mode 100644 index 00000000000..184b9a346f3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/basic_data_access_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/basic_data_access_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/bronze_crate.json b/src/generated/resources/assets/gtceu/models/item/bronze_crate.json new file mode 100644 index 00000000000..dfa9b48d179 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/bronze_crate.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/bronze_crate" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/bronze_drum.json b/src/generated/resources/assets/gtceu/models/item/bronze_drum.json new file mode 100644 index 00000000000..01aecc8be1f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/bronze_drum.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/bronze_drum" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/bronze_large_boiler.json b/src/generated/resources/assets/gtceu/models/item/bronze_large_boiler.json new file mode 100644 index 00000000000..63e85a9ff7f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/bronze_large_boiler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/bronze_large_boiler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/central_monitor.json b/src/generated/resources/assets/gtceu/models/item/central_monitor.json new file mode 100644 index 00000000000..f2f5c4f89cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/central_monitor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/central_monitor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/charcoal_pile_igniter.json b/src/generated/resources/assets/gtceu/models/item/charcoal_pile_igniter.json new file mode 100644 index 00000000000..9ad6a3bd07c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/charcoal_pile_igniter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/charcoal_pile_igniter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/cleaning_maintenance_hatch.json b/src/generated/resources/assets/gtceu/models/item/cleaning_maintenance_hatch.json new file mode 100644 index 00000000000..99c7f155d41 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/cleaning_maintenance_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/cleaning_maintenance_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/cleanroom.json b/src/generated/resources/assets/gtceu/models/item/cleanroom.json new file mode 100644 index 00000000000..ca50f259c99 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/cleanroom.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/cleanroom" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/coke_oven.json b/src/generated/resources/assets/gtceu/models/item/coke_oven.json new file mode 100644 index 00000000000..b24de4634e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/coke_oven.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/coke_oven" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/coke_oven_hatch.json b/src/generated/resources/assets/gtceu/models/item/coke_oven_hatch.json new file mode 100644 index 00000000000..337bf837550 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/coke_oven_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/coke_oven_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/computation_receiver_hatch.json b/src/generated/resources/assets/gtceu/models/item/computation_receiver_hatch.json new file mode 100644 index 00000000000..cb40e9a2446 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/computation_receiver_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/computation_receiver_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/computation_transmitter_hatch.json b/src/generated/resources/assets/gtceu/models/item/computation_transmitter_hatch.json new file mode 100644 index 00000000000..2c0d2391f45 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/computation_transmitter_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/computation_transmitter_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/configurable_maintenance_hatch.json b/src/generated/resources/assets/gtceu/models/item/configurable_maintenance_hatch.json new file mode 100644 index 00000000000..bf34e403700 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/configurable_maintenance_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/configurable_maintenance_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/cracker.json b/src/generated/resources/assets/gtceu/models/item/cracker.json new file mode 100644 index 00000000000..4bb86ce5b7e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/cracker.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/cracker" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/creative_chest.json b/src/generated/resources/assets/gtceu/models/item/creative_chest.json new file mode 100644 index 00000000000..efdf210df3b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/creative_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/creative_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/creative_computation_provider.json b/src/generated/resources/assets/gtceu/models/item/creative_computation_provider.json new file mode 100644 index 00000000000..4ed8ee25e22 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/creative_computation_provider.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/creative_computation_provider" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/creative_data_access_hatch.json b/src/generated/resources/assets/gtceu/models/item/creative_data_access_hatch.json new file mode 100644 index 00000000000..ce56c6a2de8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/creative_data_access_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/creative_data_access_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/creative_energy.json b/src/generated/resources/assets/gtceu/models/item/creative_energy.json new file mode 100644 index 00000000000..18e6fb54c11 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/creative_energy.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/creative_energy" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/creative_tank.json b/src/generated/resources/assets/gtceu/models/item/creative_tank.json new file mode 100644 index 00000000000..0ee6a28c5b5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/creative_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/creative_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/data_access_hatch.json b/src/generated/resources/assets/gtceu/models/item/data_access_hatch.json new file mode 100644 index 00000000000..a3d954b887e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/data_access_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/data_access_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/data_bank.json b/src/generated/resources/assets/gtceu/models/item/data_bank.json new file mode 100644 index 00000000000..305faee9a58 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/data_bank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/data_bank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/data_receiver_hatch.json b/src/generated/resources/assets/gtceu/models/item/data_receiver_hatch.json new file mode 100644 index 00000000000..9c8bbc8822f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/data_receiver_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/data_receiver_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/data_transmitter_hatch.json b/src/generated/resources/assets/gtceu/models/item/data_transmitter_hatch.json new file mode 100644 index 00000000000..1965c902aeb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/data_transmitter_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/data_transmitter_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/distillation_tower.json b/src/generated/resources/assets/gtceu/models/item/distillation_tower.json new file mode 100644 index 00000000000..adc7144d9d4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/distillation_tower.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/distillation_tower" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/electric_blast_furnace.json b/src/generated/resources/assets/gtceu/models/item/electric_blast_furnace.json new file mode 100644 index 00000000000..ad3609216c6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/electric_blast_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/electric_blast_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/ev_16a_energy_converter.json new file mode 100644 index 00000000000..63780546b1d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/ev_1a_energy_converter.json new file mode 100644 index 00000000000..aed5d0f159e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/ev_4a_energy_converter.json new file mode 100644 index 00000000000..625580a66da --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/ev_8a_energy_converter.json new file mode 100644 index 00000000000..39a3cf09e0d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_air_scrubber.json b/src/generated/resources/assets/gtceu/models/item/ev_air_scrubber.json new file mode 100644 index 00000000000..ca55175d665 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_air_scrubber.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_air_scrubber" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/ev_alloy_smelter.json new file mode 100644 index 00000000000..b6efa9fa730 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/ev_arc_furnace.json new file mode 100644 index 00000000000..1d18807185b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_assembler.json b/src/generated/resources/assets/gtceu/models/item/ev_assembler.json new file mode 100644 index 00000000000..83ff004fe86 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_autoclave.json b/src/generated/resources/assets/gtceu/models/item/ev_autoclave.json new file mode 100644 index 00000000000..bffa4699ddf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/ev_battery_buffer_16x.json new file mode 100644 index 00000000000..b4721cca29e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/ev_battery_buffer_4x.json new file mode 100644 index 00000000000..aa3e590e73e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/ev_battery_buffer_8x.json new file mode 100644 index 00000000000..06d8c41e8eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_bedrock_ore_miner.json b/src/generated/resources/assets/gtceu/models/item/ev_bedrock_ore_miner.json new file mode 100644 index 00000000000..cd3eacd496f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_bedrock_ore_miner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_bedrock_ore_miner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_bender.json b/src/generated/resources/assets/gtceu/models/item/ev_bender.json new file mode 100644 index 00000000000..2556919b0a2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_block_breaker.json b/src/generated/resources/assets/gtceu/models/item/ev_block_breaker.json new file mode 100644 index 00000000000..7bfa3465a69 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_block_breaker.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_block_breaker" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_brewery.json b/src/generated/resources/assets/gtceu/models/item/ev_brewery.json new file mode 100644 index 00000000000..0bc515051e6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_canner.json b/src/generated/resources/assets/gtceu/models/item/ev_canner.json new file mode 100644 index 00000000000..54965eafb1a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/ev_centrifuge.json new file mode 100644 index 00000000000..ded26593526 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/ev_charger_4x.json new file mode 100644 index 00000000000..985de27a46c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/ev_chemical_bath.json new file mode 100644 index 00000000000..f2dc5ec177c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/ev_chemical_reactor.json new file mode 100644 index 00000000000..66ab00c9f8d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/ev_circuit_assembler.json new file mode 100644 index 00000000000..51a89340fef --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_compressor.json b/src/generated/resources/assets/gtceu/models/item/ev_compressor.json new file mode 100644 index 00000000000..21d37769f4e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_cutter.json b/src/generated/resources/assets/gtceu/models/item/ev_cutter.json new file mode 100644 index 00000000000..dfd74dbe718 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_diode.json b/src/generated/resources/assets/gtceu/models/item/ev_diode.json new file mode 100644 index 00000000000..768ad7842f6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_distillery.json b/src/generated/resources/assets/gtceu/models/item/ev_distillery.json new file mode 100644 index 00000000000..a38de69293e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/ev_electric_furnace.json new file mode 100644 index 00000000000..847fc6c2aea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/ev_electrolyzer.json new file mode 100644 index 00000000000..62939e51741 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/ev_electromagnetic_separator.json new file mode 100644 index 00000000000..398bf042346 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/ev_energy_input_hatch.json new file mode 100644 index 00000000000..d6fc0c6ecd8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/ev_energy_input_hatch_16a.json new file mode 100644 index 00000000000..6fa9d22a0bf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_energy_input_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_energy_input_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/ev_energy_input_hatch_4a.json new file mode 100644 index 00000000000..be11eddda7b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_energy_input_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_energy_input_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/ev_energy_output_hatch.json new file mode 100644 index 00000000000..801d3bd1c60 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/ev_energy_output_hatch_16a.json new file mode 100644 index 00000000000..fd108cdd5f6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_energy_output_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_energy_output_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/ev_energy_output_hatch_4a.json new file mode 100644 index 00000000000..9444c4e040c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_energy_output_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_energy_output_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_extractor.json b/src/generated/resources/assets/gtceu/models/item/ev_extractor.json new file mode 100644 index 00000000000..c429cedf139 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_extruder.json b/src/generated/resources/assets/gtceu/models/item/ev_extruder.json new file mode 100644 index 00000000000..d94f1b7876e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_fermenter.json b/src/generated/resources/assets/gtceu/models/item/ev_fermenter.json new file mode 100644 index 00000000000..f59c79e2eeb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_fisher.json b/src/generated/resources/assets/gtceu/models/item/ev_fisher.json new file mode 100644 index 00000000000..ae7e31b4b17 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_fisher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_fisher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_fluid_drilling_rig.json b/src/generated/resources/assets/gtceu/models/item/ev_fluid_drilling_rig.json new file mode 100644 index 00000000000..26e8c9ed953 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_fluid_drilling_rig.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_fluid_drilling_rig" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/ev_fluid_heater.json new file mode 100644 index 00000000000..0784ee35ff2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/ev_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..1aabd752203 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/ev_fluid_solidifier.json new file mode 100644 index 00000000000..a9b9a5773d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/ev_forge_hammer.json new file mode 100644 index 00000000000..a3ecab7e07f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_forming_press.json b/src/generated/resources/assets/gtceu/models/item/ev_forming_press.json new file mode 100644 index 00000000000..f6c3c6c58ce --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/ev_gas_collector.json new file mode 100644 index 00000000000..f60931be8bd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_input_bus.json b/src/generated/resources/assets/gtceu/models/item/ev_input_bus.json new file mode 100644 index 00000000000..669ed4ca8c6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/ev_input_hatch.json new file mode 100644 index 00000000000..7cf171cfe0d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/ev_input_hatch_4x.json new file mode 100644 index 00000000000..d5378bab0b1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_input_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_input_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/ev_input_hatch_9x.json new file mode 100644 index 00000000000..53544930bbc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_input_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_input_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_item_collector.json b/src/generated/resources/assets/gtceu/models/item/ev_item_collector.json new file mode 100644 index 00000000000..9c19887358c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_item_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_item_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/ev_item_passthrough_hatch.json new file mode 100644 index 00000000000..c16d9628da9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_large_miner.json b/src/generated/resources/assets/gtceu/models/item/ev_large_miner.json new file mode 100644 index 00000000000..6b849b7f34c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_large_miner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_large_miner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/ev_laser_engraver.json new file mode 100644 index 00000000000..dbb1f4b3ea8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_lathe.json b/src/generated/resources/assets/gtceu/models/item/ev_lathe.json new file mode 100644 index 00000000000..07cac6ba486 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_macerator.json b/src/generated/resources/assets/gtceu/models/item/ev_macerator.json new file mode 100644 index 00000000000..a94d9a2b784 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/ev_machine_hull.json new file mode 100644 index 00000000000..cca83636364 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_mixer.json b/src/generated/resources/assets/gtceu/models/item/ev_mixer.json new file mode 100644 index 00000000000..aea58ae9377 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/ev_muffler_hatch.json new file mode 100644 index 00000000000..4d7950edf06 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/ev_ore_washer.json new file mode 100644 index 00000000000..7f537cef7b4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_output_bus.json b/src/generated/resources/assets/gtceu/models/item/ev_output_bus.json new file mode 100644 index 00000000000..c26e3a2298a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/ev_output_hatch.json new file mode 100644 index 00000000000..acc934e1e35 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/ev_output_hatch_4x.json new file mode 100644 index 00000000000..2b74c7ddc51 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_output_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_output_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/ev_output_hatch_9x.json new file mode 100644 index 00000000000..d780a8c2b39 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_output_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_output_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_packer.json b/src/generated/resources/assets/gtceu/models/item/ev_packer.json new file mode 100644 index 00000000000..db63b1e7063 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_polarizer.json b/src/generated/resources/assets/gtceu/models/item/ev_polarizer.json new file mode 100644 index 00000000000..183630d5f57 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_pump.json b/src/generated/resources/assets/gtceu/models/item/ev_pump.json new file mode 100644 index 00000000000..0ba58f746e7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_pump.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_pump" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/ev_rock_crusher.json new file mode 100644 index 00000000000..f7b88691c9a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_rotor_holder.json b/src/generated/resources/assets/gtceu/models/item/ev_rotor_holder.json new file mode 100644 index 00000000000..7af61017c97 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_rotor_holder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_rotor_holder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_scanner.json b/src/generated/resources/assets/gtceu/models/item/ev_scanner.json new file mode 100644 index 00000000000..0d337511e1a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_sifter.json b/src/generated/resources/assets/gtceu/models/item/ev_sifter.json new file mode 100644 index 00000000000..0abab7fd3f9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/ev_substation_input_hatch_64a.json new file mode 100644 index 00000000000..d8b98c146eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_substation_input_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_substation_input_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/ev_substation_output_hatch_64a.json new file mode 100644 index 00000000000..25f4a3b1ebd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_substation_output_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_substation_output_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_super_chest.json b/src/generated/resources/assets/gtceu/models/item/ev_super_chest.json new file mode 100644 index 00000000000..7db62569d10 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_super_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_super_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_super_tank.json b/src/generated/resources/assets/gtceu/models/item/ev_super_tank.json new file mode 100644 index 00000000000..3a345ccb27d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_super_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_super_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/ev_thermal_centrifuge.json new file mode 100644 index 00000000000..6f75ca82fac --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/ev_transformer_16a.json new file mode 100644 index 00000000000..55bee42eba8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/ev_transformer_1a.json new file mode 100644 index 00000000000..e125fb9ee5b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/ev_transformer_2a.json new file mode 100644 index 00000000000..373a08cb263 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/ev_transformer_4a.json new file mode 100644 index 00000000000..ecebe3bd237 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_wiremill.json b/src/generated/resources/assets/gtceu/models/item/ev_wiremill.json new file mode 100644 index 00000000000..c3ce1c0e0f5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_world_accelerator.json b/src/generated/resources/assets/gtceu/models/item/ev_world_accelerator.json new file mode 100644 index 00000000000..c2d974a3500 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_world_accelerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_world_accelerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/extreme_combustion_engine.json b/src/generated/resources/assets/gtceu/models/item/extreme_combustion_engine.json new file mode 100644 index 00000000000..36a5f5c5704 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/extreme_combustion_engine.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/extreme_combustion_engine" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/gas_large_turbine.json b/src/generated/resources/assets/gtceu/models/item/gas_large_turbine.json new file mode 100644 index 00000000000..a5eadb85b1c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/gas_large_turbine.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/gas_large_turbine" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/gold_drum.json b/src/generated/resources/assets/gtceu/models/item/gold_drum.json new file mode 100644 index 00000000000..5593867557e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/gold_drum.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/gold_drum" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/high_performance_computation_array.json b/src/generated/resources/assets/gtceu/models/item/high_performance_computation_array.json new file mode 100644 index 00000000000..f57bf7976a3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/high_performance_computation_array.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/high_performance_computation_array" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hp_steam_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/hp_steam_alloy_smelter.json new file mode 100644 index 00000000000..b35cff0ded6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hp_steam_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hp_steam_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hp_steam_compressor.json b/src/generated/resources/assets/gtceu/models/item/hp_steam_compressor.json new file mode 100644 index 00000000000..e64b3ede9e3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hp_steam_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hp_steam_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hp_steam_extractor.json b/src/generated/resources/assets/gtceu/models/item/hp_steam_extractor.json new file mode 100644 index 00000000000..7c3cd62f92a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hp_steam_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hp_steam_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hp_steam_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/hp_steam_forge_hammer.json new file mode 100644 index 00000000000..7bc0e9222b5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hp_steam_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hp_steam_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hp_steam_furnace.json b/src/generated/resources/assets/gtceu/models/item/hp_steam_furnace.json new file mode 100644 index 00000000000..28ceda4df76 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hp_steam_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hp_steam_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hp_steam_liquid_boiler.json b/src/generated/resources/assets/gtceu/models/item/hp_steam_liquid_boiler.json new file mode 100644 index 00000000000..594d44e12cf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hp_steam_liquid_boiler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hp_steam_liquid_boiler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hp_steam_macerator.json b/src/generated/resources/assets/gtceu/models/item/hp_steam_macerator.json new file mode 100644 index 00000000000..99ecaf3c8f5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hp_steam_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hp_steam_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hp_steam_miner.json b/src/generated/resources/assets/gtceu/models/item/hp_steam_miner.json new file mode 100644 index 00000000000..190d569e1fd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hp_steam_miner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hp_steam_miner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hp_steam_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/hp_steam_rock_crusher.json new file mode 100644 index 00000000000..65bc549537c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hp_steam_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hp_steam_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hp_steam_solar_boiler.json b/src/generated/resources/assets/gtceu/models/item/hp_steam_solar_boiler.json new file mode 100644 index 00000000000..5821e51cfe4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hp_steam_solar_boiler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hp_steam_solar_boiler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hp_steam_solid_boiler.json b/src/generated/resources/assets/gtceu/models/item/hp_steam_solid_boiler.json new file mode 100644 index 00000000000..c5fb7ac1d96 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hp_steam_solid_boiler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hp_steam_solid_boiler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hpca_active_cooler_component.json b/src/generated/resources/assets/gtceu/models/item/hpca_active_cooler_component.json new file mode 100644 index 00000000000..6ff9d45595b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hpca_active_cooler_component.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hpca_active_cooler_component" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hpca_advanced_computation_component.json b/src/generated/resources/assets/gtceu/models/item/hpca_advanced_computation_component.json new file mode 100644 index 00000000000..41a24564b54 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hpca_advanced_computation_component.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hpca_advanced_computation_component" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hpca_bridge_component.json b/src/generated/resources/assets/gtceu/models/item/hpca_bridge_component.json new file mode 100644 index 00000000000..e0db9a5d869 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hpca_bridge_component.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hpca_bridge_component" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hpca_computation_component.json b/src/generated/resources/assets/gtceu/models/item/hpca_computation_component.json new file mode 100644 index 00000000000..b1f438cd601 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hpca_computation_component.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hpca_computation_component" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hpca_empty_component.json b/src/generated/resources/assets/gtceu/models/item/hpca_empty_component.json new file mode 100644 index 00000000000..46ad71f6da8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hpca_empty_component.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hpca_empty_component" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hpca_heat_sink_component.json b/src/generated/resources/assets/gtceu/models/item/hpca_heat_sink_component.json new file mode 100644 index 00000000000..701b2da134f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hpca_heat_sink_component.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hpca_heat_sink_component" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/hv_16a_energy_converter.json new file mode 100644 index 00000000000..c56b98a836d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/hv_1a_energy_converter.json new file mode 100644 index 00000000000..755f80d916b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/hv_4a_energy_converter.json new file mode 100644 index 00000000000..4beb3e9ea2b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/hv_8a_energy_converter.json new file mode 100644 index 00000000000..c83ba8b6c34 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_air_scrubber.json b/src/generated/resources/assets/gtceu/models/item/hv_air_scrubber.json new file mode 100644 index 00000000000..e0390e1a754 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_air_scrubber.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_air_scrubber" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/hv_alloy_smelter.json new file mode 100644 index 00000000000..f21ee445a0d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/hv_arc_furnace.json new file mode 100644 index 00000000000..2505e666b9f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_assembler.json b/src/generated/resources/assets/gtceu/models/item/hv_assembler.json new file mode 100644 index 00000000000..8d44fc03665 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_autoclave.json b/src/generated/resources/assets/gtceu/models/item/hv_autoclave.json new file mode 100644 index 00000000000..1bde3a0a6e2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/hv_battery_buffer_16x.json new file mode 100644 index 00000000000..49e2d2ebb26 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/hv_battery_buffer_4x.json new file mode 100644 index 00000000000..8466e7fb5d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/hv_battery_buffer_8x.json new file mode 100644 index 00000000000..10bbbe643a5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_bedrock_ore_miner.json b/src/generated/resources/assets/gtceu/models/item/hv_bedrock_ore_miner.json new file mode 100644 index 00000000000..f9e473d104b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_bedrock_ore_miner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_bedrock_ore_miner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_bender.json b/src/generated/resources/assets/gtceu/models/item/hv_bender.json new file mode 100644 index 00000000000..b09401627ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_block_breaker.json b/src/generated/resources/assets/gtceu/models/item/hv_block_breaker.json new file mode 100644 index 00000000000..7ca9c26a4cb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_block_breaker.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_block_breaker" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_brewery.json b/src/generated/resources/assets/gtceu/models/item/hv_brewery.json new file mode 100644 index 00000000000..d214a4f580c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_buffer.json b/src/generated/resources/assets/gtceu/models/item/hv_buffer.json new file mode 100644 index 00000000000..7534ad15061 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_buffer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_buffer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_canner.json b/src/generated/resources/assets/gtceu/models/item/hv_canner.json new file mode 100644 index 00000000000..2959ee1f762 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/hv_centrifuge.json new file mode 100644 index 00000000000..eee2b9c2332 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/hv_charger_4x.json new file mode 100644 index 00000000000..4632b2269bf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/hv_chemical_bath.json new file mode 100644 index 00000000000..76c03f0d68c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/hv_chemical_reactor.json new file mode 100644 index 00000000000..dced7b99ebe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/hv_circuit_assembler.json new file mode 100644 index 00000000000..a2488d72fea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_combustion.json b/src/generated/resources/assets/gtceu/models/item/hv_combustion.json new file mode 100644 index 00000000000..4dee51a00e7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_combustion.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_combustion" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_compressor.json b/src/generated/resources/assets/gtceu/models/item/hv_compressor.json new file mode 100644 index 00000000000..73bd550cb83 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_cutter.json b/src/generated/resources/assets/gtceu/models/item/hv_cutter.json new file mode 100644 index 00000000000..c3e304ce434 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_diode.json b/src/generated/resources/assets/gtceu/models/item/hv_diode.json new file mode 100644 index 00000000000..1736f2d271c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_distillery.json b/src/generated/resources/assets/gtceu/models/item/hv_distillery.json new file mode 100644 index 00000000000..8ccb0b6a43b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/hv_electric_furnace.json new file mode 100644 index 00000000000..238ef582dcc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/hv_electrolyzer.json new file mode 100644 index 00000000000..7538e59444b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/hv_electromagnetic_separator.json new file mode 100644 index 00000000000..fbd84e24642 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/hv_energy_input_hatch.json new file mode 100644 index 00000000000..7f95f77b15c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/hv_energy_output_hatch.json new file mode 100644 index 00000000000..ccb6acf0947 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_extractor.json b/src/generated/resources/assets/gtceu/models/item/hv_extractor.json new file mode 100644 index 00000000000..7dc1bf3fe89 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_extruder.json b/src/generated/resources/assets/gtceu/models/item/hv_extruder.json new file mode 100644 index 00000000000..6db69db59fb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_fermenter.json b/src/generated/resources/assets/gtceu/models/item/hv_fermenter.json new file mode 100644 index 00000000000..e546f46c6a9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_fisher.json b/src/generated/resources/assets/gtceu/models/item/hv_fisher.json new file mode 100644 index 00000000000..3c3e23c6f69 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_fisher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_fisher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_fluid_drilling_rig.json b/src/generated/resources/assets/gtceu/models/item/hv_fluid_drilling_rig.json new file mode 100644 index 00000000000..6796f84de55 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_fluid_drilling_rig.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_fluid_drilling_rig" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/hv_fluid_heater.json new file mode 100644 index 00000000000..d0128c2c0b1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/hv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..92b33b4f01d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/hv_fluid_solidifier.json new file mode 100644 index 00000000000..5fb8e68e50d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/hv_forge_hammer.json new file mode 100644 index 00000000000..dcd7a0c1a4b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_forming_press.json b/src/generated/resources/assets/gtceu/models/item/hv_forming_press.json new file mode 100644 index 00000000000..0ebac978cbc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/hv_gas_collector.json new file mode 100644 index 00000000000..204aeff1ded --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_gas_turbine.json b/src/generated/resources/assets/gtceu/models/item/hv_gas_turbine.json new file mode 100644 index 00000000000..b08ac1a9228 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_gas_turbine.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_gas_turbine" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_input_bus.json b/src/generated/resources/assets/gtceu/models/item/hv_input_bus.json new file mode 100644 index 00000000000..e376d489766 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/hv_input_hatch.json new file mode 100644 index 00000000000..9cb61245d5f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_item_collector.json b/src/generated/resources/assets/gtceu/models/item/hv_item_collector.json new file mode 100644 index 00000000000..54833d55de4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_item_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_item_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/hv_item_passthrough_hatch.json new file mode 100644 index 00000000000..0cd63e5b603 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/hv_laser_engraver.json new file mode 100644 index 00000000000..eab219f1bd4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_lathe.json b/src/generated/resources/assets/gtceu/models/item/hv_lathe.json new file mode 100644 index 00000000000..55e8549f6e6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_macerator.json b/src/generated/resources/assets/gtceu/models/item/hv_macerator.json new file mode 100644 index 00000000000..c261ac7ca02 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/hv_machine_hull.json new file mode 100644 index 00000000000..acb60fedcb3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_miner.json b/src/generated/resources/assets/gtceu/models/item/hv_miner.json new file mode 100644 index 00000000000..8ab929a2dbc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_miner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_miner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_mixer.json b/src/generated/resources/assets/gtceu/models/item/hv_mixer.json new file mode 100644 index 00000000000..00a66e896d5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/hv_muffler_hatch.json new file mode 100644 index 00000000000..9820d4891e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/hv_ore_washer.json new file mode 100644 index 00000000000..adcbf411474 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_output_bus.json b/src/generated/resources/assets/gtceu/models/item/hv_output_bus.json new file mode 100644 index 00000000000..c27ca19fc74 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/hv_output_hatch.json new file mode 100644 index 00000000000..1baf922abb2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_packer.json b/src/generated/resources/assets/gtceu/models/item/hv_packer.json new file mode 100644 index 00000000000..84b57f2b805 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_polarizer.json b/src/generated/resources/assets/gtceu/models/item/hv_polarizer.json new file mode 100644 index 00000000000..cd2c8f848c5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_pump.json b/src/generated/resources/assets/gtceu/models/item/hv_pump.json new file mode 100644 index 00000000000..8c5d09e9a02 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_pump.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_pump" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/hv_rock_crusher.json new file mode 100644 index 00000000000..2736f6c790a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/item/hv_rotor_holder.json new file mode 100644 index 00000000000..65ec3dc9137 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_rotor_holder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_rotor_holder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_scanner.json b/src/generated/resources/assets/gtceu/models/item/hv_scanner.json new file mode 100644 index 00000000000..b96d2304335 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_sifter.json b/src/generated/resources/assets/gtceu/models/item/hv_sifter.json new file mode 100644 index 00000000000..9a9644f628c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_steam_turbine.json b/src/generated/resources/assets/gtceu/models/item/hv_steam_turbine.json new file mode 100644 index 00000000000..611e8e0487e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_steam_turbine.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_steam_turbine" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_super_chest.json b/src/generated/resources/assets/gtceu/models/item/hv_super_chest.json new file mode 100644 index 00000000000..6878c1286fc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_super_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_super_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_super_tank.json b/src/generated/resources/assets/gtceu/models/item/hv_super_tank.json new file mode 100644 index 00000000000..201038735dd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_super_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_super_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/hv_thermal_centrifuge.json new file mode 100644 index 00000000000..d966be90dc9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/hv_transformer_16a.json new file mode 100644 index 00000000000..0263bc2b285 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/hv_transformer_1a.json new file mode 100644 index 00000000000..3e08923db3c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/hv_transformer_2a.json new file mode 100644 index 00000000000..b81ccda7e7a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/hv_transformer_4a.json new file mode 100644 index 00000000000..cb701498c89 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_wiremill.json b/src/generated/resources/assets/gtceu/models/item/hv_wiremill.json new file mode 100644 index 00000000000..c22037627c6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_world_accelerator.json b/src/generated/resources/assets/gtceu/models/item/hv_world_accelerator.json new file mode 100644 index 00000000000..87af7ae4c71 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_world_accelerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_world_accelerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/image_module.json b/src/generated/resources/assets/gtceu/models/item/image_module.json new file mode 100644 index 00000000000..f9729b7b19c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/image_module.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/image_module" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/implosion_compressor.json b/src/generated/resources/assets/gtceu/models/item/implosion_compressor.json new file mode 100644 index 00000000000..6c7fcd529c7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/implosion_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/implosion_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..39a1ecfa5d8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_1024a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_1024a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..1eaf13c35c0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_1024a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_1024a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/iv_16a_energy_converter.json new file mode 100644 index 00000000000..72e3c8ed1f9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/iv_1a_energy_converter.json new file mode 100644 index 00000000000..2cc5d8c46f7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..12e9cec2da4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_256a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_256a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..31a5486ecbe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_256a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_256a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..3c6d71ee3e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_4096a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_4096a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..e6fba3f237d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_4096a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_4096a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/iv_4a_energy_converter.json new file mode 100644 index 00000000000..a1202ee8806 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/iv_8a_energy_converter.json new file mode 100644 index 00000000000..ebd73730595 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/iv_alloy_smelter.json new file mode 100644 index 00000000000..132715eda1f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/iv_arc_furnace.json new file mode 100644 index 00000000000..53e1d6fd94a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_assembler.json b/src/generated/resources/assets/gtceu/models/item/iv_assembler.json new file mode 100644 index 00000000000..ca01f028fab --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_autoclave.json b/src/generated/resources/assets/gtceu/models/item/iv_autoclave.json new file mode 100644 index 00000000000..5a5a096bd6c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/iv_battery_buffer_16x.json new file mode 100644 index 00000000000..d4169cedb39 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/iv_battery_buffer_4x.json new file mode 100644 index 00000000000..aa54d3c3ac0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/iv_battery_buffer_8x.json new file mode 100644 index 00000000000..96cb06944af --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_bender.json b/src/generated/resources/assets/gtceu/models/item/iv_bender.json new file mode 100644 index 00000000000..2ffac91c3ef --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_brewery.json b/src/generated/resources/assets/gtceu/models/item/iv_brewery.json new file mode 100644 index 00000000000..b6deaf122c8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_canner.json b/src/generated/resources/assets/gtceu/models/item/iv_canner.json new file mode 100644 index 00000000000..1530c119544 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/iv_centrifuge.json new file mode 100644 index 00000000000..bfce6dd63e3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/iv_charger_4x.json new file mode 100644 index 00000000000..5f8b6a4e4df --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/iv_chemical_bath.json new file mode 100644 index 00000000000..f7a71165a18 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/iv_chemical_reactor.json new file mode 100644 index 00000000000..3eba46429a8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/iv_circuit_assembler.json new file mode 100644 index 00000000000..cf035080b99 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_compressor.json b/src/generated/resources/assets/gtceu/models/item/iv_compressor.json new file mode 100644 index 00000000000..93f19213c2b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_cutter.json b/src/generated/resources/assets/gtceu/models/item/iv_cutter.json new file mode 100644 index 00000000000..820cac0c121 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_diode.json b/src/generated/resources/assets/gtceu/models/item/iv_diode.json new file mode 100644 index 00000000000..957af44f9f1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_distillery.json b/src/generated/resources/assets/gtceu/models/item/iv_distillery.json new file mode 100644 index 00000000000..9e75ecefbcb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/iv_electric_furnace.json new file mode 100644 index 00000000000..3210fba7637 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/iv_electrolyzer.json new file mode 100644 index 00000000000..94ffdf510e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/iv_electromagnetic_separator.json new file mode 100644 index 00000000000..c16fdc6e413 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_energy_input_hatch.json new file mode 100644 index 00000000000..90bbdefdbce --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/iv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..fa282635712 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_energy_input_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_energy_input_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/iv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..6822d1f8269 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_energy_input_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_energy_input_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_energy_output_hatch.json new file mode 100644 index 00000000000..e6b8d5ca003 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/iv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..f65ee44fcc0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_energy_output_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_energy_output_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/iv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..f522fd3f521 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_energy_output_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_energy_output_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_extractor.json b/src/generated/resources/assets/gtceu/models/item/iv_extractor.json new file mode 100644 index 00000000000..f2a0328f5cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_extruder.json b/src/generated/resources/assets/gtceu/models/item/iv_extruder.json new file mode 100644 index 00000000000..4431971c424 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_fermenter.json b/src/generated/resources/assets/gtceu/models/item/iv_fermenter.json new file mode 100644 index 00000000000..601f1a27540 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_fisher.json b/src/generated/resources/assets/gtceu/models/item/iv_fisher.json new file mode 100644 index 00000000000..063801cedfa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_fisher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_fisher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/iv_fluid_heater.json new file mode 100644 index 00000000000..5ca7110be1e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..73623c3ed36 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/iv_fluid_solidifier.json new file mode 100644 index 00000000000..08e86f565b3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/iv_forge_hammer.json new file mode 100644 index 00000000000..bce0d68b34b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_forming_press.json b/src/generated/resources/assets/gtceu/models/item/iv_forming_press.json new file mode 100644 index 00000000000..472e32b4c07 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/iv_gas_collector.json new file mode 100644 index 00000000000..baa8256ebdd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_input_bus.json b/src/generated/resources/assets/gtceu/models/item/iv_input_bus.json new file mode 100644 index 00000000000..be7bf0636ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_input_hatch.json new file mode 100644 index 00000000000..81628176f25 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/iv_input_hatch_4x.json new file mode 100644 index 00000000000..0f0a512d73a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_input_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_input_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/iv_input_hatch_9x.json new file mode 100644 index 00000000000..ca5edd60504 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_input_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_input_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_item_passthrough_hatch.json new file mode 100644 index 00000000000..f7ce0aa0193 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_large_miner.json b/src/generated/resources/assets/gtceu/models/item/iv_large_miner.json new file mode 100644 index 00000000000..ab9ffdd7c79 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_large_miner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_large_miner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/iv_laser_engraver.json new file mode 100644 index 00000000000..cedebd619b5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_lathe.json b/src/generated/resources/assets/gtceu/models/item/iv_lathe.json new file mode 100644 index 00000000000..49ed7144dd6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_macerator.json b/src/generated/resources/assets/gtceu/models/item/iv_macerator.json new file mode 100644 index 00000000000..b927488a396 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/iv_machine_hull.json new file mode 100644 index 00000000000..e33c311fe52 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_mixer.json b/src/generated/resources/assets/gtceu/models/item/iv_mixer.json new file mode 100644 index 00000000000..9ddc597a9a0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_muffler_hatch.json new file mode 100644 index 00000000000..4f5f9464d32 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/iv_ore_washer.json new file mode 100644 index 00000000000..d855930295a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_output_bus.json b/src/generated/resources/assets/gtceu/models/item/iv_output_bus.json new file mode 100644 index 00000000000..0edeff33cd9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_output_hatch.json new file mode 100644 index 00000000000..d3450eed65d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/iv_output_hatch_4x.json new file mode 100644 index 00000000000..fb8045aaf80 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_output_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_output_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/iv_output_hatch_9x.json new file mode 100644 index 00000000000..a4a723f9126 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_output_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_output_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_packer.json b/src/generated/resources/assets/gtceu/models/item/iv_packer.json new file mode 100644 index 00000000000..4206e9521c5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_parallel_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_parallel_hatch.json new file mode 100644 index 00000000000..b2a58365560 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_parallel_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_parallel_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_polarizer.json b/src/generated/resources/assets/gtceu/models/item/iv_polarizer.json new file mode 100644 index 00000000000..ec2a9980331 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/item/iv_quantum_chest.json new file mode 100644 index 00000000000..02257f57f62 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_quantum_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_quantum_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/item/iv_quantum_tank.json new file mode 100644 index 00000000000..6eba89e71cf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_quantum_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_quantum_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/iv_rock_crusher.json new file mode 100644 index 00000000000..99cef24e5cf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/item/iv_rotor_holder.json new file mode 100644 index 00000000000..c08c6ccf0e8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_rotor_holder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_rotor_holder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_scanner.json b/src/generated/resources/assets/gtceu/models/item/iv_scanner.json new file mode 100644 index 00000000000..919b87ae0cb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_sifter.json b/src/generated/resources/assets/gtceu/models/item/iv_sifter.json new file mode 100644 index 00000000000..92d3057c415 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/iv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..aa6425ff670 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_substation_input_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_substation_input_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/iv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..9ad7031ae79 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_substation_output_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_substation_output_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/iv_thermal_centrifuge.json new file mode 100644 index 00000000000..de8bec4a2bf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/iv_transformer_16a.json new file mode 100644 index 00000000000..2a69e91c044 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/iv_transformer_1a.json new file mode 100644 index 00000000000..e1c74f6c4eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/iv_transformer_2a.json new file mode 100644 index 00000000000..c887e3c6306 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/iv_transformer_4a.json new file mode 100644 index 00000000000..7333bf048f6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_wiremill.json b/src/generated/resources/assets/gtceu/models/item/iv_wiremill.json new file mode 100644 index 00000000000..4223ae673ee --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_world_accelerator.json b/src/generated/resources/assets/gtceu/models/item/iv_world_accelerator.json new file mode 100644 index 00000000000..e7f2a2409c1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_world_accelerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_world_accelerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_arc_smelter.json b/src/generated/resources/assets/gtceu/models/item/large_arc_smelter.json new file mode 100644 index 00000000000..1db111e0644 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_arc_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_arc_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_assembler.json b/src/generated/resources/assets/gtceu/models/item/large_assembler.json new file mode 100644 index 00000000000..a575bf98aa1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_autoclave.json b/src/generated/resources/assets/gtceu/models/item/large_autoclave.json new file mode 100644 index 00000000000..e466ba5ec76 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_brewer.json b/src/generated/resources/assets/gtceu/models/item/large_brewer.json new file mode 100644 index 00000000000..a00996c8172 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_brewer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_brewer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/large_centrifuge.json new file mode 100644 index 00000000000..f7a892aa0f4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/large_chemical_bath.json new file mode 100644 index 00000000000..a1f21ad4511 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/large_chemical_reactor.json new file mode 100644 index 00000000000..fea38ef9ab0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/large_circuit_assembler.json new file mode 100644 index 00000000000..0234fdbaaa9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_combustion_engine.json b/src/generated/resources/assets/gtceu/models/item/large_combustion_engine.json new file mode 100644 index 00000000000..fd6e334fed1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_combustion_engine.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_combustion_engine" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_cutter.json b/src/generated/resources/assets/gtceu/models/item/large_cutter.json new file mode 100644 index 00000000000..676c4c17a04 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_distillery.json b/src/generated/resources/assets/gtceu/models/item/large_distillery.json new file mode 100644 index 00000000000..2f418d43322 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/large_electrolyzer.json new file mode 100644 index 00000000000..431afe9b399 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_electromagnet.json b/src/generated/resources/assets/gtceu/models/item/large_electromagnet.json new file mode 100644 index 00000000000..f72391593b8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_electromagnet.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_electromagnet" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_engraving_laser.json b/src/generated/resources/assets/gtceu/models/item/large_engraving_laser.json new file mode 100644 index 00000000000..7fc0427177f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_engraving_laser.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_engraving_laser" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_extractor.json b/src/generated/resources/assets/gtceu/models/item/large_extractor.json new file mode 100644 index 00000000000..05c60757de4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_extruder.json b/src/generated/resources/assets/gtceu/models/item/large_extruder.json new file mode 100644 index 00000000000..d3601daeafa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_maceration_tower.json b/src/generated/resources/assets/gtceu/models/item/large_maceration_tower.json new file mode 100644 index 00000000000..cb25d058a19 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_maceration_tower.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_maceration_tower" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_material_press.json b/src/generated/resources/assets/gtceu/models/item/large_material_press.json new file mode 100644 index 00000000000..6ac9b59cd35 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_material_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_material_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_mixer.json b/src/generated/resources/assets/gtceu/models/item/large_mixer.json new file mode 100644 index 00000000000..13a6213ce40 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_packer.json b/src/generated/resources/assets/gtceu/models/item/large_packer.json new file mode 100644 index 00000000000..709ae070855 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_sifting_funnel.json b/src/generated/resources/assets/gtceu/models/item/large_sifting_funnel.json new file mode 100644 index 00000000000..b82b9f8a779 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_sifting_funnel.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_sifting_funnel" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_solidifier.json b/src/generated/resources/assets/gtceu/models/item/large_solidifier.json new file mode 100644 index 00000000000..c8d050dd850 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_wiremill.json b/src/generated/resources/assets/gtceu/models/item/large_wiremill.json new file mode 100644 index 00000000000..d38949f1a9e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/long_distance_fluid_pipeline_endpoint.json b/src/generated/resources/assets/gtceu/models/item/long_distance_fluid_pipeline_endpoint.json new file mode 100644 index 00000000000..e1c92a18c9e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/long_distance_fluid_pipeline_endpoint.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/long_distance_fluid_pipeline_endpoint" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/long_distance_item_pipeline_endpoint.json b/src/generated/resources/assets/gtceu/models/item/long_distance_item_pipeline_endpoint.json new file mode 100644 index 00000000000..fc972450c61 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/long_distance_item_pipeline_endpoint.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/long_distance_item_pipeline_endpoint" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/long_rod_extruder_mold.json b/src/generated/resources/assets/gtceu/models/item/long_rod_extruder_mold.json deleted file mode 100644 index 179fad0d068..00000000000 --- a/src/generated/resources/assets/gtceu/models/item/long_rod_extruder_mold.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "gtceu:item/long_rod_extruder_mold" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lp_steam_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/lp_steam_alloy_smelter.json new file mode 100644 index 00000000000..1999798263b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lp_steam_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lp_steam_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lp_steam_compressor.json b/src/generated/resources/assets/gtceu/models/item/lp_steam_compressor.json new file mode 100644 index 00000000000..34bbc17166c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lp_steam_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lp_steam_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lp_steam_extractor.json b/src/generated/resources/assets/gtceu/models/item/lp_steam_extractor.json new file mode 100644 index 00000000000..9f0577732b3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lp_steam_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lp_steam_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lp_steam_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/lp_steam_forge_hammer.json new file mode 100644 index 00000000000..d49ed2f5889 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lp_steam_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lp_steam_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lp_steam_furnace.json b/src/generated/resources/assets/gtceu/models/item/lp_steam_furnace.json new file mode 100644 index 00000000000..659c6ff5209 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lp_steam_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lp_steam_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lp_steam_liquid_boiler.json b/src/generated/resources/assets/gtceu/models/item/lp_steam_liquid_boiler.json new file mode 100644 index 00000000000..28bdc8baa0a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lp_steam_liquid_boiler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lp_steam_liquid_boiler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lp_steam_macerator.json b/src/generated/resources/assets/gtceu/models/item/lp_steam_macerator.json new file mode 100644 index 00000000000..9737172c183 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lp_steam_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lp_steam_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lp_steam_miner.json b/src/generated/resources/assets/gtceu/models/item/lp_steam_miner.json new file mode 100644 index 00000000000..4cc89f235aa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lp_steam_miner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lp_steam_miner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lp_steam_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/lp_steam_rock_crusher.json new file mode 100644 index 00000000000..a816281bc98 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lp_steam_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lp_steam_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lp_steam_solar_boiler.json b/src/generated/resources/assets/gtceu/models/item/lp_steam_solar_boiler.json new file mode 100644 index 00000000000..48fc1502cd1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lp_steam_solar_boiler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lp_steam_solar_boiler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lp_steam_solid_boiler.json b/src/generated/resources/assets/gtceu/models/item/lp_steam_solid_boiler.json new file mode 100644 index 00000000000..db856db71b6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lp_steam_solid_boiler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lp_steam_solid_boiler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..65f9ed9d950 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_1024a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_1024a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..2b75d1cbaf9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_1024a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_1024a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/luv_16a_energy_converter.json new file mode 100644 index 00000000000..3588c3a5c8a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/luv_1a_energy_converter.json new file mode 100644 index 00000000000..8fbebb16bbc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..59ac4a3f150 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_256a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_256a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..c450fa3ee47 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_256a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_256a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..3bae1898378 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_4096a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_4096a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..799a73beac8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_4096a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_4096a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/luv_4a_energy_converter.json new file mode 100644 index 00000000000..6354d979c89 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/luv_8a_energy_converter.json new file mode 100644 index 00000000000..7cc1556c79f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/luv_alloy_smelter.json new file mode 100644 index 00000000000..b51080938ad --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/luv_arc_furnace.json new file mode 100644 index 00000000000..37d7a72e3f5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_assembler.json b/src/generated/resources/assets/gtceu/models/item/luv_assembler.json new file mode 100644 index 00000000000..b0544d95039 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_autoclave.json b/src/generated/resources/assets/gtceu/models/item/luv_autoclave.json new file mode 100644 index 00000000000..5fd0db8c3a8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/luv_battery_buffer_16x.json new file mode 100644 index 00000000000..c4d1f7864a0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/luv_battery_buffer_4x.json new file mode 100644 index 00000000000..3f405f00b9a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/luv_battery_buffer_8x.json new file mode 100644 index 00000000000..7546d234b8d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_bender.json b/src/generated/resources/assets/gtceu/models/item/luv_bender.json new file mode 100644 index 00000000000..a9fc8f53754 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_brewery.json b/src/generated/resources/assets/gtceu/models/item/luv_brewery.json new file mode 100644 index 00000000000..ea90d9edf41 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_canner.json b/src/generated/resources/assets/gtceu/models/item/luv_canner.json new file mode 100644 index 00000000000..8ceb9626a61 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/luv_centrifuge.json new file mode 100644 index 00000000000..282fa6e42d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/luv_charger_4x.json new file mode 100644 index 00000000000..d633fb1d2fa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/luv_chemical_bath.json new file mode 100644 index 00000000000..a515910b316 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/luv_chemical_reactor.json new file mode 100644 index 00000000000..19d63089faf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/luv_circuit_assembler.json new file mode 100644 index 00000000000..a011a0da7dd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_compressor.json b/src/generated/resources/assets/gtceu/models/item/luv_compressor.json new file mode 100644 index 00000000000..b6cf8bad316 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_cutter.json b/src/generated/resources/assets/gtceu/models/item/luv_cutter.json new file mode 100644 index 00000000000..a8e04f13ded --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_diode.json b/src/generated/resources/assets/gtceu/models/item/luv_diode.json new file mode 100644 index 00000000000..9e1b3fb914e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_distillery.json b/src/generated/resources/assets/gtceu/models/item/luv_distillery.json new file mode 100644 index 00000000000..6b2eea6261a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_dual_input_hatch.json new file mode 100644 index 00000000000..d6c27618dfc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_dual_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_dual_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_dual_output_hatch.json new file mode 100644 index 00000000000..8426bb0f299 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_dual_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_dual_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/luv_electric_furnace.json new file mode 100644 index 00000000000..1800ff2077d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/luv_electrolyzer.json new file mode 100644 index 00000000000..70bb0605d2a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/luv_electromagnetic_separator.json new file mode 100644 index 00000000000..a19f3101679 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_energy_input_hatch.json new file mode 100644 index 00000000000..aeb1e203485 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/luv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..07ef73f823c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_energy_input_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_energy_input_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/luv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..2edae4688d7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_energy_input_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_energy_input_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_energy_output_hatch.json new file mode 100644 index 00000000000..2431be39a6e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/luv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..c35ef06c8cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_energy_output_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_energy_output_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/luv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..352cbbc9616 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_energy_output_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_energy_output_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_extractor.json b/src/generated/resources/assets/gtceu/models/item/luv_extractor.json new file mode 100644 index 00000000000..92daacee9e6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_extruder.json b/src/generated/resources/assets/gtceu/models/item/luv_extruder.json new file mode 100644 index 00000000000..96a092a80af --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_fermenter.json b/src/generated/resources/assets/gtceu/models/item/luv_fermenter.json new file mode 100644 index 00000000000..6e2ef710176 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_fisher.json b/src/generated/resources/assets/gtceu/models/item/luv_fisher.json new file mode 100644 index 00000000000..0cf596bbe5c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_fisher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_fisher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/luv_fluid_heater.json new file mode 100644 index 00000000000..116fbb9cf13 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..1d42c5fd72f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/luv_fluid_solidifier.json new file mode 100644 index 00000000000..32ef231a74f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/luv_forge_hammer.json new file mode 100644 index 00000000000..802e1f5abdd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_forming_press.json b/src/generated/resources/assets/gtceu/models/item/luv_forming_press.json new file mode 100644 index 00000000000..f854efb6340 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_fusion_reactor.json b/src/generated/resources/assets/gtceu/models/item/luv_fusion_reactor.json new file mode 100644 index 00000000000..64a049e92a4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_fusion_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_fusion_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/luv_gas_collector.json new file mode 100644 index 00000000000..0e2c66734ae --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_input_bus.json b/src/generated/resources/assets/gtceu/models/item/luv_input_bus.json new file mode 100644 index 00000000000..423a0ef53ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_input_hatch.json new file mode 100644 index 00000000000..f320c420d5d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/luv_input_hatch_4x.json new file mode 100644 index 00000000000..639f03ac850 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_input_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_input_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/luv_input_hatch_9x.json new file mode 100644 index 00000000000..c1b5f924b0b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_input_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_input_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_item_passthrough_hatch.json new file mode 100644 index 00000000000..d3e0bc114c2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_large_miner.json b/src/generated/resources/assets/gtceu/models/item/luv_large_miner.json new file mode 100644 index 00000000000..be8dd38f127 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_large_miner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_large_miner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/luv_laser_engraver.json new file mode 100644 index 00000000000..79a6a5f281f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_lathe.json b/src/generated/resources/assets/gtceu/models/item/luv_lathe.json new file mode 100644 index 00000000000..0f03923a3f3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_macerator.json b/src/generated/resources/assets/gtceu/models/item/luv_macerator.json new file mode 100644 index 00000000000..b45cb4b8db6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/luv_machine_hull.json new file mode 100644 index 00000000000..8a33d0b1382 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_mixer.json b/src/generated/resources/assets/gtceu/models/item/luv_mixer.json new file mode 100644 index 00000000000..8f5ae4cb37f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_muffler_hatch.json new file mode 100644 index 00000000000..cc5d63e6276 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/luv_ore_washer.json new file mode 100644 index 00000000000..3451b32f758 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_output_bus.json b/src/generated/resources/assets/gtceu/models/item/luv_output_bus.json new file mode 100644 index 00000000000..b38ef108040 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_output_hatch.json new file mode 100644 index 00000000000..38c63985d1d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/luv_output_hatch_4x.json new file mode 100644 index 00000000000..c1894d49a42 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_output_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_output_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/luv_output_hatch_9x.json new file mode 100644 index 00000000000..63c1f4dc4d7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_output_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_output_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_packer.json b/src/generated/resources/assets/gtceu/models/item/luv_packer.json new file mode 100644 index 00000000000..95c9e2b48aa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_parallel_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_parallel_hatch.json new file mode 100644 index 00000000000..176193c4fd4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_parallel_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_parallel_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_polarizer.json b/src/generated/resources/assets/gtceu/models/item/luv_polarizer.json new file mode 100644 index 00000000000..5de19d2ed16 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/item/luv_quantum_chest.json new file mode 100644 index 00000000000..f5d26cbbea4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_quantum_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_quantum_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/item/luv_quantum_tank.json new file mode 100644 index 00000000000..bf6f23d4c10 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_quantum_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_quantum_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/luv_rock_crusher.json new file mode 100644 index 00000000000..072f5a39f32 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/item/luv_rotor_holder.json new file mode 100644 index 00000000000..5fb3fd9a110 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_rotor_holder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_rotor_holder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_scanner.json b/src/generated/resources/assets/gtceu/models/item/luv_scanner.json new file mode 100644 index 00000000000..31a60eb669b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_sifter.json b/src/generated/resources/assets/gtceu/models/item/luv_sifter.json new file mode 100644 index 00000000000..4047ed85e77 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/luv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..6ebe70db99c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_substation_input_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_substation_input_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/luv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..2a2704c4281 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_substation_output_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_substation_output_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/luv_thermal_centrifuge.json new file mode 100644 index 00000000000..d62a46b5679 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/luv_transformer_16a.json new file mode 100644 index 00000000000..d004dc42330 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/luv_transformer_1a.json new file mode 100644 index 00000000000..02f3f10c7ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/luv_transformer_2a.json new file mode 100644 index 00000000000..737d8dfca08 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/luv_transformer_4a.json new file mode 100644 index 00000000000..8c2400a4a63 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_wiremill.json b/src/generated/resources/assets/gtceu/models/item/luv_wiremill.json new file mode 100644 index 00000000000..d015f0a4fab --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_world_accelerator.json b/src/generated/resources/assets/gtceu/models/item/luv_world_accelerator.json new file mode 100644 index 00000000000..6b7fe8449d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_world_accelerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_world_accelerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/lv_16a_energy_converter.json new file mode 100644 index 00000000000..525648e62da --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/lv_1a_energy_converter.json new file mode 100644 index 00000000000..0f14dd72f49 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/lv_4a_energy_converter.json new file mode 100644 index 00000000000..ae11a25ab1f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/lv_8a_energy_converter.json new file mode 100644 index 00000000000..c476aab9377 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_air_scrubber.json b/src/generated/resources/assets/gtceu/models/item/lv_air_scrubber.json new file mode 100644 index 00000000000..c9d76e5ef14 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_air_scrubber.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_air_scrubber" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/lv_alloy_smelter.json new file mode 100644 index 00000000000..5313fcc0f50 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/lv_arc_furnace.json new file mode 100644 index 00000000000..a2e168c5a27 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_assembler.json b/src/generated/resources/assets/gtceu/models/item/lv_assembler.json new file mode 100644 index 00000000000..7c9a2d7fddc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_autoclave.json b/src/generated/resources/assets/gtceu/models/item/lv_autoclave.json new file mode 100644 index 00000000000..bf5502c1ebb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/lv_battery_buffer_16x.json new file mode 100644 index 00000000000..23d99094497 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/lv_battery_buffer_4x.json new file mode 100644 index 00000000000..158cc217e3f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/lv_battery_buffer_8x.json new file mode 100644 index 00000000000..ca8d7511f6a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_bender.json b/src/generated/resources/assets/gtceu/models/item/lv_bender.json new file mode 100644 index 00000000000..7377289a65f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_block_breaker.json b/src/generated/resources/assets/gtceu/models/item/lv_block_breaker.json new file mode 100644 index 00000000000..fdb8f5908e9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_block_breaker.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_block_breaker" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_brewery.json b/src/generated/resources/assets/gtceu/models/item/lv_brewery.json new file mode 100644 index 00000000000..14fc92b182f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_buffer.json b/src/generated/resources/assets/gtceu/models/item/lv_buffer.json new file mode 100644 index 00000000000..6368d87affb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_buffer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_buffer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_canner.json b/src/generated/resources/assets/gtceu/models/item/lv_canner.json new file mode 100644 index 00000000000..d0ded76104a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/lv_centrifuge.json new file mode 100644 index 00000000000..a313adc294a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/lv_charger_4x.json new file mode 100644 index 00000000000..d536369e173 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/lv_chemical_bath.json new file mode 100644 index 00000000000..86a76a69207 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/lv_chemical_reactor.json new file mode 100644 index 00000000000..1bca3e078da --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/lv_circuit_assembler.json new file mode 100644 index 00000000000..580a855ddd5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_combustion.json b/src/generated/resources/assets/gtceu/models/item/lv_combustion.json new file mode 100644 index 00000000000..1a93a0c884d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_combustion.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_combustion" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_compressor.json b/src/generated/resources/assets/gtceu/models/item/lv_compressor.json new file mode 100644 index 00000000000..f86a0f708b1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_cutter.json b/src/generated/resources/assets/gtceu/models/item/lv_cutter.json new file mode 100644 index 00000000000..5377983efa4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_diode.json b/src/generated/resources/assets/gtceu/models/item/lv_diode.json new file mode 100644 index 00000000000..f7e3ba0619e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_distillery.json b/src/generated/resources/assets/gtceu/models/item/lv_distillery.json new file mode 100644 index 00000000000..b798e9d8c39 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/lv_electric_furnace.json new file mode 100644 index 00000000000..abdc842abb5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/lv_electrolyzer.json new file mode 100644 index 00000000000..33e219ee881 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/lv_electromagnetic_separator.json new file mode 100644 index 00000000000..c309c8915f0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/lv_energy_input_hatch.json new file mode 100644 index 00000000000..d680a551b29 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/lv_energy_output_hatch.json new file mode 100644 index 00000000000..957f86564a7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_extractor.json b/src/generated/resources/assets/gtceu/models/item/lv_extractor.json new file mode 100644 index 00000000000..b9039ad0416 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_extruder.json b/src/generated/resources/assets/gtceu/models/item/lv_extruder.json new file mode 100644 index 00000000000..8488e8166ff --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_fermenter.json b/src/generated/resources/assets/gtceu/models/item/lv_fermenter.json new file mode 100644 index 00000000000..68916cbeaba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_fisher.json b/src/generated/resources/assets/gtceu/models/item/lv_fisher.json new file mode 100644 index 00000000000..6e7fdf67ec6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_fisher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_fisher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/lv_fluid_heater.json new file mode 100644 index 00000000000..0e81b00dfa2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/lv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..c6b7bbe68dd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/lv_fluid_solidifier.json new file mode 100644 index 00000000000..b963557b16b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/lv_forge_hammer.json new file mode 100644 index 00000000000..91ec35835c3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_forming_press.json b/src/generated/resources/assets/gtceu/models/item/lv_forming_press.json new file mode 100644 index 00000000000..a1e365a0715 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/lv_gas_collector.json new file mode 100644 index 00000000000..5cd8e481249 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_gas_turbine.json b/src/generated/resources/assets/gtceu/models/item/lv_gas_turbine.json new file mode 100644 index 00000000000..d81b247f36a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_gas_turbine.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_gas_turbine" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_input_bus.json b/src/generated/resources/assets/gtceu/models/item/lv_input_bus.json new file mode 100644 index 00000000000..6181a8090a7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/lv_input_hatch.json new file mode 100644 index 00000000000..940968c6d48 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_item_collector.json b/src/generated/resources/assets/gtceu/models/item/lv_item_collector.json new file mode 100644 index 00000000000..6e844855980 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_item_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_item_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/lv_item_passthrough_hatch.json new file mode 100644 index 00000000000..ea368a2fbe6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/lv_laser_engraver.json new file mode 100644 index 00000000000..9a91d2d4185 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_lathe.json b/src/generated/resources/assets/gtceu/models/item/lv_lathe.json new file mode 100644 index 00000000000..9ceadf64f8c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_macerator.json b/src/generated/resources/assets/gtceu/models/item/lv_macerator.json new file mode 100644 index 00000000000..916ac534b75 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/lv_machine_hull.json new file mode 100644 index 00000000000..518156ba09f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_miner.json b/src/generated/resources/assets/gtceu/models/item/lv_miner.json new file mode 100644 index 00000000000..8b37fe441fe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_miner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_miner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_mixer.json b/src/generated/resources/assets/gtceu/models/item/lv_mixer.json new file mode 100644 index 00000000000..a0089d7579c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/lv_muffler_hatch.json new file mode 100644 index 00000000000..8d2b3151ed2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/lv_ore_washer.json new file mode 100644 index 00000000000..38f9e34bf88 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_output_bus.json b/src/generated/resources/assets/gtceu/models/item/lv_output_bus.json new file mode 100644 index 00000000000..4f2a28d5a15 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/lv_output_hatch.json new file mode 100644 index 00000000000..f848c5d951b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_packer.json b/src/generated/resources/assets/gtceu/models/item/lv_packer.json new file mode 100644 index 00000000000..54fbd403086 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_polarizer.json b/src/generated/resources/assets/gtceu/models/item/lv_polarizer.json new file mode 100644 index 00000000000..30319bcb9f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_pump.json b/src/generated/resources/assets/gtceu/models/item/lv_pump.json new file mode 100644 index 00000000000..06e5e1ace21 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_pump.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_pump" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/lv_rock_crusher.json new file mode 100644 index 00000000000..72fbcb5ba80 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_scanner.json b/src/generated/resources/assets/gtceu/models/item/lv_scanner.json new file mode 100644 index 00000000000..dad79199326 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_sifter.json b/src/generated/resources/assets/gtceu/models/item/lv_sifter.json new file mode 100644 index 00000000000..7c65244fe87 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_steam_turbine.json b/src/generated/resources/assets/gtceu/models/item/lv_steam_turbine.json new file mode 100644 index 00000000000..8cac65c86dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_steam_turbine.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_steam_turbine" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_super_chest.json b/src/generated/resources/assets/gtceu/models/item/lv_super_chest.json new file mode 100644 index 00000000000..29de4e59764 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_super_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_super_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_super_tank.json b/src/generated/resources/assets/gtceu/models/item/lv_super_tank.json new file mode 100644 index 00000000000..24d582d37c0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_super_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_super_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/lv_thermal_centrifuge.json new file mode 100644 index 00000000000..03d351d3efe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/lv_transformer_16a.json new file mode 100644 index 00000000000..eb533fe69c5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/lv_transformer_1a.json new file mode 100644 index 00000000000..b961b1491c8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/lv_transformer_2a.json new file mode 100644 index 00000000000..120f3be29e3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/lv_transformer_4a.json new file mode 100644 index 00000000000..39ceb87fb2d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_wiremill.json b/src/generated/resources/assets/gtceu/models/item/lv_wiremill.json new file mode 100644 index 00000000000..d2ea1f48dbe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_world_accelerator.json b/src/generated/resources/assets/gtceu/models/item/lv_world_accelerator.json new file mode 100644 index 00000000000..1673eb96f61 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_world_accelerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_world_accelerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/maintenance_hatch.json b/src/generated/resources/assets/gtceu/models/item/maintenance_hatch.json new file mode 100644 index 00000000000..e653a145394 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/maintenance_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/maintenance_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/max_16a_energy_converter.json new file mode 100644 index 00000000000..8aa24d88164 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/max_1a_energy_converter.json new file mode 100644 index 00000000000..c4d566f3b8d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/max_4a_energy_converter.json new file mode 100644 index 00000000000..d91299eeb20 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/max_8a_energy_converter.json new file mode 100644 index 00000000000..fa35b8cbacc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/max_battery_buffer_16x.json new file mode 100644 index 00000000000..97fba8216ed --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/max_battery_buffer_4x.json new file mode 100644 index 00000000000..dc4fc61b6eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/max_battery_buffer_8x.json new file mode 100644 index 00000000000..0f8098337ff --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/max_charger_4x.json new file mode 100644 index 00000000000..149ce8100a5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/max_dual_input_hatch.json new file mode 100644 index 00000000000..71ad48f1934 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_dual_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_dual_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/max_dual_output_hatch.json new file mode 100644 index 00000000000..eefa2da2e0c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_dual_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_dual_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/max_energy_input_hatch.json new file mode 100644 index 00000000000..3f13542e4df --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/max_energy_input_hatch_16a.json new file mode 100644 index 00000000000..8238618aafd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_energy_input_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_energy_input_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/max_energy_input_hatch_4a.json new file mode 100644 index 00000000000..1a649669974 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_energy_input_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_energy_input_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/max_energy_output_hatch.json new file mode 100644 index 00000000000..cf1a389e969 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/max_energy_output_hatch_16a.json new file mode 100644 index 00000000000..2fc77c3b2ee --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_energy_output_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_energy_output_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/max_energy_output_hatch_4a.json new file mode 100644 index 00000000000..23cc268a77c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_energy_output_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_energy_output_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_input_bus.json b/src/generated/resources/assets/gtceu/models/item/max_input_bus.json new file mode 100644 index 00000000000..79a3154b0f2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/max_input_hatch.json new file mode 100644 index 00000000000..ba275c9c4e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/max_input_hatch_4x.json new file mode 100644 index 00000000000..9ae3866ba49 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_input_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_input_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/max_input_hatch_9x.json new file mode 100644 index 00000000000..d6f86f723a4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_input_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_input_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/max_machine_hull.json new file mode 100644 index 00000000000..213a6db551c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_output_bus.json b/src/generated/resources/assets/gtceu/models/item/max_output_bus.json new file mode 100644 index 00000000000..72047919fe8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/max_output_hatch.json new file mode 100644 index 00000000000..214bfb6fd2c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/max_output_hatch_4x.json new file mode 100644 index 00000000000..9cfb55afce2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_output_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_output_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/max_output_hatch_9x.json new file mode 100644 index 00000000000..ba674d4c0b9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_output_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_output_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/max_substation_input_hatch_64a.json new file mode 100644 index 00000000000..fedf7c9a90f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_substation_input_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_substation_input_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/max_substation_output_hatch_64a.json new file mode 100644 index 00000000000..46c0e6ad2e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_substation_output_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_substation_output_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/me_input_bus.json b/src/generated/resources/assets/gtceu/models/item/me_input_bus.json new file mode 100644 index 00000000000..be62e22f5bc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/me_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/me_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/me_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/me_input_hatch.json new file mode 100644 index 00000000000..22f2ceefca5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/me_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/me_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/me_output_bus.json b/src/generated/resources/assets/gtceu/models/item/me_output_bus.json new file mode 100644 index 00000000000..767bbf379ca --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/me_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/me_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/me_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/me_output_hatch.json new file mode 100644 index 00000000000..b28e8071f6e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/me_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/me_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/me_pattern_buffer.json b/src/generated/resources/assets/gtceu/models/item/me_pattern_buffer.json new file mode 100644 index 00000000000..6b8df53cb61 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/me_pattern_buffer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/me_pattern_buffer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/me_pattern_buffer_proxy.json b/src/generated/resources/assets/gtceu/models/item/me_pattern_buffer_proxy.json new file mode 100644 index 00000000000..74442e0c4bd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/me_pattern_buffer_proxy.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/me_pattern_buffer_proxy" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/me_stocking_input_bus.json b/src/generated/resources/assets/gtceu/models/item/me_stocking_input_bus.json new file mode 100644 index 00000000000..1a619c8256f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/me_stocking_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/me_stocking_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/me_stocking_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/me_stocking_input_hatch.json new file mode 100644 index 00000000000..9c0c4abcec9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/me_stocking_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/me_stocking_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mega_blast_furnace.json b/src/generated/resources/assets/gtceu/models/item/mega_blast_furnace.json new file mode 100644 index 00000000000..cf647ab9e10 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mega_blast_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mega_blast_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mega_vacuum_freezer.json b/src/generated/resources/assets/gtceu/models/item/mega_vacuum_freezer.json new file mode 100644 index 00000000000..82648ab534b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mega_vacuum_freezer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mega_vacuum_freezer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/monitor.json b/src/generated/resources/assets/gtceu/models/item/monitor.json new file mode 100644 index 00000000000..c223679dd8e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/monitor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/monitor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/multi_smelter.json b/src/generated/resources/assets/gtceu/models/item/multi_smelter.json new file mode 100644 index 00000000000..80c28da5137 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/multi_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/multi_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/mv_16a_energy_converter.json new file mode 100644 index 00000000000..bfaffdcc315 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/mv_1a_energy_converter.json new file mode 100644 index 00000000000..34a2d84c86b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/mv_4a_energy_converter.json new file mode 100644 index 00000000000..3b60b8d3c1b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/mv_8a_energy_converter.json new file mode 100644 index 00000000000..e4a43a0c158 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_air_scrubber.json b/src/generated/resources/assets/gtceu/models/item/mv_air_scrubber.json new file mode 100644 index 00000000000..d93307097dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_air_scrubber.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_air_scrubber" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/mv_alloy_smelter.json new file mode 100644 index 00000000000..102ea0cf123 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/mv_arc_furnace.json new file mode 100644 index 00000000000..64987f44427 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_assembler.json b/src/generated/resources/assets/gtceu/models/item/mv_assembler.json new file mode 100644 index 00000000000..1776eef4707 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_autoclave.json b/src/generated/resources/assets/gtceu/models/item/mv_autoclave.json new file mode 100644 index 00000000000..d099bb5ca6d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/mv_battery_buffer_16x.json new file mode 100644 index 00000000000..4839a560de9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/mv_battery_buffer_4x.json new file mode 100644 index 00000000000..834739822c2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/mv_battery_buffer_8x.json new file mode 100644 index 00000000000..90ec9a78c62 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_bedrock_ore_miner.json b/src/generated/resources/assets/gtceu/models/item/mv_bedrock_ore_miner.json new file mode 100644 index 00000000000..cabb6f58650 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_bedrock_ore_miner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_bedrock_ore_miner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_bender.json b/src/generated/resources/assets/gtceu/models/item/mv_bender.json new file mode 100644 index 00000000000..070e07886c5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_block_breaker.json b/src/generated/resources/assets/gtceu/models/item/mv_block_breaker.json new file mode 100644 index 00000000000..eff9d8e308b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_block_breaker.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_block_breaker" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_brewery.json b/src/generated/resources/assets/gtceu/models/item/mv_brewery.json new file mode 100644 index 00000000000..0e32874f30c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_buffer.json b/src/generated/resources/assets/gtceu/models/item/mv_buffer.json new file mode 100644 index 00000000000..a4b0631ca46 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_buffer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_buffer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_canner.json b/src/generated/resources/assets/gtceu/models/item/mv_canner.json new file mode 100644 index 00000000000..97292ae01e9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/mv_centrifuge.json new file mode 100644 index 00000000000..cb522bce06a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/mv_charger_4x.json new file mode 100644 index 00000000000..0490b20cad3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/mv_chemical_bath.json new file mode 100644 index 00000000000..e407107ecd8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/mv_chemical_reactor.json new file mode 100644 index 00000000000..34fd3ed27c9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/mv_circuit_assembler.json new file mode 100644 index 00000000000..8ddd95ce554 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_combustion.json b/src/generated/resources/assets/gtceu/models/item/mv_combustion.json new file mode 100644 index 00000000000..9349f5f928a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_combustion.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_combustion" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_compressor.json b/src/generated/resources/assets/gtceu/models/item/mv_compressor.json new file mode 100644 index 00000000000..b9fb33c6b8d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_cutter.json b/src/generated/resources/assets/gtceu/models/item/mv_cutter.json new file mode 100644 index 00000000000..54f2915a7d7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_diode.json b/src/generated/resources/assets/gtceu/models/item/mv_diode.json new file mode 100644 index 00000000000..15b8af268ac --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_distillery.json b/src/generated/resources/assets/gtceu/models/item/mv_distillery.json new file mode 100644 index 00000000000..6868d67f56b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/mv_electric_furnace.json new file mode 100644 index 00000000000..a3e9fe88121 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/mv_electrolyzer.json new file mode 100644 index 00000000000..3379c765b08 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/mv_electromagnetic_separator.json new file mode 100644 index 00000000000..45440399e0a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/mv_energy_input_hatch.json new file mode 100644 index 00000000000..74cabc6c4cc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/mv_energy_output_hatch.json new file mode 100644 index 00000000000..9ee014c05b8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_extractor.json b/src/generated/resources/assets/gtceu/models/item/mv_extractor.json new file mode 100644 index 00000000000..be2ab84362c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_extruder.json b/src/generated/resources/assets/gtceu/models/item/mv_extruder.json new file mode 100644 index 00000000000..7994c1f0d34 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_fermenter.json b/src/generated/resources/assets/gtceu/models/item/mv_fermenter.json new file mode 100644 index 00000000000..a0e348770d8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_fisher.json b/src/generated/resources/assets/gtceu/models/item/mv_fisher.json new file mode 100644 index 00000000000..01e3a03090a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_fisher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_fisher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_fluid_drilling_rig.json b/src/generated/resources/assets/gtceu/models/item/mv_fluid_drilling_rig.json new file mode 100644 index 00000000000..8fdf38ca7ed --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_fluid_drilling_rig.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_fluid_drilling_rig" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/mv_fluid_heater.json new file mode 100644 index 00000000000..521faaab03b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/mv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..b785467c0a7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/mv_fluid_solidifier.json new file mode 100644 index 00000000000..68c8ca17088 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/mv_forge_hammer.json new file mode 100644 index 00000000000..0b92c07e668 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_forming_press.json b/src/generated/resources/assets/gtceu/models/item/mv_forming_press.json new file mode 100644 index 00000000000..b90ad5946a2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/mv_gas_collector.json new file mode 100644 index 00000000000..6abcce6eb05 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_gas_turbine.json b/src/generated/resources/assets/gtceu/models/item/mv_gas_turbine.json new file mode 100644 index 00000000000..f2309fdd6a7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_gas_turbine.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_gas_turbine" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_input_bus.json b/src/generated/resources/assets/gtceu/models/item/mv_input_bus.json new file mode 100644 index 00000000000..ffd7550afa3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/mv_input_hatch.json new file mode 100644 index 00000000000..217379bc7ac --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_item_collector.json b/src/generated/resources/assets/gtceu/models/item/mv_item_collector.json new file mode 100644 index 00000000000..295a18e6521 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_item_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_item_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/mv_item_passthrough_hatch.json new file mode 100644 index 00000000000..d34ae5e772d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/mv_laser_engraver.json new file mode 100644 index 00000000000..40bc02530e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_lathe.json b/src/generated/resources/assets/gtceu/models/item/mv_lathe.json new file mode 100644 index 00000000000..1b4060f1093 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_macerator.json b/src/generated/resources/assets/gtceu/models/item/mv_macerator.json new file mode 100644 index 00000000000..e11932f39d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/mv_machine_hull.json new file mode 100644 index 00000000000..48696577c87 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_miner.json b/src/generated/resources/assets/gtceu/models/item/mv_miner.json new file mode 100644 index 00000000000..8d656521229 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_miner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_miner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_mixer.json b/src/generated/resources/assets/gtceu/models/item/mv_mixer.json new file mode 100644 index 00000000000..48627a96ba3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/mv_muffler_hatch.json new file mode 100644 index 00000000000..4c7f89e1c2b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/mv_ore_washer.json new file mode 100644 index 00000000000..29a485646f9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_output_bus.json b/src/generated/resources/assets/gtceu/models/item/mv_output_bus.json new file mode 100644 index 00000000000..e22e81487e4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/mv_output_hatch.json new file mode 100644 index 00000000000..803d58f5a7b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_packer.json b/src/generated/resources/assets/gtceu/models/item/mv_packer.json new file mode 100644 index 00000000000..0c6a6b7bcf3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_polarizer.json b/src/generated/resources/assets/gtceu/models/item/mv_polarizer.json new file mode 100644 index 00000000000..3f42e84d01f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_pump.json b/src/generated/resources/assets/gtceu/models/item/mv_pump.json new file mode 100644 index 00000000000..8c9a3ac0baa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_pump.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_pump" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/mv_rock_crusher.json new file mode 100644 index 00000000000..9fc45eef096 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_scanner.json b/src/generated/resources/assets/gtceu/models/item/mv_scanner.json new file mode 100644 index 00000000000..e54f9af819e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_sifter.json b/src/generated/resources/assets/gtceu/models/item/mv_sifter.json new file mode 100644 index 00000000000..cd531314225 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_steam_turbine.json b/src/generated/resources/assets/gtceu/models/item/mv_steam_turbine.json new file mode 100644 index 00000000000..2963b0df0f3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_steam_turbine.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_steam_turbine" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_super_chest.json b/src/generated/resources/assets/gtceu/models/item/mv_super_chest.json new file mode 100644 index 00000000000..29bea345268 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_super_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_super_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_super_tank.json b/src/generated/resources/assets/gtceu/models/item/mv_super_tank.json new file mode 100644 index 00000000000..421486968c4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_super_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_super_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/mv_thermal_centrifuge.json new file mode 100644 index 00000000000..0b6471f950f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/mv_transformer_16a.json new file mode 100644 index 00000000000..5db92923c94 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/mv_transformer_1a.json new file mode 100644 index 00000000000..2459d35ba9f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/mv_transformer_2a.json new file mode 100644 index 00000000000..7c913e074ab --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/mv_transformer_4a.json new file mode 100644 index 00000000000..aab94354eb7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_wiremill.json b/src/generated/resources/assets/gtceu/models/item/mv_wiremill.json new file mode 100644 index 00000000000..185e29beabc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_world_accelerator.json b/src/generated/resources/assets/gtceu/models/item/mv_world_accelerator.json new file mode 100644 index 00000000000..ac3d2c83aac --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_world_accelerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_world_accelerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/network_switch.json b/src/generated/resources/assets/gtceu/models/item/network_switch.json new file mode 100644 index 00000000000..82b7aeab1d8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/network_switch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/network_switch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/object_holder.json b/src/generated/resources/assets/gtceu/models/item/object_holder.json new file mode 100644 index 00000000000..a4be7bf978b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/object_holder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/object_holder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..71cd95cc962 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_1024a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_1024a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..a901c88cef1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_1024a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_1024a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/opv_16a_energy_converter.json new file mode 100644 index 00000000000..573d5db8239 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/opv_1a_energy_converter.json new file mode 100644 index 00000000000..d4abab45647 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..6b1a626e966 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_256a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_256a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..b7ee4b24f1a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_256a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_256a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..31a3af9212e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_4096a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_4096a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..d68af02f254 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_4096a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_4096a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/opv_4a_energy_converter.json new file mode 100644 index 00000000000..4d241396d83 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/opv_8a_energy_converter.json new file mode 100644 index 00000000000..5570d5f785c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/opv_alloy_smelter.json new file mode 100644 index 00000000000..b03c498826b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/opv_arc_furnace.json new file mode 100644 index 00000000000..0578ace0027 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_assembler.json b/src/generated/resources/assets/gtceu/models/item/opv_assembler.json new file mode 100644 index 00000000000..f63aaa2ee49 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_autoclave.json b/src/generated/resources/assets/gtceu/models/item/opv_autoclave.json new file mode 100644 index 00000000000..9c8aff32242 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/opv_battery_buffer_16x.json new file mode 100644 index 00000000000..98290086529 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/opv_battery_buffer_4x.json new file mode 100644 index 00000000000..5f8703c4385 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/opv_battery_buffer_8x.json new file mode 100644 index 00000000000..ecf7d053d6d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_bender.json b/src/generated/resources/assets/gtceu/models/item/opv_bender.json new file mode 100644 index 00000000000..5c57432526d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_brewery.json b/src/generated/resources/assets/gtceu/models/item/opv_brewery.json new file mode 100644 index 00000000000..7398904eaf3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_canner.json b/src/generated/resources/assets/gtceu/models/item/opv_canner.json new file mode 100644 index 00000000000..da0fe279e47 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/opv_centrifuge.json new file mode 100644 index 00000000000..e37962e3301 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/opv_charger_4x.json new file mode 100644 index 00000000000..b4053f197e0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/opv_chemical_bath.json new file mode 100644 index 00000000000..69019b0058a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/opv_chemical_reactor.json new file mode 100644 index 00000000000..a2cb00e8398 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/opv_circuit_assembler.json new file mode 100644 index 00000000000..2ec3eab3119 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_compressor.json b/src/generated/resources/assets/gtceu/models/item/opv_compressor.json new file mode 100644 index 00000000000..52ffcc35a4c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_cutter.json b/src/generated/resources/assets/gtceu/models/item/opv_cutter.json new file mode 100644 index 00000000000..5c24c977e4a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_diode.json b/src/generated/resources/assets/gtceu/models/item/opv_diode.json new file mode 100644 index 00000000000..067c8f4dca7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_distillery.json b/src/generated/resources/assets/gtceu/models/item/opv_distillery.json new file mode 100644 index 00000000000..e3f929bbca0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_dual_input_hatch.json new file mode 100644 index 00000000000..afd15affa5a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_dual_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_dual_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_dual_output_hatch.json new file mode 100644 index 00000000000..dc9b879e56a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_dual_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_dual_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/opv_electric_furnace.json new file mode 100644 index 00000000000..ac2c21d8b72 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/opv_electrolyzer.json new file mode 100644 index 00000000000..d2d26841bfc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/opv_electromagnetic_separator.json new file mode 100644 index 00000000000..1d253b5c719 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_energy_input_hatch.json new file mode 100644 index 00000000000..739cca41740 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/opv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..3ce8b005074 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_energy_input_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_energy_input_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/opv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..1ee53996fdf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_energy_input_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_energy_input_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_energy_output_hatch.json new file mode 100644 index 00000000000..e86f5b6a645 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/opv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..fe96fd4d956 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_energy_output_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_energy_output_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/opv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..51d6dd53268 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_energy_output_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_energy_output_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_extractor.json b/src/generated/resources/assets/gtceu/models/item/opv_extractor.json new file mode 100644 index 00000000000..23b8c77c73f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_extruder.json b/src/generated/resources/assets/gtceu/models/item/opv_extruder.json new file mode 100644 index 00000000000..8af897d4d93 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_fermenter.json b/src/generated/resources/assets/gtceu/models/item/opv_fermenter.json new file mode 100644 index 00000000000..cb14370a7fc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/opv_fluid_heater.json new file mode 100644 index 00000000000..11ecc1aed39 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..2544392b7fb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/opv_fluid_solidifier.json new file mode 100644 index 00000000000..6051d8d1efd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/opv_forge_hammer.json new file mode 100644 index 00000000000..5d83368d6e4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_forming_press.json b/src/generated/resources/assets/gtceu/models/item/opv_forming_press.json new file mode 100644 index 00000000000..60b5c8b9dc7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/opv_gas_collector.json new file mode 100644 index 00000000000..c81dd10115d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_input_bus.json b/src/generated/resources/assets/gtceu/models/item/opv_input_bus.json new file mode 100644 index 00000000000..1d1684b05ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_input_hatch.json new file mode 100644 index 00000000000..485ba4bed83 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/opv_input_hatch_4x.json new file mode 100644 index 00000000000..e215aaf2bd6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_input_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_input_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/opv_input_hatch_9x.json new file mode 100644 index 00000000000..b86f892c1e8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_input_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_input_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_item_passthrough_hatch.json new file mode 100644 index 00000000000..22fd6897a56 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/opv_laser_engraver.json new file mode 100644 index 00000000000..f453aa5e656 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_lathe.json b/src/generated/resources/assets/gtceu/models/item/opv_lathe.json new file mode 100644 index 00000000000..2db372a0cd6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_macerator.json b/src/generated/resources/assets/gtceu/models/item/opv_macerator.json new file mode 100644 index 00000000000..9679310be86 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/opv_machine_hull.json new file mode 100644 index 00000000000..8f9e1c8727b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_mixer.json b/src/generated/resources/assets/gtceu/models/item/opv_mixer.json new file mode 100644 index 00000000000..bc47a6c6fb1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_muffler_hatch.json new file mode 100644 index 00000000000..b854f7146f6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/opv_ore_washer.json new file mode 100644 index 00000000000..26485ee56f3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_output_bus.json b/src/generated/resources/assets/gtceu/models/item/opv_output_bus.json new file mode 100644 index 00000000000..292354b7e35 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_output_hatch.json new file mode 100644 index 00000000000..a668243918c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/opv_output_hatch_4x.json new file mode 100644 index 00000000000..f9546e9d352 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_output_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_output_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/opv_output_hatch_9x.json new file mode 100644 index 00000000000..e975386d571 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_output_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_output_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_packer.json b/src/generated/resources/assets/gtceu/models/item/opv_packer.json new file mode 100644 index 00000000000..70c376d0afb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_polarizer.json b/src/generated/resources/assets/gtceu/models/item/opv_polarizer.json new file mode 100644 index 00000000000..74f8c34165a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/item/opv_quantum_chest.json new file mode 100644 index 00000000000..bc0cf24dbe9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_quantum_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_quantum_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/item/opv_quantum_tank.json new file mode 100644 index 00000000000..bea0df342a5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_quantum_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_quantum_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/opv_rock_crusher.json new file mode 100644 index 00000000000..57d51e7eb91 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/item/opv_rotor_holder.json new file mode 100644 index 00000000000..de196cb5b8c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_rotor_holder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_rotor_holder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_scanner.json b/src/generated/resources/assets/gtceu/models/item/opv_scanner.json new file mode 100644 index 00000000000..0b073b424f0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_sifter.json b/src/generated/resources/assets/gtceu/models/item/opv_sifter.json new file mode 100644 index 00000000000..07aad5c64ae --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/opv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..c197da52ee6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_substation_input_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_substation_input_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/opv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..f55c825bf88 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_substation_output_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_substation_output_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/opv_thermal_centrifuge.json new file mode 100644 index 00000000000..3e0152efec3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/opv_transformer_16a.json new file mode 100644 index 00000000000..450733339f3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/opv_transformer_1a.json new file mode 100644 index 00000000000..1937cc0f0d2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/opv_transformer_2a.json new file mode 100644 index 00000000000..f000b6d5a8d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/opv_transformer_4a.json new file mode 100644 index 00000000000..792bc10f2dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_wiremill.json b/src/generated/resources/assets/gtceu/models/item/opv_wiremill.json new file mode 100644 index 00000000000..50ef28ad833 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/plasma_large_turbine.json b/src/generated/resources/assets/gtceu/models/item/plasma_large_turbine.json new file mode 100644 index 00000000000..4e1c5f525c7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/plasma_large_turbine.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/plasma_large_turbine" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/power_substation.json b/src/generated/resources/assets/gtceu/models/item/power_substation.json new file mode 100644 index 00000000000..c606c5cba12 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/power_substation.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/power_substation" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/primitive_blast_furnace.json b/src/generated/resources/assets/gtceu/models/item/primitive_blast_furnace.json new file mode 100644 index 00000000000..da347a1571f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/primitive_blast_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/primitive_blast_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/primitive_pump.json b/src/generated/resources/assets/gtceu/models/item/primitive_pump.json new file mode 100644 index 00000000000..4688fa8541e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/primitive_pump.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/primitive_pump" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/pump_hatch.json b/src/generated/resources/assets/gtceu/models/item/pump_hatch.json new file mode 100644 index 00000000000..60b3553961c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/pump_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/pump_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/pyrolyse_oven.json b/src/generated/resources/assets/gtceu/models/item/pyrolyse_oven.json new file mode 100644 index 00000000000..593a487209f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/pyrolyse_oven.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/pyrolyse_oven" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/research_station.json b/src/generated/resources/assets/gtceu/models/item/research_station.json new file mode 100644 index 00000000000..bf33ccb9ee1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/research_station.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/research_station" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/reservoir_hatch.json b/src/generated/resources/assets/gtceu/models/item/reservoir_hatch.json new file mode 100644 index 00000000000..84006eb4513 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/reservoir_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/reservoir_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/stainless_steel_crate.json b/src/generated/resources/assets/gtceu/models/item/stainless_steel_crate.json new file mode 100644 index 00000000000..d069e02dd57 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/stainless_steel_crate.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/stainless_steel_crate" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/stainless_steel_drum.json b/src/generated/resources/assets/gtceu/models/item/stainless_steel_drum.json new file mode 100644 index 00000000000..70c29f61004 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/stainless_steel_drum.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/stainless_steel_drum" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/steam_grinder.json b/src/generated/resources/assets/gtceu/models/item/steam_grinder.json new file mode 100644 index 00000000000..c409f751d67 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/steam_grinder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/steam_grinder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/steam_input_bus.json b/src/generated/resources/assets/gtceu/models/item/steam_input_bus.json new file mode 100644 index 00000000000..594ea2cfd79 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/steam_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/steam_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/steam_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/steam_input_hatch.json new file mode 100644 index 00000000000..789373deb4a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/steam_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/steam_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/steam_large_turbine.json b/src/generated/resources/assets/gtceu/models/item/steam_large_turbine.json new file mode 100644 index 00000000000..478c1b1609c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/steam_large_turbine.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/steam_large_turbine" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/steam_output_bus.json b/src/generated/resources/assets/gtceu/models/item/steam_output_bus.json new file mode 100644 index 00000000000..c22f41ef128 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/steam_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/steam_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/steam_oven.json b/src/generated/resources/assets/gtceu/models/item/steam_oven.json new file mode 100644 index 00000000000..e0dbd655936 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/steam_oven.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/steam_oven" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/steel_crate.json b/src/generated/resources/assets/gtceu/models/item/steel_crate.json new file mode 100644 index 00000000000..0120f266e01 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/steel_crate.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/steel_crate" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/steel_drum.json b/src/generated/resources/assets/gtceu/models/item/steel_drum.json new file mode 100644 index 00000000000..0c806297805 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/steel_drum.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/steel_drum" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/steel_large_boiler.json b/src/generated/resources/assets/gtceu/models/item/steel_large_boiler.json new file mode 100644 index 00000000000..ec31453efe4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/steel_large_boiler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/steel_large_boiler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/steel_multiblock_tank.json b/src/generated/resources/assets/gtceu/models/item/steel_multiblock_tank.json new file mode 100644 index 00000000000..f75fb3ea8c1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/steel_multiblock_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/steel_multiblock_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/steel_tank_valve.json b/src/generated/resources/assets/gtceu/models/item/steel_tank_valve.json new file mode 100644 index 00000000000..cd8be429b35 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/steel_tank_valve.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/steel_tank_valve" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/text_module.json b/src/generated/resources/assets/gtceu/models/item/text_module.json new file mode 100644 index 00000000000..87136145bae --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/text_module.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/text_module" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/titanium_crate.json b/src/generated/resources/assets/gtceu/models/item/titanium_crate.json new file mode 100644 index 00000000000..9a2ee0d41fe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/titanium_crate.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/titanium_crate" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/titanium_drum.json b/src/generated/resources/assets/gtceu/models/item/titanium_drum.json new file mode 100644 index 00000000000..039d363a6de --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/titanium_drum.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/titanium_drum" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/titanium_large_boiler.json b/src/generated/resources/assets/gtceu/models/item/titanium_large_boiler.json new file mode 100644 index 00000000000..3458428729b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/titanium_large_boiler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/titanium_large_boiler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/tungsten_steel_crate.json b/src/generated/resources/assets/gtceu/models/item/tungsten_steel_crate.json new file mode 100644 index 00000000000..9bcd34efbff --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/tungsten_steel_crate.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/tungsten_steel_crate" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/tungsten_steel_drum.json b/src/generated/resources/assets/gtceu/models/item/tungsten_steel_drum.json new file mode 100644 index 00000000000..1fda83afea3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/tungsten_steel_drum.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/tungsten_steel_drum" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/tungstensteel_large_boiler.json b/src/generated/resources/assets/gtceu/models/item/tungstensteel_large_boiler.json new file mode 100644 index 00000000000..f2d02d41fb3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/tungstensteel_large_boiler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/tungstensteel_large_boiler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..fae5dd58ce7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_1024a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_1024a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..73b97fff173 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_1024a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_1024a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uev_16a_energy_converter.json new file mode 100644 index 00000000000..29c0bf0c317 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uev_1a_energy_converter.json new file mode 100644 index 00000000000..c96848393bd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_256a_laser_source_hatch.json new file mode 100644 index 00000000000..67c24e6a467 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_256a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_256a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_256a_laser_target_hatch.json new file mode 100644 index 00000000000..41e6ef708a6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_256a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_256a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..bcea472ee7d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_4096a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_4096a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..8211072e399 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_4096a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_4096a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uev_4a_energy_converter.json new file mode 100644 index 00000000000..3195df5546b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uev_8a_energy_converter.json new file mode 100644 index 00000000000..7965d1a05ba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/uev_alloy_smelter.json new file mode 100644 index 00000000000..a88f710e4f5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/uev_arc_furnace.json new file mode 100644 index 00000000000..2cfc135db5f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_assembler.json b/src/generated/resources/assets/gtceu/models/item/uev_assembler.json new file mode 100644 index 00000000000..a706e78c3a2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_autoclave.json b/src/generated/resources/assets/gtceu/models/item/uev_autoclave.json new file mode 100644 index 00000000000..6cdd3a66af9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/uev_battery_buffer_16x.json new file mode 100644 index 00000000000..7e99dea524c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/uev_battery_buffer_4x.json new file mode 100644 index 00000000000..0291500c702 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/uev_battery_buffer_8x.json new file mode 100644 index 00000000000..eff938d2525 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_bender.json b/src/generated/resources/assets/gtceu/models/item/uev_bender.json new file mode 100644 index 00000000000..2aab27a0c81 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_brewery.json b/src/generated/resources/assets/gtceu/models/item/uev_brewery.json new file mode 100644 index 00000000000..dd2fc37abdd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_canner.json b/src/generated/resources/assets/gtceu/models/item/uev_canner.json new file mode 100644 index 00000000000..ed2220d63b6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/uev_centrifuge.json new file mode 100644 index 00000000000..d14108d2b35 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/uev_charger_4x.json new file mode 100644 index 00000000000..cffc09c1a6d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/uev_chemical_bath.json new file mode 100644 index 00000000000..8ed55a212ee --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/uev_chemical_reactor.json new file mode 100644 index 00000000000..ebeee1c2bfa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/uev_circuit_assembler.json new file mode 100644 index 00000000000..dfd08484764 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_compressor.json b/src/generated/resources/assets/gtceu/models/item/uev_compressor.json new file mode 100644 index 00000000000..0a6a8c88b5b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_cutter.json b/src/generated/resources/assets/gtceu/models/item/uev_cutter.json new file mode 100644 index 00000000000..31524525642 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_diode.json b/src/generated/resources/assets/gtceu/models/item/uev_diode.json new file mode 100644 index 00000000000..6d94598afe7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_distillery.json b/src/generated/resources/assets/gtceu/models/item/uev_distillery.json new file mode 100644 index 00000000000..0e186aac227 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_dual_input_hatch.json new file mode 100644 index 00000000000..0cb62ebba39 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_dual_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_dual_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_dual_output_hatch.json new file mode 100644 index 00000000000..3c381af15a4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_dual_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_dual_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/uev_electric_furnace.json new file mode 100644 index 00000000000..ef96e8aa6b9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/uev_electrolyzer.json new file mode 100644 index 00000000000..58771ac0aec --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/uev_electromagnetic_separator.json new file mode 100644 index 00000000000..2a7ab309c87 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_energy_input_hatch.json new file mode 100644 index 00000000000..6a1c384f5fa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/uev_energy_input_hatch_16a.json new file mode 100644 index 00000000000..98100f7180d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_energy_input_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_energy_input_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/uev_energy_input_hatch_4a.json new file mode 100644 index 00000000000..583ba6681e9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_energy_input_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_energy_input_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_energy_output_hatch.json new file mode 100644 index 00000000000..0627a1e5e36 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/uev_energy_output_hatch_16a.json new file mode 100644 index 00000000000..5a9309abcde --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_energy_output_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_energy_output_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/uev_energy_output_hatch_4a.json new file mode 100644 index 00000000000..1b9fc914c91 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_energy_output_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_energy_output_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_extractor.json b/src/generated/resources/assets/gtceu/models/item/uev_extractor.json new file mode 100644 index 00000000000..23e7fb53769 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_extruder.json b/src/generated/resources/assets/gtceu/models/item/uev_extruder.json new file mode 100644 index 00000000000..935c08ba3ba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_fermenter.json b/src/generated/resources/assets/gtceu/models/item/uev_fermenter.json new file mode 100644 index 00000000000..3d3b1f5044c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/uev_fluid_heater.json new file mode 100644 index 00000000000..869344010fc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..4b18251be7a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/uev_fluid_solidifier.json new file mode 100644 index 00000000000..4472d41024a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/uev_forge_hammer.json new file mode 100644 index 00000000000..62283307e10 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_forming_press.json b/src/generated/resources/assets/gtceu/models/item/uev_forming_press.json new file mode 100644 index 00000000000..3fbf06f7014 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/uev_gas_collector.json new file mode 100644 index 00000000000..3b81d45a4d2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_input_bus.json b/src/generated/resources/assets/gtceu/models/item/uev_input_bus.json new file mode 100644 index 00000000000..31f6d8f832f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_input_hatch.json new file mode 100644 index 00000000000..b7164252ca7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/uev_input_hatch_4x.json new file mode 100644 index 00000000000..425f17b6055 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_input_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_input_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/uev_input_hatch_9x.json new file mode 100644 index 00000000000..277bb45b7ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_input_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_input_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_item_passthrough_hatch.json new file mode 100644 index 00000000000..41fd4461c1c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/uev_laser_engraver.json new file mode 100644 index 00000000000..c0e6a55ce7e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_lathe.json b/src/generated/resources/assets/gtceu/models/item/uev_lathe.json new file mode 100644 index 00000000000..c7ae0ed8f0d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_macerator.json b/src/generated/resources/assets/gtceu/models/item/uev_macerator.json new file mode 100644 index 00000000000..bc2cc8054dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/uev_machine_hull.json new file mode 100644 index 00000000000..4151bfa7d21 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_mixer.json b/src/generated/resources/assets/gtceu/models/item/uev_mixer.json new file mode 100644 index 00000000000..ae903be001b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_muffler_hatch.json new file mode 100644 index 00000000000..0023af5a248 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/uev_ore_washer.json new file mode 100644 index 00000000000..7cbc8f3d311 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_output_bus.json b/src/generated/resources/assets/gtceu/models/item/uev_output_bus.json new file mode 100644 index 00000000000..59d3da39688 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_output_hatch.json new file mode 100644 index 00000000000..36b4184dbd5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/uev_output_hatch_4x.json new file mode 100644 index 00000000000..4bd5a72f540 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_output_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_output_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/uev_output_hatch_9x.json new file mode 100644 index 00000000000..209d6f2a886 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_output_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_output_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_packer.json b/src/generated/resources/assets/gtceu/models/item/uev_packer.json new file mode 100644 index 00000000000..313ef214f75 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_polarizer.json b/src/generated/resources/assets/gtceu/models/item/uev_polarizer.json new file mode 100644 index 00000000000..0d3436e36c5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_quantum_chest.json b/src/generated/resources/assets/gtceu/models/item/uev_quantum_chest.json new file mode 100644 index 00000000000..d9395480eab --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_quantum_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_quantum_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_quantum_tank.json b/src/generated/resources/assets/gtceu/models/item/uev_quantum_tank.json new file mode 100644 index 00000000000..3ff25da3c38 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_quantum_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_quantum_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/uev_rock_crusher.json new file mode 100644 index 00000000000..7ec8df8b52c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_rotor_holder.json b/src/generated/resources/assets/gtceu/models/item/uev_rotor_holder.json new file mode 100644 index 00000000000..e7155b95c24 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_rotor_holder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_rotor_holder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_scanner.json b/src/generated/resources/assets/gtceu/models/item/uev_scanner.json new file mode 100644 index 00000000000..f6f9071acee --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_sifter.json b/src/generated/resources/assets/gtceu/models/item/uev_sifter.json new file mode 100644 index 00000000000..3abec155406 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/uev_substation_input_hatch_64a.json new file mode 100644 index 00000000000..eef6493ecbc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_substation_input_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_substation_input_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/uev_substation_output_hatch_64a.json new file mode 100644 index 00000000000..1fae9dc2977 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_substation_output_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_substation_output_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/uev_thermal_centrifuge.json new file mode 100644 index 00000000000..18b8f5f0d8a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/uev_transformer_16a.json new file mode 100644 index 00000000000..440f1295510 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/uev_transformer_1a.json new file mode 100644 index 00000000000..38e4e6eb4f4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/uev_transformer_2a.json new file mode 100644 index 00000000000..3cbb16fa775 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/uev_transformer_4a.json new file mode 100644 index 00000000000..dc645858c2c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_wiremill.json b/src/generated/resources/assets/gtceu/models/item/uev_wiremill.json new file mode 100644 index 00000000000..1cb5272f15a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..7cbcda35b58 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_1024a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_1024a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..6da7e076fdf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_1024a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_1024a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uhv_16a_energy_converter.json new file mode 100644 index 00000000000..ffe17a6cf67 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uhv_1a_energy_converter.json new file mode 100644 index 00000000000..5492843e175 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..988173314ef --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_256a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_256a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..00c571673af --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_256a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_256a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..51e09a4f5cc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_4096a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_4096a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..6e67609f86d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_4096a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_4096a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uhv_4a_energy_converter.json new file mode 100644 index 00000000000..806f6f202ba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uhv_8a_energy_converter.json new file mode 100644 index 00000000000..2854c29e48b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/uhv_alloy_smelter.json new file mode 100644 index 00000000000..c992cc8508f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/uhv_arc_furnace.json new file mode 100644 index 00000000000..463b74fef60 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_assembler.json b/src/generated/resources/assets/gtceu/models/item/uhv_assembler.json new file mode 100644 index 00000000000..0af63e0dab6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_autoclave.json b/src/generated/resources/assets/gtceu/models/item/uhv_autoclave.json new file mode 100644 index 00000000000..91a40364291 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/uhv_battery_buffer_16x.json new file mode 100644 index 00000000000..36e1efcadf3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/uhv_battery_buffer_4x.json new file mode 100644 index 00000000000..c1459a68503 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/uhv_battery_buffer_8x.json new file mode 100644 index 00000000000..d834fcad426 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_bender.json b/src/generated/resources/assets/gtceu/models/item/uhv_bender.json new file mode 100644 index 00000000000..c7cee975165 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_brewery.json b/src/generated/resources/assets/gtceu/models/item/uhv_brewery.json new file mode 100644 index 00000000000..6d16519529b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_canner.json b/src/generated/resources/assets/gtceu/models/item/uhv_canner.json new file mode 100644 index 00000000000..0db81d62da4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/uhv_centrifuge.json new file mode 100644 index 00000000000..f177788c20a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/uhv_charger_4x.json new file mode 100644 index 00000000000..bc3723f5568 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/uhv_chemical_bath.json new file mode 100644 index 00000000000..aa787e01d54 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/uhv_chemical_reactor.json new file mode 100644 index 00000000000..6f76fc9b772 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/uhv_circuit_assembler.json new file mode 100644 index 00000000000..d8c25497c38 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_compressor.json b/src/generated/resources/assets/gtceu/models/item/uhv_compressor.json new file mode 100644 index 00000000000..928c865354e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_cutter.json b/src/generated/resources/assets/gtceu/models/item/uhv_cutter.json new file mode 100644 index 00000000000..2db8e6f7b3a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_diode.json b/src/generated/resources/assets/gtceu/models/item/uhv_diode.json new file mode 100644 index 00000000000..b544d8c76f5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_distillery.json b/src/generated/resources/assets/gtceu/models/item/uhv_distillery.json new file mode 100644 index 00000000000..a08fd3efb78 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_dual_input_hatch.json new file mode 100644 index 00000000000..0ba472b52a9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_dual_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_dual_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_dual_output_hatch.json new file mode 100644 index 00000000000..43459d00367 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_dual_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_dual_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/uhv_electric_furnace.json new file mode 100644 index 00000000000..42d9dc3d7e4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/uhv_electrolyzer.json new file mode 100644 index 00000000000..32b48c2313b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/uhv_electromagnetic_separator.json new file mode 100644 index 00000000000..145e176cabb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_energy_input_hatch.json new file mode 100644 index 00000000000..22ce7ac24e7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/uhv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..9055a8c03bd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_energy_input_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_energy_input_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/uhv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..ae9658fb6fe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_energy_input_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_energy_input_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_energy_output_hatch.json new file mode 100644 index 00000000000..5d170b1c04d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/uhv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..84e3f0d76d3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_energy_output_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_energy_output_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/uhv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..c4bf18400af --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_energy_output_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_energy_output_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_extractor.json b/src/generated/resources/assets/gtceu/models/item/uhv_extractor.json new file mode 100644 index 00000000000..a282c95928d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_extruder.json b/src/generated/resources/assets/gtceu/models/item/uhv_extruder.json new file mode 100644 index 00000000000..a810d7fcc14 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_fermenter.json b/src/generated/resources/assets/gtceu/models/item/uhv_fermenter.json new file mode 100644 index 00000000000..4f310d93c46 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/uhv_fluid_heater.json new file mode 100644 index 00000000000..014200c3bc6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..5f64ec7fcaa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/uhv_fluid_solidifier.json new file mode 100644 index 00000000000..47637cb6d38 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/uhv_forge_hammer.json new file mode 100644 index 00000000000..b817908a8c6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_forming_press.json b/src/generated/resources/assets/gtceu/models/item/uhv_forming_press.json new file mode 100644 index 00000000000..4c7344bf876 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/uhv_gas_collector.json new file mode 100644 index 00000000000..761f08a9a28 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_input_bus.json b/src/generated/resources/assets/gtceu/models/item/uhv_input_bus.json new file mode 100644 index 00000000000..00edbf8c89a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_input_hatch.json new file mode 100644 index 00000000000..989ededb244 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/uhv_input_hatch_4x.json new file mode 100644 index 00000000000..d25453c69b6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_input_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_input_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/uhv_input_hatch_9x.json new file mode 100644 index 00000000000..d318c2af8ef --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_input_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_input_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_item_passthrough_hatch.json new file mode 100644 index 00000000000..86a1fabe4b7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/uhv_laser_engraver.json new file mode 100644 index 00000000000..d7a1484184b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_lathe.json b/src/generated/resources/assets/gtceu/models/item/uhv_lathe.json new file mode 100644 index 00000000000..4a371e8a7e0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_macerator.json b/src/generated/resources/assets/gtceu/models/item/uhv_macerator.json new file mode 100644 index 00000000000..c56a2b5f2d6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/uhv_machine_hull.json new file mode 100644 index 00000000000..fdd27d1846c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_mixer.json b/src/generated/resources/assets/gtceu/models/item/uhv_mixer.json new file mode 100644 index 00000000000..1eb30ba619c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_muffler_hatch.json new file mode 100644 index 00000000000..e3c28373501 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/uhv_ore_washer.json new file mode 100644 index 00000000000..8b92586d5ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_output_bus.json b/src/generated/resources/assets/gtceu/models/item/uhv_output_bus.json new file mode 100644 index 00000000000..33c15d5c790 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_output_hatch.json new file mode 100644 index 00000000000..a000a54aa7c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/uhv_output_hatch_4x.json new file mode 100644 index 00000000000..c42811d94c6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_output_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_output_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/uhv_output_hatch_9x.json new file mode 100644 index 00000000000..3464ed1f913 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_output_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_output_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_packer.json b/src/generated/resources/assets/gtceu/models/item/uhv_packer.json new file mode 100644 index 00000000000..affda5bbfd1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_polarizer.json b/src/generated/resources/assets/gtceu/models/item/uhv_polarizer.json new file mode 100644 index 00000000000..b9598c3f0a5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/item/uhv_quantum_chest.json new file mode 100644 index 00000000000..57e02a45a59 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_quantum_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_quantum_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/item/uhv_quantum_tank.json new file mode 100644 index 00000000000..a32b4a92ef9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_quantum_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_quantum_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/uhv_rock_crusher.json new file mode 100644 index 00000000000..195be91a828 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/item/uhv_rotor_holder.json new file mode 100644 index 00000000000..d5c3dd3f0a4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_rotor_holder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_rotor_holder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_scanner.json b/src/generated/resources/assets/gtceu/models/item/uhv_scanner.json new file mode 100644 index 00000000000..9bea512f66b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_sifter.json b/src/generated/resources/assets/gtceu/models/item/uhv_sifter.json new file mode 100644 index 00000000000..28da21f28f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/uhv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..52593d03792 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_substation_input_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_substation_input_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/uhv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..0a2398d58ad --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_substation_output_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_substation_output_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/uhv_thermal_centrifuge.json new file mode 100644 index 00000000000..b3e16daed11 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/uhv_transformer_16a.json new file mode 100644 index 00000000000..68886d0e5a3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/uhv_transformer_1a.json new file mode 100644 index 00000000000..53d1037c684 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/uhv_transformer_2a.json new file mode 100644 index 00000000000..c5011c6f402 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/uhv_transformer_4a.json new file mode 100644 index 00000000000..bfc8d29d517 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_wiremill.json b/src/generated/resources/assets/gtceu/models/item/uhv_wiremill.json new file mode 100644 index 00000000000..ce5aeadcb96 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..a4d9abcd0c0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_1024a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_1024a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..ce42abf84c7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_1024a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_1024a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uiv_16a_energy_converter.json new file mode 100644 index 00000000000..7c7b7e8a100 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uiv_1a_energy_converter.json new file mode 100644 index 00000000000..e64096e20d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..ecb37db53f4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_256a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_256a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..9d59918ee62 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_256a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_256a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..f2d0c5c8b07 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_4096a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_4096a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..3e5272354d8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_4096a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_4096a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uiv_4a_energy_converter.json new file mode 100644 index 00000000000..2f0f255004e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uiv_8a_energy_converter.json new file mode 100644 index 00000000000..780ea232652 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/uiv_alloy_smelter.json new file mode 100644 index 00000000000..469cf8705e8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/uiv_arc_furnace.json new file mode 100644 index 00000000000..6c954b4c608 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_assembler.json b/src/generated/resources/assets/gtceu/models/item/uiv_assembler.json new file mode 100644 index 00000000000..8baceb742f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_autoclave.json b/src/generated/resources/assets/gtceu/models/item/uiv_autoclave.json new file mode 100644 index 00000000000..24d6d03a69a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/uiv_battery_buffer_16x.json new file mode 100644 index 00000000000..432e33cd865 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/uiv_battery_buffer_4x.json new file mode 100644 index 00000000000..7b1aeca85da --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/uiv_battery_buffer_8x.json new file mode 100644 index 00000000000..3a36e0fe2b9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_bender.json b/src/generated/resources/assets/gtceu/models/item/uiv_bender.json new file mode 100644 index 00000000000..ccb2ecf37b1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_brewery.json b/src/generated/resources/assets/gtceu/models/item/uiv_brewery.json new file mode 100644 index 00000000000..f1dfd7b3891 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_canner.json b/src/generated/resources/assets/gtceu/models/item/uiv_canner.json new file mode 100644 index 00000000000..2a2fc321267 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/uiv_centrifuge.json new file mode 100644 index 00000000000..e3f361b75b3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/uiv_charger_4x.json new file mode 100644 index 00000000000..3975501df6e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/uiv_chemical_bath.json new file mode 100644 index 00000000000..abf05609df3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/uiv_chemical_reactor.json new file mode 100644 index 00000000000..456fd6e57e2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/uiv_circuit_assembler.json new file mode 100644 index 00000000000..a4d546907d5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_compressor.json b/src/generated/resources/assets/gtceu/models/item/uiv_compressor.json new file mode 100644 index 00000000000..0872e4531c8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_cutter.json b/src/generated/resources/assets/gtceu/models/item/uiv_cutter.json new file mode 100644 index 00000000000..ba67eb46d61 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_diode.json b/src/generated/resources/assets/gtceu/models/item/uiv_diode.json new file mode 100644 index 00000000000..f67fcb988eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_distillery.json b/src/generated/resources/assets/gtceu/models/item/uiv_distillery.json new file mode 100644 index 00000000000..f948ca58b6a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_dual_input_hatch.json new file mode 100644 index 00000000000..8ff83735d3b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_dual_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_dual_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_dual_output_hatch.json new file mode 100644 index 00000000000..23676dfa988 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_dual_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_dual_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/uiv_electric_furnace.json new file mode 100644 index 00000000000..69394f3d0a1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/uiv_electrolyzer.json new file mode 100644 index 00000000000..899d675f6c2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/uiv_electromagnetic_separator.json new file mode 100644 index 00000000000..c888ca8b070 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_energy_input_hatch.json new file mode 100644 index 00000000000..76a97b05687 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/uiv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..1fe72633239 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_energy_input_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_energy_input_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/uiv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..b9a67027229 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_energy_input_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_energy_input_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_energy_output_hatch.json new file mode 100644 index 00000000000..043e6c9052d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/uiv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..39f4c0a8be9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_energy_output_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_energy_output_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/uiv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..2dda2477ec1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_energy_output_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_energy_output_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_extractor.json b/src/generated/resources/assets/gtceu/models/item/uiv_extractor.json new file mode 100644 index 00000000000..66a3822491a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_extruder.json b/src/generated/resources/assets/gtceu/models/item/uiv_extruder.json new file mode 100644 index 00000000000..798730d7313 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_fermenter.json b/src/generated/resources/assets/gtceu/models/item/uiv_fermenter.json new file mode 100644 index 00000000000..0c928a726a3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/uiv_fluid_heater.json new file mode 100644 index 00000000000..3dd0949832c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..687267f949a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/uiv_fluid_solidifier.json new file mode 100644 index 00000000000..8083b0b41ce --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/uiv_forge_hammer.json new file mode 100644 index 00000000000..6dc5c667c78 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_forming_press.json b/src/generated/resources/assets/gtceu/models/item/uiv_forming_press.json new file mode 100644 index 00000000000..d736b2d3a46 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/uiv_gas_collector.json new file mode 100644 index 00000000000..14ac20aa9d4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_input_bus.json b/src/generated/resources/assets/gtceu/models/item/uiv_input_bus.json new file mode 100644 index 00000000000..c1d9643bb45 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_input_hatch.json new file mode 100644 index 00000000000..4015823b62a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/uiv_input_hatch_4x.json new file mode 100644 index 00000000000..c34ccfe7557 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_input_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_input_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/uiv_input_hatch_9x.json new file mode 100644 index 00000000000..91dbe59930d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_input_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_input_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_item_passthrough_hatch.json new file mode 100644 index 00000000000..4473a407b69 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/uiv_laser_engraver.json new file mode 100644 index 00000000000..f997b8f95cb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_lathe.json b/src/generated/resources/assets/gtceu/models/item/uiv_lathe.json new file mode 100644 index 00000000000..57b6ccbc152 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_macerator.json b/src/generated/resources/assets/gtceu/models/item/uiv_macerator.json new file mode 100644 index 00000000000..b5d63c61da0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/uiv_machine_hull.json new file mode 100644 index 00000000000..9d338f7cec1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_mixer.json b/src/generated/resources/assets/gtceu/models/item/uiv_mixer.json new file mode 100644 index 00000000000..1a6b1d45172 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_muffler_hatch.json new file mode 100644 index 00000000000..78d355ead4d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/uiv_ore_washer.json new file mode 100644 index 00000000000..b1493aa79e3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_output_bus.json b/src/generated/resources/assets/gtceu/models/item/uiv_output_bus.json new file mode 100644 index 00000000000..001b7081094 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_output_hatch.json new file mode 100644 index 00000000000..96cc5c5c95a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/uiv_output_hatch_4x.json new file mode 100644 index 00000000000..48c5cda3c41 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_output_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_output_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/uiv_output_hatch_9x.json new file mode 100644 index 00000000000..bc82271ae71 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_output_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_output_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_packer.json b/src/generated/resources/assets/gtceu/models/item/uiv_packer.json new file mode 100644 index 00000000000..95cfa291921 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_polarizer.json b/src/generated/resources/assets/gtceu/models/item/uiv_polarizer.json new file mode 100644 index 00000000000..209c35f82e7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/item/uiv_quantum_chest.json new file mode 100644 index 00000000000..844fe1f0742 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_quantum_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_quantum_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/item/uiv_quantum_tank.json new file mode 100644 index 00000000000..b768245b864 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_quantum_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_quantum_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/uiv_rock_crusher.json new file mode 100644 index 00000000000..f4d45f22751 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/item/uiv_rotor_holder.json new file mode 100644 index 00000000000..50c19f9501d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_rotor_holder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_rotor_holder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_scanner.json b/src/generated/resources/assets/gtceu/models/item/uiv_scanner.json new file mode 100644 index 00000000000..0fd669ce50d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_sifter.json b/src/generated/resources/assets/gtceu/models/item/uiv_sifter.json new file mode 100644 index 00000000000..39341df4db2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/uiv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..528c50606bc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_substation_input_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_substation_input_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/uiv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..5a4057f0d20 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_substation_output_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_substation_output_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/uiv_thermal_centrifuge.json new file mode 100644 index 00000000000..042830fc383 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/uiv_transformer_16a.json new file mode 100644 index 00000000000..162717f0b93 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/uiv_transformer_1a.json new file mode 100644 index 00000000000..ef7dbde89d4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/uiv_transformer_2a.json new file mode 100644 index 00000000000..b83480bd00d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/uiv_transformer_4a.json new file mode 100644 index 00000000000..76171bc8162 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_wiremill.json b/src/generated/resources/assets/gtceu/models/item/uiv_wiremill.json new file mode 100644 index 00000000000..b79583153e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/ulv_16a_energy_converter.json new file mode 100644 index 00000000000..22f7c3e66af --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/ulv_1a_energy_converter.json new file mode 100644 index 00000000000..c06fd0bd54b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/ulv_4a_energy_converter.json new file mode 100644 index 00000000000..10bd41b3d6c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/ulv_8a_energy_converter.json new file mode 100644 index 00000000000..4e73651b47e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/ulv_battery_buffer_16x.json new file mode 100644 index 00000000000..630dae17566 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/ulv_battery_buffer_4x.json new file mode 100644 index 00000000000..abe5ada9441 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/ulv_battery_buffer_8x.json new file mode 100644 index 00000000000..8f8e300aa1e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/ulv_charger_4x.json new file mode 100644 index 00000000000..bfe2ceb0ede --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/ulv_energy_input_hatch.json new file mode 100644 index 00000000000..27e9dc21f67 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/ulv_energy_output_hatch.json new file mode 100644 index 00000000000..16cb187e23c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_input_bus.json b/src/generated/resources/assets/gtceu/models/item/ulv_input_bus.json new file mode 100644 index 00000000000..189d1a1399a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/ulv_input_hatch.json new file mode 100644 index 00000000000..dc8fa8a4dab --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/ulv_machine_hull.json new file mode 100644 index 00000000000..23c62dce427 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_output_bus.json b/src/generated/resources/assets/gtceu/models/item/ulv_output_bus.json new file mode 100644 index 00000000000..9c85e66f22a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/ulv_output_hatch.json new file mode 100644 index 00000000000..0292803b112 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/ulv_transformer_16a.json new file mode 100644 index 00000000000..693ee7403fa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/ulv_transformer_1a.json new file mode 100644 index 00000000000..2e8a668f291 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/ulv_transformer_2a.json new file mode 100644 index 00000000000..dc2e3677f73 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/ulv_transformer_4a.json new file mode 100644 index 00000000000..b7d8da52c95 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..d7bc14ec69b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_1024a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_1024a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..86bbdfec111 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_1024a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_1024a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uv_16a_energy_converter.json new file mode 100644 index 00000000000..529fb363036 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uv_1a_energy_converter.json new file mode 100644 index 00000000000..0ad63365032 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..d17130ab94c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_256a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_256a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..d7ad000e1bd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_256a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_256a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..7e3f36331a5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_4096a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_4096a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..85ac48d38e6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_4096a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_4096a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uv_4a_energy_converter.json new file mode 100644 index 00000000000..1ced6e60787 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uv_8a_energy_converter.json new file mode 100644 index 00000000000..64177591e46 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/uv_alloy_smelter.json new file mode 100644 index 00000000000..f6b3bdb8dd1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/uv_arc_furnace.json new file mode 100644 index 00000000000..cf6cc2f9760 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_assembler.json b/src/generated/resources/assets/gtceu/models/item/uv_assembler.json new file mode 100644 index 00000000000..1a787a6de0c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_autoclave.json b/src/generated/resources/assets/gtceu/models/item/uv_autoclave.json new file mode 100644 index 00000000000..166aa9af7cb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/uv_battery_buffer_16x.json new file mode 100644 index 00000000000..11b7609fb56 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/uv_battery_buffer_4x.json new file mode 100644 index 00000000000..4bca08f9acc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/uv_battery_buffer_8x.json new file mode 100644 index 00000000000..b20e0c6f0c3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_bender.json b/src/generated/resources/assets/gtceu/models/item/uv_bender.json new file mode 100644 index 00000000000..d17ed5e3f06 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_brewery.json b/src/generated/resources/assets/gtceu/models/item/uv_brewery.json new file mode 100644 index 00000000000..a829fecc907 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_canner.json b/src/generated/resources/assets/gtceu/models/item/uv_canner.json new file mode 100644 index 00000000000..20067535bb1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/uv_centrifuge.json new file mode 100644 index 00000000000..f60ab6feccf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/uv_charger_4x.json new file mode 100644 index 00000000000..067fad6373a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/uv_chemical_bath.json new file mode 100644 index 00000000000..860eb9259f3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/uv_chemical_reactor.json new file mode 100644 index 00000000000..b4817cfaa74 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/uv_circuit_assembler.json new file mode 100644 index 00000000000..a5c3a2ecdb0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_compressor.json b/src/generated/resources/assets/gtceu/models/item/uv_compressor.json new file mode 100644 index 00000000000..cb25fb90879 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_cutter.json b/src/generated/resources/assets/gtceu/models/item/uv_cutter.json new file mode 100644 index 00000000000..f7307aa481d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_diode.json b/src/generated/resources/assets/gtceu/models/item/uv_diode.json new file mode 100644 index 00000000000..99bf41e6758 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_distillery.json b/src/generated/resources/assets/gtceu/models/item/uv_distillery.json new file mode 100644 index 00000000000..10722c5112b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_dual_input_hatch.json new file mode 100644 index 00000000000..b0442ed0cd3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_dual_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_dual_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_dual_output_hatch.json new file mode 100644 index 00000000000..f723f139c51 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_dual_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_dual_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/uv_electric_furnace.json new file mode 100644 index 00000000000..f07d25aeb39 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/uv_electrolyzer.json new file mode 100644 index 00000000000..fe7a9ebe386 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/uv_electromagnetic_separator.json new file mode 100644 index 00000000000..c4af125e4f3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_energy_input_hatch.json new file mode 100644 index 00000000000..c5559c40eff --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/uv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..7c4adb36fa5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_energy_input_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_energy_input_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/uv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..7545b328b82 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_energy_input_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_energy_input_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_energy_output_hatch.json new file mode 100644 index 00000000000..4b1c4263a8a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/uv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..bda3b24408c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_energy_output_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_energy_output_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/uv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..e2bb8075acb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_energy_output_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_energy_output_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_extractor.json b/src/generated/resources/assets/gtceu/models/item/uv_extractor.json new file mode 100644 index 00000000000..250b976546f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_extruder.json b/src/generated/resources/assets/gtceu/models/item/uv_extruder.json new file mode 100644 index 00000000000..a116d440d74 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_fermenter.json b/src/generated/resources/assets/gtceu/models/item/uv_fermenter.json new file mode 100644 index 00000000000..f6ea2348d72 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/uv_fluid_heater.json new file mode 100644 index 00000000000..3b8b3ce1d52 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..8c30450b6a6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/uv_fluid_solidifier.json new file mode 100644 index 00000000000..1ab0d2648ef --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/uv_forge_hammer.json new file mode 100644 index 00000000000..dabdc3a0f9e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_forming_press.json b/src/generated/resources/assets/gtceu/models/item/uv_forming_press.json new file mode 100644 index 00000000000..5a7699dddca --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_fusion_reactor.json b/src/generated/resources/assets/gtceu/models/item/uv_fusion_reactor.json new file mode 100644 index 00000000000..c75b28d6ca2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_fusion_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_fusion_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/uv_gas_collector.json new file mode 100644 index 00000000000..58a7695cf7d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_input_bus.json b/src/generated/resources/assets/gtceu/models/item/uv_input_bus.json new file mode 100644 index 00000000000..ddfe83799ac --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_input_hatch.json new file mode 100644 index 00000000000..517fde2609a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/uv_input_hatch_4x.json new file mode 100644 index 00000000000..0c896f84887 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_input_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_input_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/uv_input_hatch_9x.json new file mode 100644 index 00000000000..d8f03920873 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_input_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_input_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_item_passthrough_hatch.json new file mode 100644 index 00000000000..4706440e744 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/uv_laser_engraver.json new file mode 100644 index 00000000000..df4a4e307e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_lathe.json b/src/generated/resources/assets/gtceu/models/item/uv_lathe.json new file mode 100644 index 00000000000..7bd5cad74c7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_macerator.json b/src/generated/resources/assets/gtceu/models/item/uv_macerator.json new file mode 100644 index 00000000000..cf541d196c3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/uv_machine_hull.json new file mode 100644 index 00000000000..094729aa487 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_mixer.json b/src/generated/resources/assets/gtceu/models/item/uv_mixer.json new file mode 100644 index 00000000000..3fb1db8449f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_muffler_hatch.json new file mode 100644 index 00000000000..63155705488 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/uv_ore_washer.json new file mode 100644 index 00000000000..07a371d7bca --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_output_bus.json b/src/generated/resources/assets/gtceu/models/item/uv_output_bus.json new file mode 100644 index 00000000000..2d4a7e8d615 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_output_hatch.json new file mode 100644 index 00000000000..bd24e253721 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/uv_output_hatch_4x.json new file mode 100644 index 00000000000..b4970d002e6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_output_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_output_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/uv_output_hatch_9x.json new file mode 100644 index 00000000000..4ec4f74eaff --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_output_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_output_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_packer.json b/src/generated/resources/assets/gtceu/models/item/uv_packer.json new file mode 100644 index 00000000000..2f5b6efc17e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_parallel_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_parallel_hatch.json new file mode 100644 index 00000000000..921aeecae4a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_parallel_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_parallel_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_polarizer.json b/src/generated/resources/assets/gtceu/models/item/uv_polarizer.json new file mode 100644 index 00000000000..b976ff42a59 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/item/uv_quantum_chest.json new file mode 100644 index 00000000000..7b4193722de --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_quantum_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_quantum_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/item/uv_quantum_tank.json new file mode 100644 index 00000000000..6bded24608f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_quantum_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_quantum_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/uv_rock_crusher.json new file mode 100644 index 00000000000..3b185149349 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/item/uv_rotor_holder.json new file mode 100644 index 00000000000..1388b650b7d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_rotor_holder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_rotor_holder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_scanner.json b/src/generated/resources/assets/gtceu/models/item/uv_scanner.json new file mode 100644 index 00000000000..00d7b6d7bf2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_sifter.json b/src/generated/resources/assets/gtceu/models/item/uv_sifter.json new file mode 100644 index 00000000000..f543e0d302e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/uv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..65d6e4e2475 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_substation_input_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_substation_input_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/uv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..da3e43f7d25 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_substation_output_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_substation_output_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/uv_thermal_centrifuge.json new file mode 100644 index 00000000000..f8fc2a057ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/uv_transformer_16a.json new file mode 100644 index 00000000000..50777c6418b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/uv_transformer_1a.json new file mode 100644 index 00000000000..02bd55e18b2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/uv_transformer_2a.json new file mode 100644 index 00000000000..10ca562b1e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/uv_transformer_4a.json new file mode 100644 index 00000000000..cdb460fb555 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_wiremill.json b/src/generated/resources/assets/gtceu/models/item/uv_wiremill.json new file mode 100644 index 00000000000..b15ecf8dcc1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_world_accelerator.json b/src/generated/resources/assets/gtceu/models/item/uv_world_accelerator.json new file mode 100644 index 00000000000..e576c81e9a8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_world_accelerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_world_accelerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..aa0ab0599ad --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_1024a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_1024a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..13dec7ba6c1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_1024a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_1024a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uxv_16a_energy_converter.json new file mode 100644 index 00000000000..27388f129db --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uxv_1a_energy_converter.json new file mode 100644 index 00000000000..3257cc49308 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..f5ca9b66704 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_256a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_256a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..e43c7e774c1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_256a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_256a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..385fee954d4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_4096a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_4096a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..8bd89078774 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_4096a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_4096a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uxv_4a_energy_converter.json new file mode 100644 index 00000000000..ecd08474595 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uxv_8a_energy_converter.json new file mode 100644 index 00000000000..f3a67e7dbd6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/uxv_alloy_smelter.json new file mode 100644 index 00000000000..066dfecde85 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/uxv_arc_furnace.json new file mode 100644 index 00000000000..7363cca3981 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_assembler.json b/src/generated/resources/assets/gtceu/models/item/uxv_assembler.json new file mode 100644 index 00000000000..d1f2bbd2bc0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_autoclave.json b/src/generated/resources/assets/gtceu/models/item/uxv_autoclave.json new file mode 100644 index 00000000000..dc2f55281e6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/uxv_battery_buffer_16x.json new file mode 100644 index 00000000000..32674e42d5a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/uxv_battery_buffer_4x.json new file mode 100644 index 00000000000..d049902ae73 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/uxv_battery_buffer_8x.json new file mode 100644 index 00000000000..acf151ba0a1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_bender.json b/src/generated/resources/assets/gtceu/models/item/uxv_bender.json new file mode 100644 index 00000000000..648d19655ff --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_brewery.json b/src/generated/resources/assets/gtceu/models/item/uxv_brewery.json new file mode 100644 index 00000000000..f00818082eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_canner.json b/src/generated/resources/assets/gtceu/models/item/uxv_canner.json new file mode 100644 index 00000000000..c02ef9b7474 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/uxv_centrifuge.json new file mode 100644 index 00000000000..d56c24cf349 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/uxv_charger_4x.json new file mode 100644 index 00000000000..1390ea69d12 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/uxv_chemical_bath.json new file mode 100644 index 00000000000..3162fd20581 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/uxv_chemical_reactor.json new file mode 100644 index 00000000000..e2503492752 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/uxv_circuit_assembler.json new file mode 100644 index 00000000000..0162521c7a1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_compressor.json b/src/generated/resources/assets/gtceu/models/item/uxv_compressor.json new file mode 100644 index 00000000000..e8e543436ab --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_cutter.json b/src/generated/resources/assets/gtceu/models/item/uxv_cutter.json new file mode 100644 index 00000000000..83e209393f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_diode.json b/src/generated/resources/assets/gtceu/models/item/uxv_diode.json new file mode 100644 index 00000000000..ce2ed8ce6ed --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_distillery.json b/src/generated/resources/assets/gtceu/models/item/uxv_distillery.json new file mode 100644 index 00000000000..7adc246ccb6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_dual_input_hatch.json new file mode 100644 index 00000000000..34159452f84 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_dual_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_dual_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_dual_output_hatch.json new file mode 100644 index 00000000000..1f724eed801 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_dual_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_dual_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/uxv_electric_furnace.json new file mode 100644 index 00000000000..a0eee6b97ad --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/uxv_electrolyzer.json new file mode 100644 index 00000000000..bb907103b24 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/uxv_electromagnetic_separator.json new file mode 100644 index 00000000000..ec0b23ad7eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_energy_input_hatch.json new file mode 100644 index 00000000000..0423dfabf90 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/uxv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..d19b9043040 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_energy_input_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_energy_input_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/uxv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..5b67722e889 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_energy_input_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_energy_input_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_energy_output_hatch.json new file mode 100644 index 00000000000..2eb2a6104ee --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/uxv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..00cca1a1b4c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_energy_output_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_energy_output_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/uxv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..4263569f0ba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_energy_output_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_energy_output_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_extractor.json b/src/generated/resources/assets/gtceu/models/item/uxv_extractor.json new file mode 100644 index 00000000000..453522030f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_extruder.json b/src/generated/resources/assets/gtceu/models/item/uxv_extruder.json new file mode 100644 index 00000000000..64cf413c6a4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_fermenter.json b/src/generated/resources/assets/gtceu/models/item/uxv_fermenter.json new file mode 100644 index 00000000000..51b23e0eebf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/uxv_fluid_heater.json new file mode 100644 index 00000000000..ece76ee575e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..07c7f1a1dfa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/uxv_fluid_solidifier.json new file mode 100644 index 00000000000..7f392ed445f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/uxv_forge_hammer.json new file mode 100644 index 00000000000..2710f003711 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_forming_press.json b/src/generated/resources/assets/gtceu/models/item/uxv_forming_press.json new file mode 100644 index 00000000000..a1d1fe254c7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/uxv_gas_collector.json new file mode 100644 index 00000000000..09789a07058 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_input_bus.json b/src/generated/resources/assets/gtceu/models/item/uxv_input_bus.json new file mode 100644 index 00000000000..aafca07f4d5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_input_hatch.json new file mode 100644 index 00000000000..cec0b04328a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/uxv_input_hatch_4x.json new file mode 100644 index 00000000000..f17b5b8c3ff --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_input_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_input_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/uxv_input_hatch_9x.json new file mode 100644 index 00000000000..f4f5fa01801 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_input_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_input_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_item_passthrough_hatch.json new file mode 100644 index 00000000000..d79b91387f3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/uxv_laser_engraver.json new file mode 100644 index 00000000000..f2efa09d56d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_lathe.json b/src/generated/resources/assets/gtceu/models/item/uxv_lathe.json new file mode 100644 index 00000000000..e1938b206a0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_macerator.json b/src/generated/resources/assets/gtceu/models/item/uxv_macerator.json new file mode 100644 index 00000000000..74e1bfff27b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/uxv_machine_hull.json new file mode 100644 index 00000000000..8bfeb5924b3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_mixer.json b/src/generated/resources/assets/gtceu/models/item/uxv_mixer.json new file mode 100644 index 00000000000..80d1a6939e7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_muffler_hatch.json new file mode 100644 index 00000000000..8506bafb65b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/uxv_ore_washer.json new file mode 100644 index 00000000000..d5577a2b2d3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_output_bus.json b/src/generated/resources/assets/gtceu/models/item/uxv_output_bus.json new file mode 100644 index 00000000000..12b18698ea5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_output_hatch.json new file mode 100644 index 00000000000..7b18d489121 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/uxv_output_hatch_4x.json new file mode 100644 index 00000000000..8519783e25c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_output_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_output_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/uxv_output_hatch_9x.json new file mode 100644 index 00000000000..dd8c9fd5d40 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_output_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_output_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_packer.json b/src/generated/resources/assets/gtceu/models/item/uxv_packer.json new file mode 100644 index 00000000000..177133cc2ac --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_polarizer.json b/src/generated/resources/assets/gtceu/models/item/uxv_polarizer.json new file mode 100644 index 00000000000..aa68b852cbf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/item/uxv_quantum_chest.json new file mode 100644 index 00000000000..fe6c1f1898a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_quantum_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_quantum_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/item/uxv_quantum_tank.json new file mode 100644 index 00000000000..b5ec20675d3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_quantum_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_quantum_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/uxv_rock_crusher.json new file mode 100644 index 00000000000..ce9cabf6b43 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/item/uxv_rotor_holder.json new file mode 100644 index 00000000000..a6c35d7a9e8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_rotor_holder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_rotor_holder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_scanner.json b/src/generated/resources/assets/gtceu/models/item/uxv_scanner.json new file mode 100644 index 00000000000..b098a5c2706 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_sifter.json b/src/generated/resources/assets/gtceu/models/item/uxv_sifter.json new file mode 100644 index 00000000000..903cd5cb4e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/uxv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..3ac22f5ded1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_substation_input_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_substation_input_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/uxv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..1b450fda6f0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_substation_output_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_substation_output_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/uxv_thermal_centrifuge.json new file mode 100644 index 00000000000..3b22943a0bc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/uxv_transformer_16a.json new file mode 100644 index 00000000000..ff9f637394a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/uxv_transformer_1a.json new file mode 100644 index 00000000000..cbcaad82ba4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/uxv_transformer_2a.json new file mode 100644 index 00000000000..77d449835b7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/uxv_transformer_4a.json new file mode 100644 index 00000000000..2e8d3e5a165 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_wiremill.json b/src/generated/resources/assets/gtceu/models/item/uxv_wiremill.json new file mode 100644 index 00000000000..1d1f68c1d45 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/vacuum_freezer.json b/src/generated/resources/assets/gtceu/models/item/vacuum_freezer.json new file mode 100644 index 00000000000..8f34c189b4e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/vacuum_freezer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/vacuum_freezer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/wireless_transmitter_cover.json b/src/generated/resources/assets/gtceu/models/item/wireless_transmitter_cover.json new file mode 100644 index 00000000000..0f1ab172aa1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/wireless_transmitter_cover.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/wireless_transmitter_cover" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/wood_crate.json b/src/generated/resources/assets/gtceu/models/item/wood_crate.json new file mode 100644 index 00000000000..a93f0ec1b6f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/wood_crate.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/wood_crate" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/wood_drum.json b/src/generated/resources/assets/gtceu/models/item/wood_drum.json new file mode 100644 index 00000000000..f4ff87642d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/wood_drum.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/wood_drum" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/wooden_multiblock_tank.json b/src/generated/resources/assets/gtceu/models/item/wooden_multiblock_tank.json new file mode 100644 index 00000000000..f6732c72720 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/wooden_multiblock_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/wooden_multiblock_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/wooden_tank_valve.json b/src/generated/resources/assets/gtceu/models/item/wooden_tank_valve.json new file mode 100644 index 00000000000..01345b3abf8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/wooden_tank_valve.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/wooden_tank_valve" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..03183bc2405 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_1024a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_1024a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..0d6db40686a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_1024a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_1024a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/zpm_16a_energy_converter.json new file mode 100644 index 00000000000..ebef96f337c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/zpm_1a_energy_converter.json new file mode 100644 index 00000000000..b3b3cddbca3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_256a_laser_source_hatch.json new file mode 100644 index 00000000000..c8988e5aae2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_256a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_256a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_256a_laser_target_hatch.json new file mode 100644 index 00000000000..3f3e87a3495 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_256a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_256a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..a53eb85dcc1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_4096a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_4096a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..29662ea3f27 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_4096a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_4096a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/zpm_4a_energy_converter.json new file mode 100644 index 00000000000..3e89fe34c3b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/zpm_8a_energy_converter.json new file mode 100644 index 00000000000..5c1e09ab4c2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/zpm_alloy_smelter.json new file mode 100644 index 00000000000..5c6e9185341 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/zpm_arc_furnace.json new file mode 100644 index 00000000000..6b9d431ecc0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_assembler.json b/src/generated/resources/assets/gtceu/models/item/zpm_assembler.json new file mode 100644 index 00000000000..22d5059752c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_autoclave.json b/src/generated/resources/assets/gtceu/models/item/zpm_autoclave.json new file mode 100644 index 00000000000..e76856c6884 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/zpm_battery_buffer_16x.json new file mode 100644 index 00000000000..01fc78858b3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/zpm_battery_buffer_4x.json new file mode 100644 index 00000000000..d9a3e8891b1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/zpm_battery_buffer_8x.json new file mode 100644 index 00000000000..e15fb50fd9b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_bender.json b/src/generated/resources/assets/gtceu/models/item/zpm_bender.json new file mode 100644 index 00000000000..c2e9b97a3cc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_brewery.json b/src/generated/resources/assets/gtceu/models/item/zpm_brewery.json new file mode 100644 index 00000000000..fac5c81970a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_canner.json b/src/generated/resources/assets/gtceu/models/item/zpm_canner.json new file mode 100644 index 00000000000..7508cda7b02 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/zpm_centrifuge.json new file mode 100644 index 00000000000..11d31ac76c3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/zpm_charger_4x.json new file mode 100644 index 00000000000..6dc4ce6c2fa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/zpm_chemical_bath.json new file mode 100644 index 00000000000..aa50aefc018 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/zpm_chemical_reactor.json new file mode 100644 index 00000000000..a4574c2b20d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/zpm_circuit_assembler.json new file mode 100644 index 00000000000..52a23100cb0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_compressor.json b/src/generated/resources/assets/gtceu/models/item/zpm_compressor.json new file mode 100644 index 00000000000..4c0b6ae6311 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_cutter.json b/src/generated/resources/assets/gtceu/models/item/zpm_cutter.json new file mode 100644 index 00000000000..a63bd7e120b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_diode.json b/src/generated/resources/assets/gtceu/models/item/zpm_diode.json new file mode 100644 index 00000000000..cacf2f9a29d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_distillery.json b/src/generated/resources/assets/gtceu/models/item/zpm_distillery.json new file mode 100644 index 00000000000..38414cd361a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_dual_input_hatch.json new file mode 100644 index 00000000000..76af59bf58f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_dual_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_dual_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_dual_output_hatch.json new file mode 100644 index 00000000000..8bb59855c2e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_dual_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_dual_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/zpm_electric_furnace.json new file mode 100644 index 00000000000..fa029f8f844 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/zpm_electrolyzer.json new file mode 100644 index 00000000000..6c08d74841d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/zpm_electromagnetic_separator.json new file mode 100644 index 00000000000..e9e1bf21af5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_energy_input_hatch.json new file mode 100644 index 00000000000..533b08182fe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/zpm_energy_input_hatch_16a.json new file mode 100644 index 00000000000..c8af9613563 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_energy_input_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_energy_input_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/zpm_energy_input_hatch_4a.json new file mode 100644 index 00000000000..497f2b0a8b7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_energy_input_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_energy_input_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_energy_output_hatch.json new file mode 100644 index 00000000000..6449e38b2c0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/zpm_energy_output_hatch_16a.json new file mode 100644 index 00000000000..d5a35387611 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_energy_output_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_energy_output_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/zpm_energy_output_hatch_4a.json new file mode 100644 index 00000000000..742b592ffe3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_energy_output_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_energy_output_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_extractor.json b/src/generated/resources/assets/gtceu/models/item/zpm_extractor.json new file mode 100644 index 00000000000..afe58690603 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_extruder.json b/src/generated/resources/assets/gtceu/models/item/zpm_extruder.json new file mode 100644 index 00000000000..9f17ad3d433 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_fermenter.json b/src/generated/resources/assets/gtceu/models/item/zpm_fermenter.json new file mode 100644 index 00000000000..4ee389b9901 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/zpm_fluid_heater.json new file mode 100644 index 00000000000..adf0744cb97 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..71334a8d484 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/zpm_fluid_solidifier.json new file mode 100644 index 00000000000..126cec1d4b3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/zpm_forge_hammer.json new file mode 100644 index 00000000000..e2a678ee63f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_forming_press.json b/src/generated/resources/assets/gtceu/models/item/zpm_forming_press.json new file mode 100644 index 00000000000..c584c7fcb90 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_fusion_reactor.json b/src/generated/resources/assets/gtceu/models/item/zpm_fusion_reactor.json new file mode 100644 index 00000000000..c8263333464 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_fusion_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_fusion_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/zpm_gas_collector.json new file mode 100644 index 00000000000..1792ab3dcc4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_input_bus.json b/src/generated/resources/assets/gtceu/models/item/zpm_input_bus.json new file mode 100644 index 00000000000..fde666dab2b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_input_hatch.json new file mode 100644 index 00000000000..299bccfe62a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/zpm_input_hatch_4x.json new file mode 100644 index 00000000000..1a8f602a6dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_input_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_input_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/zpm_input_hatch_9x.json new file mode 100644 index 00000000000..5f894cf3f1a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_input_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_input_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_item_passthrough_hatch.json new file mode 100644 index 00000000000..f3bfeea83d5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/zpm_laser_engraver.json new file mode 100644 index 00000000000..6c73d626269 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_lathe.json b/src/generated/resources/assets/gtceu/models/item/zpm_lathe.json new file mode 100644 index 00000000000..8d7acfbf454 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_macerator.json b/src/generated/resources/assets/gtceu/models/item/zpm_macerator.json new file mode 100644 index 00000000000..0886a1f2e9b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/zpm_machine_hull.json new file mode 100644 index 00000000000..49b214897fe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_mixer.json b/src/generated/resources/assets/gtceu/models/item/zpm_mixer.json new file mode 100644 index 00000000000..c1701b44d24 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_muffler_hatch.json new file mode 100644 index 00000000000..3630cad6232 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/zpm_ore_washer.json new file mode 100644 index 00000000000..3aa66f60121 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_output_bus.json b/src/generated/resources/assets/gtceu/models/item/zpm_output_bus.json new file mode 100644 index 00000000000..6cefb71e064 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_output_hatch.json new file mode 100644 index 00000000000..07f36562159 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/zpm_output_hatch_4x.json new file mode 100644 index 00000000000..4525e3aa408 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_output_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_output_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/zpm_output_hatch_9x.json new file mode 100644 index 00000000000..ffdf8fc03a2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_output_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_output_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_packer.json b/src/generated/resources/assets/gtceu/models/item/zpm_packer.json new file mode 100644 index 00000000000..b4f97b341df --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_parallel_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_parallel_hatch.json new file mode 100644 index 00000000000..cefa769648b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_parallel_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_parallel_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_polarizer.json b/src/generated/resources/assets/gtceu/models/item/zpm_polarizer.json new file mode 100644 index 00000000000..3fa619e9dcd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_quantum_chest.json b/src/generated/resources/assets/gtceu/models/item/zpm_quantum_chest.json new file mode 100644 index 00000000000..89e3d20da92 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_quantum_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_quantum_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_quantum_tank.json b/src/generated/resources/assets/gtceu/models/item/zpm_quantum_tank.json new file mode 100644 index 00000000000..d6ddc2485ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_quantum_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_quantum_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/zpm_rock_crusher.json new file mode 100644 index 00000000000..90367d2d55b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_rotor_holder.json b/src/generated/resources/assets/gtceu/models/item/zpm_rotor_holder.json new file mode 100644 index 00000000000..56b67ea9d8b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_rotor_holder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_rotor_holder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_scanner.json b/src/generated/resources/assets/gtceu/models/item/zpm_scanner.json new file mode 100644 index 00000000000..22bfab90157 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_sifter.json b/src/generated/resources/assets/gtceu/models/item/zpm_sifter.json new file mode 100644 index 00000000000..58f0beaeb5e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/zpm_substation_input_hatch_64a.json new file mode 100644 index 00000000000..eae1c5405c5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_substation_input_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_substation_input_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/zpm_substation_output_hatch_64a.json new file mode 100644 index 00000000000..fd533650b5a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_substation_output_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_substation_output_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/zpm_thermal_centrifuge.json new file mode 100644 index 00000000000..f7a06d0a274 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/zpm_transformer_16a.json new file mode 100644 index 00000000000..3ad66daf269 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/zpm_transformer_1a.json new file mode 100644 index 00000000000..e591147a15c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/zpm_transformer_2a.json new file mode 100644 index 00000000000..16caacb6496 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/zpm_transformer_4a.json new file mode 100644 index 00000000000..5e0004eb585 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_wiremill.json b/src/generated/resources/assets/gtceu/models/item/zpm_wiremill.json new file mode 100644 index 00000000000..96ec23efd2e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_world_accelerator.json b/src/generated/resources/assets/gtceu/models/item/zpm_world_accelerator.json new file mode 100644 index 00000000000..59a070d7203 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_world_accelerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_world_accelerator" +} \ No newline at end of file diff --git a/src/generated/resources/data/ae2/tags/items/p2p_attunements/fluid_p2p_tunnel.json b/src/generated/resources/data/ae2/tags/items/p2p_attunements/fluid_p2p_tunnel.json deleted file mode 100644 index 5c0936a1dee..00000000000 --- a/src/generated/resources/data/ae2/tags/items/p2p_attunements/fluid_p2p_tunnel.json +++ /dev/null @@ -1,434 +0,0 @@ -{ - "values": [ - "gtceu:aluminium_bucket", - "gtceu:americium_bucket", - "gtceu:americium_plasma_bucket", - "gtceu:antimony_bucket", - "gtceu:argon_bucket", - "gtceu:argon_plasma_bucket", - "gtceu:arsenic_bucket", - "gtceu:beryllium_bucket", - "gtceu:bismuth_bucket", - "gtceu:bromine_bucket", - "gtceu:carbon_bucket", - "gtceu:cerium_bucket", - "gtceu:chlorine_bucket", - "gtceu:chromium_bucket", - "gtceu:cobalt_bucket", - "gtceu:copper_bucket", - "gtceu:darmstadtium_bucket", - "gtceu:deuterium_bucket", - "gtceu:europium_bucket", - "gtceu:fluorine_bucket", - "gtceu:gallium_bucket", - "gtceu:gold_bucket", - "gtceu:hydrogen_bucket", - "gtceu:helium_bucket", - "gtceu:liquid_helium_bucket", - "gtceu:helium_plasma_bucket", - "gtceu:helium_3_bucket", - "gtceu:indium_bucket", - "gtceu:iridium_bucket", - "gtceu:iron_bucket", - "gtceu:iron_plasma_bucket", - "gtceu:krypton_bucket", - "gtceu:lanthanum_bucket", - "gtceu:lead_bucket", - "gtceu:lithium_bucket", - "gtceu:lutetium_bucket", - "gtceu:magnesium_bucket", - "gtceu:manganese_bucket", - "gtceu:mercury_bucket", - "gtceu:molybdenum_bucket", - "gtceu:neodymium_bucket", - "gtceu:neon_bucket", - "gtceu:nickel_bucket", - "gtceu:nickel_plasma_bucket", - "gtceu:niobium_bucket", - "gtceu:nitrogen_bucket", - "gtceu:nitrogen_plasma_bucket", - "gtceu:osmium_bucket", - "gtceu:oxygen_bucket", - "gtceu:liquid_oxygen_bucket", - "gtceu:oxygen_plasma_bucket", - "gtceu:palladium_bucket", - "gtceu:platinum_bucket", - "gtceu:plutonium_bucket", - "gtceu:plutonium_241_bucket", - "gtceu:potassium_bucket", - "gtceu:radon_bucket", - "gtceu:rhodium_bucket", - "gtceu:ruthenium_bucket", - "gtceu:samarium_bucket", - "gtceu:silicon_bucket", - "gtceu:silver_bucket", - "gtceu:tantalum_bucket", - "gtceu:thorium_bucket", - "gtceu:tin_bucket", - "gtceu:tin_plasma_bucket", - "gtceu:titanium_bucket", - "gtceu:tritium_bucket", - "gtceu:tungsten_bucket", - "gtceu:uranium_bucket", - "gtceu:uranium_235_bucket", - "gtceu:vanadium_bucket", - "gtceu:xenon_bucket", - "gtceu:yttrium_bucket", - "gtceu:zinc_bucket", - "gtceu:naquadah_bucket", - "gtceu:enriched_naquadah_bucket", - "gtceu:naquadria_bucket", - "gtceu:neutronium_bucket", - "gtceu:tritanium_bucket", - "gtceu:duranium_bucket", - "gtceu:trinium_bucket", - "gtceu:annealed_copper_bucket", - "gtceu:battery_alloy_bucket", - "gtceu:brass_bucket", - "gtceu:bronze_bucket", - "gtceu:cupronickel_bucket", - "gtceu:electrum_bucket", - "gtceu:ice_bucket", - "gtceu:invar_bucket", - "gtceu:kanthal_bucket", - "gtceu:molten_kanthal_bucket", - "gtceu:magnalium_bucket", - "gtceu:nichrome_bucket", - "gtceu:molten_nichrome_bucket", - "gtceu:niobium_nitride_bucket", - "gtceu:molten_niobium_nitride_bucket", - "gtceu:niobium_titanium_bucket", - "gtceu:molten_niobium_titanium_bucket", - "gtceu:sterling_silver_bucket", - "gtceu:molten_sterling_silver_bucket", - "gtceu:rose_gold_bucket", - "gtceu:molten_rose_gold_bucket", - "gtceu:black_bronze_bucket", - "gtceu:molten_black_bronze_bucket", - "gtceu:bismuth_bronze_bucket", - "gtceu:molten_bismuth_bronze_bucket", - "gtceu:rtm_alloy_bucket", - "gtceu:molten_rtm_alloy_bucket", - "gtceu:ruridit_bucket", - "gtceu:molten_ruridit_bucket", - "gtceu:soldering_alloy_bucket", - "gtceu:stainless_steel_bucket", - "gtceu:molten_stainless_steel_bucket", - "gtceu:steel_bucket", - "gtceu:tin_alloy_bucket", - "gtceu:ultimet_bucket", - "gtceu:molten_ultimet_bucket", - "gtceu:vanadium_gallium_bucket", - "gtceu:molten_vanadium_gallium_bucket", - "gtceu:wrought_iron_bucket", - "gtceu:yttrium_barium_cuprate_bucket", - "gtceu:molten_yttrium_barium_cuprate_bucket", - "gtceu:osmiridium_bucket", - "gtceu:molten_osmiridium_bucket", - "gtceu:gallium_arsenide_bucket", - "gtceu:molten_gallium_arsenide_bucket", - "gtceu:indium_gallium_phosphide_bucket", - "gtceu:nickel_zinc_ferrite_bucket", - "gtceu:sodium_persulfate_bucket", - "gtceu:tungsten_carbide_bucket", - "gtceu:molten_tungsten_carbide_bucket", - "gtceu:carbon_dioxide_bucket", - "gtceu:titanium_tetrachloride_bucket", - "gtceu:nitrogen_dioxide_bucket", - "gtceu:hydrogen_sulfide_bucket", - "gtceu:nitric_acid_bucket", - "gtceu:sulfuric_acid_bucket", - "gtceu:phosphoric_acid_bucket", - "gtceu:sulfur_trioxide_bucket", - "gtceu:sulfur_dioxide_bucket", - "gtceu:carbon_monoxide_bucket", - "gtceu:hypochlorous_acid_bucket", - "gtceu:ammonia_bucket", - "gtceu:hydrofluoric_acid_bucket", - "gtceu:nitric_oxide_bucket", - "gtceu:iron_iii_chloride_bucket", - "gtceu:iron_ii_chloride_bucket", - "gtceu:uranium_hexafluoride_bucket", - "gtceu:enriched_uranium_hexafluoride_bucket", - "gtceu:depleted_uranium_hexafluoride_bucket", - "gtceu:nitrous_oxide_bucket", - "gtceu:hydrochloric_acid_bucket", - "gtceu:steam_bucket", - "gtceu:distilled_water_bucket", - "gtceu:sodium_potassium_bucket", - "gtceu:manganese_phosphide_bucket", - "gtceu:molten_manganese_phosphide_bucket", - "gtceu:magnesium_diboride_bucket", - "gtceu:molten_magnesium_diboride_bucket", - "gtceu:mercury_barium_calcium_cuprate_bucket", - "gtceu:molten_mercury_barium_calcium_cuprate_bucket", - "gtceu:uranium_triplatinum_bucket", - "gtceu:molten_uranium_triplatinum_bucket", - "gtceu:samarium_iron_arsenic_oxide_bucket", - "gtceu:molten_samarium_iron_arsenic_oxide_bucket", - "gtceu:indium_tin_barium_titanium_cuprate_bucket", - "gtceu:molten_indium_tin_barium_titanium_cuprate_bucket", - "gtceu:uranium_rhodium_dinaquadide_bucket", - "gtceu:molten_uranium_rhodium_dinaquadide_bucket", - "gtceu:enriched_naquadah_trinium_europium_duranide_bucket", - "gtceu:molten_enriched_naquadah_trinium_europium_duranide_bucket", - "gtceu:ruthenium_trinium_americium_neutronate_bucket", - "gtceu:molten_ruthenium_trinium_americium_neutronate_bucket", - "gtceu:rhodium_sulfate_bucket", - "gtceu:fluoroantimonic_acid_bucket", - "gtceu:hydrogen_cyanide_bucket", - "gtceu:formic_acid_bucket", - "gtceu:formaldehyde_bucket", - "gtceu:glycolonitrile_bucket", - "gtceu:diethylenetriamine_pentaacetonitrile_bucket", - "gtceu:hydrogen_peroxide_bucket", - "gtceu:silicone_rubber_bucket", - "gtceu:nitrobenzene_bucket", - "gtceu:styrene_butadiene_rubber_bucket", - "gtceu:polyvinyl_acetate_bucket", - "gtceu:reinforced_epoxy_resin_bucket", - "gtceu:polyvinyl_chloride_bucket", - "gtceu:polyphenylene_sulfide_bucket", - "gtceu:glyceryl_trinitrate_bucket", - "gtceu:polybenzimidazole_bucket", - "gtceu:polyethylene_bucket", - "gtceu:epoxy_bucket", - "gtceu:polycaprolactam_bucket", - "gtceu:polytetrafluoroethylene_bucket", - "gtceu:methane_bucket", - "gtceu:epichlorohydrin_bucket", - "gtceu:monochloramine_bucket", - "gtceu:chloroform_bucket", - "gtceu:cumene_bucket", - "gtceu:tetrafluoroethylene_bucket", - "gtceu:chloromethane_bucket", - "gtceu:allyl_chloride_bucket", - "gtceu:isoprene_bucket", - "gtceu:propane_bucket", - "gtceu:propene_bucket", - "gtceu:ethane_bucket", - "gtceu:butene_bucket", - "gtceu:butane_bucket", - "gtceu:dissolved_calcium_acetate_bucket", - "gtceu:vinyl_acetate_bucket", - "gtceu:methyl_acetate_bucket", - "gtceu:ethenone_bucket", - "gtceu:tetranitromethane_bucket", - "gtceu:dimethylamine_bucket", - "gtceu:dimethylhydrazine_bucket", - "gtceu:dinitrogen_tetroxide_bucket", - "gtceu:dimethyldichlorosilane_bucket", - "gtceu:styrene_bucket", - "gtceu:butadiene_bucket", - "gtceu:dichlorobenzene_bucket", - "gtceu:acetic_acid_bucket", - "gtceu:phenol_bucket", - "gtceu:bisphenol_a_bucket", - "gtceu:vinyl_chloride_bucket", - "gtceu:ethylene_bucket", - "gtceu:benzene_bucket", - "gtceu:acetone_bucket", - "gtceu:glycerol_bucket", - "gtceu:methanol_bucket", - "gtceu:ethanol_bucket", - "gtceu:toluene_bucket", - "gtceu:diphenyl_isophthalate_bucket", - "gtceu:phthalic_acid_bucket", - "gtceu:dimethylbenzene_bucket", - "gtceu:diaminobenzidine_bucket", - "gtceu:dichlorobenzidine_bucket", - "gtceu:nitrochlorobenzene_bucket", - "gtceu:chlorobenzene_bucket", - "gtceu:octane_bucket", - "gtceu:ethyl_tertbutyl_ether_bucket", - "gtceu:ethylbenzene_bucket", - "gtceu:naphthalene_bucket", - "gtceu:rubber_bucket", - "gtceu:cyclohexane_bucket", - "gtceu:nitrosyl_chloride_bucket", - "gtceu:butyraldehyde_bucket", - "gtceu:polyvinyl_butyral_bucket", - "gtceu:polychlorinated_biphenyl_bucket", - "gtceu:acetic_anhydride_bucket", - "gtceu:aminophenol_bucket", - "gtceu:ammonium_formate_bucket", - "gtceu:formamide_bucket", - "gtceu:wood_gas_bucket", - "gtceu:wood_vinegar_bucket", - "gtceu:wood_tar_bucket", - "gtceu:charcoal_byproducts_bucket", - "gtceu:biomass_bucket", - "gtceu:bio_diesel_bucket", - "gtceu:fermented_biomass_bucket", - "gtceu:creosote_bucket", - "gtceu:diesel_bucket", - "gtceu:rocket_fuel_bucket", - "gtceu:glue_bucket", - "gtceu:lubricant_bucket", - "gtceu:mc_guffium_239_bucket", - "gtceu:indium_concentrate_bucket", - "gtceu:seed_oil_bucket", - "gtceu:drilling_fluid_bucket", - "gtceu:construction_foam_bucket", - "gtceu:sulfuric_heavy_fuel_bucket", - "gtceu:heavy_fuel_bucket", - "gtceu:lightly_hydro_cracked_heavy_fuel_bucket", - "gtceu:severely_hydro_cracked_heavy_fuel_bucket", - "gtceu:lightly_steam_cracked_heavy_fuel_bucket", - "gtceu:severely_steam_cracked_heavy_fuel_bucket", - "gtceu:sulfuric_light_fuel_bucket", - "gtceu:light_fuel_bucket", - "gtceu:lightly_hydro_cracked_light_fuel_bucket", - "gtceu:severely_hydro_cracked_light_fuel_bucket", - "gtceu:lightly_steam_cracked_light_fuel_bucket", - "gtceu:severely_steam_cracked_light_fuel_bucket", - "gtceu:sulfuric_naphtha_bucket", - "gtceu:naphtha_bucket", - "gtceu:lightly_hydro_cracked_naphtha_bucket", - "gtceu:severely_hydro_cracked_naphtha_bucket", - "gtceu:lightly_steam_cracked_naphtha_bucket", - "gtceu:severely_steam_cracked_naphtha_bucket", - "gtceu:sulfuric_gas_bucket", - "gtceu:refinery_gas_bucket", - "gtceu:lightly_hydro_cracked_gas_bucket", - "gtceu:severely_hydro_cracked_gas_bucket", - "gtceu:lightly_steam_cracked_gas_bucket", - "gtceu:severely_steam_cracked_gas_bucket", - "gtceu:hydro_cracked_ethane_bucket", - "gtceu:hydro_cracked_ethylene_bucket", - "gtceu:hydro_cracked_propene_bucket", - "gtceu:hydro_cracked_propane_bucket", - "gtceu:hydro_cracked_butane_bucket", - "gtceu:hydro_cracked_butene_bucket", - "gtceu:hydro_cracked_butadiene_bucket", - "gtceu:steam_cracked_ethane_bucket", - "gtceu:steam_cracked_ethylene_bucket", - "gtceu:steam_cracked_propene_bucket", - "gtceu:steam_cracked_propane_bucket", - "gtceu:steam_cracked_butane_bucket", - "gtceu:steam_cracked_butene_bucket", - "gtceu:steam_cracked_butadiene_bucket", - "gtceu:lpg_bucket", - "gtceu:raw_growth_medium_bucket", - "gtceu:sterilized_growth_medium_bucket", - "gtceu:oil_bucket", - "gtceu:oil_heavy_bucket", - "gtceu:oil_medium_bucket", - "gtceu:oil_light_bucket", - "gtceu:natural_gas_bucket", - "gtceu:bacteria_bucket", - "gtceu:bacterial_sludge_bucket", - "gtceu:enriched_bacterial_sludge_bucket", - "gtceu:mutagen_bucket", - "gtceu:gelatin_mixture_bucket", - "gtceu:raw_gasoline_bucket", - "gtceu:gasoline_bucket", - "gtceu:high_octane_gasoline_bucket", - "gtceu:coal_gas_bucket", - "gtceu:coal_tar_bucket", - "gtceu:glowstone_bucket", - "gtceu:cetane_boosted_diesel_bucket", - "gtceu:fish_oil_bucket", - "gtceu:ruby_slurry_bucket", - "gtceu:sapphire_slurry_bucket", - "gtceu:green_sapphire_slurry_bucket", - "gtceu:black_dye_bucket", - "gtceu:red_dye_bucket", - "gtceu:green_dye_bucket", - "gtceu:brown_dye_bucket", - "gtceu:blue_dye_bucket", - "gtceu:purple_dye_bucket", - "gtceu:cyan_dye_bucket", - "gtceu:light_gray_dye_bucket", - "gtceu:gray_dye_bucket", - "gtceu:pink_dye_bucket", - "gtceu:lime_dye_bucket", - "gtceu:yellow_dye_bucket", - "gtceu:light_blue_dye_bucket", - "gtceu:magenta_dye_bucket", - "gtceu:orange_dye_bucket", - "gtceu:white_dye_bucket", - "gtceu:impure_enriched_naquadah_solution_bucket", - "gtceu:enriched_naquadah_solution_bucket", - "gtceu:acidic_enriched_naquadah_solution_bucket", - "gtceu:enriched_naquadah_waste_bucket", - "gtceu:impure_naquadria_solution_bucket", - "gtceu:naquadria_solution_bucket", - "gtceu:acidic_naquadria_solution_bucket", - "gtceu:naquadria_waste_bucket", - "gtceu:uu_matter_bucket", - "gtceu:pcb_coolant_bucket", - "gtceu:wax_bucket", - "gtceu:glass_bucket", - "gtceu:salt_water_bucket", - "gtceu:blaze_bucket", - "gtceu:black_steel_bucket", - "gtceu:molten_black_steel_bucket", - "gtceu:damascus_steel_bucket", - "gtceu:tungsten_steel_bucket", - "gtceu:molten_tungsten_steel_bucket", - "gtceu:cobalt_brass_bucket", - "gtceu:concrete_bucket", - "gtceu:vanadium_steel_bucket", - "gtceu:molten_vanadium_steel_bucket", - "gtceu:potin_bucket", - "gtceu:borosilicate_glass_bucket", - "gtceu:naquadah_alloy_bucket", - "gtceu:molten_naquadah_alloy_bucket", - "gtceu:sulfuric_nickel_solution_bucket", - "gtceu:sulfuric_copper_solution_bucket", - "gtceu:lead_zinc_solution_bucket", - "gtceu:nitration_mixture_bucket", - "gtceu:diluted_sulfuric_acid_bucket", - "gtceu:diluted_hydrochloric_acid_bucket", - "gtceu:air_bucket", - "gtceu:liquid_air_bucket", - "gtceu:nether_air_bucket", - "gtceu:liquid_nether_air_bucket", - "gtceu:ender_air_bucket", - "gtceu:liquid_ender_air_bucket", - "gtceu:aqua_regia_bucket", - "gtceu:acidic_osmium_solution_bucket", - "gtceu:rhodium_plated_palladium_bucket", - "gtceu:molten_rhodium_plated_palladium_bucket", - "gtceu:redstone_bucket", - "gtceu:dichloroethane_bucket", - "gtceu:diethylenetriamine_bucket", - "gtceu:red_steel_bucket", - "gtceu:molten_red_steel_bucket", - "gtceu:blue_steel_bucket", - "gtceu:molten_blue_steel_bucket", - "gtceu:hssg_bucket", - "gtceu:molten_hssg_bucket", - "gtceu:red_alloy_bucket", - "gtceu:hsse_bucket", - "gtceu:molten_hsse_bucket", - "gtceu:hsss_bucket", - "gtceu:molten_hsss_bucket", - "gtceu:blue_alloy_bucket", - "gtceu:tantalum_carbide_bucket", - "gtceu:molten_tantalum_carbide_bucket", - "gtceu:hsla_steel_bucket", - "gtceu:molten_hsla_steel_bucket", - "gtceu:molybdenum_disilicide_bucket", - "gtceu:molten_molybdenum_disilicide_bucket", - "gtceu:zeron_100_bucket", - "gtceu:molten_zeron_100_bucket", - "gtceu:watertight_steel_bucket", - "gtceu:molten_watertight_steel_bucket", - "gtceu:incoloy_ma_956_bucket", - "gtceu:molten_incoloy_ma_956_bucket", - "gtceu:maraging_steel_300_bucket", - "gtceu:molten_maraging_steel_300_bucket", - "gtceu:hastelloy_x_bucket", - "gtceu:molten_hastelloy_x_bucket", - "gtceu:stellite_100_bucket", - "gtceu:molten_stellite_100_bucket", - "gtceu:titanium_carbide_bucket", - "gtceu:molten_titanium_carbide_bucket", - "gtceu:titanium_tungsten_carbide_bucket", - "gtceu:molten_titanium_tungsten_carbide_bucket", - "gtceu:hastelloy_c_276_bucket", - "gtceu:molten_hastelloy_c_276_bucket" - ] -} \ 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 eca1dec6f58..00000000000 --- a/src/generated/resources/data/forge/tags/blocks/storage_blocks.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "values": [ - "minecraft:nether_bricks", - "gtceu:firebricks", - "gtceu:coke_oven_bricks" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/coral_blocks.json b/src/generated/resources/data/forge/tags/items/coral_blocks.json index d097daacfec..183630c7a54 100644 --- a/src/generated/resources/data/forge/tags/items/coral_blocks.json +++ b/src/generated/resources/data/forge/tags/items/coral_blocks.json @@ -1,14 +1,6 @@ { "values": [ - "minecraft:brain_coral_block", - "minecraft:bubble_coral_block", - "minecraft:fire_coral_block", - "minecraft:tube_coral_block", - "minecraft:horn_coral_block", - "minecraft:dead_brain_coral_block", - "minecraft:dead_bubble_coral_block", - "minecraft:dead_fire_coral_block", - "minecraft:dead_tube_coral_block", - "minecraft:dead_horn_coral_block" + "#forge:coral_blocks/alive", + "#forge:coral_blocks/dead" ] } \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/coral_blocks/alive.json b/src/generated/resources/data/forge/tags/items/coral_blocks/alive.json new file mode 100644 index 00000000000..cc58d63e8a8 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/coral_blocks/alive.json @@ -0,0 +1,9 @@ +{ + "values": [ + "minecraft:brain_coral_block", + "minecraft:bubble_coral_block", + "minecraft:fire_coral_block", + "minecraft:tube_coral_block", + "minecraft:horn_coral_block" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/coral_blocks/dead.json b/src/generated/resources/data/forge/tags/items/coral_blocks/dead.json new file mode 100644 index 00000000000..ba4a6a5c288 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/coral_blocks/dead.json @@ -0,0 +1,9 @@ +{ + "values": [ + "minecraft:dead_brain_coral_block", + "minecraft:dead_bubble_coral_block", + "minecraft:dead_fire_coral_block", + "minecraft:dead_tube_coral_block", + "minecraft:dead_horn_coral_block" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/coral_fans.json b/src/generated/resources/data/forge/tags/items/coral_fans.json new file mode 100644 index 00000000000..3f162e4a6e7 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/coral_fans.json @@ -0,0 +1,6 @@ +{ + "values": [ + "#forge:coral_fans/alive", + "#forge:coral_fans/dead" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/coral_fans/alive.json b/src/generated/resources/data/forge/tags/items/coral_fans/alive.json new file mode 100644 index 00000000000..c086d5831c0 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/coral_fans/alive.json @@ -0,0 +1,9 @@ +{ + "values": [ + "minecraft:brain_coral_fan", + "minecraft:bubble_coral_fan", + "minecraft:fire_coral_fan", + "minecraft:tube_coral_fan", + "minecraft:horn_coral_fan" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/coral_fans/dead.json b/src/generated/resources/data/forge/tags/items/coral_fans/dead.json new file mode 100644 index 00000000000..8f3b0417d95 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/coral_fans/dead.json @@ -0,0 +1,9 @@ +{ + "values": [ + "minecraft:dead_brain_coral_fan", + "minecraft:dead_bubble_coral_fan", + "minecraft:dead_fire_coral_fan", + "minecraft:dead_tube_coral_fan", + "minecraft:dead_horn_coral_fan" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/coral_plants.json b/src/generated/resources/data/forge/tags/items/coral_plants.json new file mode 100644 index 00000000000..b24cd69a99c --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/coral_plants.json @@ -0,0 +1,6 @@ +{ + "values": [ + "#forge:coral_plants/alive", + "#forge:coral_plants/dead" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/coral_plants/alive.json b/src/generated/resources/data/forge/tags/items/coral_plants/alive.json new file mode 100644 index 00000000000..4d7201a2dc7 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/coral_plants/alive.json @@ -0,0 +1,9 @@ +{ + "values": [ + "minecraft:brain_coral", + "minecraft:bubble_coral", + "minecraft:fire_coral", + "minecraft:tube_coral", + "minecraft:horn_coral" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/coral_plants/dead.json b/src/generated/resources/data/forge/tags/items/coral_plants/dead.json new file mode 100644 index 00000000000..a5b646ea73b --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/coral_plants/dead.json @@ -0,0 +1,9 @@ +{ + "values": [ + "minecraft:dead_brain_coral", + "minecraft:dead_bubble_coral", + "minecraft:dead_fire_coral", + "minecraft:dead_tube_coral", + "minecraft:dead_horn_coral" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/corals.json b/src/generated/resources/data/forge/tags/items/corals.json index 4a6070e6908..7895440894f 100644 --- a/src/generated/resources/data/forge/tags/items/corals.json +++ b/src/generated/resources/data/forge/tags/items/corals.json @@ -1,24 +1,6 @@ { "values": [ - "minecraft:brain_coral", - "minecraft:bubble_coral", - "minecraft:fire_coral", - "minecraft:tube_coral", - "minecraft:horn_coral", - "minecraft:dead_brain_coral", - "minecraft:dead_bubble_coral", - "minecraft:dead_fire_coral", - "minecraft:dead_tube_coral", - "minecraft:dead_horn_coral", - "minecraft:brain_coral_fan", - "minecraft:bubble_coral_fan", - "minecraft:fire_coral_fan", - "minecraft:tube_coral_fan", - "minecraft:horn_coral_fan", - "minecraft:dead_brain_coral_fan", - "minecraft:dead_bubble_coral_fan", - "minecraft:dead_fire_coral_fan", - "minecraft:dead_tube_coral_fan", - "minecraft:dead_horn_coral_fan" + "#forge:corals/alive", + "#forge:corals/dead" ] } \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/corals/alive.json b/src/generated/resources/data/forge/tags/items/corals/alive.json new file mode 100644 index 00000000000..4ca160aa805 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/corals/alive.json @@ -0,0 +1,6 @@ +{ + "values": [ + "#forge:coral_plants/alive", + "#forge:coral_fans/alive" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/corals/dead.json b/src/generated/resources/data/forge/tags/items/corals/dead.json new file mode 100644 index 00000000000..73f047a45a6 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/corals/dead.json @@ -0,0 +1,6 @@ +{ + "values": [ + "#forge:coral_plants/dead", + "#forge:coral_fans/dead" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/dough.json b/src/generated/resources/data/forge/tags/items/dough.json index 0d7285b98cf..b5199814db7 100644 --- a/src/generated/resources/data/forge/tags/items/dough.json +++ b/src/generated/resources/data/forge/tags/items/dough.json @@ -1,5 +1,5 @@ { "values": [ - "gtceu:dough" + "#forge:dough/wheat" ] } \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/dough/wheat.json b/src/generated/resources/data/forge/tags/items/dough/wheat.json new file mode 100644 index 00000000000..0d7285b98cf --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/dough/wheat.json @@ -0,0 +1,5 @@ +{ + "values": [ + "gtceu:dough" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/dyes/brown.json b/src/generated/resources/data/forge/tags/items/dyes/brown.json index 679f0c978bc..bdc8afe819d 100644 --- a/src/generated/resources/data/forge/tags/items/dyes/brown.json +++ b/src/generated/resources/data/forge/tags/items/dyes/brown.json @@ -1,6 +1,5 @@ { "values": [ - "gtceu:chemical_brown_dye", - "gtceu:metal_mixture_dust" + "gtceu:chemical_brown_dye" ] } \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/grain.json b/src/generated/resources/data/forge/tags/items/grain.json new file mode 100644 index 00000000000..80b58877897 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/grain.json @@ -0,0 +1,5 @@ +{ + "values": [ + "#forge:grain/wheat" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/grain/wheat.json b/src/generated/resources/data/forge/tags/items/grain/wheat.json new file mode 100644 index 00000000000..89f26fbe7dd --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/grain/wheat.json @@ -0,0 +1,5 @@ +{ + "values": [ + "gtceu:wheat_dust" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/tools/igniter.json b/src/generated/resources/data/forge/tags/items/tools/igniter.json new file mode 100644 index 00000000000..197502e68b2 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/tools/igniter.json @@ -0,0 +1,9 @@ +{ + "values": [ + "gtceu:matches", + "gtceu:matchbox", + "gtceu:invar_lighter", + "gtceu:platinum_lighter", + "#minecraft:creeper_igniters" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/tags/blocks/charcoal_pile_igniter_walls.json b/src/generated/resources/data/gtceu/tags/blocks/charcoal_pile_igniter_walls.json new file mode 100644 index 00000000000..1dcbb3b4810 --- /dev/null +++ b/src/generated/resources/data/gtceu/tags/blocks/charcoal_pile_igniter_walls.json @@ -0,0 +1,14 @@ +{ + "remove": [ + "minecraft:moss_block", + "minecraft:mud", + "minecraft:muddy_mangrove_roots" + ], + "values": [ + "#minecraft:dirt", + "minecraft:dirt_path", + "#forge:sand", + "#minecraft:sand", + "#minecraft:terracotta" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/tags/blocks/cleanroom_doors.json b/src/generated/resources/data/gtceu/tags/blocks/cleanroom_doors.json new file mode 100644 index 00000000000..065692498ac --- /dev/null +++ b/src/generated/resources/data/gtceu/tags/blocks/cleanroom_doors.json @@ -0,0 +1,6 @@ +{ + "values": [ + "minecraft:iron_door", + "#minecraft:wooden_doors" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/fluids/lighter_fluid.json b/src/generated/resources/data/gtceu/tags/fluids/lighter_fluids.json similarity index 100% rename from src/generated/resources/data/forge/tags/fluids/lighter_fluid.json rename to src/generated/resources/data/gtceu/tags/fluids/lighter_fluids.json diff --git a/src/main/java/com/gregtechceu/gtceu/GTCEu.java b/src/main/java/com/gregtechceu/gtceu/GTCEu.java index c86ee0a0e71..fee2fc2b308 100644 --- a/src/main/java/com/gregtechceu/gtceu/GTCEu.java +++ b/src/main/java/com/gregtechceu/gtceu/GTCEu.java @@ -19,8 +19,8 @@ import dev.emi.emi.config.EmiConfig; import me.shedaniel.rei.api.client.REIRuntime; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.nio.file.Path; @@ -28,8 +28,9 @@ public class GTCEu { public static final String MOD_ID = "gtceu"; + private static final ResourceLocation TEMPLATE_LOCATION = new ResourceLocation(MOD_ID, ""); public static final String NAME = "GregTechCEu"; - public static final Logger LOGGER = LoggerFactory.getLogger(NAME); + public static final Logger LOGGER = LogManager.getLogger(NAME); public GTCEu() { GTCEu.init(); @@ -42,23 +43,32 @@ public static void init() { } public static ResourceLocation id(String path) { - return new ResourceLocation(MOD_ID, FormattingUtil.toLowerCaseUnder(path)); - } + if (path.isBlank()) { + return TEMPLATE_LOCATION; + } - public static String appendIdString(String id) { - return id.indexOf(':') == -1 ? (MOD_ID + ":" + id) : id; + int i = path.indexOf(':'); + if (i > 0) { + return new ResourceLocation(path); + } else if (i == 0) { + path = path.substring(i + 1); + } + // only convert it to camel_case if it has any uppercase to begin with + if (FormattingUtil.hasUpperCase(path)) { + path = FormattingUtil.toLowerCaseUnderscore(path); + } + return TEMPLATE_LOCATION.withPath(path); } - public static ResourceLocation appendId(String id) { - String[] strings = new String[] { "gtceu", id }; + public static String appendIdString(String id) { int i = id.indexOf(':'); - if (i >= 0) { - strings[1] = id.substring(i + 1); - if (i >= 1) { - strings[0] = id.substring(0, i); - } + if (i > 0) { + return id; + } else if (i == 0) { + return MOD_ID + id; + } else { + return MOD_ID + ":" + id; } - return new ResourceLocation(strings[0], strings[1]); } /** @@ -109,7 +119,10 @@ public static boolean isClientThread() { } /** - * @return if the FML environment is a client + * @return if the game is the PHYSICAL client, e.g. not a dedicated server. + * @apiNote Do not use this to check if you're currently on the server thread for side-specific actions! + * It does NOT work for that. Use {@link #isClientThread()} instead. + * @see #isClientThread() */ public static boolean isClientSide() { return FMLEnvironment.dist.isClient(); @@ -177,6 +190,10 @@ public static boolean isShimmerLoaded() { return isModLoaded(GTValues.MODID_SHIMMER); } + public static boolean isModernFixLoaded() { + return isModLoaded(GTValues.MODID_MODERNFIX); + } + public static boolean isJAVDLoaded() { return isModLoaded(GTValues.MODID_JAVD); } @@ -200,5 +217,13 @@ public static boolean isArgonautsLoaded() { public static boolean isGameStagesLoaded() { return isModLoaded(GTValues.MODID_GAMESTAGES); } + + public static boolean isCCTweakedLoaded() { + return isModLoaded(GTValues.MODID_CCTWEAKED); + } + + public static boolean isCreateLoaded() { + return isModLoaded(GTValues.MODID_CREATE); + } } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/GTValues.java b/src/main/java/com/gregtechceu/gtceu/api/GTValues.java index 8cfad269469..41a6a9c9d5a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/GTValues.java +++ b/src/main/java/com/gregtechceu/gtceu/api/GTValues.java @@ -3,8 +3,10 @@ import net.minecraft.util.RandomSource; import java.time.LocalDate; +import java.time.Month; import java.util.Arrays; -import java.util.function.Supplier; +import java.util.function.BooleanSupplier; +import java.util.function.IntFunction; import static net.minecraft.ChatFormatting.*; @@ -117,6 +119,7 @@ public static int[] tiersBetween(int minInclusive, int maxInclusive) { MODID_CURIOS = "curios", MODID_AE2WTLIB = "ae2wtlib", MODID_SHIMMER = "shimmer", + MODID_MODERNFIX = "modernfix", MODID_JOURNEYMAP = "journeymap", MODID_XAEROS_MINIMAP = "xaerominimap", MODID_XAEROS_WORLDMAP = "xaeroworldmap", @@ -126,7 +129,9 @@ public static int[] tiersBetween(int minInclusive, int maxInclusive) { MODID_ARGONAUTS = "argonauts", MODID_HERACLES = "heracles", MODID_GAMESTAGES = "gamestages", - MODID_FTB_QUEST = "ftbquests"; + MODID_FTB_QUEST = "ftbquests", + MODID_CCTWEAKED = "computercraft"; + /** * Spray painting compat modids */ @@ -138,6 +143,12 @@ public static int[] tiersBetween(int minInclusive, int maxInclusive) { public static final String[] VN = new String[] { "ULV", "LV", "MV", "HV", "EV", "IV", "LuV", "ZPM", "UV", "UHV", "UEV", "UIV", "UXV", "OpV", "MAX" }; + public static final IntFunction MAX_PLUS_FORMAT = (value) -> "" + RED + BOLD + "M" + + GREEN + BOLD + "A" + + BLUE + BOLD + "X" + + YELLOW + BOLD + "+" + + RED + BOLD + value; + /** * The short names for the voltages, formatted for text */ @@ -157,38 +168,22 @@ public static int[] tiersBetween(int minInclusive, int maxInclusive) { YELLOW + "UXV", BLUE.toString() + BOLD + "OpV", RED.toString() + BOLD + "MAX", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "1", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "2", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "3", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "4", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "5", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "6", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "7", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "8", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "9", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "10", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "11", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "12", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "13", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "14", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "15", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "16", + MAX_PLUS_FORMAT.apply(1), + MAX_PLUS_FORMAT.apply(2), + MAX_PLUS_FORMAT.apply(3), + MAX_PLUS_FORMAT.apply(4), + MAX_PLUS_FORMAT.apply(5), + MAX_PLUS_FORMAT.apply(6), + MAX_PLUS_FORMAT.apply(7), + MAX_PLUS_FORMAT.apply(8), + MAX_PLUS_FORMAT.apply(9), + MAX_PLUS_FORMAT.apply(10), + MAX_PLUS_FORMAT.apply(11), + MAX_PLUS_FORMAT.apply(12), + MAX_PLUS_FORMAT.apply(13), + MAX_PLUS_FORMAT.apply(14), + MAX_PLUS_FORMAT.apply(15), + MAX_PLUS_FORMAT.apply(16), }; public static final String[] VCF = new String[] { @@ -266,6 +261,29 @@ public static int[] tiersBetween(int minInclusive, int maxInclusive) { public static final int[] VC = new int[] { 0xC80000, 0xDCDCDC, 0xFF6400, 0xFFFF1E, 0x808080, 0xF0F0F5, 0xE99797, 0x7EC3C4, 0x7EB07E, 0xBF74C0, 0x0B5CFE, 0x914E91, 0x488748, 0x8C0000, 0x2828F5 }; + // Main colour for each tier + public static final int[] VCM = new int[] { + DARK_GRAY.getColor(), + GRAY.getColor(), + AQUA.getColor(), + GOLD.getColor(), + DARK_PURPLE.getColor(), + BLUE.getColor(), + LIGHT_PURPLE.getColor(), + RED.getColor(), + DARK_AQUA.getColor(), + DARK_RED.getColor(), + GREEN.getColor(), + DARK_GREEN.getColor(), + YELLOW.getColor(), + BLUE.getColor(), + RED.getColor() + }; + + // Main color for steam machines + public static final int VC_LP_STEAM = 0xBB8E53; + public static final int VC_HP_STEAM = 0x79756F; + /** * The long names for the voltages */ @@ -279,14 +297,14 @@ public static int[] tiersBetween(int minInclusive, int maxInclusive) { */ public static boolean HT = false; - public static Supplier FOOLS = () -> { - String[] yearMonthDay = LocalDate.now().toString().split("-"); - return yearMonthDay[1].equals("04") && yearMonthDay[2].equals("01"); + public static BooleanSupplier FOOLS = () -> { + var now = LocalDate.now(); + return now.getMonth() == Month.APRIL && now.getDayOfMonth() == 1; }; - public static Supplier XMAS = () -> { - String[] yearMonthDay = LocalDate.now().toString().split("-"); - return yearMonthDay[1].equals("12") && (yearMonthDay[2].equals("24") || yearMonthDay[2].equals("25")); + public static BooleanSupplier XMAS = () -> { + var now = LocalDate.now(); + return now.getMonth() == Month.DECEMBER && (now.getDayOfMonth() == 24 || now.getDayOfMonth() == 25); }; public static final String CUSTOM_TAG_SOURCE = "GTCEu Custom Tags"; diff --git a/src/main/java/com/gregtechceu/gtceu/api/addon/events/KJSRecipeKeyEvent.java b/src/main/java/com/gregtechceu/gtceu/api/addon/events/KJSRecipeKeyEvent.java index 8612db525af..3ada60b9a6a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/addon/events/KJSRecipeKeyEvent.java +++ b/src/main/java/com/gregtechceu/gtceu/api/addon/events/KJSRecipeKeyEvent.java @@ -10,11 +10,6 @@ import java.util.HashMap; import java.util.Map; -/** - * @author screret - * @date 2023/7/5 - * @implNote An event for adding KJS recipe keys - */ @SuppressWarnings("unused") public class KJSRecipeKeyEvent { diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/ActiveBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/ActiveBlock.java index c8135ea3ac1..ca21bb7b809 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/ActiveBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/ActiveBlock.java @@ -7,16 +7,18 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.Property; + +import org.jetbrains.annotations.ApiStatus; import javax.annotation.ParametersAreNonnullByDefault; +import static com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties.ACTIVE; + @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class ActiveBlock extends AppearanceBlock { - public static final BooleanProperty ACTIVE = BooleanProperty.create("active"); - public ActiveBlock(Properties properties) { super(properties); registerDefaultState(defaultBlockState().setValue(ACTIVE, false)); @@ -28,6 +30,10 @@ protected void createBlockStateDefinition(StateDefinition.Builder ALL_COILS_TEMPERATURE_SORTED = Lazy.of(() -> GTCEuAPI.HEATING_COILS.keySet().stream() - .sorted(Comparator.comparing(ICoilType::getCoilTemperature)) + .sorted(Comparator.comparingInt(ICoilType::getCoilTemperature)) .toArray(ICoilType[]::new)); @Nullable diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/IMachineBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/IMachineBlock.java index 40540093356..26ad770884b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/IMachineBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/IMachineBlock.java @@ -5,11 +5,10 @@ import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.lowdragmc.lowdraglib.client.renderer.IBlockRendererProvider; - import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; @@ -17,18 +16,10 @@ import net.minecraft.world.level.block.entity.BlockEntityTicker; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.properties.DirectionProperty; import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/3/31 - * @implNote IMachineBlock - */ -public interface IMachineBlock extends IBlockRendererProvider, EntityBlock { - - DirectionProperty UPWARDS_FACING_PROPERTY = DirectionProperty.create("upwards_facing", Direction.Plane.HORIZONTAL); +public interface IMachineBlock extends EntityBlock { default Block self() { return (Block) this; @@ -36,7 +27,18 @@ default Block self() { MachineDefinition getDefinition(); - RotationState getRotationState(); + default RotationState getRotationState() { + return getDefinition().getRotationState(); + } + + default Direction getFrontFacing(BlockState state) { + return getRotationState() == RotationState.NONE ? Direction.NORTH : state.getValue(getRotationState().property); + } + + @Nullable + default MetaMachine getMachine(BlockGetter level, BlockPos pos) { + return MetaMachine.getMachine(level, pos); + } static int colorTinted(BlockState blockState, @Nullable BlockAndTintGetter level, @Nullable BlockPos pos, int index) { @@ -60,14 +62,13 @@ default BlockEntity newBlockEntity(BlockPos pos, BlockState state) { default BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType blockEntityType) { if (blockEntityType == getDefinition().getBlockEntityType()) { - if (state.getValue(BlockProperties.SERVER_TICK) && !level.isClientSide) { + if (!level.isClientSide) { return (pLevel, pPos, pState, pTile) -> { if (pTile instanceof IMachineBlockEntity metaMachine) { metaMachine.getMetaMachine().serverTick(); } }; - } - if (level.isClientSide) { + } else { return (pLevel, pPos, pState, pTile) -> { if (pTile instanceof IMachineBlockEntity metaMachine) { metaMachine.getMetaMachine().clientTick(); @@ -77,4 +78,8 @@ default BlockEntityTicker getTicker(Level level, Bloc } return null; } + + default boolean canConnectRedstone(BlockGetter level, BlockPos pos, Direction side) { + return getMachine(level, pos).canConnectRedstone(side); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/MaterialBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/MaterialBlock.java index 27c220e364c..cbce68d1dd5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/MaterialBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/MaterialBlock.java @@ -55,11 +55,6 @@ import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/27 - * @implNote MaterialBlock - */ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public class MaterialBlock extends AppearanceBlock { diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/MaterialPipeBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/MaterialPipeBlock.java index 912ea2b9b12..07d640a090f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/MaterialPipeBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/MaterialPipeBlock.java @@ -1,6 +1,6 @@ package com.gregtechceu.gtceu.api.block; -import com.gregtechceu.gtceu.api.blockentity.PipeBlockEntity; +import com.gregtechceu.gtceu.api.blockentity.IPaintable; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.pipenet.*; import com.gregtechceu.gtceu.client.model.PipeModel; @@ -20,11 +20,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/28 - * @implNote MaterialPipeBlock - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public abstract class MaterialPipeBlock< @@ -45,29 +40,20 @@ public MaterialPipeBlock(Properties properties, PipeType pipeType, Material mate @OnlyIn(Dist.CLIENT) public static BlockColor tintedColor() { - return (blockState, level, blockPos, index) -> { - if (blockState.getBlock() instanceof MaterialPipeBlock block) { - if (blockPos != null && level != null && - level.getBlockEntity(blockPos) instanceof PipeBlockEntity pipe) { - if (!pipe.getFrameMaterial().isNull()) { - if (index == 3) { - return pipe.getFrameMaterial().getMaterialRGB(); - } else if (index == 4) { - return pipe.getFrameMaterial().getMaterialSecondaryRGB(); - } - } - if (pipe.isPainted()) { - return pipe.getRealColor(); - } + return (state, level, pos, index) -> { + if (level != null && pos != null && (index == 0 || index == 1)) { + if (level.getBlockEntity(pos) instanceof IPaintable paintable && paintable.isPainted()) { + return paintable.getPaintingColor(); } - return block.tinted(blockState, level, blockPos, index); + } + if (state.getBlock() instanceof MaterialPipeBlock block) { + return block.tinted(state, level, pos, index); } return -1; }; } - public int tinted(BlockState blockState, @Nullable BlockAndTintGetter blockAndTintGetter, - @Nullable BlockPos blockPos, int index) { + public int tinted(BlockState blockState, @Nullable BlockAndTintGetter level, @Nullable BlockPos pos, int index) { return index == 0 || index == 1 ? material.getMaterialRGB() : -1; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java index d5b2460a21f..8e86dc76144 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.api.block; +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.item.IGTTool; import com.gregtechceu.gtceu.api.item.MetaMachineItem; @@ -8,17 +9,16 @@ import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.feature.*; import com.gregtechceu.gtceu.common.data.GTItems; import com.gregtechceu.gtceu.common.machine.owner.MachineOwner; import com.gregtechceu.gtceu.utils.GTUtil; -import com.lowdragmc.lowdraglib.client.renderer.IRenderer; -import com.lowdragmc.lowdraglib.utils.LocalizationUtils; - import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.locale.Language; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; @@ -37,6 +37,7 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.RenderShape; import net.minecraft.world.level.block.Rotation; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; @@ -63,18 +64,16 @@ public class MetaMachineBlock extends AppearanceBlock implements IMachineBlock { @Getter public final MachineDefinition definition; - @Getter - public final RotationState rotationState; public MetaMachineBlock(Properties properties, MachineDefinition definition) { super(properties); this.definition = definition; - this.rotationState = RotationState.get(); + RotationState rotationState = definition.getRotationState(); if (rotationState != RotationState.NONE) { BlockState defaultState = this.defaultBlockState().setValue(rotationState.property, rotationState.defaultDirection); if (definition.isAllowExtendedFacing()) { - defaultState = defaultState.setValue(IMachineBlock.UPWARDS_FACING_PROPERTY, Direction.NORTH); + defaultState = defaultState.setValue(GTBlockStateProperties.UPWARDS_FACING, Direction.NORTH); } registerDefaultState(defaultState); } @@ -82,33 +81,26 @@ public MetaMachineBlock(Properties properties, MachineDefinition definition) { @Override protected void createBlockStateDefinition(StateDefinition.Builder pBuilder) { - pBuilder.add(BlockProperties.SERVER_TICK); - RotationState rotationState = RotationState.get(); + RotationState rotationState = MachineDefinition.getBuilt().getRotationState(); if (rotationState != RotationState.NONE) { pBuilder.add(rotationState.property); if (MachineDefinition.getBuilt().isAllowExtendedFacing()) { - pBuilder.add(IMachineBlock.UPWARDS_FACING_PROPERTY); + pBuilder.add(GTBlockStateProperties.UPWARDS_FACING); } } } - @Nullable - public MetaMachine getMachine(BlockGetter level, BlockPos pos) { - return MetaMachine.getMachine(level, pos); - } - - @Nullable - @Override - public IRenderer getRenderer(BlockState state) { - return definition.getRenderer(); - } - @Override public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, CollisionContext pContext) { return getRotationState() == RotationState.NONE ? definition.getShape(Direction.NORTH) : definition.getShape(pState.getValue(getRotationState().property)); } + @Override + public RenderShape getRenderShape(BlockState state) { + return RenderShape.MODEL; + } + @Override public void animateTick(BlockState state, Level level, BlockPos pos, RandomSource random) { super.animateTick(state, level, pos, random); @@ -175,19 +167,15 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { if (getDefinition().isAllowExtendedFacing()) { Direction frontFacing = state.getValue(rotationState.property); if (frontFacing == Direction.UP) { - state = state.setValue(IMachineBlock.UPWARDS_FACING_PROPERTY, player.getDirection()); + state = state.setValue(GTBlockStateProperties.UPWARDS_FACING, player.getDirection()); } else if (frontFacing == Direction.DOWN) { - state = state.setValue(IMachineBlock.UPWARDS_FACING_PROPERTY, player.getDirection().getOpposite()); + state = state.setValue(GTBlockStateProperties.UPWARDS_FACING, player.getDirection().getOpposite()); } } } return state; } - public Direction getFrontFacing(BlockState state) { - return getRotationState() == RotationState.NONE ? Direction.NORTH : state.getValue(getRotationState().property); - } - @Override public ItemStack getCloneItemStack(BlockGetter level, BlockPos pos, BlockState state) { ItemStack itemStack = super.getCloneItemStack(level, pos, state); @@ -203,7 +191,18 @@ public void appendHoverText(ItemStack stack, @Nullable BlockGetter level, List types = ToolHelper.getToolTypes(itemStack); - if (machine != null && (!types.isEmpty() && ToolHelper.canUse(itemStack)) || - (types.isEmpty() && player.isShiftKeyDown())) { + if (machine != null && + (!types.isEmpty() && ToolHelper.canUse(itemStack) || types.isEmpty() && player.isShiftKeyDown())) { var result = machine.onToolClick(types, itemStack, new UseOnContext(player, hand, hit)); if (result.getSecond() == InteractionResult.CONSUME && player instanceof ServerPlayer serverPlayer) { ToolHelper.playToolSound(result.getFirst(), serverPlayer); @@ -322,10 +321,6 @@ public InteractionResult use(BlockState state, Level world, BlockPos pos, Player return shouldOpenUi ? InteractionResult.PASS : InteractionResult.CONSUME; } - public boolean canConnectRedstone(BlockGetter level, BlockPos pos, Direction side) { - return getMachine(level, pos).canConnectRedstone(side); - } - @Override @SuppressWarnings("deprecation") // This is fine to override, just not to be called. public int getSignal(BlockState state, BlockGetter level, BlockPos pos, Direction direction) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/OreBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/OreBlock.java index 257a0d46114..9a12a21339d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/OreBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/OreBlock.java @@ -18,9 +18,9 @@ public class OreBlock extends MaterialBlock { - public OreBlock(Properties properties, TagPrefix tagPrefix, Material material, boolean registerModel) { + public OreBlock(Properties properties, TagPrefix tagPrefix, Material material) { super(properties, tagPrefix, material, false); - if (registerModel && GTCEu.isClientSide()) { + if (GTCEu.isClientSide()) { OreBlockRenderer.create(this); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/PipeBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/PipeBlock.java index bedfd72bcb4..e8f3c2abe4a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/PipeBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/PipeBlock.java @@ -69,11 +69,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/28 - * @implNote PipeBlock - */ @SuppressWarnings("deprecation") @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault @@ -86,13 +81,12 @@ public abstract class PipeBlock & IPipeType builder) { - super.createBlockStateDefinition(builder.add(BlockProperties.SERVER_TICK, BlockStateProperties.WATERLOGGED)); + super.createBlockStateDefinition(builder.add(BlockStateProperties.WATERLOGGED)); } @Override @@ -329,8 +323,7 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player level.playSound(player, pos, type.getPlaceSound(), SoundSource.BLOCKS, (type.getVolume() + 1.0F) / 2.0F, type.getPitch() * 0.8F); - player.swing(hand); - return InteractionResult.SUCCESS; + return InteractionResult.sidedSuccess(player.level().isClientSide); } } @@ -439,7 +432,7 @@ public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, public BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType blockEntityType) { if (blockEntityType == getBlockEntityType()) { - if (!level.isClientSide && state.getValue(BlockProperties.SERVER_TICK)) { + if (!level.isClientSide) { return (pLevel, pPos, pState, pTile) -> { if (pTile instanceof IPipeNode pipeNode) { pipeNode.serverTick(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/property/GTBlockStateProperties.java b/src/main/java/com/gregtechceu/gtceu/api/block/property/GTBlockStateProperties.java new file mode 100644 index 00000000000..b0cc876857f --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/block/property/GTBlockStateProperties.java @@ -0,0 +1,20 @@ +package com.gregtechceu.gtceu.api.block.property; + +import net.minecraft.core.Direction; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.DirectionProperty; + +public class GTBlockStateProperties { + + public static final DirectionProperty UPWARDS_FACING = DirectionProperty.create("upwards_facing", + Direction.Plane.HORIZONTAL); + public static final DirectionProperty NORTH_ONLY_FACING = DirectionProperty.create("facing", Direction.NORTH); + public static final DirectionProperty VERTICAL_FACING = DirectionProperty.create("facing", + Direction.Plane.VERTICAL); + + public static final BooleanProperty ACTIVE = BooleanProperty.create("active"); + public static final BooleanProperty BLOOM = BooleanProperty.create("bloom"); + public static final BooleanProperty INVERTED = BooleanProperty.create("inverted"); + + public static final BooleanProperty NATURAL = BooleanProperty.create("natural"); +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/IPaintable.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/IPaintable.java index 4513aed1524..26105165b5b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/blockentity/IPaintable.java +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/IPaintable.java @@ -1,12 +1,14 @@ package com.gregtechceu.gtceu.api.blockentity; -/** - * @author screret - * @date 6/28/2023 - * @implNote Implement on paintable block entities - */ +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; + +import net.minecraft.world.level.block.state.properties.BooleanProperty; + public interface IPaintable { + BooleanProperty IS_PAINTED_PROPERTY = GTMachineModelProperties.IS_PAINTED; + int UNPAINTED_COLOR = 0xffffffff; + /** * Get painting color. * It's not the real color of this block. @@ -26,7 +28,7 @@ public interface IPaintable { * If the block is painted. */ default boolean isPainted() { - return getPaintingColor() != -1 && getPaintingColor() != getDefaultPaintingColor(); + return getPaintingColor() != UNPAINTED_COLOR && getPaintingColor() != getDefaultPaintingColor(); } /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/ITickSubscription.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/ITickSubscription.java index 2b0c15991af..3f235559f22 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/blockentity/ITickSubscription.java +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/ITickSubscription.java @@ -6,11 +6,6 @@ import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/3/12 - * @implNote ITickSubscription - */ public interface ITickSubscription { /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java index 8c1642a6667..ebbac1d88ff 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java @@ -13,13 +13,22 @@ import com.gregtechceu.gtceu.api.misc.EnergyContainerList; import com.gregtechceu.gtceu.api.misc.EnergyInfoProviderList; import com.gregtechceu.gtceu.api.misc.LaserContainerList; -import com.gregtechceu.gtceu.client.renderer.GTRendererProvider; +import com.gregtechceu.gtceu.client.model.IBlockEntityRendererBakedModel; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.gregtechceu.gtceu.common.datafixers.TagFixer; -import com.lowdragmc.lowdraglib.client.renderer.IRenderer; import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; +import com.lowdragmc.lowdraglib.syncdata.IManaged; +import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; +import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; +import com.lowdragmc.lowdraglib.syncdata.annotation.RequireRerender; +import com.lowdragmc.lowdraglib.syncdata.field.FieldManagedStorage; +import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; import com.lowdragmc.lowdraglib.syncdata.managed.MultiManagedStorage; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.block.BlockRenderDispatcher; +import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; @@ -44,35 +53,49 @@ import java.util.*; -/** - * @author KilaBash - * @date 2023/2/17 - * @implNote MetaMachineBlockEntity - */ -public class MetaMachineBlockEntity extends BlockEntity implements IMachineBlockEntity { +public class MetaMachineBlockEntity extends BlockEntity implements IMachineBlockEntity, IManaged { + + protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( + MetaMachineBlockEntity.class); public final MultiManagedStorage managedStorage = new MultiManagedStorage(); @Getter + private final FieldManagedStorage syncStorage = new FieldManagedStorage(this); + @Getter public final MetaMachine metaMachine; + @Getter + @Persisted + @DescSynced + @RequireRerender + private MachineRenderState renderState; private final long offset = GTValues.RNG.nextInt(20); - protected MetaMachineBlockEntity(BlockEntityType type, BlockPos pos, BlockState blockState) { + public MetaMachineBlockEntity(BlockEntityType type, BlockPos pos, BlockState blockState) { super(type, pos, blockState); + this.renderState = getDefinition().defaultRenderState(); this.metaMachine = getDefinition().createMetaMachine(this); - } - public static MetaMachineBlockEntity createBlockEntity(BlockEntityType type, BlockPos pos, - BlockState blockState) { - return new MetaMachineBlockEntity(type, pos, blockState); + this.getRootStorage().attach(getSyncStorage()); } - public static void onBlockEntityRegister(BlockEntityType metaMachineBlockEntityBlockEntityType) {} - @Override public MultiManagedStorage getRootStorage() { return managedStorage; } + @Override + public ManagedFieldHolder getFieldHolder() { + return MANAGED_FIELD_HOLDER; + } + + @Override + public void onChanged() { + var level = getLevel(); + if (level != null && !level.isClientSide && level.getServer() != null) { + level.getServer().execute(this::setChanged); + } + } + @Override public boolean triggerEvent(int id, int para) { if (id == 1) { // chunk re render @@ -84,6 +107,12 @@ public boolean triggerEvent(int id, int para) { return false; } + @Override + public void setRenderState(MachineRenderState state) { + this.renderState = state; + scheduleRenderUpdate(); + } + @Override public long getOffset() { return offset; @@ -96,8 +125,8 @@ public void setRemoved() { } @Override - public void clearRemoved() { - super.clearRemoved(); + public void onLoad() { + super.onLoad(); metaMachine.onLoad(); } @@ -108,15 +137,15 @@ public boolean shouldRenderGrid(Player player, BlockPos pos, BlockState state, I } @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { return metaMachine.sideTips(player, pos, state, toolTypes, side); } @Override public @NotNull LazyOptional getCapability(@NotNull Capability cap, @Nullable Direction side) { var result = getCapability(getMetaMachine(), cap, side); - return result == null ? super.getCapability(cap, side) : result; + return result.isPresent() ? result : super.getCapability(cap, side); } @Override @@ -126,7 +155,6 @@ public void setChanged() { } } - @Nullable public static LazyOptional getCapability(MetaMachine machine, @NotNull Capability cap, @Nullable Direction side) { if (cap == GTCapability.CAPABILITY_COVERABLE) { @@ -186,28 +214,29 @@ public static LazyOptional getCapability(MetaMachine machine, @NotNull Ca return GTCapability.CAPABILITY_MAINTENANCE_MACHINE.orEmpty(cap, LazyOptional.of(() -> maintenanceMachine)); } + } else if (cap == GTCapability.CAPABILITY_TURBINE_MACHINE) { + if (machine instanceof ITurbineMachine turbineMachine) { + return GTCapability.CAPABILITY_TURBINE_MACHINE.orEmpty(cap, + LazyOptional.of(() -> turbineMachine)); + } } else if (cap == ForgeCapabilities.ITEM_HANDLER) { var handler = machine.getItemHandlerCap(side, true); if (handler != null) { - return ForgeCapabilities.ITEM_HANDLER.orEmpty(cap, - LazyOptional.of(() -> handler)); + return ForgeCapabilities.ITEM_HANDLER.orEmpty(cap, LazyOptional.of(() -> handler)); } } else if (cap == ForgeCapabilities.FLUID_HANDLER) { var handler = machine.getFluidHandlerCap(side, true); if (handler != null) { - return ForgeCapabilities.FLUID_HANDLER.orEmpty(cap, - LazyOptional.of(() -> handler)); + return ForgeCapabilities.FLUID_HANDLER.orEmpty(cap, LazyOptional.of(() -> handler)); } } else if (cap == ForgeCapabilities.ENERGY) { if (machine instanceof IEnergyStorage energyStorage) { - return ForgeCapabilities.ENERGY.orEmpty(cap, - LazyOptional.of(() -> energyStorage)); + return ForgeCapabilities.ENERGY.orEmpty(cap, LazyOptional.of(() -> energyStorage)); } var list = getCapabilitiesFromTraits(machine.getTraits(), side, IEnergyStorage.class); if (!list.isEmpty()) { // TODO wrap list in the future - return ForgeCapabilities.ENERGY.orEmpty(cap, - LazyOptional.of(() -> list.get(0))); + return ForgeCapabilities.ENERGY.orEmpty(cap, LazyOptional.of(() -> list.get(0))); } } else if (cap == GTCapability.CAPABILITY_LASER) { if (machine instanceof ILaserContainer energyContainer) { @@ -235,20 +264,23 @@ public static LazyOptional getCapability(MetaMachine machine, @NotNull Ca if (!list.isEmpty()) { return GTCapability.CAPABILITY_DATA_ACCESS.orEmpty(cap, LazyOptional.of(() -> list.get(0))); } + } else if (cap == GTCapability.CAPABILITY_MONITOR_COMPONENT) { + if (machine instanceof IMonitorComponent monitorComponent) { + return GTCapability.CAPABILITY_MONITOR_COMPONENT.orEmpty(cap, LazyOptional.of(() -> monitorComponent)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, IMonitorComponent.class); + if (!list.isEmpty()) { + return GTCapability.CAPABILITY_MONITOR_COMPONENT.orEmpty(cap, LazyOptional.of(() -> list.get(0))); + } } if (GTCEu.Mods.isAE2Loaded()) { - if (cap == Capabilities.IN_WORLD_GRID_NODE_HOST) { - if (machine instanceof IInWorldGridNodeHost nodeHost) { - return Capabilities.IN_WORLD_GRID_NODE_HOST.orEmpty(cap, LazyOptional.of(() -> nodeHost)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, IInWorldGridNodeHost.class); - if (!list.isEmpty()) { - // TODO wrap list in the future (or not.) - return Capabilities.IN_WORLD_GRID_NODE_HOST.orEmpty(cap, LazyOptional.of(() -> list.get(0))); - } + LazyOptional opt = AE2CallWrapper.getGridNodeHostCapability(cap, machine, side); + if (opt.isPresent()) { + // noinspection unchecked + return (LazyOptional) opt; } } - return null; + return LazyOptional.empty(); } public static List getCapabilitiesFromTraits(List traits, Direction accessSide, @@ -267,19 +299,17 @@ public static List getCapabilitiesFromTraits(List traits, D * Why, Forge, Why? * Why must you make me add a method for no good reason? */ + @SuppressWarnings("unchecked") @OnlyIn(Dist.CLIENT) @Override public AABB getRenderBoundingBox() { - GTRendererProvider instance = GTRendererProvider.getInstance(); - if (instance != null) { - IRenderer renderer = instance.getRenderer(this); - if (renderer != null) { - if (renderer.getViewDistance() == 64 /* the default */) { - return new AABB(worldPosition.offset(-1, 0, -1), worldPosition.offset(2, 2, 2)); - } + BlockRenderDispatcher blockRenderDispatcher = Minecraft.getInstance().getBlockRenderer(); + BakedModel model = blockRenderDispatcher.getBlockModel(this.getBlockState()); - int viewDistHalf = renderer.getViewDistance() / 2; - return new AABB(worldPosition).inflate(viewDistHalf); + if (model instanceof IBlockEntityRendererBakedModel modelWithBER) { + if (modelWithBER.getBlockEntityType() == this.getType()) { + return ((IBlockEntityRendererBakedModel) modelWithBER) + .getRenderBoundingBox(this); } } return new AABB(worldPosition.offset(-1, 0, -1), worldPosition.offset(2, 2, 2)); @@ -290,4 +320,22 @@ public void load(CompoundTag tag) { TagFixer.fixFluidTags(tag); super.load(tag); } + + public static class AE2CallWrapper { + + public static LazyOptional getGridNodeHostCapability(Capability cap, MetaMachine machine, + Direction side) { + if (cap == Capabilities.IN_WORLD_GRID_NODE_HOST) { + if (machine instanceof IInWorldGridNodeHost nodeHost) { + return Capabilities.IN_WORLD_GRID_NODE_HOST.orEmpty(cap, LazyOptional.of(() -> nodeHost)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, IInWorldGridNodeHost.class); + if (!list.isEmpty()) { + // TODO wrap list in the future (or not.) + return Capabilities.IN_WORLD_GRID_NODE_HOST.orEmpty(cap, LazyOptional.of(() -> list.get(0))); + } + } + return LazyOptional.empty(); + } + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java index 9f87a6a092a..23f88ee3fd6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.api.blockentity; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.block.BlockProperties; import com.gregtechceu.gtceu.api.block.MaterialPipeBlock; import com.gregtechceu.gtceu.api.capability.ICoverable; import com.gregtechceu.gtceu.api.capability.IToolable; @@ -34,7 +33,6 @@ import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; -import net.minecraft.server.TickTask; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; @@ -59,11 +57,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/28 - * @implNote PipeBlockEntity - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public abstract class PipeBlockEntity & IPipeType, NodeDataType> @@ -197,15 +190,6 @@ public TickableSubscription subscribeServerTick(Runnable runnable) { if (!isRemote()) { var subscription = new TickableSubscription(runnable); waitingToAdd.add(subscription); - var blockState = getBlockState(); - if (!blockState.getValue(BlockProperties.SERVER_TICK)) { - if (getLevel() instanceof ServerLevel serverLevel) { - blockState = blockState.setValue(BlockProperties.SERVER_TICK, true); - setBlockState(blockState); - serverLevel.getServer().tell(new TickTask(0, () -> serverLevel.setBlockAndUpdate(getBlockPos(), - getBlockState().setValue(BlockProperties.SERVER_TICK, true)))); - } - } return subscription; } return null; @@ -222,8 +206,7 @@ public final void serverTick() { serverTicks.addAll(waitingToAdd); waitingToAdd.clear(); } - var iter = serverTicks.iterator(); - while (iter.hasNext()) { + for (var iter = serverTicks.iterator(); iter.hasNext();) { var tickable = iter.next(); if (tickable.isStillSubscribed()) { tickable.run(); @@ -232,9 +215,6 @@ public final void serverTick() { iter.remove(); } } - if (serverTicks.isEmpty() && waitingToAdd.isEmpty() && !this.isRemoved()) { - getLevel().setBlockAndUpdate(getBlockPos(), getBlockState().setValue(BlockProperties.SERVER_TICK, false)); - } } ////////////////////////////////////// @@ -367,8 +347,8 @@ public ResourceTexture getPipeTexture(boolean isBlock) { } @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(getPipeTuneTool())) { if (player.isShiftKeyDown() && this.canHaveBlockedFaces()) { return getPipeTexture(isBlocked(side)); @@ -419,22 +399,19 @@ public Pair onToolClick(Set toolTypes boolean isOpen = this.isConnected(gridSide); this.setConnection(gridSide, !isOpen, false); } - playerIn.swing(hand); - return Pair.of(getPipeTuneTool(), InteractionResult.CONSUME); + return Pair.of(getPipeTuneTool(), InteractionResult.sidedSuccess(playerIn.level().isClientSide)); } else if (toolTypes.contains(GTToolType.CROWBAR)) { if (coverBehavior != null) { if (!isRemote()) { getCoverContainer().removeCover(gridSide, playerIn); - playerIn.swing(hand); - return Pair.of(GTToolType.CROWBAR, InteractionResult.CONSUME); + return Pair.of(GTToolType.CROWBAR, InteractionResult.sidedSuccess(playerIn.level().isClientSide)); } } else { if (!frameMaterial.isNull()) { Block.popResource(getLevel(), getPipePos(), GTMaterialBlocks.MATERIAL_BLOCKS.get(TagPrefix.frameGt, frameMaterial).asStack()); frameMaterial = GTMaterials.NULL; - playerIn.swing(hand); - return Pair.of(GTToolType.CROWBAR, InteractionResult.CONSUME); + return Pair.of(GTToolType.CROWBAR, InteractionResult.sidedSuccess(playerIn.level().isClientSide)); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/GTCapabilityHelper.java b/src/main/java/com/gregtechceu/gtceu/api/capability/GTCapabilityHelper.java index 4cea0f02cb7..49ba637ac4d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/GTCapabilityHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/GTCapabilityHelper.java @@ -12,15 +12,12 @@ import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ForgeCapabilities; import net.minecraftforge.energy.IEnergyStorage; +import net.minecraftforge.fluids.capability.IFluidHandler; +import net.minecraftforge.items.IItemHandler; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/2/18 - * @implNote EnergyContainerHelper - */ public class GTCapabilityHelper { @Nullable @@ -33,6 +30,16 @@ public static IEnergyStorage getForgeEnergyItem(ItemStack itemStack) { return itemStack.getCapability(ForgeCapabilities.ENERGY).resolve().orElse(null); } + @Nullable + public static IItemHandler getItemHandler(Level level, BlockPos pos, @Nullable Direction side) { + return getBlockEntityCapability(ForgeCapabilities.ITEM_HANDLER, level, pos, side); + } + + @Nullable + public static IFluidHandler getFluidHandler(Level level, BlockPos pos, @Nullable Direction side) { + return getBlockEntityCapability(ForgeCapabilities.FLUID_HANDLER, level, pos, side); + } + @Nullable public static IEnergyContainer getEnergyContainer(Level level, BlockPos pos, @Nullable Direction side) { return getBlockEntityCapability(GTCapability.CAPABILITY_ENERGY_CONTAINER, level, pos, side); @@ -110,6 +117,11 @@ public static IHazardParticleContainer getHazardContainer(Level level, BlockPos return getBlockEntityCapability(GTCapability.CAPABILITY_HAZARD_CONTAINER, level, pos, side); } + @Nullable + public static IMonitorComponent getMonitorComponent(Level level, BlockPos pos, @Nullable Direction side) { + return getBlockEntityCapability(GTCapability.CAPABILITY_MONITOR_COMPONENT, level, pos, side); + } + @Nullable private static T getBlockEntityCapability(Capability capability, Level level, BlockPos pos, @Nullable Direction side) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/IControllable.java b/src/main/java/com/gregtechceu/gtceu/api/capability/IControllable.java index 0fc4de3a25c..7effe1aa684 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/IControllable.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/IControllable.java @@ -1,7 +1,13 @@ package com.gregtechceu.gtceu.api.capability; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; + +import net.minecraft.world.level.block.state.properties.BooleanProperty; + public interface IControllable { + BooleanProperty WORKING_ENABLED_PROPERTY = GTMachineModelProperties.IS_WORKING_ENABLED; + /** * @return true if the controllable is allowed to work */ diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/ICoverable.java b/src/main/java/com/gregtechceu/gtceu/api/capability/ICoverable.java index eaa8de82d9a..92dd3520740 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/ICoverable.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/ICoverable.java @@ -212,6 +212,14 @@ static Direction rayTraceCoverableSide(ICoverable coverable, Player player) { return traceCoverSide(rayTrace); } + default boolean hasDynamicCovers() { + for (Direction face : GTUtil.DIRECTIONS) { + CoverBehavior cover = this.getCoverAtSide(face); + if (cover != null && cover.getDynamicRenderer().get() != null) return true; + } + return false; + } + class PrimaryBoxData { public final boolean usePlacementGrid; diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/IEnergyContainer.java b/src/main/java/com/gregtechceu/gtceu/api/capability/IEnergyContainer.java index b506e654400..687a2149909 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/IEnergyContainer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/IEnergyContainer.java @@ -113,6 +113,7 @@ default long getOutputVoltage() { /** * @return input eu/s */ + @Override default long getInputPerSec() { return 0L; } @@ -120,6 +121,7 @@ default long getInputPerSec() { /** * @return output eu/s */ + @Override default long getOutputPerSec() { return 0L; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/IEnergyInfoProvider.java b/src/main/java/com/gregtechceu/gtceu/api/capability/IEnergyInfoProvider.java index 535082ee550..c541187aca1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/IEnergyInfoProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/IEnergyInfoProvider.java @@ -8,6 +8,10 @@ record EnergyInfo(BigInteger capacity, BigInteger stored) {} EnergyInfo getEnergyInfo(); + long getInputPerSec(); + + long getOutputPerSec(); + boolean supportsBigIntEnergyValues(); /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/IHPCAComponentHatch.java b/src/main/java/com/gregtechceu/gtceu/api/capability/IHPCAComponentHatch.java index 51ea1429ee0..42dc92b49ef 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/IHPCAComponentHatch.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/IHPCAComponentHatch.java @@ -1,9 +1,15 @@ package com.gregtechceu.gtceu.api.capability; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; + import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; +import net.minecraft.world.level.block.state.properties.BooleanProperty; + public interface IHPCAComponentHatch { + BooleanProperty HPCA_PART_DAMAGED_PROPERTY = GTMachineModelProperties.IS_HPCA_PART_DAMAGED; + /** * How much EU/t this component needs for the multi to just be idle. * Used in 2 ways: diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/IMonitorComponent.java b/src/main/java/com/gregtechceu/gtceu/api/capability/IMonitorComponent.java new file mode 100644 index 00000000000..aa9d1cb61fe --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/IMonitorComponent.java @@ -0,0 +1,23 @@ +package com.gregtechceu.gtceu.api.capability; + +import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; + +import net.minecraft.core.BlockPos; +import net.minecraftforge.items.IItemHandler; + +import org.jetbrains.annotations.Nullable; + +public interface IMonitorComponent { + + default boolean isMonitor() { + return false; + } + + IGuiTexture getComponentIcon(); + + BlockPos getPos(); + + default @Nullable IItemHandler getDataItems() { + return null; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/IToolable.java b/src/main/java/com/gregtechceu/gtceu/api/capability/IToolable.java index 0abb344c13e..338ea1b2164 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/IToolable.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/IToolable.java @@ -12,11 +12,6 @@ import java.util.Set; -/** - * @author KilaBash - * @date 2023/2/25 - * @implNote IToolable - */ public interface IToolable { /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/ITurbineMachine.java b/src/main/java/com/gregtechceu/gtceu/api/capability/ITurbineMachine.java new file mode 100644 index 00000000000..c1fe3cfa157 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/ITurbineMachine.java @@ -0,0 +1,42 @@ +package com.gregtechceu.gtceu.api.capability; + +/** + * For the large gas turbine / large plasma turbine + */ +public interface ITurbineMachine extends IWorkable { + + /** + * @return true if the machine has a roter installed + */ + boolean hasRotor(); + + /** + * @return the current rotor speed or 0 when no rotor is installed + */ + int getRotorSpeed(); + + /** + * @return the maximum rotor speed or 0 when no rotor is installed + */ + int getMaxRotorHolderSpeed(); + + /** + * @return the total efficiency the rotor holder and rotor provide in % or -1 when no rotor is installed + */ + int getTotalEfficiency(); + + /** + * @return the current energy production + */ + long getCurrentProduction(); + + /** + * @return the maximum energy production + */ + long getOverclockVoltage(); + + /** + * @return the rotor durability in % or -1 when no rotor is installed + */ + int getRotorDurabilityPercent(); +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/IWorkable.java b/src/main/java/com/gregtechceu/gtceu/api/capability/IWorkable.java index 72a2f631477..3db349c2b12 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/IWorkable.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/IWorkable.java @@ -1,10 +1,16 @@ package com.gregtechceu.gtceu.api.capability; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; + +import net.minecraft.world.level.block.state.properties.BooleanProperty; + /** * For machines which have progress and can work */ public interface IWorkable extends IControllable { + BooleanProperty ACTIVE_PROPERTY = GTMachineModelProperties.IS_ACTIVE; + /** * @return current progress of machine */ diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/forge/GTCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/forge/GTCapability.java index 89535cd5ca2..7be5f37b866 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/forge/GTCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/forge/GTCapability.java @@ -9,11 +9,6 @@ import net.minecraftforge.common.capabilities.CapabilityToken; import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent; -/** - * @author KilaBash - * @date 2023/2/18 - * @implNote GTCapabilities - */ public class GTCapability { public static final Capability CAPABILITY_ENERGY_CONTAINER = CapabilityManager @@ -33,6 +28,8 @@ public class GTCapability { .get(new CapabilityToken<>() {}); public static final Capability CAPABILITY_MAINTENANCE_MACHINE = CapabilityManager .get(new CapabilityToken<>() {}); + public static final Capability CAPABILITY_TURBINE_MACHINE = CapabilityManager + .get(new CapabilityToken<>() {}); public static final Capability CAPABILITY_LASER = CapabilityManager .get(new CapabilityToken<>() {}); public static final Capability CAPABILITY_COMPUTATION_PROVIDER = CapabilityManager @@ -41,6 +38,8 @@ public class GTCapability { .get(new CapabilityToken<>() {}); public static final Capability CAPABILITY_HAZARD_CONTAINER = CapabilityManager .get(new CapabilityToken<>() {}); + public static final Capability CAPABILITY_MONITOR_COMPONENT = CapabilityManager + .get(new CapabilityToken<>() {}); public static final Capability CAPABILITY_MEDICAL_CONDITION_TRACKER = CapabilityManager .get(new CapabilityToken<>() {}); @@ -56,6 +55,7 @@ public static void register(RegisterCapabilitiesEvent event) { event.register(IElectricItem.class); event.register(ICleanroomReceiver.class); event.register(IMaintenanceMachine.class); + event.register(ITurbineMachine.class); event.register(ILaserContainer.class); event.register(IOpticalComputationProvider.class); event.register(IDataAccessHatch.class); diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/CWURecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/CWURecipeCapability.java index 669f7f5a4bd..50214932fb7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/CWURecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/CWURecipeCapability.java @@ -13,11 +13,6 @@ import java.util.List; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote ItemRecipeCapability - */ public class CWURecipeCapability extends RecipeCapability { public final static CWURecipeCapability CAP = new CWURecipeCapability(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/EURecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/EURecipeCapability.java index 69ae5f1a923..c518228571c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/EURecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/EURecipeCapability.java @@ -3,77 +3,126 @@ import com.gregtechceu.gtceu.api.machine.feature.IOverclockMachine; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; import com.gregtechceu.gtceu.api.recipe.GTRecipe; -import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; -import com.gregtechceu.gtceu.api.recipe.content.SerializerLong; +import com.gregtechceu.gtceu.api.recipe.content.SerializerEnergyStack; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; +import com.gregtechceu.gtceu.api.recipe.modifier.ParallelLogic; import com.gregtechceu.gtceu.utils.GTMath; -import java.util.Collection; +import it.unimi.dsi.fastutil.longs.LongList; + import java.util.List; import java.util.Map; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote ItemRecipeCapability - */ -public class EURecipeCapability extends RecipeCapability { +public class EURecipeCapability extends RecipeCapability { public final static EURecipeCapability CAP = new EURecipeCapability(); protected EURecipeCapability() { - super("eu", 0xFFFFFF00, false, 2, SerializerLong.INSTANCE); + super("eu", 0xFFFFFF00, false, 2, SerializerEnergyStack.INSTANCE); } @Override - public Long copyInner(Long content) { + public EnergyStack copyInner(EnergyStack content) { return content; } @Override - public Long copyWithModifier(Long content, ContentModifier modifier) { - return modifier.apply(content); - } - - @Override - public List compressIngredients(Collection ingredients) { - return List.of(ingredients.stream().map(Long.class::cast).reduce(0L, Long::sum)); + public EnergyStack copyWithModifier(EnergyStack content, ContentModifier modifier) { + return content.withVoltage(modifier.apply(content.voltage())); } @Override - public int limitParallel(GTRecipe recipe, IRecipeCapabilityHolder holder, int multiplier) { - if (holder instanceof ICustomParallel p) return p.limitParallel(recipe, multiplier); - - long maxVoltage = Long.MAX_VALUE; - if (holder instanceof IOverclockMachine overclockMachine) { - maxVoltage = overclockMachine.getOverclockVoltage(); - } else if (holder instanceof ITieredMachine tieredMachine) { - maxVoltage = tieredMachine.getMaxVoltage(); + public int limitMaxParallelByOutput(IRecipeCapabilityHolder holder, GTRecipe recipe, int multiplier, boolean tick) { + if (holder instanceof ICustomParallel p) return p.limitEUParallel(recipe, multiplier, tick); + if (tick) { + long recipeEUt = recipe.getOutputEUt().getTotalEU(); + if (recipeEUt == 0) return multiplier; + + long maxVoltage = Long.MAX_VALUE; + if (holder instanceof IOverclockMachine overclockMachine) { + maxVoltage = overclockMachine.getOverclockVoltage(); + } else if (holder instanceof ITieredMachine tieredMachine) { + maxVoltage = tieredMachine.getMaxVoltage(); + } + + return Math.min(multiplier, Math.abs(GTMath.saturatedCast(maxVoltage / recipeEUt))); + } else { + var outputs = recipe.getOutputContents(this); + if (outputs.isEmpty()) return multiplier; + + if (!holder.hasCapabilityProxies()) return 0; + var handlers = holder.getCapabilitiesFlat(IO.OUT, this); + if (handlers.isEmpty()) return 0; + + int minMultiplier = 0; + int maxMultiplier = multiplier; + + long totalEU = 0L; + for (var content : outputs) totalEU += of(content.content).getTotalEU(); + if (totalEU != 0 && multiplier > Long.MAX_VALUE / totalEU) { + maxMultiplier = multiplier = GTMath.saturatedCast(Long.MAX_VALUE / totalEU); + } + + while (minMultiplier != maxMultiplier) { + List eu = LongList.of(totalEU * multiplier); + for (var handler : handlers) { + // noinspection unchecked + eu = (List) handler.handleRecipe(IO.OUT, recipe, eu, true); + if (eu == null) break; + } + int[] bin = ParallelLogic.adjustMultiplier(eu == null, minMultiplier, multiplier, maxMultiplier); + minMultiplier = bin[0]; + multiplier = bin[1]; + maxMultiplier = bin[2]; + } + + return multiplier; } - - long recipeEUt = RecipeHelper.getOutputEUt(recipe); - if (recipeEUt == 0) { - return Integer.MAX_VALUE; - } - return Math.abs(GTMath.saturatedCast(maxVoltage / recipeEUt)); } @Override - public int getMaxParallelRatio(IRecipeCapabilityHolder holder, GTRecipe recipe, int parallelAmount) { - long maxVoltage = Long.MAX_VALUE; - if (holder instanceof IOverclockMachine overclockMachine) { - maxVoltage = overclockMachine.getOverclockVoltage(); - } else if (holder instanceof ITieredMachine tieredMachine) { - maxVoltage = tieredMachine.getMaxVoltage(); - } - - long recipeEUt = RecipeHelper.getInputEUt(recipe); - if (recipeEUt == 0) { - return Integer.MAX_VALUE; + public int getMaxParallelByInput(IRecipeCapabilityHolder holder, GTRecipe recipe, int limit, boolean tick) { + if (tick) { + long maxVoltage = Long.MAX_VALUE; + if (holder instanceof IOverclockMachine overclockMachine) { + maxVoltage = overclockMachine.getOverclockVoltage(); + } else if (holder instanceof ITieredMachine tieredMachine) { + maxVoltage = tieredMachine.getMaxVoltage(); + } + + long recipeEUt = recipe.getInputEUt().getTotalEU(); + if (recipeEUt == 0) return limit; + return Math.min(limit, Math.abs(GTMath.saturatedCast(maxVoltage / recipeEUt))); + } else { + if (!holder.hasCapabilityProxies()) return 0; + var inputs = recipe.getInputContents(this); + if (inputs.isEmpty()) return limit; + + long nonConsumable = 0; + long consumable = 0; + for (Content content : inputs) { + EnergyStack s = of(content.content); + if (content.chance == 0) nonConsumable += s.getTotalEU(); + else consumable += s.getTotalEU(); + } + + if (nonConsumable == 0 && consumable == 0) return limit; + + long sum = 0; + for (var handler : holder.getCapabilitiesFlat(IO.IN, this)) { + for (var content : handler.getContents()) { + if (content instanceof EnergyStack es) sum += es.getTotalEU(); + else if (content instanceof Long l) sum += l; + } + } + + if (sum < nonConsumable) return 0; + sum -= nonConsumable; + return Math.min(GTMath.saturatedCast(sum / consumable), limit); } - return Math.abs(GTMath.saturatedCast(maxVoltage / recipeEUt)); } /** @@ -82,7 +131,7 @@ public int getMaxParallelRatio(IRecipeCapabilityHolder holder, GTRecipe recipe, * @param eu EU/t value to put in the Content * @return Singleton list of a new Content with the given EU value */ - public static List makeEUContent(Long eu) { + public static List makeEUContent(EnergyStack eu) { return List.of( new Content(eu, ChanceLogic.getMaxChancedValue(), ChanceLogic.getMaxChancedValue(), 0)); } @@ -93,7 +142,7 @@ public static List makeEUContent(Long eu) { * @param contents content map * @param eu EU value to put inside content map */ - public static void putEUContent(Map, List> contents, long eu) { + public static void putEUContent(Map, List> contents, EnergyStack eu) { contents.put(EURecipeCapability.CAP, makeEUContent(eu)); } @@ -101,11 +150,12 @@ public interface ICustomParallel { /** * Custom impl of the parallel limiter used by ParallelLogic to limit by outputs - * + * * @param recipe Recipe * @param multiplier Initial multiplier + * @param tick Tick or not * @return Limited multiplier */ - int limitParallel(GTRecipe recipe, int multiplier); + int limitEUParallel(GTRecipe recipe, int multiplier, boolean tick); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java index de0732af41a..795e89883e8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java @@ -1,43 +1,45 @@ package com.gregtechceu.gtceu.api.capability.recipe; import com.gregtechceu.gtceu.api.gui.widget.TankWidget; -import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroup; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroupDistinctness; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; import com.gregtechceu.gtceu.api.recipe.content.SerializerFluidIngredient; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; -import com.gregtechceu.gtceu.api.recipe.lookup.AbstractMapIngredient; -import com.gregtechceu.gtceu.api.recipe.lookup.MapFluidIngredient; -import com.gregtechceu.gtceu.api.recipe.lookup.MapFluidTagIngredient; +import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderFluidIngredient; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.fluid.*; import com.gregtechceu.gtceu.api.recipe.modifier.ParallelLogic; import com.gregtechceu.gtceu.api.recipe.ui.GTRecipeTypeUI; -import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; import com.gregtechceu.gtceu.client.TooltipsHandler; +import com.gregtechceu.gtceu.common.valueprovider.AddedFloat; +import com.gregtechceu.gtceu.common.valueprovider.CastedFloat; +import com.gregtechceu.gtceu.common.valueprovider.FlooredInt; +import com.gregtechceu.gtceu.common.valueprovider.MultipliedFloat; import com.gregtechceu.gtceu.integration.xei.entry.fluid.FluidEntryList; import com.gregtechceu.gtceu.integration.xei.entry.fluid.FluidStackList; import com.gregtechceu.gtceu.integration.xei.entry.fluid.FluidTagList; import com.gregtechceu.gtceu.integration.xei.handlers.fluid.CycleFluidEntryHandler; import com.gregtechceu.gtceu.integration.xei.widgets.GTRecipeWidget; -import com.gregtechceu.gtceu.utils.FluidKey; -import com.gregtechceu.gtceu.utils.GTHashMaps; -import com.gregtechceu.gtceu.utils.OverlayedTankHandler; -import com.gregtechceu.gtceu.utils.OverlayingFluidStorage; import com.lowdragmc.lowdraglib.gui.texture.ProgressTexture; import com.lowdragmc.lowdraglib.gui.widget.Widget; import com.lowdragmc.lowdraglib.jei.IngredientIO; +import net.minecraft.ChatFormatting; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; +import net.minecraft.util.valueproviders.ConstantFloat; +import net.minecraft.util.valueproviders.IntProvider; import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.level.material.Fluid; import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.capability.IFluidHandler; -import it.unimi.dsi.fastutil.objects.Object2IntLinkedOpenHashMap; -import it.unimi.dsi.fastutil.objects.Object2IntMap; -import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import it.unimi.dsi.fastutil.objects.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.UnknownNullability; @@ -45,11 +47,8 @@ import java.util.*; import java.util.stream.Collectors; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote FluidRecipeCapability - */ +import static com.gregtechceu.gtceu.api.recipe.RecipeHelper.addToRecipeHandlerMap; + public class FluidRecipeCapability extends RecipeCapability { public final static FluidRecipeCapability CAP = new FluidRecipeCapability(); @@ -66,36 +65,20 @@ public FluidIngredient copyInner(FluidIngredient content) { @Override public FluidIngredient copyWithModifier(FluidIngredient content, ContentModifier modifier) { if (content.isEmpty()) return content.copy(); + if (content instanceof IntProviderFluidIngredient provider) { + return IntProviderFluidIngredient.of(provider.getInner(), + new FlooredInt( + new AddedFloat( + new MultipliedFloat( + new CastedFloat(provider.getCountProvider()), + ConstantFloat.of((float) modifier.multiplier())), + ConstantFloat.of((float) modifier.addition())))); + } FluidIngredient copy = content.copy(); copy.setAmount(modifier.apply(copy.getAmount())); return copy; } - @Override - public List convertToMapIngredient(Object obj) { - List ingredients = new ObjectArrayList<>(1); - if (obj instanceof FluidIngredient ingredient) { - for (FluidIngredient.Value value : ingredient.values) { - if (value instanceof FluidIngredient.TagValue tagValue) { - ingredients.add(new MapFluidTagIngredient(tagValue.getTag())); - } else { - Collection fluids = value.getFluids(); - for (Fluid fluid : fluids) { - ingredients.add(new MapFluidIngredient( - new FluidStack(fluid, ingredient.getAmount(), ingredient.getNbt()))); - } - } - } - } else if (obj instanceof FluidStack stack) { - ingredients.add(new MapFluidIngredient(stack)); - // noinspection deprecation - stack.getFluid().builtInRegistryHolder().tags() - .forEach(tag -> ingredients.add(new MapFluidTagIngredient(tag))); - } - - return ingredients; - } - @Override public List compressIngredients(Collection ingredients) { List list = new ObjectArrayList<>(ingredients.size()); @@ -139,160 +122,213 @@ public List compressIngredients(Collection ingredients) { return list; } + @Override + public @Nullable List getDefaultMapIngredient(Object object) { + if (object instanceof FluidIngredient ingredient) { + return FluidStackMapIngredient.from(ingredient); + } else { + return Collections.emptyList(); + } + } + @Override public boolean isRecipeSearchFilter() { return true; } @Override - public int limitParallel(GTRecipe recipe, IRecipeCapabilityHolder holder, int multiplier) { - if (holder instanceof ICustomParallel p) return p.limitParallel(recipe, multiplier); + public int limitMaxParallelByOutput(IRecipeCapabilityHolder holder, GTRecipe recipe, int multiplier, boolean tick) { + if (holder instanceof ICustomParallel p) return p.limitFluidParallel(recipe, multiplier, tick); + var outputContents = (tick ? recipe.tickOutputs : recipe.outputs).get(this); + if (outputContents == null || outputContents.isEmpty()) return multiplier; + + if (!holder.hasCapabilityProxies()) return 0; + + var handlers = holder.getCapabilitiesFlat(IO.OUT, this); + if (handlers.isEmpty()) return 0; int minMultiplier = 0; int maxMultiplier = multiplier; - OverlayedTankHandler overlayedFluidHandler = new OverlayedTankHandler( - holder.getCapabilitiesFlat(IO.OUT, FluidRecipeCapability.CAP).stream() - .filter(NotifiableFluidTank.class::isInstance) - .map(NotifiableFluidTank.class::cast) - .toList()); - - List recipeOutputs = recipe.getOutputContents(FluidRecipeCapability.CAP) - .stream() - .map(content -> FluidRecipeCapability.CAP.of(content.getContent())) - .filter(ingredient -> !ingredient.isEmpty()) - .map(ingredient -> ingredient.getStacks()[0]) - .toList(); + int maxAmount = 0; + List ingredients = new ArrayList<>(outputContents.size()); + for (var content : outputContents) { + var ing = this.of(content.content); + maxAmount = Math.max(maxAmount, ing.getAmount()); + ingredients.add(ing); + } + if (maxAmount == 0) return multiplier; + if (multiplier > Integer.MAX_VALUE / maxAmount) { + maxMultiplier = multiplier = Integer.MAX_VALUE / maxAmount; + } while (minMultiplier != maxMultiplier) { - overlayedFluidHandler.reset(); - - int returnedAmount = 0; - int amountToInsert = 0; - - for (FluidStack fluidStack : recipeOutputs) { - if (fluidStack.getAmount() <= 0) continue; - if (fluidStack.isEmpty()) continue; - // Since multiplier starts at Int.MAX, check here for integer overflow - if (multiplier > Integer.MAX_VALUE / fluidStack.getAmount()) { - amountToInsert = Integer.MAX_VALUE; - } else { - amountToInsert = fluidStack.getAmount() * multiplier; - } - returnedAmount = amountToInsert - overlayedFluidHandler.tryFill(fluidStack, amountToInsert); - if (returnedAmount > 0) { - break; - } + List copied = new ArrayList<>(); + for (final var ing : ingredients) { + copied.add(this.copyWithModifier(ing, ContentModifier.multiplier(multiplier))); } - int[] bin = ParallelLogic.adjustMultiplier(returnedAmount == 0, minMultiplier, multiplier, maxMultiplier); + for (var handler : handlers) { + // noinspection unchecked + copied = (List) handler.handleRecipe(IO.OUT, recipe, copied, true); + if (copied == null) break; + } + int[] bin = ParallelLogic.adjustMultiplier(copied == null, minMultiplier, multiplier, maxMultiplier); minMultiplier = bin[0]; multiplier = bin[1]; maxMultiplier = bin[2]; - } + return multiplier; } @Override - public int getMaxParallelRatio(IRecipeCapabilityHolder holder, GTRecipe recipe, int parallelAmount) { + public int getMaxParallelByInput(IRecipeCapabilityHolder holder, GTRecipe recipe, int limit, boolean tick) { + if (!holder.hasCapabilityProxies()) return 0; + + var inputs = (tick ? recipe.tickInputs : recipe.inputs).get(this); + if (inputs == null || inputs.isEmpty()) return limit; + // Find all the fluids in the combined Fluid Input inventories and create oversized FluidStacks - Map fluidStacks = holder.getCapabilitiesFlat(IO.IN, FluidRecipeCapability.CAP).stream() - .map(container -> container.getContents().stream().filter(FluidStack.class::isInstance) - .map(FluidStack.class::cast).toList()) - .flatMap(container -> GTHashMaps.fromFluidCollection(container).entrySet().stream()) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, Integer::sum, - Object2IntLinkedOpenHashMap::new)); - - int minMultiplier = Integer.MAX_VALUE; - // map the recipe input fluids to account for duplicated fluids, - // so their sum is counted against the total of fluids available in the input - Map fluidCountMap = new HashMap<>(); - Map notConsumableMap = new HashMap<>(); - for (Content content : recipe.getInputContents(FluidRecipeCapability.CAP)) { - FluidIngredient fluidInput = FluidRecipeCapability.CAP.of(content.content); - int fluidAmount = fluidInput.getAmount(); - if (content.chance == 0) { - notConsumableMap.computeIfPresent(fluidInput, - (k, v) -> v + fluidAmount); - notConsumableMap.putIfAbsent(fluidInput, fluidAmount); - } else { - fluidCountMap.computeIfPresent(fluidInput, - (k, v) -> v + fluidAmount); - fluidCountMap.putIfAbsent(fluidInput, fluidAmount); - } + List> inventoryGroups = getInputContents(holder); + if (inventoryGroups.isEmpty()) return 0; + + // map the recipe ingredients to account for duplicated and notConsumable ingredients. + // notConsumable ingredients are not counted towards the max ratio + var nonConsumables = new Object2IntOpenHashMap(); + var consumables = new Object2IntOpenHashMap(); + for (Content content : inputs) { + FluidIngredient ing = of(content.content); + + int amount; + if (ing instanceof IntProviderFluidIngredient provider) amount = provider.getCountProvider().getMaxValue(); + else amount = ing.getAmount(); + + if (content.chance == 0) nonConsumables.addTo(ing, amount); + else consumables.addTo(ing, amount); } - // Iterate through the recipe inputs, excluding the not consumable fluids from the fluid inventory map - for (Map.Entry notConsumableFluid : notConsumableMap.entrySet()) { - int needed = notConsumableFluid.getValue(); - int available = 0; - // For every fluid gathered from the fluid inputs. - for (Map.Entry inputFluid : fluidStacks.entrySet()) { - // Strip the Non-consumable tags here, as FluidKey compares the tags, which causes finding matching - // fluids - // in the input tanks to fail, because there is nothing in those hatches with a non-consumable tag - if (notConsumableFluid.getKey().test( - new FluidStack(inputFluid.getKey().fluid, inputFluid.getValue(), inputFluid.getKey().tag))) { - available = inputFluid.getValue(); - if (available > needed) { - inputFluid.setValue(available - needed); - needed -= available; - break; - } else { - inputFluid.setValue(0); - notConsumableFluid.setValue(needed - available); - needed -= available; + // is this even possible + if (consumables.isEmpty() && nonConsumables.isEmpty()) return limit; + + int maxMultiplier = 0; + // Check every inventory group + for (var group : inventoryGroups) { + // Check for enough NC in inventory group + boolean satisfied = true; + for (var ncEntry : Object2IntMaps.fastIterable(nonConsumables)) { + FluidIngredient ingredient = ncEntry.getKey(); + int needed = ncEntry.getIntValue(); + for (var stackEntry : Object2IntMaps.fastIterable(group)) { + if (ingredient.test(stackEntry.getKey())) { + int count = stackEntry.getIntValue(); + int lesser = Math.min(needed, count); + count -= lesser; + needed -= lesser; + stackEntry.setValue(count); + if (needed == 0) break; } } + if (needed > 0) { + satisfied = false; + break; + } } - // We need to check >= available here because of Non-Consumable inputs with stack size. If there is a NC - // input - // with size 1000, and only 500 in the input, needed will be equal to available, but this situation should - // still fail - // as not all inputs are present - if (needed >= available) { - return 0; + // Not enough NC -> skip this inventory + if (!satisfied) continue; + // Satisfied NC + no consumables -> early return + if (consumables.isEmpty()) return limit; + + int invMultiplier = Integer.MAX_VALUE; + // Loop over all consumables + for (var cEntry : Object2IntMaps.fastIterable(consumables)) { + FluidIngredient ingredient = cEntry.getKey(); + final int needed = cEntry.getIntValue(); + final int maxNeeded = needed * limit; + int available = 0; + // Search stacks in our inventory group, summing them up + for (var stackEntry : Object2IntMaps.fastIterable(group)) { + if (ingredient.test(stackEntry.getKey())) { + available += stackEntry.getIntValue(); + // We can stop if we already have enough for max parallel + if (available >= maxNeeded) break; + } + } + // ratio will equal 0 if available < needed + int ratio = Math.min(limit, available / needed); + invMultiplier = Math.min(invMultiplier, ratio); + // Not enough of this ingredient in this group -> skip inventory + if (ratio == 0) break; } + // We found an inventory group that can do max parallel -> early return + if (invMultiplier == limit) return limit; + maxMultiplier = Math.max(maxMultiplier, invMultiplier); } - // Return the maximum parallel limit here if there are only non-consumed inputs, which are all found in the - // input bus - // At this point, we would have already returned 0 if we were missing any non-consumable inputs, so we can omit - // that check - if (fluidCountMap.isEmpty() && !notConsumableMap.isEmpty()) { - return parallelAmount; + return maxMultiplier; + } + + private static List> getInputContents(IRecipeCapabilityHolder holder) { + var handlerLists = holder.getCapabilitiesForIO(IO.IN); + if (handlerLists.isEmpty()) return Collections.emptyList(); + + Map> handlerGroups = new HashMap<>(); + for (var handler : handlerLists) { + if (!handler.hasCapability(FluidRecipeCapability.CAP)) continue; + addToRecipeHandlerMap(handler.getGroup(), handler, handlerGroups); } - // Iterate through the fluid inputs in the recipe - for (Map.Entry fs : fluidCountMap.entrySet()) { - int needed = fs.getValue(); - int available = 0; - // For every fluid gathered from the fluid inputs. - for (Map.Entry inputFluid : fluidStacks.entrySet()) { - if (fs.getKey().test( - new FluidStack(inputFluid.getKey().fluid, inputFluid.getValue(), inputFluid.getKey().tag))) { - available += inputFluid.getValue(); + List distinctHandlerLists = handlerGroups.getOrDefault( + RecipeHandlerGroupDistinctness.BUS_DISTINCT, + Collections.emptyList()); + List> invs = new ArrayList<>(distinctHandlerLists.size() + 1); + // Handle distinct groups first, adding an inventory based on their contents individually. + for (RecipeHandlerList handlerList : distinctHandlerLists) { + var handlers = handlerList.getCapability(FluidRecipeCapability.CAP); + Object2IntOpenHashMap distinctInv = new Object2IntOpenHashMap<>(); + + for (IRecipeHandler handler : handlers) { + for (var content : handler.getContents()) { + if (content instanceof FluidStack stack && !stack.isEmpty()) { + distinctInv.addTo(stack, stack.getAmount()); + } } } - if (available >= needed) { - int ratio = (int) Math.min(parallelAmount, (float) available / needed); - if (ratio < minMultiplier) { - minMultiplier = ratio; + if (!distinctInv.isEmpty()) invs.add(distinctInv); + } + + // Then handle other groups. The logic of undyed hatches belonging to + // everything has already been taken care of by addToRecipeMap() + for (Map.Entry> handlerListEntry : handlerGroups.entrySet()) { + if (handlerListEntry.getKey() == RecipeHandlerGroupDistinctness.BUS_DISTINCT) continue; + + Object2IntOpenHashMap inventory = new Object2IntOpenHashMap<>(); + for (RecipeHandlerList handlerList : handlerListEntry.getValue()) { + var handlers = handlerList.getCapability(FluidRecipeCapability.CAP); + for (var handler : handlers) { + for (var content : handler.getContents()) { + if (content instanceof FluidStack stack && !stack.isEmpty()) { + inventory.addTo(stack, stack.getAmount()); + } + } } - } else { - return 0; } + if (!inventory.isEmpty()) invs.add(inventory); } - return minMultiplier; + + return invs; } @Override public @NotNull List createXEIContainerContents(List contents, GTRecipe recipe, IO io) { - return contents.stream().map(content -> content.content) + List entryLists = contents.stream() + .map(Content::getContent) .map(this::of) .map(FluidRecipeCapability::mapFluid) .collect(Collectors.toList()); + + while (entryLists.size() < recipe.recipeType.getMaxOutputs(this)) entryLists.add(null); + return entryLists; } public Object createXEIContainer(List contents) { @@ -327,10 +363,8 @@ public void applyWidgetInfo(@NotNull Widget widget, @Nullable Content content, @Nullable Object storage, int recipeTier, int chanceTier) { if (widget instanceof TankWidget tank) { - if (storage instanceof CycleFluidEntryHandler cycleHandler) { - tank.setFluidTank(cycleHandler, index); - } else if (storage instanceof IFluidHandlerModifiable fluidHandler) { - tank.setFluidTank(new OverlayingFluidStorage(fluidHandler, index)); + if (storage instanceof IFluidHandler fluidHandler) { + tank.setFluidTank(fluidHandler, index); } tank.setIngredientIO(io == IO.IN ? IngredientIO.INPUT : IngredientIO.OUTPUT); tank.setAllowClickFilled(!isXEI); @@ -346,7 +380,12 @@ public void applyWidgetInfo(@NotNull Widget widget, FluidStack stack = ingredient.getStacks()[0]; TooltipsHandler.appendFluidTooltips(stack, tooltips::add, TooltipFlag.NORMAL); } - + if (ingredient instanceof IntProviderFluidIngredient provider) { + IntProvider countProvider = provider.getCountProvider(); + tooltips.add(Component.translatable("gtceu.gui.content.fluid_range", + countProvider.getMinValue(), countProvider.getMaxValue()) + .withStyle(ChatFormatting.GOLD)); + } GTRecipeWidget.setConsumedChance(content, recipe.getChanceLogicForCapability(this, io, isTickSlot(index, io, recipe)), tooltips, recipeTier, chanceTier, recipeType.getChanceFunction()); @@ -363,14 +402,19 @@ public void applyWidgetInfo(@NotNull Widget widget, // Maps fluids to a FluidEntryList for XEI: either a FluidTagList or a FluidStackList public static FluidEntryList mapFluid(FluidIngredient ingredient) { - int amount = ingredient.getAmount(); + int amount; + if (ingredient instanceof IntProviderFluidIngredient) { + amount = 1; + } else { + amount = ingredient.getAmount(); + } CompoundTag tag = ingredient.getNbt(); FluidTagList tags = new FluidTagList(); FluidStackList fluids = new FluidStackList(); for (FluidIngredient.Value value : ingredient.values) { if (value instanceof FluidIngredient.TagValue tagValue) { - tags.add(tagValue.getTag(), amount, ingredient.getNbt()); + tags.add(tagValue.tag(), amount, ingredient.getNbt()); } else { fluids.addAll(value.getFluids().stream().map(fluid -> new FluidStack(fluid, amount, tag)).toList()); } @@ -391,11 +435,18 @@ public interface ICustomParallel { /** * Custom impl of the parallel limiter used by ParallelLogic to limit by outputs - * + * * @param recipe Recipe * @param multiplier Initial multiplier + * @param tick Tick or not * @return Limited multiplier */ - int limitParallel(GTRecipe recipe, int multiplier); + int limitFluidParallel(GTRecipe recipe, int multiplier, boolean tick); + } + + // Fluids should be respected for distinct checks + @Override + public boolean shouldBypassDistinct() { + return false; } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/IRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/IRecipeHandler.java index 3cb35600443..69d2261afdc 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/IRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/IRecipeHandler.java @@ -8,11 +8,6 @@ import java.util.Comparator; import java.util.List; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote IRecipeHandler - */ public interface IRecipeHandler extends IFilteredHandler { /** @@ -84,8 +79,4 @@ default List handleRecipe(IO io, GTRecipe recipe, List left, boolean simul } return handleRecipeInner(io, recipe, contents, simulate); } - - default void preWorking(IRecipeCapabilityHolder holder, IO io, GTRecipe recipe) {} - - default void postWorking(IRecipeCapabilityHolder holder, IO io, GTRecipe recipe) {} } diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java index 2e3fdd79676..4ece6ab443d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java @@ -1,10 +1,9 @@ package com.gregtechceu.gtceu.api.capability.recipe; -import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; -import com.gregtechceu.gtceu.api.data.chemical.material.Material; -import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroup; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroupDistinctness; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.recipe.ResearchData; @@ -14,7 +13,8 @@ import com.gregtechceu.gtceu.api.recipe.ingredient.IntCircuitIngredient; import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderIngredient; import com.gregtechceu.gtceu.api.recipe.ingredient.SizedIngredient; -import com.gregtechceu.gtceu.api.recipe.lookup.*; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.item.*; import com.gregtechceu.gtceu.api.recipe.modifier.ParallelLogic; import com.gregtechceu.gtceu.api.recipe.ui.GTRecipeTypeUI; import com.gregtechceu.gtceu.common.recipe.condition.ResearchCondition; @@ -24,8 +24,8 @@ import com.gregtechceu.gtceu.common.valueprovider.MultipliedFloat; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.core.mixins.IngredientAccessor; -import com.gregtechceu.gtceu.core.mixins.IntersectionIngredientAccessor; import com.gregtechceu.gtceu.core.mixins.TagValueAccessor; +import com.gregtechceu.gtceu.core.mixins.forge.IntersectionIngredientAccessor; import com.gregtechceu.gtceu.integration.xei.entry.item.ItemEntryList; import com.gregtechceu.gtceu.integration.xei.entry.item.ItemStackList; import com.gregtechceu.gtceu.integration.xei.entry.item.ItemTagList; @@ -44,26 +44,18 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraftforge.common.crafting.IntersectionIngredient; -import net.minecraftforge.common.crafting.PartialNBTIngredient; -import net.minecraftforge.common.crafting.StrictNBTIngredient; import net.minecraftforge.items.IItemHandlerModifiable; -import net.minecraftforge.items.wrapper.CombinedInvWrapper; -import com.mojang.datafixers.util.Pair; import it.unimi.dsi.fastutil.objects.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.UnknownNullability; import java.util.*; -import java.util.function.UnaryOperator; import java.util.stream.Collectors; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote ItemRecipeCapability - */ +import static com.gregtechceu.gtceu.api.recipe.RecipeHelper.addToRecipeHandlerMap; + public class ItemRecipeCapability extends RecipeCapability { public final static ItemRecipeCapability CAP = new ItemRecipeCapability(); @@ -83,7 +75,7 @@ public Ingredient copyWithModifier(Ingredient content, ContentModifier modifier) return SizedIngredient.create(sizedIngredient.getInner(), modifier.apply(sizedIngredient.getAmount())); } else if (content instanceof IntProviderIngredient intProviderIngredient) { - return new IntProviderIngredient(intProviderIngredient.getInner(), + return IntProviderIngredient.of(intProviderIngredient.getInner(), new FlooredInt( new AddedFloat( new MultipliedFloat( @@ -94,89 +86,6 @@ public Ingredient copyWithModifier(Ingredient content, ContentModifier modifier) return SizedIngredient.create(content, modifier.apply(1)); } - @Override - public List convertToMapIngredient(Object obj) { - List ingredients = new ObjectArrayList<>(1); - if (obj instanceof Ingredient ingredient) { - - // all kinds of special cases - if (ingredient instanceof StrictNBTIngredient nbt) { - ingredients.addAll(MapItemStackNBTIngredient.from(nbt)); - } else if (ingredient instanceof PartialNBTIngredient nbt) { - ingredients.addAll(MapItemStackPartialNBTIngredient.from(nbt)); - } else if (ingredient instanceof SizedIngredient sized) { - if (sized.getInner() instanceof StrictNBTIngredient nbt) { - ingredients.addAll(MapItemStackNBTIngredient.from(nbt)); - } else if (sized.getInner() instanceof PartialNBTIngredient nbt) { - ingredients.addAll(MapItemStackPartialNBTIngredient.from(nbt)); - } else if (sized.getInner() instanceof IntersectionIngredient intersection) { - ingredients.add(new MapIntersectionIngredient(intersection)); - } else { - for (Ingredient.Value value : ((IngredientAccessor) sized.getInner()).getValues()) { - if (value instanceof Ingredient.TagValue tagValue) { - ingredients.add(new MapItemTagIngredient(((TagValueAccessor) tagValue).getTag())); - } else { - Collection stacks = value.getItems(); - for (ItemStack stack : stacks) { - ingredients.add(new MapItemStackIngredient(stack, sized.getInner())); - } - } - } - } - } else if (ingredient instanceof IntProviderIngredient intProvider) { - if (intProvider.getInner() instanceof StrictNBTIngredient nbt) { - ingredients.addAll(MapItemStackNBTIngredient.from(nbt)); - } else if (intProvider.getInner() instanceof PartialNBTIngredient nbt) { - ingredients.addAll(MapItemStackPartialNBTIngredient.from(nbt)); - } else if (intProvider.getInner() instanceof IntersectionIngredient intersection) { - ingredients.add(new MapIntersectionIngredient(intersection)); - } else { - for (Ingredient.Value value : ((IngredientAccessor) intProvider.getInner()).getValues()) { - if (value instanceof Ingredient.TagValue tagValue) { - ingredients.add(new MapItemTagIngredient(((TagValueAccessor) tagValue).getTag())); - } else { - Collection stacks = value.getItems(); - for (ItemStack stack : stacks) { - ingredients.add(new MapItemStackIngredient(stack, intProvider.getInner())); - } - } - } - } - } else if (ingredient instanceof IntersectionIngredient intersection) { - ingredients.add(new MapIntersectionIngredient(intersection)); - } else { - for (Ingredient.Value value : ((IngredientAccessor) ingredient).getValues()) { - if (value instanceof Ingredient.TagValue tagValue) { - ingredients.add(new MapItemTagIngredient(((TagValueAccessor) tagValue).getTag())); - } else { - Collection stacks = value.getItems(); - for (ItemStack stack : stacks) { - ingredients.add(new MapItemStackIngredient(stack, ingredient)); - } - } - } - } - } else if (obj instanceof ItemStack stack) { - ingredients.add(new MapItemStackIngredient(stack)); - - stack.getTags().forEach(tag -> ingredients.add(new MapItemTagIngredient(tag))); - if (stack.hasTag()) { - ingredients.add(new MapItemStackNBTIngredient(stack, StrictNBTIngredient.of(stack))); - } - if (stack.getShareTag() != null) { - ingredients.add(new MapItemStackPartialNBTIngredient(stack, - PartialNBTIngredient.of(stack.getItem(), stack.getShareTag()))); - } - TagPrefix prefix = ChemicalHelper.getPrefix(stack.getItem()); - if (!prefix.isEmpty() && TagPrefix.ORES.containsKey(prefix)) { - Material material = ChemicalHelper.getMaterialStack(stack.getItem()).material(); - ingredients.add(new MapIntersectionIngredient((IntersectionIngredient) IntersectionIngredient.of( - Ingredient.of(prefix.getItemTags(material)[0]), Ingredient.of(prefix.getItemParentTags()[0])))); - } - } - return ingredients; - } - @Override public List compressIngredients(Collection ingredients) { List list = new ObjectArrayList<>(ingredients.size()); @@ -197,7 +106,7 @@ public List compressIngredients(Collection ingredients) { } } if (isEqual) continue; - //@formatter:off + // spotless:off if (ingredient instanceof IntCircuitIngredient) { list.add(0, ingredient); } else if (ingredient instanceof SizedIngredient sized && @@ -209,7 +118,7 @@ public List compressIngredients(Collection ingredients) { } else { list.add(ingredient); } - //@formatter:on + // spotless:on } else if (item instanceof ItemStack stack) { boolean isEqual = false; for (Object obj : list) { @@ -232,218 +141,259 @@ public List compressIngredients(Collection ingredients) { return list; } + @Override + public @Nullable List getDefaultMapIngredient(Object object) { + if (object instanceof Ingredient ingredient) { + return CustomMapIngredient.from(ingredient); + } else { + return Collections.emptyList(); + } + } + @Override public boolean isRecipeSearchFilter() { return true; } @Override - public int limitParallel(GTRecipe recipe, IRecipeCapabilityHolder holder, int multiplier) { - if (holder instanceof ICustomParallel p) return p.limitParallel(recipe, multiplier); + public int limitMaxParallelByOutput(IRecipeCapabilityHolder holder, GTRecipe recipe, int multiplier, boolean tick) { + if (holder instanceof ICustomParallel p) return p.limitItemParallel(recipe, multiplier, tick); + var outputContents = (tick ? recipe.tickOutputs : recipe.outputs).get(this); + if (outputContents == null || outputContents.isEmpty()) return multiplier; + + if (!holder.hasCapabilityProxies()) return 0; + + var handlers = holder.getCapabilitiesFlat(IO.OUT, this); + if (handlers.isEmpty()) return 0; int minMultiplier = 0; int maxMultiplier = multiplier; - OverlayedItemHandler itemHandler = new OverlayedItemHandler(new CombinedInvWrapper( - holder.getCapabilitiesFlat(IO.OUT, ItemRecipeCapability.CAP).stream() - .filter(IItemHandlerModifiable.class::isInstance) - .map(IItemHandlerModifiable.class::cast) - .toArray(IItemHandlerModifiable[]::new))); + int maxCount = 0; + List ingredients = new ArrayList<>(outputContents.size()); + for (var content : outputContents) { + var ing = of(content.content); - Object2IntMap recipeOutputs = GTHashMaps - .fromItemStackCollection(recipe.getOutputContents(ItemRecipeCapability.CAP) - .stream() - .map(content -> ItemRecipeCapability.CAP.of(content.getContent())) - .filter(ingredient -> !ingredient.isEmpty()) - .map(ingredient -> ingredient.getItems()[0]) - .toList()); + int count; + if (ing instanceof SizedIngredient sized) count = sized.getAmount(); + else if (ing instanceof IntProviderIngredient provider) count = provider.getCountProvider().getMaxValue(); + else count = 1; - while (minMultiplier != maxMultiplier) { - itemHandler.reset(); + maxCount = Math.max(maxCount, count); + ingredients.add(ing); + } - int returnedAmount = 0; - int amountToInsert; + if (maxCount == 0) return multiplier; + if (multiplier > Integer.MAX_VALUE / maxCount) { + maxMultiplier = multiplier = Integer.MAX_VALUE / maxCount; + } - for (Object2IntMap.Entry entry : recipeOutputs.object2IntEntrySet()) { - // Since multiplier starts at Int.MAX, check here for integer overflow - if (entry.getIntValue() != 0 && multiplier > Integer.MAX_VALUE / entry.getIntValue()) { - amountToInsert = Integer.MAX_VALUE; - } else { - amountToInsert = entry.getIntValue() * multiplier; - } - returnedAmount = itemHandler.insertStackedItemStack(entry.getKey(), amountToInsert); - if (returnedAmount > 0) { - break; - } + while (minMultiplier != maxMultiplier) { + List copied = new ArrayList<>(); + for (final var ing : ingredients) { + copied.add(copyWithModifier(ing, ContentModifier.multiplier(multiplier))); } - - int[] bin = ParallelLogic.adjustMultiplier(returnedAmount == 0, minMultiplier, multiplier, maxMultiplier); + for (var handler : handlers) { + // noinspection unchecked + copied = (List) handler.handleRecipe(IO.OUT, recipe, copied, true); + if (copied == null) break; + } + int[] bin = ParallelLogic.adjustMultiplier(copied == null, minMultiplier, multiplier, maxMultiplier); minMultiplier = bin[0]; multiplier = bin[1]; maxMultiplier = bin[2]; - } + return multiplier; } @Override - public int getMaxParallelRatio(IRecipeCapabilityHolder holder, GTRecipe recipe, int parallelAmount) { + public int getMaxParallelByInput(IRecipeCapabilityHolder holder, GTRecipe recipe, int limit, boolean tick) { + if (!holder.hasCapabilityProxies()) return 0; + + var inputs = (tick ? recipe.tickInputs : recipe.inputs).get(this); + if (inputs == null || inputs.isEmpty()) return limit; + // Find all the items in the combined Item Input inventories and create oversized ItemStacks - Object2IntMap ingredientStacks = getIngredientStacks(holder); + List> inventoryGroups = getInputContents(holder); + if (inventoryGroups.isEmpty()) return 0; - int minMultiplier = Integer.MAX_VALUE; // map the recipe ingredients to account for duplicated and notConsumable ingredients. // notConsumable ingredients are not counted towards the max ratio - Object2IntOpenHashMap notConsumableMap = new Object2IntOpenHashMap<>(); - Object2IntOpenHashMap countableMap = new Object2IntOpenHashMap<>(); - for (Content content : recipe.getInputContents(ItemRecipeCapability.CAP)) { - Ingredient recipeIngredient = ItemRecipeCapability.CAP.of(content.content); - int ingredientCount; - if (recipeIngredient instanceof SizedIngredient sizedIngredient) { - ingredientCount = sizedIngredient.getAmount(); - } else if (recipeIngredient instanceof IntProviderIngredient intProviderIngredient) { - ingredientCount = intProviderIngredient.getSampledCount(GTValues.RNG); - } else { - ingredientCount = 1; - } - if (content.chance == 0) { - notConsumableMap.computeIfPresent(recipeIngredient, (k, v) -> v + ingredientCount); - notConsumableMap.putIfAbsent(recipeIngredient, ingredientCount); - } else { - countableMap.computeIfPresent(recipeIngredient, (k, v) -> v + ingredientCount); - countableMap.putIfAbsent(recipeIngredient, ingredientCount); - } + var nonConsumables = new Object2IntOpenHashMap(); + var consumables = new Object2IntOpenHashMap(); + for (Content content : inputs) { + Ingredient ing = of(content.content); + if (ing instanceof IntCircuitIngredient) continue; + + int count; + if (ing instanceof SizedIngredient sized) count = sized.getAmount(); + else if (ing instanceof IntProviderIngredient provider) count = provider.getCountProvider().getMaxValue(); + else count = 1; + + if (content.chance == 0) nonConsumables.addTo(ing, count); + else consumables.addTo(ing, count); } - // Iterate through the recipe inputs, excluding the not consumable ingredients from the inventory map - for (Object2IntMap.Entry recipeInputEntry : notConsumableMap.object2IntEntrySet()) { - int needed = recipeInputEntry.getIntValue(); - int available = 0; - // For every stack in the ingredients gathered from the input bus. - for (Object2IntMap.Entry inventoryEntry : ingredientStacks.object2IntEntrySet()) { - if (recipeInputEntry.getKey().test(inventoryEntry.getKey())) { - available = inventoryEntry.getIntValue(); - if (available > needed) { - inventoryEntry.setValue(available - needed); - needed -= available; - break; - } else { - inventoryEntry.setValue(0); - recipeInputEntry.setValue(needed - available); - needed -= available; + // is this even possible + if (consumables.isEmpty() && nonConsumables.isEmpty()) return limit; + + int maxMultiplier = 0; + // Check every inventory group + for (var group : inventoryGroups) { + // Check for enough NC in inventory group + boolean satisfied = true; + for (var ncEntry : Object2IntMaps.fastIterable(nonConsumables)) { + Ingredient ingredient = ncEntry.getKey(); + int needed = ncEntry.getIntValue(); + for (var stackEntry : Object2IntMaps.fastIterable(group)) { + if (ingredient.test(stackEntry.getKey())) { + int count = stackEntry.getIntValue(); + int lesser = Math.min(needed, count); + count -= lesser; + needed -= lesser; + stackEntry.setValue(count); + if (needed == 0) break; } } - } - // We need to check >= available here because of Non-Consumable inputs with stack size. If there is a NC - // input - // with size 2, and only 1 in the input, needed will be equal to available, but this situation should still - // fail - // as not all inputs are present - if (needed >= available) { - return 0; - } - } - - // Return the maximum parallel limit here if there are only non-consumed inputs, which are all found in the - // input bus - // At this point, we would have already returned 0 if we were missing any non-consumable inputs, so we can omit - // that check - if (countableMap.isEmpty() && !notConsumableMap.isEmpty()) { - return parallelAmount; - } - - // Iterate through the recipe inputs - for (Object2IntMap.Entry recipeInputEntry : countableMap.object2IntEntrySet()) { - int needed = recipeInputEntry.getIntValue(); - int available = 0; - // For every stack in the ingredients gathered from the input bus. - for (Object2IntMap.Entry inventoryEntry : ingredientStacks.object2IntEntrySet()) { - if (recipeInputEntry.getKey().test(inventoryEntry.getKey())) { - available += inventoryEntry.getIntValue(); + if (needed > 0) { + satisfied = false; break; } } - if (available >= needed) { - int ratio = Math.min(parallelAmount, available / needed); - if (ratio < minMultiplier) { - minMultiplier = ratio; + // Not enough NC -> skip this inventory + if (!satisfied) continue; + // Satisfied NC + no consumables -> early return + if (consumables.isEmpty()) return limit; + + int invMultiplier = Integer.MAX_VALUE; + // Loop over all consumables + for (var cEntry : Object2IntMaps.fastIterable(consumables)) { + Ingredient ingredient = cEntry.getKey(); + final int needed = cEntry.getIntValue(); + final int maxNeeded = needed * limit; + int available = 0; + // Search stacks in our inventory group, summing them up + for (var stackEntry : Object2IntMaps.fastIterable(group)) { + if (ingredient.test(stackEntry.getKey())) { + available += stackEntry.getIntValue(); + // We can stop if we already have enough for max parallel + if (available >= maxNeeded) break; + } } - } else { - return 0; + // ratio will equal 0 if available < needed + int ratio = Math.min(limit, available / needed); + invMultiplier = Math.min(invMultiplier, ratio); + // Not enough of this ingredient in this group -> skip inventory + if (ratio == 0) break; } + // We found an inventory group that can do max parallel -> early return + if (invMultiplier == limit) return limit; + maxMultiplier = Math.max(maxMultiplier, invMultiplier); } - return minMultiplier; - } - private Object2IntMap getIngredientStacks(IRecipeCapabilityHolder holder) { - Object2IntMap map = new Object2IntOpenCustomHashMap<>( - ItemStackHashStrategy.comparingAllButCount()); - Object2IntMap result = new Object2IntOpenHashMap<>(); + return maxMultiplier; + } - var recipeHandlerList = holder.getCapabilitiesFlat(IO.IN, ItemRecipeCapability.CAP); + private static List> getInputContents(IRecipeCapabilityHolder holder) { + var handlerLists = holder.getCapabilitiesForIO(IO.IN); + if (handlerLists.isEmpty()) return Collections.emptyList(); - for (IRecipeHandler container : recipeHandlerList) { + Map> handlerGroups = new HashMap<>(); + for (var handler : handlerLists) { + if (!handler.hasCapability(ItemRecipeCapability.CAP)) continue; + addToRecipeHandlerMap(handler.getGroup(), handler, handlerGroups); + } - var itemMap = container.getContents().stream().filter(ItemStack.class::isInstance) - .map(ItemStack.class::cast) - .flatMap(con -> GTHashMaps.fromItemStackCollection(Collections.singleton(con)).object2IntEntrySet() - .stream()) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, Integer::sum, - () -> new Object2IntOpenCustomHashMap<>(ItemStackHashStrategy.comparingAllButCount()))); + final var strat = ItemStackHashStrategy.comparingAllButCount(); + + List distinctHandlerLists = handlerGroups.getOrDefault( + RecipeHandlerGroupDistinctness.BUS_DISTINCT, + Collections.emptyList()); + List> invs = new ArrayList<>(distinctHandlerLists.size() + 1); + // Handle distinct groups first, adding an inventory based on their contents individually. + for (RecipeHandlerList handlerList : distinctHandlerLists) { + var handlers = handlerList.getCapability(ItemRecipeCapability.CAP); + Object2IntOpenCustomHashMap distinctInv = new Object2IntOpenCustomHashMap<>(strat); + + for (IRecipeHandler handler : handlers) { + for (var content : handler.getContents()) { + if (content instanceof ItemStack stack && !stack.isEmpty()) { + distinctInv.addTo(stack, stack.getCount()); + } + } + } + if (!distinctInv.isEmpty()) invs.add(distinctInv); + } - if (container.isDistinct()) { - result.putAll(itemMap); - } else { - for (Object2IntMap.Entry obj : itemMap.object2IntEntrySet()) { - map.computeInt(obj.getKey(), (k, v) -> v == null ? obj.getIntValue() : v + obj.getIntValue()); + // Then handle other groups. The logic of undyed buses belonging to + // everything has already been taken care of by addToRecipeMap() + for (Map.Entry> handlerListEntry : handlerGroups.entrySet()) { + if (handlerListEntry.getKey() == RecipeHandlerGroupDistinctness.BUS_DISTINCT) continue; + + Object2IntOpenCustomHashMap inventory = new Object2IntOpenCustomHashMap<>(strat); + for (RecipeHandlerList handlerList : handlerListEntry.getValue()) { + var handlers = handlerList.getCapability(ItemRecipeCapability.CAP); + for (var handler : handlers) { + for (var content : handler.getContents()) { + if (content instanceof ItemStack stack && !stack.isEmpty()) { + inventory.addTo(stack, stack.getCount()); + } + } } } + if (!inventory.isEmpty()) invs.add(inventory); } - result.putAll(map); - return result; + + return invs; } @Override public @NotNull List createXEIContainerContents(List contents, GTRecipe recipe, IO io) { - var entryLists = contents.stream() + List entryLists = contents.stream() .map(Content::getContent) .map(this::of) .map(ItemRecipeCapability::mapItem) .collect(Collectors.toList()); - List scannerPossibilities = null; if (io == IO.OUT && recipe.recipeType.isScanner()) { - scannerPossibilities = new ArrayList<>(); + List scannerPossibilities = new ArrayList<>(); // Scanner Output replacing, used for cycling research outputs - Pair researchData = null; - for (Content stack : recipe.getOutputContents(ItemRecipeCapability.CAP)) { - researchData = ResearchManager.readResearchId(ItemRecipeCapability.CAP.of(stack.content).getItems()[0]); + ResearchManager.ResearchItem researchData = null; + for (Content stack : recipe.getOutputContents(this)) { + ItemStack[] stacks = this.of(stack.content).getItems(); + if (stacks.length == 0 || stacks[0].isEmpty()) continue; + + researchData = ResearchManager.readResearchId(stacks[0]); if (researchData != null) break; } if (researchData != null) { - Collection possibleRecipes = researchData.getFirst() - .getDataStickEntry(researchData.getSecond()); + Collection possibleRecipes = researchData.recipeType() + .getDataStickEntry(researchData.researchId()); Set cache = new ObjectOpenCustomHashSet<>(ItemStackHashStrategy.comparingItem()); if (possibleRecipes != null) { for (GTRecipe r : possibleRecipes) { - Content outputContent = r.getOutputContents(ItemRecipeCapability.CAP).get(0); - ItemStack researchStack = ItemRecipeCapability.CAP.of(outputContent.content).getItems()[0]; - if (!cache.contains(researchStack)) { + var outputs = r.getOutputContents(this); + if (outputs.isEmpty()) continue; + + Content outputContent = outputs.get(0); + ItemStack[] stacks = this.of(outputContent.content).getItems(); + if (stacks.length == 0) continue; + + ItemStack researchStack = stacks[0]; + if (!researchStack.isEmpty() && !cache.contains(researchStack)) { cache.add(researchStack); scannerPossibilities.add(ItemStackList.of(researchStack.copyWithCount(1))); } } } scannerPossibilities.add(entryLists.get(0)); + entryLists = scannerPossibilities; } } - if (scannerPossibilities != null && !scannerPossibilities.isEmpty()) { - entryLists = scannerPossibilities; - } - while (entryLists.size() < recipe.recipeType.getMaxOutputs(ItemRecipeCapability.CAP)) entryLists.add(null); - - return new ArrayList<>(entryLists); + while (entryLists.size() < recipe.recipeType.getMaxOutputs(this)) entryLists.add(null); + return entryLists; } public Object createXEIContainer(List contents) { @@ -516,7 +466,7 @@ public void applyWidgetInfo(@NotNull Widget widget, GTRecipeWidget.setConsumedChance(content, recipe.getChanceLogicForCapability(this, io, isTickSlot(index, io, recipe)), tooltips, recipeTier, chanceTier, recipeType.getChanceFunction()); - //@formatter:off + // spotless:off if (this.of(content.content) instanceof IntProviderIngredient ingredient) { IntProvider countProvider = ingredient.getCountProvider(); tooltips.add(Component.translatable("gtceu.gui.content.count_range", @@ -529,7 +479,7 @@ public void applyWidgetInfo(@NotNull Widget widget, countProvider.getMinValue(), countProvider.getMaxValue()) .withStyle(ChatFormatting.GOLD)); } - //@formatter:on + // spotless:on if (isTickSlot(index, io, recipe)) { tooltips.add(Component.translatable("gtceu.gui.content.per_tick")); } @@ -547,24 +497,35 @@ private static ItemEntryList mapItem(final Ingredient ingredient) { final int amount = sizedIngredient.getAmount(); var mapped = tryMapInner(sizedIngredient.getInner(), amount); if (mapped != null) return mapped; + + if (sizedIngredient.getInner() instanceof IntProviderIngredient intProvider) { + ItemStackList stackList = new ItemStackList(); + for (ItemStack i : intProvider.getInner().getItems()) { + stackList.add(i); + } + return stackList; + } } else if (ingredient instanceof IntProviderIngredient intProvider) { final int amount = 1; var mapped = tryMapInner(intProvider.getInner(), amount); if (mapped != null) return mapped; + + ItemStackList stackList = new ItemStackList(); + for (ItemStack i : intProvider.getInner().getItems()) { + stackList.add(i); + } + return stackList; } else if (ingredient instanceof IntersectionIngredient intersection) { return mapIntersection(intersection, -1); } else { var tagList = tryMapTag(ingredient, 1); if (tagList != null) return tagList; } - ItemStackList stackList = new ItemStackList(); - boolean isIntProvider = ingredient instanceof IntProviderIngredient || - (ingredient instanceof SizedIngredient sized && sized.getInner() instanceof IntProviderIngredient); - UnaryOperator setCount = stack -> isIntProvider ? stack.copyWithCount(1) : stack; - Arrays.stream(ingredient.getItems()) - .map(setCount) - .forEach(stackList::add); + ItemStackList stackList = new ItemStackList(); + for (ItemStack i : ingredient.getItems()) { + stackList.add(i); + } return stackList; } @@ -606,11 +567,18 @@ public interface ICustomParallel { /** * Custom impl of the parallel limiter used by ParallelLogic to limit by outputs - * + * * @param recipe Recipe * @param multiplier Initial multiplier + * @param tick Tick or not * @return Limited multiplier */ - int limitParallel(GTRecipe recipe, int multiplier); + int limitItemParallel(GTRecipe recipe, int multiplier, boolean tick); + } + + // Items should be respected for distinct checks + @Override + public boolean shouldBypassDistinct() { + return false; } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java index 86dacea8d1a..5c737562916 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java @@ -6,22 +6,22 @@ import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; import com.gregtechceu.gtceu.api.recipe.content.IContentSerializer; -import com.gregtechceu.gtceu.api.recipe.lookup.AbstractMapIngredient; -import com.gregtechceu.gtceu.api.recipe.modifier.ParallelLogic; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; import com.gregtechceu.gtceu.api.recipe.ui.GTRecipeTypeUI; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.lowdragmc.lowdraglib.gui.widget.Widget; import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; +import net.minecraft.nbt.Tag; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; import com.mojang.serialization.Codec; import io.netty.buffer.Unpooled; import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; -import it.unimi.dsi.fastutil.objects.ObjectArrayList; import org.apache.commons.lang3.mutable.MutableInt; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -58,6 +58,10 @@ public static Codec> contentCodec(RecipeCapability capability) return Content.codec(capability).listOf(); } + public Tag contentToNbt(Object value) { + return this.serializer.toNbt(this.of(value)); + } + /** * deep copy of this content. recipe need it for searching and such things */ @@ -99,34 +103,24 @@ public String slotName(IO io, int index) { return "%s_%s_%s".formatted(name, io.name().toLowerCase(Locale.ROOT), index); } - public Component getName() { + public MutableComponent getName() { return Component.translatable("recipe.capability.%s.name".formatted(name)); } - public boolean isRecipeSearchFilter() { - return false; + public MutableComponent getColoredName() { + return getName().withStyle(style -> style.withColor(this.color)); } - /** - * Convert the passed object to a list of recipe lookup filters. - * - * @param ingredient ingredient. e.g. for ITEM, this can be Ingredient or ItemStack - * @return a list of recipe lookup filters. - */ - public List convertToMapIngredient(Object ingredient) { - return List.of(); + public boolean isRecipeSearchFilter() { + return false; } public List compressIngredients(Collection ingredients) { return new ArrayList<>(ingredients); } - public List> convertCompressedIngredients(List ingredients) { - List> ret = new ObjectArrayList<>(ingredients.size()); - for (var ingredient : ingredients) { - ret.add(convertToMapIngredient(ingredient)); - } - return ret; + public @Nullable List getDefaultMapIngredient(Object object) { + return null; } /** @@ -138,17 +132,17 @@ public boolean doMatchInRecipe() { } /** - * maximum parallel amount based on the inputs (and possibly outputs) provided. + * Calculate the maximum parallel amount based on the output space of the holder * - * @param recipe the recipe from which we get the input to product ratio - * @param holder the {@link IRecipeCapabilityHolder} that contains all the inputs and outputs of the machine. - * @param multiplier the maximum possible multiplied we can get from the input inventory - * see {@link ParallelLogic#limitByInput} + * @param holder the {@link IRecipeCapabilityHolder} that contains all the inputs and outputs of the machine. + * @param recipe the recipe from which we get the input to product ratio + * @param maxMultiplier the upper bound on the multiplier, see {@link #getMaxParallelByInput} + * @param tick whether to check regular outputs or tick outputs * @return the amount of times a {@link GTRecipe} outputs can be merged into an inventory without voiding products. */ // returns Integer.MAX_VALUE by default, to skip processing. - // TODO: kross - make it so caps check both regular outputs and tick outputs - public int limitParallel(GTRecipe recipe, IRecipeCapabilityHolder holder, int multiplier) { + public int limitMaxParallelByOutput(IRecipeCapabilityHolder holder, GTRecipe recipe, int maxMultiplier, + boolean tick) { return Integer.MAX_VALUE; } @@ -156,14 +150,14 @@ public int limitParallel(GTRecipe recipe, IRecipeCapabilityHolder holder, int mu * Finds the maximum number of GTRecipes that can be performed at the same time based on the contents of input * inventories * - * @param holder The {@link IRecipeCapabilityHolder} that contains all the inputs and outputs of the - * machine. - * @param recipe The {@link GTRecipe} for which to find the maximum that can be run simultaneously - * @param parallelAmount The limit on the amount of recipes that can be performed at one time + * @param holder The {@link IRecipeCapabilityHolder} that contains all the inputs and outputs of the machine. + * @param recipe The {@link GTRecipe} for which to find the maximum that can be run simultaneously + * @param limit The hard limit on the amount of recipes that can be performed at one time + * @param tick whether to check regular outputs or tick outputs * @return The Maximum number of GTRecipes that can be performed at a single time based on the available Items */ // returns Integer.MAX_VALUE by default, to skip processing. - public int getMaxParallelRatio(IRecipeCapabilityHolder holder, GTRecipe recipe, int parallelAmount) { + public int getMaxParallelByInput(IRecipeCapabilityHolder holder, GTRecipe recipe, int limit, boolean tick) { return Integer.MAX_VALUE; } @@ -219,4 +213,13 @@ public Object2IntMap makeChanceCache() { public boolean isTickSlot(int index, IO io, GTRecipe recipe) { return index >= (io == IO.IN ? recipe.getInputContents(this) : recipe.getOutputContents(this)).size(); } + + /** + * Should this RecipeCapability bypass distinct checks? + * E.g. should this bus be added to all recipe checks on a multi, even distinct ones like ME Pattern buffers. + * for example: energy hatches, soul hatches, other "global per multi" hatches. + */ + public boolean shouldBypassDistinct() { + return true; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/codec/GTCodecUtils.java b/src/main/java/com/gregtechceu/gtceu/api/codec/GTCodecUtils.java new file mode 100644 index 00000000000..a3ae378ca3b --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/codec/GTCodecUtils.java @@ -0,0 +1,35 @@ +package com.gregtechceu.gtceu.api.codec; + +import net.minecraft.util.ExtraCodecs; + +import com.mojang.datafixers.util.Either; +import com.mojang.serialization.Codec; +import com.mojang.serialization.DataResult; + +import java.util.function.Function; + +public class GTCodecUtils { + + public static final Codec NON_NEGATIVE_LONG = longRangeWithMessage(0, Long.MAX_VALUE, + (val) -> "Value must be non-negative: " + val); + public static final Codec POSITIVE_LONG = longRangeWithMessage(1, Long.MAX_VALUE, + (val) -> "Value must be positive: " + val); + + public static Codec longRangeWithMessage(long min, long max, Function errorMessage) { + return ExtraCodecs.validate(Codec.LONG, (val) -> { + if (val.compareTo(min) >= 0 && val.compareTo(max) <= 0) { + return DataResult.success(val); + } else { + return DataResult.error(() -> errorMessage.apply(val)); + } + }); + } + + public static Codec longRange(long min, long max) { + return longRangeWithMessage(min, max, (val) -> "Value must be within range [" + min + ";" + max + "]: " + val); + } + + public static T unboxEither(Either either) { + return either.map(Function.identity(), Function.identity()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/cosmetics/CapeRegistry.java b/src/main/java/com/gregtechceu/gtceu/api/cosmetics/CapeRegistry.java new file mode 100644 index 00000000000..f22f708f052 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/cosmetics/CapeRegistry.java @@ -0,0 +1,328 @@ +package com.gregtechceu.gtceu.api.cosmetics; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.cosmetics.event.RegisterGTCapesEvent; +import com.gregtechceu.gtceu.common.network.GTNetwork; +import com.gregtechceu.gtceu.common.network.packets.SPacketNotifyCapeChange; +import com.gregtechceu.gtceu.integration.kjs.GTCEuServerEvents; +import com.gregtechceu.gtceu.integration.kjs.events.RegisterCapesEventJS; + +import net.minecraft.nbt.*; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.saveddata.SavedData; +import net.minecraftforge.common.MinecraftForge; + +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import dev.latvian.mods.kubejs.script.ScriptType; +import lombok.SneakyThrows; +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.*; + +import static com.gregtechceu.gtceu.common.commands.GTCommands.ERROR_NO_SUCH_CAPE; + +public class CapeRegistry extends SavedData { + + /** + * pseudo-registry lookup map of ID->texture. + */ + public static final Map ALL_CAPES = new HashMap<>(); + /** + * Set of all the free capes' IDs + */ + private static final Set FREE_CAPES = new HashSet<>(); + + // This map should always have TreeSet values for iteration consistency. + private static final Map> UNLOCKED_CAPES = new HashMap<>(); + private static final Map CURRENT_CAPES = new HashMap<>(); + + private static final CapeRegistry INSTANCE = new CapeRegistry(); + + private CapeRegistry() {} + + private static void initCapes() { + RegisterGTCapesEvent event = new RegisterGTCapesEvent(); + MinecraftForge.EVENT_BUS.post(event); + if (GTCEu.Mods.isKubeJSLoaded()) { + KJSCallWrapper.fireKJSEvent(event); + } + + save(); + } + + public static void registerToServer(ServerLevel level) { + level.getDataStorage().computeIfAbsent(CapeRegistry.INSTANCE::load, CapeRegistry.INSTANCE::init, "gtceu_capes"); + } + + private CapeRegistry init() { + clearMaps(); + initCapes(); + return this; + } + + public static void save() { + INSTANCE.setDirty(); + } + + @Override + public @NotNull CompoundTag save(@NotNull CompoundTag tag) { + ListTag unlockedCapesTag = new ListTag(); + for (Map.Entry> entry : UNLOCKED_CAPES.entrySet()) { + CompoundTag entryTag = new CompoundTag(); + entryTag.putUUID("owner", entry.getKey()); + + ListTag capesTag = new ListTag(); + for (ResourceLocation cape : entry.getValue()) { + capesTag.add(StringTag.valueOf(cape.toString())); + } + entryTag.put("capes", capesTag); + + unlockedCapesTag.add(entryTag); + } + tag.put("unlocked_capes", unlockedCapesTag); + + ListTag currentCapesTag = new ListTag(); + for (Map.Entry entry : CURRENT_CAPES.entrySet()) { + if (entry.getValue() == null) + continue; + String capeLocation = entry.getValue().toString(); + + CompoundTag entryTag = new CompoundTag(); + + entryTag.putString("cape", capeLocation); + entryTag.putUUID("owner", entry.getKey()); + + currentCapesTag.add(entryTag); + } + tag.put("current_capes", currentCapesTag); + + return tag; + } + + private CapeRegistry load(CompoundTag tag) { + init(); + + ListTag unlockedCapesTag = tag.getList("unlocked_capes", Tag.TAG_COMPOUND); + for (int i = 0; i < unlockedCapesTag.size(); i++) { + CompoundTag entryTag = unlockedCapesTag.getCompound(i); + UUID uuid = entryTag.getUUID("owner"); + + Set capes = UNLOCKED_CAPES.computeIfAbsent(uuid, CapeRegistry::makeSet); + + ListTag capesTag = entryTag.getList("capes", Tag.TAG_STRING); + for (int j = 0; j < capesTag.size(); j++) { + String capeId = capesTag.getString(j); + if (capeId.isEmpty()) + continue; + capes.add(new ResourceLocation(capeId)); + } + UNLOCKED_CAPES.put(uuid, capes); + } + + ListTag currentCapesTag = tag.getList("current_capes", Tag.TAG_COMPOUND); + for (int i = 0; i < currentCapesTag.size(); i++) { + CompoundTag entryTag = currentCapesTag.getCompound(i); + String capeId = entryTag.getString("cape"); + if (capeId.isEmpty()) + continue; + UUID uuid = entryTag.getUUID("owner"); + CURRENT_CAPES.put(uuid, new ResourceLocation(capeId)); + } + + return this; + } + + @Nullable + public static ResourceLocation getPlayerCapeId(UUID uuid) { + return CURRENT_CAPES.get(uuid); + } + + @Nullable + public static ResourceLocation getPlayerCapeTexture(UUID uuid) { + return ALL_CAPES.getOrDefault(getPlayerCapeId(uuid), null); + } + + /** + * Allows one to check what capes a specific player has unlocked through CapesRegistry. + * + * @param uuid The player data used to get what capes the player has through internal maps. + * @return A list of ResourceLocations containing the cape textures that the player has unlocked. + */ + public static Set getUnlockedCapes(UUID uuid) { + return UNLOCKED_CAPES.getOrDefault(uuid, Collections.emptySet()); + } + + /** + * Registers a cape.
+ * use {@link RegisterGTCapesEvent#registerCape(ResourceLocation, ResourceLocation)} instead of calling this + * directly. + * + * @param id An identifier for the cape + * @param texture The full path to the cape's texture in a resource pack + * + * @see RegisterGTCapesEvent#registerCape(ResourceLocation, ResourceLocation) + */ + @ApiStatus.Internal + public static void registerCape(ResourceLocation id, ResourceLocation texture) { + ALL_CAPES.put(id, texture); + } + + /** + * Registers a cape that will always be unlocked for all players.
+ * use {@link RegisterGTCapesEvent#registerCape(ResourceLocation, ResourceLocation)} instead of calling this + * directly. + * + * @param id An identifier for the cape + * @param texture The full path to the cape's texture in a resource pack + * + * @see RegisterGTCapesEvent#registerFreeCape(ResourceLocation, ResourceLocation) + */ + @ApiStatus.Internal + public static void registerFreeCape(ResourceLocation id, ResourceLocation texture) { + registerCape(id, texture); + FREE_CAPES.add(id); + } + + /** + * Automatically makes a cape available to a player.
+ * DOES NOT SAVE AUTOMATICALLY; + * PLEASE CALL SAVE AFTER THIS FUNCTION IS USED IF THIS DATA IS MEANT TO PERSIST. + * + * @param owner The UUID of the player to give the cape to + * @param cape The cape to give + * @see #removeCape(UUID, ResourceLocation) + */ + @SneakyThrows(CommandSyntaxException.class) + public static boolean unlockCape(UUID owner, @NotNull ResourceLocation cape) { + if (!CapeRegistry.ALL_CAPES.containsKey(cape)) { + throw ERROR_NO_SUCH_CAPE.create(cape.toString()); + } + Set capes = UNLOCKED_CAPES.computeIfAbsent(owner, CapeRegistry::makeSet); + if (capes.contains(cape)) { + return false; + } + capes.add(cape); + UNLOCKED_CAPES.put(owner, capes); + return true; + } + + /** + * Automatically removes a cape from a player.
+ * DOES NOT SAVE AUTOMATICALLY; + * PLEASE CALL SAVE AFTER THIS FUNCTION IS USED IF THIS DATA IS MEANT TO PERSIST. + * + * @param owner The UUID of the player to take the cape from + * @param cape The cape to take + * @see #unlockCape(UUID, ResourceLocation) + */ + @SneakyThrows(CommandSyntaxException.class) + public static boolean removeCape(UUID owner, @NotNull ResourceLocation cape) { + if (!CapeRegistry.ALL_CAPES.containsKey(cape)) { + throw ERROR_NO_SUCH_CAPE.create(cape.toString()); + } + if (FREE_CAPES.contains(cape)) { + return false; + } + Set capes = UNLOCKED_CAPES.get(owner); + if (capes == null || !capes.contains(cape)) { + return false; + } + capes.remove(cape); + UNLOCKED_CAPES.put(owner, capes); + if (cape.equals(getPlayerCapeId(owner))) { + setActiveCape(owner, null); + } + return true; + } + + public static void clearMaps() { + UNLOCKED_CAPES.clear(); + CURRENT_CAPES.clear(); + } + + @SneakyThrows(CommandSyntaxException.class) + public static void giveRawCape(UUID uuid, @NotNull ResourceLocation cape) { + if (!CapeRegistry.ALL_CAPES.containsKey(cape)) { + throw ERROR_NO_SUCH_CAPE.create(cape.toString()); + } + CURRENT_CAPES.put(uuid, cape); + } + + /** + * Sets a player's current cape. + * + * @param player The UUID of the player + * @param cape The cape to set, or {@code null} to remove the current cape. + */ + @SneakyThrows(CommandSyntaxException.class) + public static boolean setActiveCape(UUID player, @Nullable ResourceLocation cape) { + if (cape != null && !CapeRegistry.ALL_CAPES.containsKey(cape)) { + throw ERROR_NO_SUCH_CAPE.create(cape.toString()); + } + Set capes = UNLOCKED_CAPES.get(player); + if (capes == null || cape != null && !capes.contains(cape)) { + return false; + } + CURRENT_CAPES.put(player, cape); + GTNetwork.sendToAll(new SPacketNotifyCapeChange(player, cape)); + save(); + return true; + } + + // For loading capes when the player logs in, so that it's synced to the clients. + public static void loadCurrentCapesOnLogin(Player player) { + if (player instanceof ServerPlayer serverPlayer) { + UUID uuid = player.getUUID(); + // sync to others + GTNetwork.sendToAll(new SPacketNotifyCapeChange(uuid, CURRENT_CAPES.get(uuid))); + // sync to the one who's logging in + for (ServerPlayer otherPlayer : serverPlayer.getServer().getPlayerList().getPlayers()) { + uuid = otherPlayer.getUUID(); + GTNetwork.sendToPlayer(serverPlayer, new SPacketNotifyCapeChange(uuid, CURRENT_CAPES.get(uuid))); + } + } + } + + // Runs on login and gives the player all free capes & capes they've already unlocked. + public static void detectNewCapes(Player player) { + if (player instanceof ServerPlayer) { + var playerCapes = UNLOCKED_CAPES.get(player.getUUID()); + if (playerCapes == null || !new HashSet<>(playerCapes).containsAll(FREE_CAPES)) { + for (ResourceLocation cape : FREE_CAPES) { + unlockCape(player.getUUID(), cape); + } + save(); + } + } + } + + private static final Comparator SET_COMPARATOR = (o1, o2) -> { + int result = o1.compareTo(o2); + boolean isFirstFree = FREE_CAPES.contains(o1); + if (isFirstFree ^ FREE_CAPES.contains(o2)) { + if (isFirstFree) { + return -1; + } else { + return 1; + } + } else { + return result; + } + }; + + private static Set makeSet(UUID ignored) { + return new TreeSet<>(SET_COMPARATOR); + } + + private static class KJSCallWrapper { + + public static void fireKJSEvent(RegisterGTCapesEvent event) { + GTCEuServerEvents.REGISTER_CAPES.post(ScriptType.SERVER, new RegisterCapesEventJS(event)); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/cosmetics/event/RegisterGTCapesEvent.java b/src/main/java/com/gregtechceu/gtceu/api/cosmetics/event/RegisterGTCapesEvent.java new file mode 100644 index 00000000000..bdb805b56c4 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/cosmetics/event/RegisterGTCapesEvent.java @@ -0,0 +1,54 @@ +package com.gregtechceu.gtceu.api.cosmetics.event; + +import com.gregtechceu.gtceu.api.cosmetics.CapeRegistry; + +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.eventbus.api.Event; + +import org.jetbrains.annotations.ApiStatus; + +import java.util.UUID; + +/** + * RegisterGTCapesEvent is fired when the server is first loaded.
+ * It can be used to make additional capes available to the player in + * {@link CapeRegistry#registerCape(ResourceLocation, ResourceLocation)} + *
+ * This event is fired on the {@link MinecraftForge#EVENT_BUS}. + **/ +public class RegisterGTCapesEvent extends Event { + + @ApiStatus.Internal + public RegisterGTCapesEvent() {} + + /** + * Registers a cape to the cape registry. + * + * @param id An identifier for the cape + * @param texture The full path to the cape's texture in a resource pack + */ + public void registerCape(ResourceLocation id, ResourceLocation texture) { + CapeRegistry.registerCape(id, texture); + } + + /** + * Registers a cape that will always be unlocked for all players. + * + * @param id An identifier for the cape + * @param texture The full path to the cape's texture in a resource pack + */ + public void registerFreeCape(ResourceLocation id, ResourceLocation texture) { + CapeRegistry.registerFreeCape(id, texture); + } + + /** + * Automatically makes a cape available to a player. + * + * @param owner The UUID of the player to give the cape to + * @param cape The cape to give + */ + public void unlockCapeFor(UUID owner, ResourceLocation cape) { + CapeRegistry.unlockCape(owner, cape); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/CoverBehavior.java b/src/main/java/com/gregtechceu/gtceu/api/cover/CoverBehavior.java index aa5bcb76a9b..d290f8bb306 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/CoverBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/CoverBehavior.java @@ -7,9 +7,9 @@ import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.item.tool.IToolGridHighlight; import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; import com.gregtechceu.gtceu.client.renderer.cover.ICoverRenderer; +import com.gregtechceu.gtceu.client.renderer.cover.IDynamicCoverRenderer; import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; import com.lowdragmc.lowdraglib.syncdata.IEnhancedManaged; @@ -38,6 +38,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Set; +import java.util.function.Supplier; import javax.annotation.ParametersAreNonnullByDefault; @@ -100,8 +101,9 @@ public void onChanged() { @MustBeInvokedByOverriders public boolean canAttach() { var machine = MetaMachine.getMachine(coverHolder.getLevel(), coverHolder.getPos()); - return machine == null || !machine.hasFrontFacing() || coverHolder.getFrontFacing() != attachedSide || - machine instanceof IMultiController; + return machine == null || + (machine.getDefinition().isAllowCoverOnFront() || !machine.hasFrontFacing() || + coverHolder.getFrontFacing() != attachedSide); } /** @@ -160,8 +162,7 @@ public InteractionResult onScrewdriverClick(Player playerIn, InteractionHand han if (playerIn instanceof ServerPlayer serverPlayer) { CoverUIFactory.INSTANCE.openUI(this, serverPlayer); } - playerIn.swing(hand); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } return InteractionResult.PASS; } @@ -184,7 +185,7 @@ public boolean shouldRenderPlate() { return true; } - public ICoverRenderer getCoverRenderer() { + public @Nullable Supplier getCoverRenderer() { return coverDefinition.getCoverRenderer(); } @@ -200,8 +201,8 @@ public boolean shouldRenderGrid(Player player, BlockPos pos, BlockState state, I } @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.CROWBAR)) { return GuiTextures.TOOL_REMOVE_COVER; } @@ -219,6 +220,10 @@ public BlockState getAppearance(BlockState sourceState, BlockPos sourcePos) { return null; } + public Supplier getDynamicRenderer() { + return () -> null; + } + ////////////////////////////////////// // ******* Capabilities *******// ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/CoverDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/cover/CoverDefinition.java index 30fb5b9177b..5a11aac76b3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/CoverDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/CoverDefinition.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.api.cover; +import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.capability.ICoverable; import com.gregtechceu.gtceu.client.renderer.cover.ICoverRenderer; @@ -7,6 +8,9 @@ import net.minecraft.resources.ResourceLocation; import lombok.Getter; +import org.jetbrains.annotations.Nullable; + +import java.util.function.Supplier; public final class CoverDefinition { @@ -24,15 +28,28 @@ public interface TieredCoverBehaviourProvider { private final ResourceLocation id; private final CoverBehaviourProvider behaviorCreator; @Getter - private final ICoverRenderer coverRenderer; + private final @Nullable Supplier coverRenderer; - public CoverDefinition(ResourceLocation id, CoverBehaviourProvider behaviorCreator, ICoverRenderer coverRenderer) { + public CoverDefinition(ResourceLocation id, CoverBehaviourProvider behaviorCreator, + Supplier> coverRenderer) { this.behaviorCreator = behaviorCreator; this.id = id; - this.coverRenderer = coverRenderer; + if (GTCEu.isClientSide()) { + this.coverRenderer = ClientHelper.initRenderer(coverRenderer); + } else { + this.coverRenderer = null; + } } public CoverBehavior createCoverBehavior(ICoverable metaTileEntity, Direction side) { return behaviorCreator.create(this, metaTileEntity, side); } + + private static class ClientHelper { + + private static Supplier initRenderer(Supplier> coverRenderer) { + ICoverRenderer value = coverRenderer.get().get(); + return () -> value; + } + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/IIOCover.java b/src/main/java/com/gregtechceu/gtceu/api/cover/IIOCover.java new file mode 100644 index 00000000000..f9636b25d08 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/IIOCover.java @@ -0,0 +1,13 @@ +package com.gregtechceu.gtceu.api.cover; + +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.common.cover.data.ManualIOMode; + +public interface IIOCover { + + int getTransferRate(); + + IO getIo(); + + ManualIOMode getManualIOMode(); +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/IUICover.java b/src/main/java/com/gregtechceu/gtceu/api/cover/IUICover.java index 5c4e3168639..27d7b8cc56e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/IUICover.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/IUICover.java @@ -10,11 +10,6 @@ import net.minecraft.world.entity.player.Player; -/** - * @author KilaBash - * @date 2023/3/12 - * @implNote IUICover - */ public interface IUICover extends IUIHolder { default CoverBehavior self() { @@ -41,12 +36,16 @@ default ModularUI createUI(Player entityPlayer) { var widget = createUIWidget(); var size = widget.getSize(); widget.setSelfPosition(new Position((176 - size.width) / 2, 0)); - return new ModularUI(176, size.height + 82, this, entityPlayer) + var modularUI = new ModularUI(176, size.height + 82, this, entityPlayer) .background(GuiTextures.BACKGROUND) .widget(widget) .widget(UITemplate.bindPlayerInventory(entityPlayer.getInventory(), GuiTextures.SLOT, 7, size.height, true)); + modularUI.registerCloseListener(this::onUIClosed); + return modularUI; } + default void onUIClosed() {} + Widget createUIWidget(); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/Filter.java b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/Filter.java index 9c19862f44f..304aef62395 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/Filter.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/Filter.java @@ -7,11 +7,6 @@ import java.util.function.Consumer; import java.util.function.Predicate; -/** - * @author KilaBash - * @date 2023/3/14 - * @implNote Filter - */ public interface Filter> extends Predicate { WidgetGroup openConfigurator(int x, int y); diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/FluidFilter.java b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/FluidFilter.java index bfa7de498e2..9a8a09fb68e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/FluidFilter.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/FluidFilter.java @@ -14,11 +14,6 @@ import java.util.function.Consumer; import java.util.function.Function; -/** - * @author KilaBash - * @date 2023/3/14 - * @implNote FluidFilter - */ public interface FluidFilter extends Filter { Map> FILTERS = new HashMap<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/ItemFilter.java b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/ItemFilter.java index 8c593077240..73e24344dc7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/ItemFilter.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/ItemFilter.java @@ -13,11 +13,6 @@ import java.util.function.Consumer; import java.util.function.Function; -/** - * @author KilaBash - * @date 2023/3/13 - * @implNote ItemFilter - */ public interface ItemFilter extends Filter { Map> FILTERS = new HashMap<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/SimpleFluidFilter.java b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/SimpleFluidFilter.java index 764ed6949d6..16ea87e030a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/SimpleFluidFilter.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/SimpleFluidFilter.java @@ -21,11 +21,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/13 - * @implNote ItemFilterHandler - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class SimpleFluidFilter implements FluidFilter { diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/SimpleItemFilter.java b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/SimpleItemFilter.java index 77447a1d721..5fdf8d697e5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/SimpleItemFilter.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/SimpleItemFilter.java @@ -20,11 +20,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/13 - * @implNote ItemFilterHandler - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class SimpleItemFilter implements ItemFilter { diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/SmartItemFilter.java b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/SmartItemFilter.java index f955c313d3e..b6485f0ab7d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/SmartItemFilter.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/SmartItemFilter.java @@ -5,6 +5,7 @@ import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.api.recipe.lookup.GTRecipeLookup; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.MapIngredientTypeManager; import com.gregtechceu.gtceu.common.data.GTRecipeTypes; import com.gregtechceu.gtceu.utils.ItemStackHashStrategy; @@ -89,7 +90,7 @@ public int testItemCount(ItemStack itemStack) { private int lookup(ItemStack itemStack) { ItemStack copy = itemStack.copyWithCount(Integer.MAX_VALUE); - var ingredients = ItemRecipeCapability.CAP.convertToMapIngredient(copy); + var ingredients = MapIngredientTypeManager.getFrom(copy, ItemRecipeCapability.CAP); var recipe = filterMode.lookup.recurseIngredientTreeFindRecipe(List.of(ingredients), filterMode.lookup.getLookup(), r -> true); if (recipe == null) return 0; diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/TagFilter.java b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/TagFilter.java index 40f7719173f..712f8be4a57 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/TagFilter.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/TagFilter.java @@ -16,11 +16,6 @@ import java.util.function.Consumer; import java.util.regex.Pattern; -/** - * @author KilaBash - * @date 2023/3/14 - * @implNote TagFilter - */ public abstract class TagFilter> implements Filter { private static final Pattern DOUBLE_WILDCARD = Pattern.compile("\\*{2,}"); diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/TagFluidFilter.java b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/TagFluidFilter.java index c35e74f4def..ff54bd91eb0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/TagFluidFilter.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/TagFluidFilter.java @@ -13,11 +13,6 @@ import java.util.Objects; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/3/13 - * @implNote TagFluidFilter - */ public class TagFluidFilter extends TagFilter implements FluidFilter { private final Object2BooleanMap cache = new Object2BooleanOpenHashMap<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/TagItemFilter.java b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/TagItemFilter.java index 06fff4d3843..5018590726a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/TagItemFilter.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/TagItemFilter.java @@ -12,11 +12,6 @@ import java.util.Objects; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/3/13 - * @implNote TagItemFilter - */ public class TagItemFilter extends TagFilter implements ItemFilter { private final Object2BooleanMap cache = new Object2BooleanOpenHashMap<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/RotationState.java b/src/main/java/com/gregtechceu/gtceu/api/data/RotationState.java index 95a2ee27d34..2751ff4df82 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/RotationState.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/RotationState.java @@ -1,5 +1,7 @@ package com.gregtechceu.gtceu.api.data; +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; + import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.DirectionProperty; @@ -9,9 +11,8 @@ public enum RotationState implements Predicate { ALL(dir -> true, Direction.NORTH, BlockStateProperties.FACING), - NONE(dir -> false, Direction.NORTH, DirectionProperty.create("facing", Direction.NORTH)), - Y_AXIS(dir -> dir.getAxis() == Direction.Axis.Y, Direction.UP, - DirectionProperty.create("facing", Direction.Plane.VERTICAL)), + NONE(dir -> false, Direction.NORTH, GTBlockStateProperties.NORTH_ONLY_FACING), + Y_AXIS(dir -> dir.getAxis() == Direction.Axis.Y, Direction.UP, GTBlockStateProperties.VERTICAL_FACING), NON_Y_AXIS(dir -> dir.getAxis() != Direction.Axis.Y, Direction.NORTH, BlockStateProperties.HORIZONTAL_FACING); final Predicate predicate; @@ -24,20 +25,6 @@ public enum RotationState implements Predicate { this.property = property; } - static final ThreadLocal STATE = new ThreadLocal<>(); - - public static RotationState get() { - return STATE.get(); - } - - public static void set(RotationState state) { - STATE.set(state); - } - - public static void clear() { - STATE.remove(); - } - @Override public boolean test(Direction dir) { return predicate.test(dir); diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/ChemicalHelper.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/ChemicalHelper.java index 65e1a217436..ae7d984611e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/ChemicalHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/ChemicalHelper.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTCEuAPI; +import com.gregtechceu.gtceu.api.data.chemical.material.ItemMaterialData; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.FluidProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; @@ -16,7 +17,6 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.Holder; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.core.registries.Registries; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -39,31 +39,31 @@ import static com.gregtechceu.gtceu.api.GTValues.M; import static com.gregtechceu.gtceu.api.data.chemical.material.ItemMaterialData.*; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote ChemicalHelper - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class ChemicalHelper { - public static MaterialStack getMaterialStack(@Nullable Object object) { - if (object instanceof MaterialStack materialStack) { - return materialStack; - } else if (object instanceof MaterialEntry entry) { - return getMaterialStack(entry); + public static @Nullable ItemMaterialInfo getMaterialInfo(@Nullable Object object) { + if (object instanceof ItemMaterialInfo materialInfo) { + return materialInfo; + } else if (object instanceof MaterialStack materialStack) { + return new ItemMaterialInfo(materialStack); } else if (object instanceof ItemStack itemStack) { - return getMaterialStack(itemStack); + return ItemMaterialData.getMaterialInfo(itemStack.getItem()); } else if (object instanceof ItemLike item) { - return getMaterialStack(item); + return ItemMaterialData.getMaterialInfo(item); + } else if (object instanceof MaterialEntry entry) { + var items = getItems(entry); + if (!items.isEmpty()) { + return ItemMaterialData.getMaterialInfo(items.get(0)); + } } else if (object instanceof Ingredient ing) { for (var stack : ing.getItems()) { - var ms = getMaterialStack(stack); - if (!ms.isEmpty()) return ms; + var ms = ItemMaterialData.getMaterialInfo(stack.getItem()); + if (ms != null) return ms; } } - return MaterialStack.EMPTY; + return null; } public static MaterialStack getMaterialStack(ItemStack itemStack) { @@ -226,13 +226,13 @@ public static MaterialEntry getMaterialEntry(TagKey tag) { public static List getItems(MaterialEntry materialEntry) { if (materialEntry.material().isNull()) return new ArrayList<>(); return MATERIAL_ENTRY_ITEM_MAP.computeIfAbsent(materialEntry, entry -> { + TagPrefix prefix = entry.tagPrefix(); var items = new ArrayList>(); - for (TagKey tag : getTags(entry.tagPrefix(), entry.material())) { + for (TagKey tag : prefix.getItemTags(entry.material())) { for (Holder itemHolder : BuiltInRegistries.ITEM.getTagOrEmpty(tag)) { items.add(itemHolder::value); } } - TagPrefix prefix = entry.tagPrefix(); if (items.isEmpty() && prefix.hasItemTable() && prefix.doGenerateItem(entry.material())) { return List.of(() -> prefix.getItemFromTable(entry.material()).get().asItem()); } @@ -259,14 +259,19 @@ public static ItemStack get(TagPrefix orePrefix, Material material) { public static List getBlocks(MaterialEntry materialEntry) { if (materialEntry.isEmpty()) return Collections.emptyList(); return MATERIAL_ENTRY_BLOCK_MAP.computeIfAbsent(materialEntry, entry -> { - + TagPrefix prefix = entry.tagPrefix(); var blocks = new ArrayList>(); - for (var tag : getTags(materialEntry.tagPrefix(), entry.material())) { - var blockTag = TagKey.create(Registries.BLOCK, tag.location()); - for (Holder itemHolder : BuiltInRegistries.BLOCK.getTagOrEmpty(blockTag)) { + for (TagKey tag : prefix.getBlockTags(entry.material())) { + for (Holder itemHolder : BuiltInRegistries.BLOCK.getTagOrEmpty(tag)) { blocks.add(itemHolder::value); } } + if (blocks.isEmpty() && prefix.hasItemTable() && prefix.doGenerateBlock(entry.material())) { + var blockSupplier = ItemMaterialData.convertToBlock(prefix.getItemFromTable(entry.material())); + if (blockSupplier != null) { + return Collections.singletonList(blockSupplier); + } + } return blocks; }).stream().map(Supplier::get).collect(Collectors.toList()); } @@ -301,10 +306,6 @@ public static TagKey getTag(TagPrefix orePrefix, @NotNull Material materia return null; } - public static TagKey[] getTags(TagPrefix orePrefix, @NotNull Material material) { - return orePrefix.getItemTags(material); - } - public static List> getAllItemInfos() { List> f = new ArrayList<>(); for (var entry : ITEM_MATERIAL_INFO.entrySet()) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/ItemMaterialData.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/ItemMaterialData.java index 5c0332daef5..342641859da 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/ItemMaterialData.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/ItemMaterialData.java @@ -24,13 +24,14 @@ import net.minecraftforge.registries.RegistryObject; import com.mojang.datafixers.util.Pair; -import com.tterrag.registrate.util.entry.BlockEntry; +import com.tterrag.registrate.util.entry.RegistryEntry; import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenCustomHashMap; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import it.unimi.dsi.fastutil.objects.Object2ReferenceOpenHashMap; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.function.Consumer; @@ -78,11 +79,8 @@ public static void registerMaterialEntry(@NotNull Supplier s @NotNull MaterialEntry materialEntry) { registerItemEntry(supplier, materialEntry); ITEM_MATERIAL_ENTRY.add(Pair.of(() -> supplier.get().asItem(), materialEntry)); - if (supplier instanceof RegistryObject registryObject) { - registerRegistryObjectEntry(registryObject, materialEntry); - } else if (supplier instanceof BlockEntry entry) { - registerBlockEntry(entry, materialEntry); - } else if (supplier instanceof MemoizedBlockSupplier blockSupplier) { + var blockSupplier = convertToBlock(supplier); + if (blockSupplier != null) { registerBlockEntry(blockSupplier, materialEntry); } } @@ -131,21 +129,30 @@ private static void registerItemEntry(@NotNull Supplier supp } } - @SuppressWarnings("unchecked") - private static void registerRegistryObjectEntry(@NotNull RegistryObject registryObject, - @NotNull MaterialEntry materialEntry) { - var key = registryObject.getKey(); - if (key != null && key.isFor(Registries.BLOCK)) { - registerBlockEntry((Supplier) registryObject, materialEntry); - } - } - private static void registerBlockEntry(@NotNull Supplier supplier, @NotNull MaterialEntry materialEntry) { MATERIAL_ENTRY_BLOCK_MAP.computeIfAbsent(materialEntry, k -> new ArrayList<>()) .add(supplier); } + @SuppressWarnings("unchecked") + public static @Nullable Supplier convertToBlock(@NotNull Supplier supplier) { + if (supplier instanceof RegistryObject registryObject) { + var key = registryObject.getKey(); + if (key != null && key.isFor(Registries.BLOCK)) { + return (Supplier) registryObject; + } + } else if (supplier instanceof RegistryEntry entry) { + var key = entry.getKey(); + if (key.isFor(Registries.BLOCK)) { + return (Supplier) entry; + } + } else if (supplier instanceof MemoizedBlockSupplier blockSupplier) { + return blockSupplier; + } + return null; + } + public static void reinitializeMaterialData() { // Clear old data MATERIAL_ENTRY_ITEM_MAP.clear(); @@ -166,28 +173,43 @@ public static void reinitializeMaterialData() { @ApiStatus.Internal public static void resolveItemMaterialInfos(Consumer provider) { - for (var entry : UNRESOLVED_ITEM_MATERIAL_INFO.entrySet()) { - List stacks = new ArrayList<>(); + for (var iter = UNRESOLVED_ITEM_MATERIAL_INFO.entrySet().iterator(); iter.hasNext();) { + var entry = iter.next(); var stack = entry.getKey(); - var count = stack.getCount(); - for (var input : entry.getValue()) { - var matStack = getMaterialInfo(input.getItem()); - if (matStack != null) { - matStack.getMaterials() - .forEach(ms -> stacks.add(new MaterialStack(ms.material(), ms.amount() / count))); - } + var existingMaterialInfo = recurseFindMaterialInfo(ITEM_MATERIAL_INFO.get(stack.getItem()), stack); + if (existingMaterialInfo != null) { + RecyclingRecipes.registerRecyclingRecipes(provider, stack.copyWithCount(1), + existingMaterialInfo.getMaterials(), false, null); } - if (stacks.isEmpty()) continue; - var matInfo = ITEM_MATERIAL_INFO.get(stack.getItem()); - if (matInfo == null) { - matInfo = new ItemMaterialInfo(stacks); - ITEM_MATERIAL_INFO.put(stack.getItem(), matInfo); + iter.remove(); + } + } + + private static ItemMaterialInfo recurseFindMaterialInfo(ItemMaterialInfo info, ItemStack stack) { + // grab material info from each input + for (var input : UNRESOLVED_ITEM_MATERIAL_INFO.get(stack)) { + // recurse if its nested inputs, not yet resolved + if (UNRESOLVED_ITEM_MATERIAL_INFO.containsKey(input)) { + info = recurseFindMaterialInfo(info, input); } else { - matInfo.addMaterialStacks(stacks); + // add the info from an item that is resolved (or not in the map to begin with) + var singularMatInfo = getMaterialInfo(input.getItem()); + int inputCount = input.getCount(); + int outputCount = stack.getCount(); + if (singularMatInfo != null) { // if that material info exists + List stackList = new ArrayList<>(); + for (var matStack : singularMatInfo.getMaterials()) { + stackList.add(matStack.multiply(inputCount).divide(outputCount)); + } + if (info == null) { // if the info isn't set initialize it + info = new ItemMaterialInfo(stackList); + ITEM_MATERIAL_INFO.put(stack.getItem(), info); + } else { // otherwise, add to it + info.addMaterialStacks(stackList); + } + } } - RecyclingRecipes.registerRecyclingRecipes(provider, entry.getKey().copyWithCount(1), - matInfo.getMaterials(), false, null); } - UNRESOLVED_ITEM_MATERIAL_INFO.clear(); + return info; } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java index e801e808ff8..5ebb1cf55cf 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java @@ -81,8 +81,16 @@ public class Material implements Comparable { /** * Chemical formula of this material */ + @Getter private String chemicalFormula; + /** + * Material specific tags + */ + @Setter + @Getter + private List> itemTags = new ArrayList<>(); + private String calculateChemicalFormula() { if (chemicalFormula != null) return this.chemicalFormula; if (materialInfo.element != null) { @@ -103,10 +111,6 @@ private String calculateChemicalFormula() { return ""; } - public String getChemicalFormula() { - return chemicalFormula; - } - public Material setFormula(String formula) { return setFormula(formula, true); } @@ -360,9 +364,9 @@ public void setMaterialSecondaryARGB(int materialRGB) { } public int getLayerARGB(int layerIndex) { - // get 2nd digit as positive if emissive layer + // parse emissive layer value as -(layer + 101) if (layerIndex < -100) { - layerIndex = (Math.abs(layerIndex) % 100) / 10; + layerIndex = -layerIndex - 101; } if (layerIndex > materialInfo.colors.size() - 1 || layerIndex < 0) return -1; int layerColor = getMaterialARGB(layerIndex); @@ -503,19 +507,23 @@ public String toString() { return materialInfo.resourceLocation.toString(); } - // must be named multiply for GroovyScript to allow `mat * quantity -> MaterialStack` + // must be named multiply for GroovyScript to allow `material * quantity -> MaterialStack` public MaterialStack multiply(long amount) { return new MaterialStack(this, amount); } public boolean hasProperty(PropertyKey key) { - return getProperty(key) != null; + return properties.hasProperty(key); } public T getProperty(PropertyKey key) { return properties.getProperty(key); } + public void removeProperty(PropertyKey key) { + properties.removeProperty(key); + } + public void setProperty(PropertyKey key, IMaterialProperty property) { if (!GTCEuAPI.materialManager.canModifyMaterials()) { throw new IllegalStateException("Cannot add properties to a Material when registry is frozen!"); @@ -544,14 +552,21 @@ public boolean isNull() { } @RemapPrefixForJS("kjs$") + @SuppressWarnings("unused") // API, need to treat all of these as used public static class Builder extends BuilderBase { private final MaterialInfo materialInfo; private final MaterialProperties properties; private final MaterialFlags flags; + private Set ignoredTagPrefixes = null; + private final List> itemTags = new ArrayList<>(); + /* + * Temporary data used to determine the final material formula tooltip. + */ private String formula = null; + private boolean formatFormula = true; /* * The temporary list of components for this Material. @@ -560,7 +575,7 @@ public static class Builder extends BuilderBase { private List compositionSupplier; /* - * Temporary value to use to determine how to calculate default RGB + * Temporary value to use to determine how to calculate default RGB. */ private boolean averageRGB = false; @@ -586,12 +601,7 @@ public Builder(ResourceLocation resourceLocation) { * Material Types */ - /** - * Add a {@link FluidProperty} to this Material.
- * Will be created as a {@link FluidStorageKeys#LIQUID}, without a Fluid Block. - * - * @throws IllegalArgumentException If a {@link FluidProperty} has already been added to this Material. - */ + /** @see #liquid */ public Builder fluid() { fluid(FluidStorageKeys.LIQUID, new FluidBuilder()); return this; @@ -599,9 +609,11 @@ public Builder fluid() { /** * Add a {@link FluidProperty} to this Material.
- * Will be created with the specified state a with standard {@link FluidBuilder} defaults. - *

+ * Will be created with the specified state and with standard {@link FluidBuilder} defaults.
* Can be called multiple times to add multiple fluids. + *
+ *
+ * See {@link #fluid(FluidStorageKey, FluidBuilder)} for setting other values. */ public Builder fluid(@NotNull FluidStorageKey key, @NotNull FluidState state) { return fluid(key, new FluidBuilder().state(state)); @@ -609,8 +621,9 @@ public Builder fluid(@NotNull FluidStorageKey key, @NotNull FluidState state) { /** * Add a {@link FluidProperty} to this Material.
- *

* Can be called multiple times to add multiple fluids. + * + * @see FluidBuilder */ public Builder fluid(@NotNull FluidStorageKey key, @NotNull FluidBuilder builder) { properties.ensureSet(PropertyKey.FLUID); @@ -620,9 +633,21 @@ public Builder fluid(@NotNull FluidStorageKey key, @NotNull FluidBuilder builder } /** - * Add a liquid for this material. + * Add a liquid for this Material. + *
+ *
+ * Created without a Fluid Block.
+ * Temperature will default to: + *

    + *
  • The EBF temperature of this Material, if it has a {@link BlastProperty} + *
  • 1200K, if this Material has a {@link DustProperty} + *
  • 293K otherwise + *
+ *
+ * See {@link #liquid(FluidBuilder)} for setting your own value(s). * - * @see #fluid(FluidStorageKey, FluidState) + * @throws IllegalArgumentException If a {@link FluidStorageKeys#LIQUID LIQUID} has + * already been added to this Material. */ public Builder liquid() { return fluid(FluidStorageKeys.LIQUID, FluidState.LIQUID); @@ -630,21 +655,45 @@ public Builder liquid() { /** * Add a liquid for this material. + * + * @throws IllegalArgumentException If a {@link FluidStorageKeys#LIQUID LIQUID} has + * already been added to this Material. * - * @see #fluid(FluidStorageKey, FluidState) + * @see FluidBuilder */ public Builder liquid(@NotNull FluidBuilder builder) { return fluid(FluidStorageKeys.LIQUID, builder.state(FluidState.LIQUID)); } + /** + * Add a liquid for this Material.
+ * Created without a Fluid Block. + *
+ *
+ * See {@link #liquid(FluidBuilder)} for setting your own value(s). + * + * @throws IllegalArgumentException If a {@link FluidStorageKeys#LIQUID LIQUID} has + * already been added to this Material. + */ public Builder liquid(int temp) { return liquid(new FluidBuilder().temperature(temp)); } /** - * Add a plasma for this material. + * Add a plasma for this Material. + *
+ *
+ * Temperature will default to: + *
    + *
  • 10,000K + the EBF temperature of this Material, if it has a {@link BlastProperty} + *
  • 10,000K + the temperature of another fluid for this Material (liquid, then gas) + *
  • 10,000K otherwise + *
+ *
+ * See {@link #plasma(FluidBuilder)} for setting your own value(s). * - * @see #fluid(FluidStorageKey, FluidState) + * @throws IllegalArgumentException If a {@link FluidStorageKeys#PLASMA PLASMA} has + * already been added to this Material. */ public Builder plasma() { return fluid(FluidStorageKeys.PLASMA, FluidState.PLASMA); @@ -652,21 +701,43 @@ public Builder plasma() { /** * Add a plasma for this material. + * + * @throws IllegalArgumentException If a {@link FluidStorageKeys#PLASMA PLASMA} has + * already been added to this Material. * - * @see #fluid(FluidStorageKey, FluidState) + * @see FluidBuilder */ public Builder plasma(@NotNull FluidBuilder builder) { return fluid(FluidStorageKeys.PLASMA, builder.state(FluidState.PLASMA)); } + /** + * Add a liquid for this Material. + *
+ *
+ * See {@link #plasma(FluidBuilder)} for setting your own value(s). + * + * @throws IllegalArgumentException If a {@link FluidStorageKeys#PLASMA PLASMA} has + * already been added to this Material. + */ public Builder plasma(int temp) { return plasma(new FluidBuilder().temperature(temp)); } /** - * Add a gas for this material. + * Add a gas for this Material. + *
+ *
+ * Temperature will default to: + *
    + *
  • 100K + the EBF temperature of this Material, if it has a {@link BlastProperty} + *
  • 293K otherwise + *
+ *
+ * See {@link #gas(FluidBuilder)} for setting your own value(s). * - * @see #fluid(FluidStorageKey, FluidState) + * @throws IllegalArgumentException If a {@link FluidStorageKeys#GAS GAS} has + * already been added to this Material. */ public Builder gas() { return fluid(FluidStorageKeys.GAS, FluidState.GAS); @@ -674,20 +745,37 @@ public Builder gas() { /** * Add a gas for this material. + * + * @throws IllegalArgumentException If a {@link FluidStorageKeys#GAS GAS} has + * already been added to this Material. * - * @see #fluid(FluidStorageKey, FluidState) + * @see FluidBuilder */ public Builder gas(@NotNull FluidBuilder builder) { return fluid(FluidStorageKeys.GAS, builder.state(FluidState.GAS)); } + /** + * Add a gas for this Material. + *
+ *
+ * See {@link #gas(FluidBuilder)} for setting your own value(s). + * + * @throws IllegalArgumentException If a {@link FluidStorageKeys#GAS GAS} has + * already been added to this Material. + */ public Builder gas(int temp) { return gas(new FluidBuilder().temperature(temp)); } /** * Add a {@link DustProperty} to this Material.
- * Will be created with a Harvest Level of 2 and no Burn Time (Furnace Fuel). + *
+ * Sets Harvest Level to 2 if not already set.
+ * Sets Burn Time (Furnace Fuel) to 0 if not already set. + *
+ *
+ * See {@link #dust(int, int)} for setting your own value(s). * * @throws IllegalArgumentException If a {@link DustProperty} has already been added to this Material. */ @@ -698,7 +786,11 @@ public Builder dust() { /** * Add a {@link DustProperty} to this Material.
- * Will be created with no Burn Time (Furnace Fuel). + *
+ * Sets Burn Time (Furnace Fuel) to 0 if not already set. + *
+ *
+ * See {@link #dust(int, int)} for setting your own value(s). * * @param harvestLevel The Harvest Level of this block for Mining.
* If this Material also has a {@link ToolProperty}, this value will @@ -712,9 +804,10 @@ public Builder dust(int harvestLevel) { /** * Add a {@link DustProperty} to this Material. * - * @param harvestLevel The Harvest Level of this block for Mining.
+ * @param harvestLevel The Harvest Level of this block for Mining. 2 will make it require an Iron tool.
* If this Material also has a {@link ToolProperty}, this value will - * also be used to determine the tool's Mining Level. + * also be used to determine the tool's Mining level (-1). So 2 will make the tool harvest + * Diamonds. * @param burnTime The Burn Time (in ticks) of this Material as a Furnace Fuel. * @throws IllegalArgumentException If a {@link DustProperty} has already been added to this Material. */ @@ -725,8 +818,11 @@ public Builder dust(int harvestLevel, int burnTime) { /** * Add a {@link WoodProperty} to this Material.
- * Useful for marking a Material as Wood for various additional behaviors.
- * Will be created with a Harvest Level of 0, and a Burn Time of 300 (Furnace Fuel). + * Useful for marking a Material as Wood for various additional behaviors. + *
+ *
+ * Sets Harvest Level to 2 if not already set.
+ * Sets Burn Time (Furnace Fuel) to 0 if not already set. * * @throws IllegalArgumentException If a {@link DustProperty} has already been added to this Material. */ @@ -736,12 +832,15 @@ public Builder wood() { /** * Add a {@link WoodProperty} to this Material.
- * Useful for marking a Material as Wood for various additional behaviors.
- * Will be created with a Burn Time of 300 (Furnace Fuel). + * Useful for marking a Material as Wood for various additional behaviors. + *
+ *
+ * Sets Burn Time (Furnace Fuel) to 0 if not already set. * - * @param harvestLevel The Harvest Level of this block for Mining.
+ * @param harvestLevel The Harvest Level of this block for Mining. 2 will make it require an Iron tool.
* If this Material also has a {@link ToolProperty}, this value will - * also be used to determine the tool's Mining Level. + * also be used to determine the tool's Mining level (-1). So 2 will make the tool harvest + * Diamonds. * @throws IllegalArgumentException If a {@link DustProperty} has already been added to this Material. */ public Builder wood(int harvestLevel) { @@ -750,7 +849,7 @@ public Builder wood(int harvestLevel) { /** * Add a {@link WoodProperty} to this Material.
- * Useful for marking a Material as Wood for various additional behaviors.
+ * Useful for marking a Material as Wood for various additional behaviors. * * @param harvestLevel The Harvest Level of this block for Mining.
* If this Material also has a {@link ToolProperty}, this value will @@ -766,10 +865,17 @@ public Builder wood(int harvestLevel, int burnTime) { /** * Add an {@link IngotProperty} to this Material.
- * Will be created with a Harvest Level of 2 and no Burn Time (Furnace Fuel).
* Will automatically add a {@link DustProperty} to this Material if it does not already have one. + *
+ *
+ * Sets Harvest Level to 2 if not already set.
+ * Sets Burn Time (Furnace Fuel) to 0 if not already set. + *
+ *
+ * See {@link #ingot(int, int)} for setting your own value(s). * - * @throws IllegalArgumentException If an {@link IngotProperty} has already been added to this Material. + * @throws IllegalArgumentException If a {@link GemProperty} has already been added to this Material, or if + * an {@link IngotProperty} has already been added to this Material. */ public Builder ingot() { properties.ensureSet(PropertyKey.INGOT); @@ -778,15 +884,21 @@ public Builder ingot() { /** * Add an {@link IngotProperty} to this Material.
- * Will be created with no Burn Time (Furnace Fuel).
* Will automatically add a {@link DustProperty} to this Material if it does not already have one. + *
+ *
+ * Sets Burn Time (Furnace Fuel) to 0 if not already set. + *
+ *
+ * See {@link #ingot(int, int)} for setting your own value(s). * - * @param harvestLevel The Harvest Level of this block for Mining. 2 will make it require a iron tool.
+ * @param harvestLevel The Harvest Level of this block for Mining. 2 will make it require an Iron tool.
* If this Material also has a {@link ToolProperty}, this value will * also be used to determine the tool's Mining level (-1). So 2 will make the tool harvest - * diamonds.
+ * Diamonds.
* If this Material already had a Harvest Level defined, it will be overridden. - * @throws IllegalArgumentException If an {@link IngotProperty} has already been added to this Material. + * @throws IllegalArgumentException If a {@link GemProperty} has already been added to this Material, or if + * an {@link IngotProperty} has already been added to this Material. */ public Builder ingot(int harvestLevel) { return ingot(harvestLevel, 0); @@ -796,14 +908,15 @@ public Builder ingot(int harvestLevel) { * Add an {@link IngotProperty} to this Material.
* Will automatically add a {@link DustProperty} to this Material if it does not already have one. * - * @param harvestLevel The Harvest Level of this block for Mining. 2 will make it require a iron tool.
+ * @param harvestLevel The Harvest Level of this block for Mining. 2 will make it require an Iron tool.
* If this Material also has a {@link ToolProperty}, this value will * also be used to determine the tool's Mining level (-1). So 2 will make the tool harvest - * diamonds.
+ * Diamonds.
* If this Material already had a Harvest Level defined, it will be overridden. * @param burnTime The Burn Time (in ticks) of this Material as a Furnace Fuel.
* If this Material already had a Burn Time defined, it will be overridden. - * @throws IllegalArgumentException If an {@link IngotProperty} has already been added to this Material. + * @throws IllegalArgumentException If a {@link GemProperty} has already been added to this Material, or if + * an {@link IngotProperty} has already been added to this Material. */ public Builder ingot(int harvestLevel, int burnTime) { DustProperty prop = properties.getProperty(PropertyKey.DUST); @@ -818,10 +931,17 @@ public Builder ingot(int harvestLevel, int burnTime) { /** * Add a {@link GemProperty} to this Material.
- * Will be created with a Harvest Level of 2 and no Burn Time (Furnace Fuel).
* Will automatically add a {@link DustProperty} to this Material if it does not already have one. + *
+ *
+ * Sets Harvest Level to 2 if not already set.
+ * Sets Burn Time (Furnace Fuel) to 0 if not already set. + *
+ *
+ * See {@link #gem(int, int)} for setting your own value(s). * - * @throws IllegalArgumentException If a {@link GemProperty} has already been added to this Material. + * @throws IllegalArgumentException If an {@link IngotProperty} has already been added to this Material, or if + * a {@link GemProperty} has already been added to this Material. */ public Builder gem() { properties.ensureSet(PropertyKey.GEM); @@ -830,14 +950,21 @@ public Builder gem() { /** * Add a {@link GemProperty} to this Material.
- * Will be created with no Burn Time (Furnace Fuel).
* Will automatically add a {@link DustProperty} to this Material if it does not already have one. + *
+ *
+ * Sets Burn Time (Furnace Fuel) to 0 if not already set. + *
+ *
+ * See {@link #gem(int, int)} for setting your own value(s). * - * @param harvestLevel The Harvest Level of this block for Mining.
+ * @param harvestLevel The Harvest Level of this block for Mining. 2 will make it require an Iron tool.
* If this Material also has a {@link ToolProperty}, this value will - * also be used to determine the tool's Mining level.
+ * also be used to determine the tool's Mining level (-1). So 2 will make the tool harvest + * Diamonds.
* If this Material already had a Harvest Level defined, it will be overridden. - * @throws IllegalArgumentException If a {@link GemProperty} has already been added to this Material. + * @throws IllegalArgumentException If an {@link IngotProperty} has already been added to this Material, or if + * a {@link GemProperty} has already been added to this Material. */ public Builder gem(int harvestLevel) { return gem(harvestLevel, 0); @@ -853,6 +980,8 @@ public Builder gem(int harvestLevel) { * If this Material already had a Harvest Level defined, it will be overridden. * @param burnTime The Burn Time (in ticks) of this Material as a Furnace Fuel.
* If this Material already had a Burn Time defined, it will be overridden. + * @throws IllegalArgumentException If an {@link IngotProperty} has already been added to this Material, or if + * a {@link GemProperty} has already been added to this Material. */ public Builder gem(int harvestLevel, int burnTime) { DustProperty prop = properties.getProperty(PropertyKey.DUST); @@ -867,8 +996,14 @@ public Builder gem(int harvestLevel, int burnTime) { /** * Add a {@link PolymerProperty} to this Material.
- * Will be created with a Harvest Level of 2 and no Burn Time (Furnace Fuel).
* Will automatically add a {@link DustProperty} to this Material if it does not already have one. + *
+ *
+ * Sets Harvest Level to 2 if not already set.
+ * Sets Burn Time (Furnace Fuel) to 0 if not already set. + *
+ *
+ * See {@link #polymer(int, int)} for setting your own value(s). * * @throws IllegalArgumentException If an {@link PolymerProperty} has already been added to this Material. */ @@ -880,7 +1015,12 @@ public Builder polymer() { /** * Add a {@link PolymerProperty} to this Material.
* Will automatically add a {@link DustProperty} to this Material if it does not already have one. - * Will have a burn time of 0 + *
+ *
+ * Sets Burn Time (Furnace Fuel) to 0 if not already set. + *
+ *
+ * See {@link #polymer(int, int)} for setting your own value(s). * * @param harvestLevel The Harvest Level of this block for Mining.
* If this Material also has a {@link ToolProperty}, this value will @@ -889,13 +1029,36 @@ public Builder polymer() { * @throws IllegalArgumentException If an {@link PolymerProperty} has already been added to this Material. */ public Builder polymer(int harvestLevel) { + return polymer(harvestLevel, 0); + } + + /** + * Add a {@link PolymerProperty} to this Material.
+ * Will automatically add a {@link DustProperty} to this Material if it does not already have one. + * + * @param harvestLevel The Harvest Level of this block for Mining.
+ * If this Material also has a {@link ToolProperty}, this value will + * also be used to determine the tool's Mining level.
+ * If this Material already had a Harvest Level defined, it will be overridden. + * @param burnTime The Burn Time (in ticks) of this Material as a Furnace Fuel.
+ * If this Material already had a Burn Time defined, it will be overridden. + * @throws IllegalArgumentException If an {@link PolymerProperty} has already been added to this Material. + */ + public Builder polymer(int harvestLevel, int burnTime) { DustProperty prop = properties.getProperty(PropertyKey.DUST); - if (prop == null) dust(harvestLevel, 0); + if (prop == null) dust(harvestLevel, burnTime); else if (prop.getHarvestLevel() == 2) prop.setHarvestLevel(harvestLevel); properties.ensureSet(PropertyKey.POLYMER); return this; } + /** + * Set the burn time of this Material as a Furnace Fuel.
+ * Will automatically add a {@link DustProperty} to this Material if it does not already have one. + * + * @param burnTime The Burn Time (in ticks) of this Material as a Furnace Fuel.
+ * If this Material already had a Burn Time defined, it will be overridden. + */ public Builder burnTime(int burnTime) { DustProperty prop = properties.getProperty(PropertyKey.DUST); if (prop == null) { @@ -908,8 +1071,14 @@ public Builder burnTime(int burnTime) { /** * Set the Color of this Material.
- * Defaults to 0xFFFFFF unless {@link Builder#colorAverage()} was called, where + * Defaults to 0xFFFFFF unless {@link #colorAverage()} was called, where * it will be a weighted average of the components of the Material. + *
+ *
+ * Will automatically color the Fluid of the Material. + *
+ *
+ * See {@link #color(int, boolean)} to set an override of the Fluid's color. * * @param color The RGB-formatted Color. */ @@ -920,7 +1089,7 @@ public Builder color(int color) { /** * Set the Color of this Material.
- * Defaults to 0xFFFFFF unless {@link Builder#colorAverage()} was called, where + * Defaults to 0xFFFFFF unless {@link Builder#colorAverage()} was called, where * it will be a weighted average of the components of the Material. * * @param color The RGB-formatted Color. @@ -934,7 +1103,7 @@ public Builder color(int color, boolean hasFluidColor) { /** * Set the secondary color of this Material.
- * Defaults to 0xFFFFFF unless {@link Builder#colorAverage()} was called, where + * Defaults to 0xFFFFFF unless {@link Builder#colorAverage()} was called, where * it will be a weighted average of the components of the Material. * * @param color The RGB-formatted Color. @@ -944,6 +1113,10 @@ public Builder secondaryColor(int color) { return this; } + /** + * Set the Color of this Material to be the average of the components specified in {@link #components}.
+ * Will default to 0xFFFFFF if a components list is not specified. + */ public Builder colorAverage() { this.averageRGB = true; return this; @@ -951,12 +1124,14 @@ public Builder colorAverage() { /** * Set the {@link MaterialIconSet} of this Material.
- * Defaults vary depending on if the Material has a:
+ *
+ * Defaults vary depending on if the Material has a: *
    *
  • {@link GemProperty}, it will default to {@link MaterialIconSet#GEM_VERTICAL} *
  • {@link IngotProperty} or {@link DustProperty}, it will default to {@link MaterialIconSet#DULL} *
  • {@link FluidProperty}, it will default to {@link MaterialIconSet#FLUID} *
+ *
* Default will be determined by first-found Property in this order, unless specified. * * @param iconSet The {@link MaterialIconSet} of this Material. @@ -966,6 +1141,14 @@ public Builder iconSet(MaterialIconSet iconSet) { return this; } + /** + * Set the components that make up this Material.
+ * This information is used for automatic decomposition, chemical formula generation, among other things. + * + * @param components An Object array formed as pairs of {@link Material} and Integer, representing the + * Material and the amount of said Material in this Material's composition. + * @throws IllegalArgumentException if the Object array is malformed. + */ public Builder components(Object... components) { Preconditions.checkArgument( components.length % 2 == 0, @@ -984,21 +1167,37 @@ public Builder components(Object... components) { return this; } + /** + * Set the components that make up this Material.
+ * This information is used for automatic decomposition, chemical formula generation, among other things. + * + * @param components An array of {@link MaterialStack}, each representing the + * Material and the amount of said Material in this Material's composition. + */ public Builder componentStacks(MaterialStack... components) { composition = Arrays.asList(components); return this; } + /** + * Set the components that make up this Material.
+ * This information is used for automatic decomposition, chemical formula generation, among other things. + * + * @param components An {@link ImmutableList} of {@link MaterialStack}, each representing the + * Material and the amount of said Material in this Material's composition. + */ public Builder componentStacks(ImmutableList components) { composition = components; return this; } + /** @see #componentStacks(MaterialStack...) */ public Builder kjs$components(MaterialStackWrapper... components) { compositionSupplier = Arrays.asList(components); return this; } + /** @see #componentStacks(ImmutableList) componentStacks(ImmutableList<MaterialStack>) */ public Builder kjs$components(ImmutableList components) { compositionSupplier = components; return this; @@ -1032,7 +1231,9 @@ public Builder appendFlags(Collection f1, MaterialFlag... f2) { } /** - * Added {@link TagPrefix} to be ignored by this Material.
+ * Remove specific Items from this Material. + * + * @param prefixes The list of prefixes to ignore. */ public Builder ignoredTagPrefixes(TagPrefix... prefixes) { if (this.ignoredTagPrefixes == null) { @@ -1042,63 +1243,193 @@ public Builder ignoredTagPrefixes(TagPrefix... prefixes) { return this; } + /** + * Add a custom Item Tag to all items made from this Material. + * + * @param key The tag to add. + */ + public Builder customTags(TagKey key) { + this.itemTags.add(key); + return this; + } + + /** + * Set the Element of this Material.
+ * Should be effectively singleton; each element should only have 1 Material claiming to represent it. + * + * @param element The {@link Element} that this Material represents. + */ public Builder element(Element element) { this.materialInfo.element = element; return this; } + /** + * Set the Formula of this Material. + *
+ *
+ * Will override the automatically generated formula.
+ * Will automatically format numbers as subscripts. + * + * @param formula The formula for this Material. + */ public Builder formula(String formula) { this.formula = formula; return this; } /** - * Replaced the old toolStats methods which took many parameters. - * Use {@link ToolProperty.Builder} instead to create a Tool Property. + * Set the Formula of this Material. + *
+ *
+ * Will override the automatically generated formula.
+ * + * @param formula The formula for this Material. + * @param withFormatting Whether numbers should be formatted as subscripts. + */ + public Builder formula(String formula, boolean withFormatting) { + this.formula = formula; + this.formatFormula = withFormatting; + return this; + } + + /** + * Add a {@link ToolProperty} to this Material.
+ * Adds GregTech and Vanilla-substitute tools to this Material.
+ * Will automatically add an {@link IngotProperty} to this Material if it does not already have one. + * + * @see ToolProperty.Builder */ public Builder toolStats(ToolProperty toolProperty) { properties.setProperty(PropertyKey.TOOL, toolProperty); return this; } + /** + * Add an {@link ArmorProperty} to this Material.
+ * Adds Armors to this Material. + * + * @see ArmorProperty.Builder + */ + public Builder armorStats(ArmorProperty armorProperty) { + properties.setProperty(PropertyKey.ARMOR, armorProperty); + return this; + } + + /** + * Adds a {@link RotorProperty} to this Material, generating Turbine Rotors.
+ * Will automatically add an {@link IngotProperty} to this Material if it does not already have one. + * + * @param power The power of Turbine rotors made of this Material, used as a power multiplier with + * the Rotor Holder's tier. + * @param efficiency The efficiency of Turbine rotors made of this Material, used with the efficiency of the + * Rotor Holder: rotorEfficiency * holderEfficiency / 100 + * @param damage The damage running turbines with this Rotor should deal to the player when the Rotor + * Holder UI is opened. + * @param durability The durability of Turbine Rotors made of this Material. + */ + // dear god please refactor me public Builder rotorStats(int power, int efficiency, float damage, int durability) { properties.setProperty(PropertyKey.ROTOR, new RotorProperty(power, efficiency, damage, durability)); return this; } + /** @see #blast(int) */ public Builder blastTemp(int temp) { return blast(temp); } + /** @see #blast(int, BlastProperty.GasTier) */ public Builder blastTemp(int temp, BlastProperty.GasTier gasTier) { return blast(temp, gasTier); } + /** @see #blast(UnaryOperator) blast(UnaryOperator<BlastProperty.Builder>) */ public Builder blastTemp(int temp, BlastProperty.GasTier gasTier, int eutOverride) { return blast(b -> b.temp(temp, gasTier).blastStats(eutOverride)); } + /** @see #blast(UnaryOperator) blast(UnaryOperator<BlastProperty.Builder>) */ public Builder blastTemp(int temp, BlastProperty.GasTier gasTier, int eutOverride, int durationOverride) { return blast(b -> b.temp(temp, gasTier).blastStats(eutOverride, durationOverride)); } + /** + * Add an EBF Temperature and recipe to this Material.
+ * Will generate a Dust -> Ingot EBF recipe at 120 EU/t and a duration based off of the Material's composition. + *
+ *
+ * If the temperature is above 1750K, it will automatically add a Vacuum Freezer recipe and Hot + * Ingot.
+ * If the temperature is below 1000K, it will automatically add a PBF recipe in addition to the + * EBF recipe. + *
+ *
+ * See {@link #blast(UnaryOperator) blast(UnaryOperator<BlastProperty.Builder>)} for setting your own + * value(s). + * + * @param temp The temperature of the recipe in the EBF. + */ public Builder blast(int temp) { properties.setProperty(PropertyKey.BLAST, new BlastProperty(temp)); return this; } + /** + * Add an EBF Temperature and recipe to this Material.
+ * Will generate a Dust -> Ingot EBF recipe at 120 EU/t and a duration based off of the Material's composition. + *
+ *
+ * If the temperature is above 1750K, it will automatically add a Vacuum Freezer recipe and Hot + * Ingot.
+ * If the temperature is below 1000K, it will automatically add a PBF recipe in addition to the + * EBF recipe. + *
+ *
+ * See {@link #blast(UnaryOperator) blast(UnaryOperator<BlastProperty.Builder>)} for setting your own + * value(s). + * + * @param temp The temperature of the recipe in the EBF. + * @param gasTier The {@link BlastProperty.GasTier} of the Recipe. Will generate a second EBF recipe + * using the specified gas of the tier for a speed bonus. + */ public Builder blast(int temp, BlastProperty.GasTier gasTier) { properties.setProperty(PropertyKey.BLAST, new BlastProperty(temp, gasTier)); return this; } + /** + * Add an EBF Temperature and recipe to this Material.
+ * Will generate a Dust -> Ingot EBF recipe at 120 EU/t and a duration based off of the + * Material's composition. + *
+ *
+ * If the temperature is above 1750K, it will automatically add a Vacuum Freezer recipe and Hot + * Ingot.
+ * If the temperature is below 1000K, it will automatically add a PBF recipe in addition to the + * EBF recipe. + *
+ *
+ * + * Sample usage: + * + *
{@code
+         *     .blast(b -> b
+         *         .temp(1750)
+         *         .blastStats(VA[HV], 300)
+         *      )
+         *      // ...
+         * }
+ */ public Builder blast(UnaryOperator b) { properties.setProperty(PropertyKey.BLAST, b.apply(new BlastProperty.Builder()).build()); return this; } - // Tons of shortcut functions for adding various hazard effects. - + /** + * Remove the Hazard from this Material.
+ * Useful when a component of this Material would automatically apply an undesired hazard. + */ public Builder removeHazard() { properties.setProperty(HAZARD, new HazardProperty(HazardProperty.HazardTrigger.NONE, GTMedicalConditions.NONE, @@ -1106,23 +1437,64 @@ public Builder removeHazard() { return this; } + /** + * Set a radioactive Hazard for this Material.
+ * Applies as a {@link GTMedicalConditions#CARCINOGEN carcinogenic} hazard with any trigger. + *
+ *
+ * Overrides the Hazard if one was already set. + * + * @param multiplier Multiplier for how quickly the condition will progress. + */ public Builder radioactiveHazard(float multiplier) { properties.setProperty(HAZARD, new HazardProperty(HazardProperty.HazardTrigger.ANY, GTMedicalConditions.CARCINOGEN, multiplier, true)); return this; } + /** + * Set a Hazard for this Material. + *
+ *
+ * Overrides the Hazard if one was already set.
+ * Sets progression multiplier to 1.
+ * Will not apply the Hazard to derivative materials, i.e. materials with this Material in its components list. + * + * @param trigger The trigger type for this hazard. + * @param condition The condition applied by this hazard. + */ public Builder hazard(HazardProperty.HazardTrigger trigger, MedicalCondition condition) { properties.setProperty(HAZARD, new HazardProperty(trigger, condition, 1, false)); return this; } + /** + * Set a Hazard for this Material. + *
+ *
+ * Overrides the Hazard if one was already set.
+ * Will not apply the Hazard to derivative materials, i.e. materials with this Material in its components list. + * + * @param trigger The trigger type for this hazard. + * @param condition The condition applied by this hazard. + * @param progressionMultiplier Multiplier for how quickly the condition will progress. + */ public Builder hazard(HazardProperty.HazardTrigger trigger, MedicalCondition condition, float progressionMultiplier) { properties.setProperty(HAZARD, new HazardProperty(trigger, condition, progressionMultiplier, false)); return this; } + /** + * Set a Hazard for this Material.
+ * Overrides the Hazard if one was already set. + * + * @param trigger The trigger type for this hazard. + * @param condition The condition applied by this hazard. + * @param progressionMultiplier Multiplier for how quickly the condition will progress. + * @param applyToDerivatives Whether the Hazard should be applied to materials with this Material in its + * components list. + */ public Builder hazard(HazardProperty.HazardTrigger trigger, MedicalCondition condition, float progressionMultiplier, boolean applyToDerivatives) { properties.setProperty(HAZARD, @@ -1130,97 +1502,255 @@ public Builder hazard(HazardProperty.HazardTrigger trigger, MedicalCondition con return this; } + /** + * Set a Hazard for this Material. + *
+ *
+ * Overrides the Hazard if one was already set.
+ * Sets progression multiplier to 1. + * + * @param trigger The trigger type for this hazard. + * @param condition The condition applied by this hazard. + * @param applyToDerivatives Whether the Hazard should be applied to materials with this Material in its + * components list. + */ public Builder hazard(HazardProperty.HazardTrigger trigger, MedicalCondition condition, boolean applyToDerivatives) { properties.setProperty(HAZARD, new HazardProperty(trigger, condition, 1, applyToDerivatives)); return this; } + /** + * Add an {@link OreProperty} to this Material.
+ * Automatically adds a {@link DustProperty} to this Material.
+ *
+ * Sets Ore Multiplier to 1 if not already set.
+ * Sets Byproduct Multiplier to 1 if not already set.
+ * Sets Emissive Textures to false if not already set. + *
+ *
+ * See {@link #ore(int, int, boolean)} for setting your own value(s). + */ public Builder ore() { properties.ensureSet(PropertyKey.ORE); return this; } + /** + * Add an {@link OreProperty} to this Material.
+ * Automatically adds a {@link DustProperty} to this Material.
+ *
+ * Sets Ore Multiplier to 1 if not already set.
+ * Sets Byproduct Multiplier to 1 if not already set. + *
+ *
+ * See {@link #ore(int, int, boolean)} for setting your own value(s). + * + * @param emissive Whether this Material's Ore Block should use emissive textures on the ore-vein texture + * overlay. + */ public Builder ore(boolean emissive) { properties.setProperty(PropertyKey.ORE, new OreProperty(1, 1, emissive)); return this; } + /** + * Add an {@link OreProperty} to this Material.
+ * Automatically adds a {@link DustProperty} to this Material.
+ *
+ * Sets Emissive Textures to false if not already set. + *
+ *
+ * See {@link #ore(int, int, boolean)} for setting your own value(s). + * + * @param oreMultiplier Crushed output multiplier when the Ore Block is macerated. + * @param byproductMultiplier Byproduct multiplier on some ore processing steps. + */ public Builder ore(int oreMultiplier, int byproductMultiplier) { properties.setProperty(PropertyKey.ORE, new OreProperty(oreMultiplier, byproductMultiplier)); return this; } + /** + * Add an {@link OreProperty} to this Material.
+ * Automatically adds a {@link DustProperty} to this Material. + * + * @param oreMultiplier Crushed output multiplier when the Ore Block is macerated. + * @param byproductMultiplier Byproduct multiplier on some ore processing steps. + * @param emissive Whether this Material's Ore Block should use emissive textures on the ore-vein + * texture overlay. + */ public Builder ore(int oreMultiplier, int byproductMultiplier, boolean emissive) { properties.setProperty(PropertyKey.ORE, new OreProperty(oreMultiplier, byproductMultiplier, emissive)); return this; } + /** + * Adds a Chemical Bath ore processing step to this Material's Ore, using 100L of the + * Fluid.
+ * Automatically adds an {@link OreProperty} to this Material if it does not already have one, + * with ore and byproduct multipliers of 1 and no emissive textures (if not already set). + * + * @param m The Material that is used as a Chemical Bath fluid for ore processing. + * This Material will be given a {@link FluidProperty} if it does not already have one, + * of type LIQUID and no Fluid block. + */ public Builder washedIn(Material m) { properties.ensureSet(PropertyKey.ORE); properties.getProperty(PropertyKey.ORE).setWashedIn(m); return this; } + /** + * Adds a Chemical Bath ore processing step to this Material's Ore.
+ * Automatically adds an {@link OreProperty} to this Material if it does not already have one, + * with ore and byproduct multipliers of 1 and no emissive textures (if not already set). + * + * @param m The Material that is used as a Chemical Bath fluid for ore processing. + * This Material will be given a {@link FluidProperty} if it does not already have one, + * of type LIQUID and no Fluid block. + * @param washedAmount The amount of the above Fluid required to wash the Ore. + */ public Builder washedIn(Material m, int washedAmount) { properties.ensureSet(PropertyKey.ORE); properties.getProperty(PropertyKey.ORE).setWashedIn(m, washedAmount); return this; } + /** + * Adds an Electromagnetic Separator recipe to this Material's Purified Dust, which outputs the passed + * Materials.
+ * Automatically adds an {@link OreProperty} to this Material if it does not already have one, + * with ore and byproduct multipliers of 1 and no emissive textures (if not already set). + * + * @param m The Materials which should be output by the Electromagnetic Separator in addition to a normal Dust + * of this Material. + */ public Builder separatedInto(Material... m) { properties.ensureSet(PropertyKey.ORE); properties.getProperty(PropertyKey.ORE).setSeparatedInto(m); return this; } + /** + * Sets the Material which this Material's Ore Block smelts to directly in a Furnace.
+ * Automatically adds an {@link OreProperty} to this Material if it does not already have one, + * with ore and byproduct multipliers of 1 and no emissive textures (if not already set). + * + * @param m The Material which should be output when smelting. + */ public Builder oreSmeltInto(Material m) { properties.ensureSet(PropertyKey.ORE); properties.getProperty(PropertyKey.ORE).setDirectSmeltResult(m); return this; } + /** + * Adds a Polarizer recipe to this Material's metal parts, outputting the provided Material.
+ * Automatically adds an {@link IngotProperty} to this Material if it does not already have one, + * with a harvest level of 2 and no Furnace burn time (if not already set). + * + * @param m The Material that this Material will be polarized into. + */ public Builder polarizesInto(Material m) { properties.ensureSet(PropertyKey.INGOT); properties.getProperty(PropertyKey.INGOT).setMagneticMaterial(m); return this; } + /** + * Sets the Material that this Material will automatically transform into in any Arc Furnace recipe.
+ * Automatically adds an {@link IngotProperty} to this Material if it does not already have one, + * with a harvest level of 2 and no Furnace burn time (if not already set). + * + * @param m The Material that this Material will turn into in any Arc Furnace recipes. + */ public Builder arcSmeltInto(Material m) { properties.ensureSet(PropertyKey.INGOT); properties.getProperty(PropertyKey.INGOT).setArcSmeltingInto(m); return this; } + /** + * Sets the Material that this Material's Ingot should macerate directly into.
+ * A good example is Magnetic Iron, which when macerated, will turn back into normal Iron.
+ * Automatically adds an {@link IngotProperty} to this Material if it does not already have one, + * with a harvest level of 2 and no Furnace burn time (if not already set). + * + * @param m The Material that this Material's Ingot should macerate directly into. + */ public Builder macerateInto(Material m) { properties.ensureSet(PropertyKey.INGOT); properties.getProperty(PropertyKey.INGOT).setMacerateInto(m); return this; } + /** + * Sets the Material that this Material's Ingot should smelt directly into in a Furnace.
+ * A good example is Magnetic Iron, which when smelted, will turn back into normal Iron.
+ * Automatically adds an {@link IngotProperty} to this Material if it does not already have one, + * with a harvest level of 2 and no Furnace burn time (if not already set). + * + * @param m The Material that this Material's Ingot should smelt directly into. + */ public Builder ingotSmeltInto(Material m) { properties.ensureSet(PropertyKey.INGOT); properties.getProperty(PropertyKey.INGOT).setSmeltingInto(m); return this; } + /** + * Adds Ore byproducts to this Material.
+ * Automatically adds an {@link OreProperty} to this Material if it does not already have one, + * with ore and byproduct multipliers of 1 and no emissive textures (if not already set). + * + * @param byproducts The list of Materials which serve as byproducts during ore processing. + */ public Builder addOreByproducts(Material... byproducts) { properties.ensureSet(PropertyKey.ORE); properties.getProperty(PropertyKey.ORE).setOreByProducts(byproducts); return this; } + /** + * Add Wires and Cables to this Material. + * + * @param voltage The voltage tier of this Cable. Should conform to standard GregTech voltage tiers. + * @param amperage The amperage of this Cable. Should be greater than zero. + * @param loss The loss-per-block of this Cable. A value of zero here will still have loss as wires. + */ public Builder cableProperties(long voltage, int amperage, int loss) { cableProperties(voltage, amperage, loss, false); return this; } + /** + * Add Wires and/or Cables to this Material. + * + * @param voltage The voltage tier of this Cable. Should conform to standard GregTech voltage tiers. + * @param amperage The amperage of this Cable. Should be greater than zero. + * @param loss The loss-per-block of this Cable. A value of zero here will still have loss as wires. + * @param isSuperCon Whether this Material is a Superconductor. If so, Cables will NOT be generated and + * the Wires will have zero cable loss, ignoring the loss parameter. + */ public Builder cableProperties(long voltage, int amperage, int loss, boolean isSuperCon) { properties.ensureSet(PropertyKey.DUST); properties.setProperty(PropertyKey.WIRE, new WireProperties(voltage, amperage, loss, isSuperCon)); return this; } + /** + * Add Wires and/or Cables to this Material. + * + * @param voltage The voltage tier of this Cable. Should conform to standard GregTech voltage tiers. + * @param amperage The amperage of this Cable. Should be greater than zero. + * @param loss The loss-per-block of this Cable. A value of zero here will still have loss as + * wires. + * @param isSuperCon Whether this Material is a Superconductor. If so, Cables will NOT be generated and + * the Wires will have zero cable loss, ignoring the loss parameter. + * @param criticalTemperature The critical temperature of this Material's Wires, if it is a Superconductor. + * Not currently utilized and intended for addons to use. + */ public Builder cableProperties(long voltage, int amperage, int loss, boolean isSuperCon, int criticalTemperature) { properties.ensureSet(PropertyKey.DUST); @@ -1229,10 +1759,32 @@ public Builder cableProperties(long voltage, int amperage, int loss, boolean isS return this; } + /** + * Add Fluid Pipes to this Material. + * + * @param maxTemp The maximum temperature of Fluid that this Pipe can handle before causing damage to the + * Pipe. + * @param throughput The rate at which Fluid can flow through this Pipe. + * @param gasProof Whether this Pipe can hold Gases. If not, some Gas will be lost as it travels through the + * Pipe. + */ public Builder fluidPipeProperties(int maxTemp, int throughput, boolean gasProof) { return fluidPipeProperties(maxTemp, throughput, gasProof, false, false, false); } + /** + * Add Fluid Pipes to this Material. + * + * @param maxTemp The maximum temperature of Fluid that this Pipe can handle before causing damage to the + * Pipe. + * @param throughput The rate at which Fluid can flow through this Pipe. + * @param gasProof Whether this Pipe can hold Gases. If not, some Gas will be lost as it travels through the + * Pipe. + * @param acidProof Whether this Pipe can hold Acids. If not, the Pipe may lose fluid or cause damage. + * @param cryoProof Whether this Pipe can hold Cryogenic Fluids (below 120K). If not, the Pipe may lose fluid + * or cause damage. + * @param plasmaProof Whether this Pipe can hold Plasmas. If not, the Pipe may lose fluid or cause damage. + */ public Builder fluidPipeProperties(int maxTemp, int throughput, boolean gasProof, boolean acidProof, boolean cryoProof, boolean plasmaProof) { properties.setProperty(PropertyKey.FLUID_PIPE, @@ -1240,11 +1792,23 @@ public Builder fluidPipeProperties(int maxTemp, int throughput, boolean gasProof return this; } + /** + * Add Item Pipes to this Material. + * + * @param priority Priority of this Item Pipe, used for the standard routing mode. + * @param stacksPerSec How many stacks of items can be moved per second (20 ticks). + */ public Builder itemPipeProperties(int priority, float stacksPerSec) { properties.setProperty(PropertyKey.ITEM_PIPE, new ItemPipeProperties(priority, stacksPerSec)); return this; } + /** + * Specify a default enchantment for tools made from this Material to have upon creation. + * + * @param enchant The default enchantment to apply to all tools made from this Material. + * @param level The level that the enchantment starts at when created. + */ @Deprecated public Builder addDefaultEnchant(Enchantment enchant, int level) { if (!properties.hasProperty(PropertyKey.TOOL)) // cannot assign default here @@ -1253,6 +1817,11 @@ public Builder addDefaultEnchant(Enchantment enchant, int level) { return this; } + /** + * Verify the passed information and finalize the Material. + * + * @return The finalized Material. + */ @HideFromJS public Material buildAndRegister() { materialInfo.componentList = composition.isEmpty() && this.compositionSupplier != null ? @@ -1274,8 +1843,11 @@ public Material buildAndRegister() { } var mat = new Material(materialInfo, properties, flags); + if (!itemTags.isEmpty()) { + mat.setItemTags(itemTags); + } if (formula != null) { - mat.setFormula(formula); + mat.setFormula(formula, formatFormula); } materialInfo.verifyInfo(properties, averageRGB); mat.registerMaterial(); @@ -1313,7 +1885,7 @@ private static class MaterialInfo { */ @Getter @Setter - private IntList colors = new IntArrayList(List.of(-1, -1)); + private IntList colors = IntArrayList.of(-1, -1); /** * The color of this Material. diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/info/MaterialIconType.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/info/MaterialIconType.java index bf7967547f9..c96add6eaf3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/info/MaterialIconType.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/info/MaterialIconType.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.api.data.chemical.material.info; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.common.data.models.GTModels; import com.gregtechceu.gtceu.integration.kjs.GTRegistryInfo; import com.lowdragmc.lowdraglib.utils.ResourceHelper; @@ -135,13 +136,11 @@ public static MaterialIconType getByName(String name) { return ICON_TYPES.get(name); } - @Nullable public ResourceLocation getBlockTexturePath(@NotNull MaterialIconSet materialIconSet, boolean doReadCache) { return getBlockTexturePath(materialIconSet, null, doReadCache); } - @Nullable // Safe: only null on registration on fabric, and no "required" textures are resolved at that point. - public ResourceLocation getBlockTexturePath(@NotNull MaterialIconSet materialIconSet, String suffix, + public ResourceLocation getBlockTexturePath(@NotNull MaterialIconSet materialIconSet, @Nullable String suffix, boolean doReadCache) { if (doReadCache) { if (suffix == null || suffix.isBlank()) { @@ -159,7 +158,7 @@ public ResourceLocation getBlockTexturePath(@NotNull MaterialIconSet materialIco // noinspection ConstantConditions if (!GTCEu.isClientSide() || Minecraft.getInstance() == null || Minecraft.getInstance().getResourceManager() == null) - return null; // check minecraft for null for CI environments + return GTModels.BLANK_TEXTURE; // check minecraft for null for CI environments if (!iconSet.isRootIconset) { while (!iconSet.isRootIconset) { ResourceLocation location = GTCEu @@ -174,7 +173,7 @@ public ResourceLocation getBlockTexturePath(@NotNull MaterialIconSet materialIco .id(String.format("textures/block/material_sets/%s/%s%s.png", iconSet.name, this.name, suffix)); if (!suffix.isEmpty() && !ResourceHelper.isResourceExist(location) && !ResourceHelper.isResourceExistRaw(location)) { - return null; + return GTModels.BLANK_TEXTURE; } location = GTCEu.id(String.format("block/material_sets/%s/%s%s", iconSet.name, this.name, suffix)); if (suffix.isEmpty()) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ArmorProperty.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ArmorProperty.java new file mode 100644 index 00000000000..3c5fec2d6aa --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ArmorProperty.java @@ -0,0 +1,272 @@ +package com.gregtechceu.gtceu.api.data.chemical.material.properties; + +import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; +import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.tag.TagPrefix; +import com.gregtechceu.gtceu.utils.memoization.GTMemoizer; + +import net.minecraft.Util; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; + +import com.google.common.base.Preconditions; +import lombok.Getter; +import lombok.Setter; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.Range; + +import java.util.EnumMap; +import java.util.Map; +import java.util.function.Supplier; + +// TODO document +public class ArmorProperty implements IMaterialProperty { + + @Setter + @Range(from = 0, to = Integer.MAX_VALUE) + private int durabilityMultiplier; + @Setter + private Map protectionValues; + @Setter + private int enchantability; + private Supplier sound; + @Setter + private float toughness; + @Setter + private float knockbackResistance; + + @Nullable + @Setter + private Supplier<@NotNull Ingredient> repairIngredient; + private boolean noRepair; + + @Setter + private String name = "gtceu:metal"; + @Getter + @Setter + private CustomTextureGetter customTextureGetter = (stack, entity, slot, overlay) -> null; + + @Getter + @Setter + private boolean dyeable; + + @Getter + private final ArmorMaterial armorMaterial; + private Material material; + + public ArmorProperty(int durabilityMultiplier, int[] protectionValues) { + this.durabilityMultiplier = durabilityMultiplier; + this.protectionValues = Util.make(new EnumMap<>(ArmorItem.Type.class), map -> { + for (int i = 0; i < ArmorItem.Type.values().length; i++) { + map.put(ArmorItem.Type.values()[i], protectionValues[i]); + } + }); + this.sound = GTMemoizer.memoize(() -> SoundEvents.ARMOR_EQUIP_IRON); + this.toughness = 0; + this.knockbackResistance = 0; + this.armorMaterial = new ArmorMaterial(); + } + + public void setSound(Supplier sound) { + this.sound = GTMemoizer.memoize(sound); + } + + @Override + public void verifyProperty(MaterialProperties properties) { + if (this.material == null) { + this.material = properties.getMaterial(); + } + if (this.repairIngredient == null && !noRepair) { + this.repairIngredient = GTMemoizer + .memoize(() -> Ingredient.of(ChemicalHelper.getTag(TagPrefix.plate, material))); + } + } + + @SuppressWarnings("unused") // API, need to treat all of these as used + public static class Builder { + + private final ArmorProperty armorProperty; + + /** + * Create Armor for this Material. + * + * @param durabilityMultiplier The durability value of this Armor. Leather is 5, Iron is 15, Diamond is 33. + * @param protectionValues The protection values of each armor piece in the set.
+ * Ordered as Helmet, Chestplate, Leggings, Boots. + * @throws IllegalArgumentException If the protectionValues array parameter does not have exactly 4 entries. + * + * @see net.minecraft.world.item.ArmorMaterials + */ + public static ArmorProperty.Builder of(int durabilityMultiplier, int[] protectionValues) { + Preconditions.checkArgument(protectionValues != null && protectionValues.length == 4, + "protectionValues must have 4 entries!"); + return new ArmorProperty.Builder(durabilityMultiplier, protectionValues); + } + + private Builder(int durabilityMultiplier, int[] protectionValues) { + armorProperty = new ArmorProperty(durabilityMultiplier, protectionValues); + } + + /** + * Set armors made from this Material as unbreakable, bypassing all durability. + */ + public ArmorProperty.Builder unbreakable() { + armorProperty.durabilityMultiplier = 0; + return this; + } + + /** + * Set the base enchantability of a tool made from this Material. Iron is 14, Diamond is 10, Stone is 5. + */ + public ArmorProperty.Builder enchantability(int enchantability) { + armorProperty.enchantability = enchantability; + return this; + } + + /** + * Set the protection value for a specific piece of armor made from this Material. + */ + public ArmorProperty.Builder protectionValue(ArmorItem.Type type, int value) { + armorProperty.protectionValues.put(type, value); + return this; + } + + /** + * Set the protection values for all pieces of armor made from this Material. + * + * @throws IllegalArgumentException If the provided map does not have a value for all 4 armor pieces. + */ + public ArmorProperty.Builder protectionValues(Map protectionValues) { + Preconditions.checkArgument(protectionValues != null && protectionValues.size() == 4, + "protectionValues must have 4 entries!"); + armorProperty.protectionValues = protectionValues; + return this; + } + + /** + * Set an Ingredient to use as the repair ingredient when repairing armors made of this Material in an Anvil. + */ + public ArmorProperty.Builder repairIngredient(@Nullable Supplier<@NotNull Ingredient> repairIngredient) { + if (repairIngredient == null) { + armorProperty.repairIngredient = null; + armorProperty.noRepair = true; + } else { + armorProperty.repairIngredient = GTMemoizer.memoize(repairIngredient); + } + return this; + } + + /** + * Set the toughness granted for wearing armors made of this Material. + * Diamond is 2, Netherite is 3, other armors are 0. + * + * @see net.minecraft.world.item.ArmorMaterials + * @see Armor Toughness - Minecraft Wiki + */ + public ArmorProperty.Builder toughness(float toughness) { + armorProperty.toughness = toughness; + return this; + } + + /** + * Set the knockback resistance granted for wearing armor made of this Material.
+ * Netherite is 0.1 (10%), other armors are 0. + * + * @see net.minecraft.world.item.ArmorMaterials + */ + public ArmorProperty.Builder knockbackResistance(float knockbackResistance) { + armorProperty.knockbackResistance = knockbackResistance; + return this; + } + + /** + * Set whether armor made of this Material can be dyed, similar to Leather armor. + */ + public ArmorProperty.Builder dyeable(boolean dyeable) { + armorProperty.dyeable = dyeable; + return this; + } + + /** + * Set a custom worn armor texture for armor made of this Material. + */ + public ArmorProperty.Builder customTexture(ArmorProperty.@NotNull CustomTextureGetter textureGetter) { + armorProperty.customTextureGetter = textureGetter; + return this; + } + + public ArmorProperty build() { + return armorProperty; + } + } + + @FunctionalInterface + public interface CustomTextureGetter { + + ResourceLocation getCustomTexture(ItemStack stack, Entity entity, EquipmentSlot slot, boolean overlay); + } + + public class ArmorMaterial implements net.minecraft.world.item.ArmorMaterial { + + private static final EnumMap HEALTH_FUNCTION_FOR_TYPE = Util + .make(new EnumMap<>(ArmorItem.Type.class), (map) -> { + map.put(ArmorItem.Type.BOOTS, 13); + map.put(ArmorItem.Type.LEGGINGS, 15); + map.put(ArmorItem.Type.CHESTPLATE, 16); + map.put(ArmorItem.Type.HELMET, 11); + }); + + @Override + public int getDurabilityForType(ArmorItem.@NotNull Type type) { + return HEALTH_FUNCTION_FOR_TYPE.get(type) * ArmorProperty.this.durabilityMultiplier; + } + + @Override + public int getDefenseForType(ArmorItem.@NotNull Type type) { + return ArmorProperty.this.protectionValues.get(type); + } + + @Override + public int getEnchantmentValue() { + return ArmorProperty.this.enchantability; + } + + @Override + public @NotNull SoundEvent getEquipSound() { + return ArmorProperty.this.sound.get(); + } + + @Override + public @NotNull Ingredient getRepairIngredient() { + return ArmorProperty.this.repairIngredient != null ? + ArmorProperty.this.repairIngredient.get() : + Ingredient.EMPTY; + } + + @Override + public @NotNull String getName() { + return ArmorProperty.this.name; + } + + @Override + public float getToughness() { + return ArmorProperty.this.toughness; + } + + @Override + public float getKnockbackResistance() { + return ArmorProperty.this.knockbackResistance; + } + + public ArmorProperty getArmorProperty() { + return ArmorProperty.this; + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/BlastProperty.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/BlastProperty.java index 6166c40d6c3..be413f84e55 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/BlastProperty.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/BlastProperty.java @@ -143,6 +143,7 @@ public FluidIngredient getFluid() { } } + @SuppressWarnings("unused") // API, need to treat all of these as used public static class Builder { private int temp; @@ -154,33 +155,69 @@ public static class Builder { public Builder() {} + /** + * Set the EBF temperature of this Material. + *
+ *
+ * If the temperature is above 1750K, it will automatically add a Vacuum Freezer recipe and Hot + * Ingot.
+ * If the temperature is below 1000K, it will automatically add a PBF recipe in addition to the + * EBF recipe. + * + * @param temperature The temperature of the recipe in the EBF. + */ public Builder temp(int temperature) { this.temp = temperature; return this; } + /** + * Set the EBF temperature and gas tier of this Material. + *
+ *
+ * If the temperature is above 1750K, it will automatically add a Vacuum Freezer recipe and Hot + * Ingot.
+ * If the temperature is below 1000K, it will automatically add a PBF recipe in addition to the + * EBF recipe. + * + * @param temperature The temperature of the recipe in the EBF. + * @param gasTier The {@link GasTier} of the Recipe. Will generate a second EBF recipe + * using the specified gas of the tier for a speed bonus. + */ public Builder temp(int temperature, GasTier gasTier) { this.temp = temperature; this.gasTier = gasTier; return this; } + /** + * Set the EU/t of the EBF recipe for this Material. + */ public Builder blastStats(int eutOverride) { this.eutOverride = eutOverride; return this; } + /** + * Set the EU/t and duration of the EBF recipe for this Material. + */ public Builder blastStats(int eutOverride, int durationOverride) { this.eutOverride = eutOverride; this.durationOverride = durationOverride; return this; } + /** + * Set the EU/t of the Vacuum Freezer recipe for the Hot Ingot of this Material. + */ public Builder vacuumStats(int eutOverride) { this.vacuumEUtOverride = eutOverride; return this; } + /** + * Set the EU/t and duration of the Vacuum Freezer recipe for the Hot Ingot of this Material. + */ public Builder vacuumStats(int eutOverride, int durationOverride) { this.vacuumEUtOverride = eutOverride; this.vacuumDurationOverride = durationOverride; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/FluidPipeProperties.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/FluidPipeProperties.java index 47ddab6c2b1..5f0f3979a75 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/FluidPipeProperties.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/FluidPipeProperties.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.fluids.FluidState; import com.gregtechceu.gtceu.api.fluids.attribute.FluidAttribute; import com.gregtechceu.gtceu.api.fluids.attribute.FluidAttributes; +import com.gregtechceu.gtceu.utils.GTMath; import it.unimi.dsi.fastutil.objects.Object2BooleanMap; import it.unimi.dsi.fastutil.objects.Object2BooleanOpenHashMap; @@ -13,7 +14,6 @@ import org.jetbrains.annotations.UnmodifiableView; import java.util.Collection; -import java.util.Objects; public class FluidPipeProperties implements IMaterialProperty, IPropertyFluidFilter { @@ -85,7 +85,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(maxFluidTemperature, throughput, gasProof, channels); + return GTMath.hashInts(maxFluidTemperature, throughput, Boolean.hashCode(gasProof), channels); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/HazardProperty.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/HazardProperty.java index bce780f2d08..64ce68c8eba 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/HazardProperty.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/HazardProperty.java @@ -28,11 +28,6 @@ import java.util.*; -/** - * @author h3tR - * @date 2024/2/12 - * @implNote HazardProperty - */ public class HazardProperty implements IMaterialProperty { public final MedicalCondition condition; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ItemPipeProperties.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ItemPipeProperties.java index acfb7a57d18..022ee3acd24 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ItemPipeProperties.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ItemPipeProperties.java @@ -1,6 +1,6 @@ package com.gregtechceu.gtceu.api.data.chemical.material.properties; -import java.util.Objects; +import com.gregtechceu.gtceu.utils.GTMath; public class ItemPipeProperties implements IMaterialProperty { @@ -83,7 +83,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(priority, transferRate); + return GTMath.hashInts(priority, Float.hashCode(transferRate)); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/MaterialProperties.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/MaterialProperties.java index f559c304f95..c367e07491a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/MaterialProperties.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/MaterialProperties.java @@ -3,6 +3,9 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import lombok.Getter; +import lombok.Setter; + import java.util.*; public class MaterialProperties { @@ -17,6 +20,8 @@ public static void addBaseType(PropertyKey baseTypeKey) { } private final Map, IMaterialProperty> propertyMap; + @Getter + @Setter private Material material; public MaterialProperties() { @@ -32,11 +37,13 @@ public T getProperty(PropertyKey key) { } public boolean hasProperty(PropertyKey key) { - return propertyMap.get(key) != null; + return propertyMap.containsKey(key); } public void setProperty(PropertyKey key, IMaterialProperty value) { if (value == null) throw new IllegalArgumentException("Material Property must not be null!"); + if (!key.getType().isInstance(value)) + throw new IllegalArgumentException("Material Property must be of the same type as the property key!"); if (hasProperty(key)) throw new IllegalArgumentException("Material Property " + key.toString() + " already registered!"); propertyMap.put(key, value); @@ -81,14 +88,6 @@ public void verify() { } } - public void setMaterial(Material material) { - this.material = material; - } - - public Material getMaterial() { - return material; - } - @Override public String toString() { StringBuilder sb = new StringBuilder(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/OreProperty.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/OreProperty.java index fd32fc0cea9..c4bbf596f55 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/OreProperty.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/OreProperty.java @@ -5,7 +5,7 @@ import net.minecraft.util.Mth; -import com.mojang.datafixers.util.Pair; +import it.unimi.dsi.fastutil.objects.ObjectIntPair; import lombok.Getter; import lombok.Setter; import org.jetbrains.annotations.NotNull; @@ -116,8 +116,8 @@ public void setWashedIn(Material m, int washedAmount) { this.washedAmount = washedAmount; } - public Pair getWashedIn() { - return Pair.of(this.washedIn, this.washedAmount); + public @NotNull ObjectIntPair getWashedIn() { + return ObjectIntPair.of(this.washedIn, this.washedAmount); } public void setSeparatedInto(Material... materials) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/PropertyKey.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/PropertyKey.java index 4778fe9182c..7ed5ab0e053 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/PropertyKey.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/PropertyKey.java @@ -1,5 +1,7 @@ package com.gregtechceu.gtceu.api.data.chemical.material.properties; +import lombok.Getter; + public class PropertyKey { public static final PropertyKey BLAST = new PropertyKey<>("blast", BlastProperty.class); @@ -16,6 +18,7 @@ public class PropertyKey { ItemPipeProperties.class); public static final PropertyKey ORE = new PropertyKey<>("ore", OreProperty.class); public static final PropertyKey TOOL = new PropertyKey<>("tool", ToolProperty.class); + public static final PropertyKey ARMOR = new PropertyKey<>("armor", ArmorProperty.class); public static final PropertyKey ROTOR = new PropertyKey<>("rotor", RotorProperty.class); public static final PropertyKey WIRE = new PropertyKey<>("wire", WireProperties.class); public static final PropertyKey WOOD = new PropertyKey<>("wood", WoodProperty.class); @@ -25,7 +28,9 @@ public class PropertyKey { // Empty property used to allow property-less Materials without removing base type enforcement public static final PropertyKey EMPTY = new PropertyKey<>("empty", EmptyProperty.class); + @Getter private final String key; + @Getter private final Class type; public PropertyKey(String key, Class type) { @@ -33,10 +38,6 @@ public PropertyKey(String key, Class type) { this.type = type; } - protected String getKey() { - return key; - } - protected T constructDefault() { try { return type.newInstance(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ToolProperty.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ToolProperty.java index 4a631a823a9..b212631d27e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ToolProperty.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ToolProperty.java @@ -115,6 +115,7 @@ public class ToolProperty implements IMaterialProperty { /** * Enchantment to be applied to tools made from this Material. */ + @Getter private final Object2IntMap enchantments = new Object2IntArrayMap<>(); public ToolProperty(float harvestSpeed, float attackDamage, int durability, int harvestLevel, GTToolType[] types) { @@ -129,10 +130,6 @@ public ToolProperty() { this(1.0F, 1.0F, 100, 2, GTToolType.getTypes().values().toArray(GTToolType[]::new)); } - public Object2IntMap getEnchantments() { - return enchantments; - } - @Override public void verifyProperty(MaterialProperties properties) { if (!properties.hasProperty(PropertyKey.WOOD)) { @@ -168,10 +165,19 @@ public ToolProperty removeTypes(GTToolType... types) { return this; } + @SuppressWarnings("unused") // API, need to treat all of these as used public static class Builder { private final ToolProperty toolProperty; + /** + * Create Tools for this Material. + * + * @param harvestSpeed The mining speed of a tool made from this Material. + * @param attackDamage The attack damage of a tool made from this Material. + * @param durability The durability of a tool made from this Material. + * @param harvestLevel The harvest level that tools of this Material can mine. + */ public static Builder of(float harvestSpeed, float attackDamage, int durability, int harvestLevel) { return new Builder(harvestSpeed, attackDamage, durability, harvestLevel, new GTToolType[] { SWORD, @@ -211,6 +217,15 @@ public static Builder of(float harvestSpeed, float attackDamage, int durability, }); } + /** + * Create Tools for this Material. + * + * @param harvestSpeed The mining speed of a tool made from this Material. + * @param attackDamage The attack damage of a tool made from this Material. + * @param durability The durability of a tool made from this Material. + * @param harvestLevel The harvest level that tools of this Material can mine. + * @param types The types of tools that can be made of this Material. + */ public static Builder of(float harvestSpeed, float attackDamage, int durability, int harvestLevel, GTToolType... types) { return new Builder(harvestSpeed, attackDamage, durability, harvestLevel, types); @@ -220,46 +235,76 @@ private Builder(float harvestSpeed, float attackDamage, int durability, int harv toolProperty = new ToolProperty(harvestSpeed, attackDamage, durability, harvestLevel, types); } + /** + * Set the base enchantability of a tool made from this Material. Iron is 14, Diamond is 10, Stone is 5. + */ public Builder enchantability(int enchantability) { toolProperty.enchantability = enchantability; return this; } + /** + * Set the attack speed of a tool made from this Material (animation time). + */ public Builder attackSpeed(float attackSpeed) { toolProperty.attackSpeed = attackSpeed; return this; } + /** + * Disable crafting tools being made from this Material. + */ public Builder ignoreCraftingTools() { toolProperty.ignoreCraftingTools = true; return this; } + /** + * Set tools made from this Material as unbreakable, bypassing all durability. + */ public Builder unbreakable() { toolProperty.isUnbreakable = true; return this; } + /** + * Set the types of tools that can be made of this Material. + */ public Builder types(GTToolType... types) { toolProperty.types = types; return this; } + /** + * Add additional types of tools that can be made of this Material. + */ public Builder addTypes(GTToolType... types) { toolProperty.types = ArrayUtils.addAll(toolProperty.types, types); return this; } + /** + * Add a default enchantment to tools made of this Material. + * + * @param enchantment The default enchantment, applied on crafting the tool. + * @param level The level of the enchantment. + */ public Builder enchantment(Enchantment enchantment, int level) { toolProperty.addEnchantmentForTools(enchantment, level); return this; } + /** + * Set tools made from this Material as magnetic, pulling mined blocks into your inventory. + */ public Builder magnetic() { toolProperty.isMagnetic = true; return this; } + /** + * Set a multiplier to the base durability of tools made from this Material. + */ public Builder durabilityMultiplier(int multiplier) { toolProperty.durabilityMultiplier = multiplier; return this; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/WireProperties.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/WireProperties.java index 23f62be8105..053a5f9c05f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/WireProperties.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/WireProperties.java @@ -2,8 +2,7 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.data.chemical.material.Material; - -import java.util.Objects; +import com.gregtechceu.gtceu.utils.GTMath; import static com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags.GENERATE_FOIL; @@ -159,6 +158,6 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(voltage, amperage, lossPerBlock); + return GTMath.hashLongs(voltage, amperage, lossPerBlock); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/stack/MaterialEntry.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/stack/MaterialEntry.java index 7b63731b551..9f909b4784a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/stack/MaterialEntry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/stack/MaterialEntry.java @@ -30,6 +30,10 @@ public boolean isEmpty() { return this == NULL_ENTRY || material() == GTMaterials.NULL || tagPrefix().isEmpty(); } + public boolean isIgnored() { + return tagPrefix().isIgnored(material()); + } + @Override public String toString() { if (tagPrefix.isEmpty()) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/stack/MaterialStack.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/stack/MaterialStack.java index 7e053c33c6d..c524b19fc15 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/stack/MaterialStack.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/stack/MaterialStack.java @@ -20,6 +20,18 @@ public MaterialStack copy() { return new MaterialStack(material, amount); } + public MaterialStack add(long amount) { + return new MaterialStack(material, this.amount + amount); + } + + public MaterialStack multiply(long amount) { + return new MaterialStack(material, this.amount * amount); + } + + public MaterialStack divide(long amount) { + return new MaterialStack(material, this.amount / amount); + } + public static MaterialStack fromString(CharSequence str) { String trimmed = str.toString().trim(); String copy = trimmed; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagPrefix.java b/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagPrefix.java index 1517e1f7179..507f8a2c909 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagPrefix.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagPrefix.java @@ -4,12 +4,16 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.addon.AddonFinder; import com.gregtechceu.gtceu.api.addon.IGTAddon; +import com.gregtechceu.gtceu.api.block.MaterialBlock; +import com.gregtechceu.gtceu.api.block.OreBlock; import com.gregtechceu.gtceu.api.data.chemical.material.ItemMaterialData; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconType; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialStack; +import com.gregtechceu.gtceu.api.item.MaterialBlockItem; +import com.gregtechceu.gtceu.api.item.TagPrefixItem; import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.common.data.GTBlocks; import com.gregtechceu.gtceu.common.data.GTMaterialBlocks; @@ -22,15 +26,15 @@ import com.gregtechceu.gtceu.utils.FormattingUtil; import com.gregtechceu.gtceu.utils.memoization.GTMemoizer; -import com.lowdragmc.lowdraglib.utils.LocalizationUtils; - import net.minecraft.client.renderer.RenderType; import net.minecraft.core.registries.Registries; +import net.minecraft.locale.Language; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BlockTags; import net.minecraft.tags.TagKey; +import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.Block; @@ -948,6 +952,12 @@ public boolean isEmpty() { .unificationEnabled(true) .enableRecycling(); + public static final TagPrefix surfaceRock = new TagPrefix("surfaceRock") + .langValue("%s Surface Rock") + .defaultTagPath("surface_rocks/%s") + .unformattedTagPath("surface_rocks") + .materialAmount(GTValues.M / 3); + public static class Conditions { public static final Predicate hasToolProperty = mat -> mat.hasProperty(PropertyKey.TOOL); @@ -993,10 +1003,19 @@ public record BlockProperties(Supplier> renderType, private boolean generateRecycling = false; @Setter private boolean generateItem; + @Getter + @Setter + private ItemConstructor itemConstructor = TagPrefixItem::new; @Setter private boolean generateBlock; @Getter @Setter + private BlockConstructor blockConstructor = MaterialBlock::new; + @Getter + @Setter + private BlockItemConstructor blockItemConstructor = MaterialBlockItem::new; + @Getter + @Setter private BlockProperties blockProperties = new BlockProperties(() -> RenderType::translucent, UnaryOperator.identity()); @@ -1036,9 +1055,9 @@ public TagPrefix(String name) { public TagPrefix(String name, boolean invertedName) { this.name = name; - this.idPattern = "%s_" + FormattingUtil.toLowerCaseUnder(name); + this.idPattern = "%s_" + getLowerCaseName(); this.invertedName = invertedName; - this.langValue = "%s " + FormattingUtil.toEnglishName(FormattingUtil.toLowerCaseUnder(name)); + this.langValue = "%s " + FormattingUtil.toEnglishName(getLowerCaseName()); PREFIXES.put(name, this); } @@ -1050,6 +1069,7 @@ public static TagPrefix oreTagPrefix(String name, TagKey miningToolTag) { .materialIconType(MaterialIconType.ore) .miningToolTag(miningToolTag) .unificationEnabled(true) + .blockConstructor(OreBlock::new) .generationCondition(hasOreProperty); } @@ -1214,8 +1234,12 @@ public boolean doGenerateBlock(Material material) { hasItemTable() && this.itemTable.get() != null && getItemFromTable(material) != null; } + public String getLowerCaseName() { + return FormattingUtil.toLowerCaseUnderscore(this.name); + } + public String getUnlocalizedName() { - return "tagprefix." + FormattingUtil.toLowerCaseUnderscore(name); + return "tagprefix." + getLowerCaseName(); } public MutableComponent getLocalizedName(Material material) { @@ -1223,16 +1247,15 @@ public MutableComponent getLocalizedName(Material material) { } public String getUnlocalizedName(Material material) { - String formattedPrefix = FormattingUtil.toLowerCaseUnderscore(this.name); String matSpecificKey = String.format("item.%s.%s", material.getModid(), this.idPattern.formatted(material.getName())); - if (LocalizationUtils.exist(matSpecificKey)) { + if (Language.getInstance().has(matSpecificKey)) { return matSpecificKey; } if (material.hasProperty(PropertyKey.POLYMER)) { - String localizationKey = String.format("tagprefix.polymer.%s", formattedPrefix); + String localizationKey = String.format("tagprefix.polymer.%s", getLowerCaseName()); // Not every polymer tag prefix gets a special name - if (LocalizationUtils.exist(localizationKey)) { + if (Language.getInstance().has(localizationKey)) { return localizationKey; } } @@ -1312,4 +1335,22 @@ public static Collection values() { public String toString() { return name; } + + @FunctionalInterface + public interface ItemConstructor { + + Item create(Item.Properties properties, TagPrefix prefix, Material material); + } + + @FunctionalInterface + public interface BlockConstructor { + + Block create(Block.Properties properties, TagPrefix prefix, Material material); + } + + @FunctionalInterface + public interface BlockItemConstructor { + + BlockItem create(Block block, Item.Properties properties, TagPrefix prefix, Material material); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagType.java b/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagType.java index a0edb5b1a36..e0c01fe8ab0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagType.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagType.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.api.data.tag; import com.gregtechceu.gtceu.api.data.chemical.material.Material; -import com.gregtechceu.gtceu.utils.FormattingUtil; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; @@ -42,7 +41,7 @@ public static TagType withDefaultFormatter(String tagPath, boolean isVanilla) { public static TagType withPrefixFormatter(String tagPath) { TagType type = new TagType(tagPath); type.formatter = (prefix, mat) -> TagUtil.createItemTag( - type.tagPath.formatted(FormattingUtil.toLowerCaseUnderscore(prefix.name), mat.getName())); + type.tagPath.formatted(prefix.getLowerCaseName(), mat.getName())); return type; } @@ -53,7 +52,7 @@ public static TagType withPrefixFormatter(String tagPath) { public static TagType withPrefixOnlyFormatter(String tagPath) { TagType type = new TagType(tagPath); type.formatter = (prefix, mat) -> TagUtil - .createItemTag(type.tagPath.formatted(FormattingUtil.toLowerCaseUnderscore(prefix.name))); + .createItemTag(type.tagPath.formatted(prefix.getLowerCaseName())); type.isParentTag = true; return type; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagUtil.java b/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagUtil.java index 7523df6d8b4..bd09735b024 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagUtil.java @@ -11,11 +11,6 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.material.Fluid; -/** - * @author KilaBash - * @date 2023/2/21 - * @implNote TagUtil - */ public class TagUtil { public static TagKey optionalTag(Registry registry, ResourceLocation id) { @@ -126,4 +121,13 @@ public static TagKey createModItemTag(String path) { public static TagKey createFluidTag(String path) { return createTag(BuiltInRegistries.FLUID, path, false); } + + /** + * Generates fluid tag under GTM namespace + * + * @return Fluid tag #gtceu:path + */ + public static TagKey createModFluidTag(String path) { + return createModTag(BuiltInRegistries.FLUID, path); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/BiomeWeightModifier.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/BiomeWeightModifier.java index 4d6f5691ec2..cc276e718eb 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/BiomeWeightModifier.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/BiomeWeightModifier.java @@ -9,10 +9,10 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import java.util.function.Function; import java.util.function.Supplier; +import java.util.function.ToIntFunction; -public class BiomeWeightModifier implements Function, Integer> { +public class BiomeWeightModifier implements ToIntFunction> { public static final BiomeWeightModifier EMPTY = new BiomeWeightModifier(HolderSet::direct, 0); @@ -30,7 +30,7 @@ public BiomeWeightModifier(Supplier> biomes, int addedWeight) { } @Override - public Integer apply(Holder biome) { + public int applyAsInt(Holder biome) { return biomes.get().contains(biome) ? addedWeight : 0; } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTLayerPattern.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTLayerPattern.java index 8a108a967c9..730617b34bb 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTLayerPattern.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTLayerPattern.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.worldgen.generator.VeinGenerator; import net.minecraft.util.RandomSource; import net.minecraft.world.level.block.Block; @@ -20,6 +21,7 @@ import java.util.List; import java.util.function.Consumer; import java.util.function.Supplier; +import java.util.stream.Stream; public class GTLayerPattern { @@ -103,6 +105,11 @@ public Layer(List, Material>> targets, int minSize this.weight = weight; } + public Stream asVeinEntries() { + return targets.stream() + .flatMap(target -> VeinGenerator.mapTarget(target, weight)); + } + public Either, Material> rollBlock(RandomSource random) { if (targets.size() == 1) return targets.get(0); diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTOreDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTOreDefinition.java index 0369b4baf66..be7c8395c80 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTOreDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTOreDefinition.java @@ -8,6 +8,7 @@ import com.gregtechceu.gtceu.api.registry.GTRegistries; import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.core.Holder; import net.minecraft.core.HolderSet; import net.minecraft.core.RegistryCodecs; import net.minecraft.core.registries.Registries; @@ -21,11 +22,11 @@ import net.minecraft.world.level.levelgen.VerticalAnchor; import net.minecraft.world.level.levelgen.placement.HeightRangePlacement; -import com.mojang.datafixers.util.Pair; import com.mojang.serialization.Codec; import com.mojang.serialization.DataResult; import com.mojang.serialization.codecs.RecordCodecBuilder; import dev.latvian.mods.rhino.util.HideFromJS; +import it.unimi.dsi.fastutil.ints.IntIntPair; import lombok.Getter; import lombok.Setter; import lombok.experimental.Accessors; @@ -41,11 +42,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author Screret - * @date 2023/6/14 - * @implNote GTOreDefinition - */ @SuppressWarnings("unused") @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault @@ -104,7 +100,7 @@ public class GTOreDefinition { @Setter private float discardChanceOnAirExposure; @Getter - private Supplier> biomes; + private @Nullable Supplier> biomes; @Getter @Setter private BiomeWeightModifier biomeWeightModifier = BiomeWeightModifier.EMPTY; @@ -142,6 +138,18 @@ public GTOreDefinition(IntProvider clusterSize, float density, int weight, IWorl this.indicatorGenerators = Objects.requireNonNullElseGet(indicatorGenerators, ArrayList::new); } + public boolean isForBiome(Holder biome) { + if (biomes == null) return true; + var set = biomes.get(); + return set.size() == 0 || set.contains(biome); + } + + public int weightForBiome(Holder biome) { + int w = weight; + if (biomeWeightModifier != null) w += biomeWeightModifier.applyAsInt(biome); + return w; + } + @HideFromJS public void register(ResourceLocation id) { GTRegistries.ORE_VEINS.registerOrOverride(id, this); @@ -204,13 +212,13 @@ public GTOreDefinition biomes(Supplier> biomes) { public GTOreDefinition heightRangeUniform(int min, int max) { heightRange(HeightRangePlacement.uniform(VerticalAnchor.absolute(min), VerticalAnchor.absolute(max))); - inferredProperties.heightRange = Pair.of(min, max); + inferredProperties.heightRange = IntIntPair.of(min, max); return this; } public GTOreDefinition heightRangeTriangle(int min, int max) { heightRange(HeightRangePlacement.triangle(VerticalAnchor.absolute(min), VerticalAnchor.absolute(max))); - inferredProperties.heightRange = Pair.of(min, max); + inferredProperties.heightRange = IntIntPair.of(min, max); return this; } @@ -249,8 +257,8 @@ public GTOreDefinition geodeVeinGenerator(Consumer config) { public GTOreDefinition dikeVeinGenerator(Consumer config) { var veinGenerator = new DikeVeinGenerator(this); if (inferredProperties.heightRange != null) { - veinGenerator.minYLevel(inferredProperties.heightRange.getFirst()); - veinGenerator.maxYLevel(inferredProperties.heightRange.getSecond()); + veinGenerator.minYLevel(inferredProperties.heightRange.firstInt()); + veinGenerator.maxYLevel(inferredProperties.heightRange.secondInt()); } config.accept(veinGenerator); @@ -262,8 +270,8 @@ public GTOreDefinition dikeVeinGenerator(Consumer config) { public GTOreDefinition veinedVeinGenerator(Consumer config) { var veinGenerator = new VeinedVeinGenerator(this); if (inferredProperties.heightRange != null) { - veinGenerator.minYLevel(inferredProperties.heightRange.getFirst()); - veinGenerator.maxYLevel(inferredProperties.heightRange.getSecond()); + veinGenerator.minYLevel(inferredProperties.heightRange.firstInt()); + veinGenerator.maxYLevel(inferredProperties.heightRange.secondInt()); } config.accept(veinGenerator); @@ -284,8 +292,8 @@ public GTOreDefinition classicVeinGenerator(Consumer confi public GTOreDefinition cuboidVeinGenerator(Consumer config) { var veinGenerator = new CuboidVeinGenerator(this); if (inferredProperties.heightRange != null) { - veinGenerator.minY(inferredProperties.heightRange.getFirst()); - veinGenerator.maxY(inferredProperties.heightRange.getSecond()); + veinGenerator.minY(inferredProperties.heightRange.firstInt()); + veinGenerator.maxY(inferredProperties.heightRange.secondInt()); } config.accept(veinGenerator); @@ -326,6 +334,6 @@ private T getOrCreateIndicatorGenerator(Class private static class InferredProperties { - public Pair heightRange = null; + public IntIntPair heightRange = null; } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/IWorldGenLayer.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/IWorldGenLayer.java index 645e0155e09..2d5e90ef064 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/IWorldGenLayer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/IWorldGenLayer.java @@ -10,11 +10,6 @@ import java.util.Set; -/** - * @author Screret - * @date 2023/6/9 - * @implNote IWorldGenLayer - */ public interface IWorldGenLayer extends StringRepresentable { Codec CODEC = ExtraCodecs.stringResolverCodec(StringRepresentable::getSerializedName, diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/RTTTree.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/RTTTree.java index 2017bc664cf..818adaea0b6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/RTTTree.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/RTTTree.java @@ -7,11 +7,6 @@ import java.util.ArrayList; import java.util.List; -/** - * @author KilaBash - * @date 2023/3/21 - * @implNote RTTTree - */ public class RTTTree { @Getter diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGenLayers.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGenLayers.java index 723d2e1eab6..796f84f9859 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGenLayers.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGenLayers.java @@ -18,11 +18,6 @@ import java.util.Set; -/** - * @author Screret - * @date 2023/6/9 - * @implNote WorldGenLayers - */ public enum WorldGenLayers implements IWorldGenLayer, StringRepresentable { STONE( diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGeneratorUtils.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGeneratorUtils.java index 3fa9326b81a..ad87f60f1b3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGeneratorUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGeneratorUtils.java @@ -4,13 +4,13 @@ import com.gregtechceu.gtceu.api.data.worldgen.generator.VeinGenerator; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.data.recipe.CustomTags; +import com.gregtechceu.gtceu.utils.WeightedEntry; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; -import net.minecraft.util.RandomSource; import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.Level; import net.minecraft.world.level.WorldGenLevel; @@ -50,10 +50,12 @@ public class WorldGeneratorUtils { public static final HashBiMap> INDICATOR_GENERATOR_FUNCTIONS = HashBiMap .create(); + public record WeightedVein(GTOreDefinition vein, int weight) implements WeightedEntry {} + private static class WorldOreVeinCache { private final List worldVeins; - private final List> veins = new LinkedList<>(); + private final Map, List> biomeVeins = new Object2ObjectOpenHashMap<>(); public WorldOreVeinCache(ServerLevel level) { this.worldVeins = GTRegistries.ORE_VEINS.values().stream() @@ -62,30 +64,20 @@ public WorldOreVeinCache(ServerLevel level) { .collect(Collectors.toList()); } - private List> getEntry(Holder biome) { - if (!veins.isEmpty()) - return veins; - List> result = worldVeins.stream() - .filter(entry -> entry.biomes() == null || - (entry.biomes().get().size() == 0 || entry.biomes().get().contains(biome))) - .map(vein -> new AbstractMap.SimpleEntry<>( - vein.weight() + - (vein.biomeWeightModifier() == null ? 0 : vein.biomeWeightModifier().apply(biome)), - vein)) - .filter(entry -> entry.getKey() > 0) - .collect(Collectors.toList()); - veins.addAll(result); - return result; + private List getEntry(Holder biome) { + if (biomeVeins.containsKey(biome)) return biomeVeins.get(biome); + var biomeVeins = worldVeins.stream() + .filter(vein -> vein.isForBiome(biome)) + .map(vein -> new WeightedVein(vein, vein.weightForBiome(biome))) + .filter(vein -> vein.weight > 0) + .toList(); + this.biomeVeins.put(biome, biomeVeins); + return biomeVeins; } } - public static List> getCachedBiomeVeins(ServerLevel level, Holder biome, - RandomSource random) { - if (oreVeinCache.containsKey(level)) - return oreVeinCache.get(level).getEntry(biome); - WorldOreVeinCache worldOreVeinCache = new WorldOreVeinCache(level); - oreVeinCache.put(level, worldOreVeinCache); - return worldOreVeinCache.getEntry(biome); + public static List getCachedBiomeVeins(ServerLevel level, Holder biome) { + return oreVeinCache.computeIfAbsent(level, WorldOreVeinCache::new).getEntry(biome); } public static Optional getWorldGenLayerKey(IWorldGenLayer layer) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidDefinition.java index c8730e6cf93..a3222217d25 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidDefinition.java @@ -103,11 +103,11 @@ public BedrockFluidDefinition(int weight, int minimumYield, int maximumYield, in originalModifiers.stream().mapToInt(mod -> mod.addedWeight).sum()) { @Override - public Integer apply(Holder biome) { + public int applyAsInt(Holder biome) { int mod = 0; for (var modifier : originalModifiers) { if (modifier.biomes.get().contains(biome)) { - mod += modifier.apply(biome); + mod += modifier.applyAsInt(biome); } } return mod; @@ -123,11 +123,11 @@ public void setOriginalModifiers(List modifiers) { originalModifiers.stream().mapToInt(mod -> mod.addedWeight).sum()) { @Override - public Integer apply(Holder biome) { + public int applyAsInt(Holder biome) { int mod = 0; for (var modifier : originalModifiers) { if (modifier.biomes.get().contains(biome)) { - mod += modifier.apply(biome); + mod += modifier.applyAsInt(biome); } } return mod; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidVeinSavedData.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidVeinSavedData.java index f303f0e6da9..a5ceaad8e0c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidVeinSavedData.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidVeinSavedData.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.data.worldgen.WorldGeneratorUtils; import com.gregtechceu.gtceu.api.registry.GTRegistries; +import com.gregtechceu.gtceu.utils.GTMath; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; @@ -17,18 +18,14 @@ import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.saveddata.SavedData; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import org.jetbrains.annotations.Nullable; import java.util.HashMap; -import java.util.Objects; import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/7/11 - * @implNote BedrockFluidVeinSavedData - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class BedrockFluidVeinSavedData extends SavedData { @@ -38,7 +35,7 @@ public class BedrockFluidVeinSavedData extends SavedData { public final HashMap veinFluids = new HashMap<>(); // runtime - private final HashMap, Integer> biomeWeights = new HashMap<>(); + private final Object2IntMap> biomeWeights = new Object2IntOpenHashMap<>(); private final ServerLevel serverLevel; @@ -90,7 +87,7 @@ public FluidVeinWorldEntry getFluidVeinWorldEntry(int chunkX, int chunkZ) { if (!veinFluids.containsKey(pos)) { BedrockFluidDefinition definition = null; int query = RandomSource - .create(Objects.hash(serverLevel.getSeed(), getVeinCoord(chunkX), getVeinCoord(chunkZ))) + .create(GTMath.hashLongs(serverLevel.getSeed(), getVeinCoord(chunkX), getVeinCoord(chunkZ))) .nextInt(); var biome = serverLevel.getBiome(new BlockPos(chunkX << 4, 64, chunkZ << 4)); int totalWeight = getTotalWeight(biome); @@ -98,7 +95,7 @@ public FluidVeinWorldEntry getFluidVeinWorldEntry(int chunkX, int chunkZ) { int weight = Math.abs(query % totalWeight); for (var fluidDefinition : GTRegistries.BEDROCK_FLUID_DEFINITIONS) { int veinWeight = fluidDefinition.getWeight() + - fluidDefinition.getBiomeWeightModifier().apply(biome); + fluidDefinition.getBiomeWeightModifier().applyAsInt(biome); if (veinWeight > 0 && (fluidDefinition.getDimensionFilter() == null || fluidDefinition.getDimensionFilter().stream().anyMatch( dim -> WorldGeneratorUtils.isSameDimension(dim, serverLevel.dimension())))) { @@ -141,7 +138,7 @@ public int getTotalWeight(Holder biome) { for (var definition : GTRegistries.BEDROCK_FLUID_DEFINITIONS) { if (definition.getDimensionFilter() == null || definition.getDimensionFilter().stream() .anyMatch(dim -> WorldGeneratorUtils.isSameDimension(dim, serverLevel.dimension()))) { - totalWeight += definition.getBiomeWeightModifier().apply(biome); + totalWeight += definition.getBiomeWeightModifier().applyAsInt(biome); totalWeight += definition.getWeight(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/FluidVeinWorldEntry.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/FluidVeinWorldEntry.java index b95b18b359b..91a931cc417 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/FluidVeinWorldEntry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/FluidVeinWorldEntry.java @@ -2,6 +2,8 @@ import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.config.ConfigHolder; +import com.gregtechceu.gtceu.utils.memoization.GTMemoizer; +import com.gregtechceu.gtceu.utils.memoization.MemoizedSupplier; import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; @@ -10,31 +12,41 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/7/11 - * @implNote FluidVeinWorldEntry - */ public class FluidVeinWorldEntry { + private final MemoizedSupplier vein; @Nullable @Getter - private BedrockFluidDefinition vein; + private String veinId; @Getter private int fluidYield; @Getter private int operationsRemaining; public FluidVeinWorldEntry(@Nullable BedrockFluidDefinition vein, int fluidYield, int operationsRemaining) { - this.vein = vein; + this(GTMemoizer.memoize(() -> vein)); + if (vein != null) { + ResourceLocation key = GTRegistries.BEDROCK_FLUID_DEFINITIONS.getKey(vein); + if (key != null) { + this.veinId = key.toString(); + } + } this.fluidYield = fluidYield; this.operationsRemaining = operationsRemaining; } - private FluidVeinWorldEntry() {} + private FluidVeinWorldEntry(MemoizedSupplier vein) { + this.vein = vein; + } + + @Nullable + public BedrockFluidDefinition getVein() { + return this.vein.get(); + } + @Nullable public BedrockFluidDefinition getDefinition() { - return this.vein; + return this.vein.get(); } @SuppressWarnings("unused") @@ -51,24 +63,32 @@ public CompoundTag writeToNBT() { var tag = new CompoundTag(); tag.putInt("fluidYield", fluidYield); tag.putInt("operationsRemaining", operationsRemaining); - if (vein != null && GTRegistries.BEDROCK_FLUID_DEFINITIONS.getKey(vein) != null) { - tag.putString("vein", GTRegistries.BEDROCK_FLUID_DEFINITIONS.getKey(vein).toString()); + if (veinId != null) { + tag.putString("vein", veinId); } return tag; } @NotNull public static FluidVeinWorldEntry readFromNBT(@NotNull CompoundTag tag) { - FluidVeinWorldEntry info = new FluidVeinWorldEntry(); - info.fluidYield = tag.getInt("fluidYield"); - info.operationsRemaining = tag.getInt("operationsRemaining"); + String veinId; + MemoizedSupplier vein; if (tag.contains("vein")) { - ResourceLocation id = new ResourceLocation(tag.getString("vein")); - if (GTRegistries.BEDROCK_FLUID_DEFINITIONS.containKey(id)) { - info.vein = GTRegistries.BEDROCK_FLUID_DEFINITIONS.get(id); - } + veinId = tag.getString("vein"); + vein = GTMemoizer.memoize(() -> { + ResourceLocation key = new ResourceLocation(veinId); + return GTRegistries.BEDROCK_FLUID_DEFINITIONS.get(key); + }); + } else { + veinId = null; + vein = GTMemoizer.memoize(() -> null); } + + FluidVeinWorldEntry info = new FluidVeinWorldEntry(vein); + info.veinId = veinId; + info.fluidYield = tag.getInt("fluidYield"); + info.operationsRemaining = tag.getInt("operationsRemaining"); return info; } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreDefinition.java index 6bb12abc294..16953e86ea5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreDefinition.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.api.data.worldgen.bedrockore; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.worldgen.BiomeWeightModifier; import com.gregtechceu.gtceu.api.registry.GTRegistries; @@ -18,11 +17,11 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.biome.Biome; -import com.mojang.datafixers.util.Pair; import com.mojang.serialization.Codec; -import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import dev.latvian.mods.rhino.util.HideFromJS; +import it.unimi.dsi.fastutil.ints.IntArrayList; +import it.unimi.dsi.fastutil.ints.IntList; import lombok.Getter; import lombok.Setter; import lombok.experimental.Accessors; @@ -32,9 +31,6 @@ @Accessors(fluent = true, chain = true) public class BedrockOreDefinition { - public static final MapCodec> MATERIAL = Codec - .mapPair(GTCEuAPI.materialManager.codec().fieldOf("material"), Codec.INT.fieldOf("chance")); - public static final Codec FULL_CODEC = RecordCodecBuilder.create( instance -> instance.group( Codec.INT.fieldOf("weight").forGetter(ft -> ft.weight), @@ -43,7 +39,7 @@ public class BedrockOreDefinition { Codec.INT.fieldOf("depletion_amount").forGetter(ft -> ft.depletionAmount), ExtraCodecs.intRange(0, 100).fieldOf("depletion_chance").forGetter(ft -> ft.depletionChance), Codec.INT.fieldOf("depleted_yield").forGetter(ft -> ft.depletedYield), - MATERIAL.codec().listOf().fieldOf("materials").forGetter(ft -> ft.materials), + WeightedMaterial.CODEC.listOf().fieldOf("materials").forGetter(ft -> ft.materials), BiomeWeightModifier.CODEC.listOf().optionalFieldOf("weight_modifier", List.of()) .forGetter(ft -> ft.originalModifiers), ResourceKey.codec(Registries.DIMENSION).listOf().fieldOf("dimension_filter") @@ -74,7 +70,7 @@ public class BedrockOreDefinition { private int depletedYield; // yield after the vein is depleted @Getter @Setter - private List> materials; // the ores which the vein contains + private List materials; // the ores which the vein contains @Getter private BiomeWeightModifier biomeWeightModifier; // weighting of biomes private List originalModifiers; // weighting of biomes @@ -83,7 +79,7 @@ public class BedrockOreDefinition { public Set> dimensionFilter; // filtering of dimensions public BedrockOreDefinition(ResourceLocation name, int size, int weight, IntProvider yield, int depletionAmount, - int depletionChance, int depletedYield, List> materials, + int depletionChance, int depletedYield, List materials, List originalModifiers, Set> dimensionFilter) { this(weight, size, yield, depletionAmount, depletionChance, depletedYield, materials, originalModifiers, dimensionFilter); @@ -91,7 +87,7 @@ public BedrockOreDefinition(ResourceLocation name, int size, int weight, IntProv } public BedrockOreDefinition(int weight, int size, IntProvider yield, int depletionAmount, int depletionChance, - int depletedYield, List> materials, + int depletedYield, List materials, List originalModifiers, Set> dimensionFilter) { this.weight = weight; this.size = size; @@ -106,11 +102,11 @@ public BedrockOreDefinition(int weight, int size, IntProvider yield, int depleti originalModifiers.stream().mapToInt(mod -> mod.addedWeight).sum()) { @Override - public Integer apply(Holder biome) { + public int applyAsInt(Holder biome) { int mod = 0; for (var modifier : originalModifiers) { if (modifier.biomes.get().contains(biome)) { - mod += modifier.apply(biome); + mod += modifier.applyAsInt(biome); } } return mod; @@ -126,11 +122,11 @@ public void setOriginalModifiers(List modifiers) { originalModifiers.stream().mapToInt(mod -> mod.addedWeight).sum()) { @Override - public Integer apply(Holder biome) { + public int applyAsInt(Holder biome) { int mod = 0; for (var modifier : originalModifiers) { if (modifier.biomes.get().contains(biome)) { - mod += modifier.apply(biome); + mod += modifier.applyAsInt(biome); } } return mod; @@ -138,12 +134,12 @@ public Integer apply(Holder biome) { }; } - public List getAllChances() { - return materials().stream().map(Pair::getSecond).toList(); + public IntList getAllChances() { + return IntArrayList.toList(materials().stream().mapToInt(WeightedMaterial::weight)); } public List getAllMaterials() { - return materials().stream().map(Pair::getFirst).toList(); + return materials().stream().map(WeightedMaterial::material).toList(); } public static Builder builder(ResourceLocation name) { @@ -167,7 +163,7 @@ public static class Builder { @Setter private int depletedYield; // yield after the vein is depleted @Setter - private List> materials; // the ores which the vein contains + private List materials; // the ores which the vein contains private Set> dimensions; private final List biomes = new LinkedList<>(); @@ -188,7 +184,7 @@ public Builder copy(ResourceLocation name) { public Builder material(Material material, int amount) { if (this.materials == null) this.materials = new ArrayList<>(); - this.materials.add(Pair.of(material, amount)); + this.materials.add(new WeightedMaterial(material, amount)); return this; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreVeinSavedData.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreVeinSavedData.java index 549901bb082..f1225a15dd0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreVeinSavedData.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreVeinSavedData.java @@ -1,10 +1,10 @@ package com.gregtechceu.gtceu.api.data.worldgen.bedrockore; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.worldgen.WorldGeneratorUtils; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.config.ConfigHolder; +import com.gregtechceu.gtceu.utils.GTMath; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; @@ -18,21 +18,15 @@ import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.saveddata.SavedData; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import org.jetbrains.annotations.Nullable; import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.stream.Collectors; import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/7/11 - * @implNote BedrockFluidVeinSavedData - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class BedrockOreVeinSavedData extends SavedData { @@ -42,7 +36,7 @@ public class BedrockOreVeinSavedData extends SavedData { public final HashMap veinOres = new HashMap<>(); // runtime - private final HashMap, Integer> biomeWeights = new HashMap<>(); + private final Object2IntMap> biomeWeights = new Object2IntOpenHashMap<>(); private final ServerLevel serverLevel; @@ -102,7 +96,7 @@ public OreVeinWorldEntry getOreVeinWorldEntry(int chunkX, int chunkZ) { BedrockOreDefinition definition = null; int query = RandomSource - .create(Objects.hash(serverLevel.getSeed(), getVeinCoord(chunkX), getVeinCoord(chunkZ))) + .create(GTMath.hashLongs(serverLevel.getSeed(), getVeinCoord(chunkX), getVeinCoord(chunkZ))) .nextInt(); var biome = serverLevel.getBiome(new BlockPos(chunkX << 4, 64, chunkZ << 4)); int totalWeight = getTotalWeight(biome); @@ -110,7 +104,7 @@ public OreVeinWorldEntry getOreVeinWorldEntry(int chunkX, int chunkZ) { int weight = Math.abs(query % totalWeight); for (var oreDefinition : GTRegistries.BEDROCK_ORE_DEFINITIONS) { int veinWeight = oreDefinition.weight() + (oreDefinition.biomeWeightModifier() != null ? - oreDefinition.biomeWeightModifier().apply(biome) : 0); + oreDefinition.biomeWeightModifier().applyAsInt(biome) : 0); if (veinWeight > 0 && (oreDefinition.dimensionFilter == null || oreDefinition.dimensionFilter().stream().anyMatch( dim -> WorldGeneratorUtils.isSameDimension(dim, serverLevel.dimension())))) { @@ -177,7 +171,7 @@ public int getTotalWeight(Holder biome) { if (definition.dimensionFilter == null || definition.dimensionFilter().stream() .anyMatch(dim -> WorldGeneratorUtils.isSameDimension(dim, serverLevel.dimension()))) { totalWeight += definition.biomeWeightModifier() != null ? - definition.biomeWeightModifier().apply(biome) : 0; + definition.biomeWeightModifier().applyAsInt(biome) : 0; totalWeight += definition.weight(); } } @@ -228,11 +222,10 @@ public int getOperationsRemaining(int chunkX, int chunkZ) { * @return Fluid in given chunk */ @Nullable - public List> getOreInChunk(int chunkX, int chunkZ) { + public List getOreInChunk(int chunkX, int chunkZ) { OreVeinWorldEntry info = getOreVeinWorldEntry(chunkX, chunkZ); if (info.getDefinition() == null) return null; - return info.getDefinition().materials().stream().map(pair -> Map.entry(pair.getSecond(), pair.getFirst())) - .collect(Collectors.toList()); + return info.getDefinition().materials(); } /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/OreVeinWorldEntry.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/OreVeinWorldEntry.java index 12c82450d6d..285cf3f4047 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/OreVeinWorldEntry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/OreVeinWorldEntry.java @@ -10,11 +10,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * @author Screret - * @date 2023/12/20 - * @implNote OreVeinWorldEntry - */ public class OreVeinWorldEntry { @Nullable diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/WeightedMaterial.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/WeightedMaterial.java new file mode 100644 index 00000000000..d2406a5a58b --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/WeightedMaterial.java @@ -0,0 +1,17 @@ +package com.gregtechceu.gtceu.api.data.worldgen.bedrockore; + +import com.gregtechceu.gtceu.api.GTCEuAPI; +import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.utils.WeightedEntry; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; + +public record WeightedMaterial(Material material, int weight) implements WeightedEntry { + + public static final Codec CODEC = RecordCodecBuilder.create( + instance -> instance.group( + GTCEuAPI.materialManager.codec().fieldOf("material").forGetter(WeightedMaterial::material), + Codec.INT.fieldOf("weight").forGetter(WeightedMaterial::weight)) + .apply(instance, WeightedMaterial::new)); +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/VeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/VeinGenerator.java index 1519f326157..f95bee12d0e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/VeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/VeinGenerator.java @@ -6,22 +6,25 @@ import com.gregtechceu.gtceu.api.data.worldgen.GTOreDefinition; import com.gregtechceu.gtceu.api.data.worldgen.WorldGeneratorUtils; import com.gregtechceu.gtceu.api.data.worldgen.ores.OreBlockPlacer; -import com.gregtechceu.gtceu.common.data.GTMaterials; import net.minecraft.core.BlockPos; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.RandomSource; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; import com.mojang.datafixers.util.Either; import com.mojang.serialization.Codec; import com.mojang.serialization.DataResult; import dev.latvian.mods.rhino.util.HideFromJS; +import it.unimi.dsi.fastutil.ints.IntArrayList; +import it.unimi.dsi.fastutil.ints.IntList; +import it.unimi.dsi.fastutil.objects.ObjectIntPair; import java.util.*; import java.util.function.Function; -import java.util.stream.Collectors; +import java.util.stream.Stream; public abstract class VeinGenerator { @@ -46,44 +49,36 @@ public VeinGenerator(GTOreDefinition entry) { /** * @return List of [block|material, chance] */ - public abstract List, Integer>> getAllEntries(); + public abstract List getAllEntries(); public List getAllBlocks() { - return getAllEntries().stream().map(entry -> entry.getKey().map(Function.identity(), - material -> ChemicalHelper.getBlock(TagPrefix.ore, material).defaultBlockState())).toList(); + return getAllEntries().stream() + .map(VeinEntry::mapToBlockState) + .toList(); } public List getAllMaterials() { return getAllEntries().stream() - .sorted(Comparator.comparingInt(Map.Entry::getValue)) - .map(Map.Entry::getKey) - .map(either -> either.map(state -> { - var matStack = ChemicalHelper.getMaterialStack(state.getBlock()); - return matStack.material(); - }, Function.identity())) + .sorted(Comparator.comparingInt(VeinEntry::chance)) + .map(VeinEntry::mapToMaterial) .filter(mat -> !mat.isNull()) .toList(); } - public List getAllChances() { - return getAllEntries().stream().map(Map.Entry::getValue).toList(); + public IntList getAllChances() { + return IntArrayList.toList(getAllEntries().stream().mapToInt(VeinEntry::chance)); } - public List> getValidMaterialsChances() { + public List> getValidMaterialsChances() { return getAllEntries().stream() - .filter(entry -> entry.getKey() - .map(state -> ChemicalHelper.getMaterialStack(state.getBlock()).material(), - Function.identity()) != - GTMaterials.NULL) - .map(entry -> Map.entry(entry.getValue(), entry.getKey() - .map(state -> ChemicalHelper.getMaterialStack(state.getBlock()).material(), - Function.identity()))) - .collect(Collectors.toList()); + .map(entry -> ObjectIntPair.of(entry.mapToMaterial(), entry.chance)) + .filter(pair -> !pair.first().isNull()) + .toList(); } /** * Generate a map of all ore placers (by block position), for each block in this ore vein. - * + * *

* Note that, if in any way possible, this is NOT supposed to directly place any of the vein's blocks, as their * respective ore placers are invoked at a later time, when the chunk containing them is actually generated. @@ -103,4 +98,38 @@ public GTOreDefinition parent() { } public abstract Codec codec(); + + public record VeinEntry(Either vein, int chance) { + + public static VeinEntry ofBlock(BlockState state, int chance) { + return new VeinEntry(Either.left(state), chance); + } + + public static VeinEntry ofMaterial(Material mat, int chance) { + return new VeinEntry(Either.right(mat), chance); + } + + public T map(Function left, Function right) { + return vein.map(left, right); + } + + public BlockState mapToBlockState() { + return vein.map(Function.identity(), + material -> ChemicalHelper.getBlock(TagPrefix.ore, material).defaultBlockState()); + } + + public Material mapToMaterial() { + return vein.map(state -> ChemicalHelper.getMaterialStack(state.getBlock()).material(), Function.identity()); + } + } + + public static Stream> mapTarget(Either, Material> target) { + return target.map(tbs -> tbs.stream().map(state -> Either.left(state.state)), + mat -> Stream.of(Either.right(mat))); + } + + public static Stream mapTarget(Either, Material> target, + int weight) { + return mapTarget(target).map(entry -> new VeinEntry(entry, weight)); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/ClassicVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/ClassicVeinGenerator.java index 23dc059b0f6..37dd3c02296 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/ClassicVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/ClassicVeinGenerator.java @@ -38,7 +38,6 @@ import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Supplier; -import java.util.stream.Stream; @Accessors(fluent = true, chain = true) public class ClassicVeinGenerator extends VeinGenerator { @@ -79,25 +78,13 @@ public ClassicVeinGenerator(Layer primary, Layer secondary, Layer between, Layer } @Override - public List, Integer>> getAllEntries() { - List, Integer>> result = new ArrayList<>(); - primary.target - .map(blockStates -> blockStates.stream().map(state -> Either.left(state.state)), - material -> Stream.of(Either.right(material))) - .forEach(entry -> result.add(Map.entry(entry, primary.layers))); - secondary.target - .map(blockStates -> blockStates.stream().map(state -> Either.left(state.state)), - material -> Stream.of(Either.right(material))) - .forEach(entry -> result.add(Map.entry(entry, secondary.layers))); - between.target - .map(blockStates -> blockStates.stream().map(state -> Either.left(state.state)), - material -> Stream.of(Either.right(material))) - .forEach(entry -> result.add(Map.entry(entry, between.layers))); - sporadic.target - .map(blockStates -> blockStates.stream().map(state -> Either.left(state.state)), - material -> Stream.of(Either.right(material))) - .forEach(entry -> result.add(Map.entry(entry, 1))); - return result; + public List getAllEntries() { + List entries = new ArrayList<>(primary.size() + secondary.size() + between.size() + sporadic.size()); + VeinGenerator.mapTarget(primary.target, primary.layers).forEach(entries::add); + VeinGenerator.mapTarget(secondary.target, secondary.layers).forEach(entries::add); + VeinGenerator.mapTarget(between.target, between.layers).forEach(entries::add); + VeinGenerator.mapTarget(sporadic.target, 1).forEach(entries::add); + return entries; } @Override @@ -285,6 +272,10 @@ public Layer copy() { return new Layer(this.target.mapBoth(ArrayList::new, Function.identity()), layers); } + public int size() { + return target.left().isPresent() ? target.left().get().size() : 1; + } + public static class Builder { private Either, Material> target; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/CuboidVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/CuboidVeinGenerator.java index 860d9cbeb9d..7e13f0401f8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/CuboidVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/CuboidVeinGenerator.java @@ -33,7 +33,6 @@ import java.util.List; import java.util.Map; import java.util.function.Consumer; -import java.util.stream.Stream; @SuppressWarnings({ "UnusedReturnValue", "BooleanMethodIsAlwaysInverted" }) @Accessors(fluent = true, chain = true) @@ -78,24 +77,13 @@ public CuboidVeinGenerator(ClassicVeinGenerator.Layer top, ClassicVeinGenerator. } @Override - public List, Integer>> getAllEntries() { - List, Integer>> result = new ArrayList<>(); - top.target.map(blockStates -> blockStates.stream().map(state -> Either.left(state.state)), - material -> Stream.of(Either.right(material))) - .forEach(entry -> result.add(Map.entry(entry, top.layers))); - middle.target - .map(blockStates -> blockStates.stream().map(state -> Either.left(state.state)), - material -> Stream.of(Either.right(material))) - .forEach(entry -> result.add(Map.entry(entry, middle.layers))); - bottom.target - .map(blockStates -> blockStates.stream().map(state -> Either.left(state.state)), - material -> Stream.of(Either.right(material))) - .forEach(entry -> result.add(Map.entry(entry, bottom.layers))); - spread.target - .map(blockStates -> blockStates.stream().map(state -> Either.left(state.state)), - material -> Stream.of(Either.right(material))) - .forEach(entry -> result.add(Map.entry(entry, 1))); - return result; + public List getAllEntries() { + List entries = new ArrayList<>(top.size() + middle.size() + bottom.size() + spread.size()); + VeinGenerator.mapTarget(top.target, top.layers).forEach(entries::add); + VeinGenerator.mapTarget(middle.target, middle.layers).forEach(entries::add); + VeinGenerator.mapTarget(bottom.target, bottom.layers).forEach(entries::add); + VeinGenerator.mapTarget(spread.target, 1).forEach(entries::add); + return entries; } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/DikeVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/DikeVeinGenerator.java index e7a3000e5e4..6d294d07826 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/DikeVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/DikeVeinGenerator.java @@ -8,6 +8,7 @@ import com.gregtechceu.gtceu.api.data.worldgen.ores.OreBlockPlacer; import com.gregtechceu.gtceu.api.data.worldgen.ores.OreVeinUtil; import com.gregtechceu.gtceu.utils.GTUtil; +import com.gregtechceu.gtceu.utils.WeightedEntry; import net.minecraft.core.BlockPos; import net.minecraft.core.SectionPos; @@ -38,8 +39,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; -import java.util.stream.Stream; @Accessors(fluent = true, chain = true) @AllArgsConstructor @@ -61,15 +60,12 @@ public DikeVeinGenerator(GTOreDefinition entry) { } @Override - public List, Integer>> getAllEntries() { - return this.blocks.stream() - .flatMap(definition -> definition.block.map( - state -> state.stream() - .map(target -> Map.entry(Either.left(target.state), - definition.weight)), - material -> Stream - .of(Map.entry(Either.right(material), definition.weight)))) - .collect(Collectors.toList()); + public List getAllEntries() { + List entries = new ArrayList<>(this.blocks.size()); + for (var def : this.blocks) { + VeinGenerator.mapTarget(def.block, def.weight).forEach(entries::add); + } + return entries; } @Override @@ -115,13 +111,10 @@ public Map generate(WorldGenLevel level, RandomSource return generatedBlocks; } - private void placeBlock( - BulkSectionAccess level, LevelChunkSection section, long randomSeed, BlockPos pos, + private void placeBlock(BulkSectionAccess level, LevelChunkSection section, long randomSeed, BlockPos pos, GTOreDefinition entry) { var rand = new XoroshiroRandomSource(randomSeed); - List> entries = blocks.stream() - .map(b -> Map.entry(b.weight, b)).toList(); - DikeBlockDefinition blockDefinition = blocks.get(GTUtil.getRandomItem(rand, entries, entries.size())); + DikeBlockDefinition blockDefinition = GTUtil.getRandomItem(rand, blocks); BlockState current = level.getBlockState(pos); int x = SectionPos.sectionRelative(pos.getX()); @@ -183,8 +176,8 @@ public DikeVeinGenerator withBlock(DikeBlockDefinition block) { return this; } - public record DikeBlockDefinition(Either, Material> block, int weight, - int minY, int maxY) { + public record DikeBlockDefinition(Either, Material> block, int weight, int minY, int maxY) + implements WeightedEntry { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( Codec.either(TargetBlockState.CODEC.listOf(), GTCEuAPI.materialManager.codec()).fieldOf("block") diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/GeodeVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/GeodeVeinGenerator.java index 7b5ef3a54e2..b15a38b6f85 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/GeodeVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/GeodeVeinGenerator.java @@ -38,21 +38,18 @@ import net.minecraft.world.level.levelgen.synth.NormalNoise; import net.minecraft.world.level.material.FluidState; -import com.google.common.collect.Lists; import com.mojang.datafixers.util.Either; -import com.mojang.datafixers.util.Pair; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; +import it.unimi.dsi.fastutil.objects.ObjectIntPair; import lombok.AllArgsConstructor; import lombok.Setter; import lombok.experimental.Accessors; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; -import java.util.LinkedList; import java.util.List; import java.util.Map; -import java.util.function.Function; import java.util.function.Predicate; @Accessors(chain = true, fluent = true) @@ -117,19 +114,19 @@ public GeodeVeinGenerator(GTOreDefinition entry) { } @Override - public List, Integer>> getAllEntries() { + public List getAllEntries() { RandomSource source = new LegacyRandomSource(0); return List.of( - Map.entry(geodeBlockSettings.fillingProvider - .mapBoth(provider -> provider.getState(source, BlockPos.ZERO), Function.identity()), 1), - Map.entry(geodeBlockSettings.innerLayerProvider - .mapBoth(provider -> provider.getState(source, BlockPos.ZERO), Function.identity()), 1), - Map.entry(geodeBlockSettings.alternateInnerLayerProvider - .mapBoth(provider -> provider.getState(source, BlockPos.ZERO), Function.identity()), 1), - Map.entry(geodeBlockSettings.middleLayerProvider - .mapBoth(provider -> provider.getState(source, BlockPos.ZERO), Function.identity()), 1), - Map.entry(geodeBlockSettings.outerLayerProvider - .mapBoth(provider -> provider.getState(source, BlockPos.ZERO), Function.identity()), 1)); + new VeinEntry(geodeBlockSettings.fillingProvider + .mapLeft(provider -> provider.getState(source, BlockPos.ZERO)), 1), + new VeinEntry(geodeBlockSettings.innerLayerProvider + .mapLeft(provider -> provider.getState(source, BlockPos.ZERO)), 1), + new VeinEntry(geodeBlockSettings.alternateInnerLayerProvider + .mapLeft(provider -> provider.getState(source, BlockPos.ZERO)), 1), + new VeinEntry(geodeBlockSettings.middleLayerProvider + .mapLeft(provider -> provider.getState(source, BlockPos.ZERO)), 1), + new VeinEntry(geodeBlockSettings.outerLayerProvider + .mapLeft(provider -> provider.getState(source, BlockPos.ZERO)), 1)); } @Override @@ -145,11 +142,11 @@ public Map generate(WorldGenLevel level, RandomSource int offset2; int minOffset = this.minGenOffset; int maxOffset = this.maxGenOffset; - LinkedList> points = Lists.newLinkedList(); int distributionSample = this.distributionPoints.sample(random); + List> points = new ArrayList<>(distributionSample); WorldgenRandom worldgenRandom = new WorldgenRandom(new LegacyRandomSource(level.getSeed())); NormalNoise normalNoise = NormalNoise.create(worldgenRandom, -4, 1.0); - LinkedList list2 = Lists.newLinkedList(); + List list2 = new ArrayList<>(3); double wallDistance = (double) distributionSample / (double) this.outerWallDistance.getMaxValue(); double fillingSize = 1.0 / Math.sqrt(geodeLayerSettings.filling); double innerSize = 1.0 / Math.sqrt(geodeLayerSettings.innerLayer + wallDistance); @@ -168,7 +165,7 @@ public Map generate(WorldGenLevel level, RandomSource ++invalidBlocksCount > this.invalidBlocksThreshold) { return Map.of(); } - points.add(Pair.of(origin2, this.pointOffset.sample(random))); + points.add(ObjectIntPair.of(origin2, this.pointOffset.sample(random))); } if (doCrack) { offset2 = random.nextInt(4); @@ -191,7 +188,7 @@ public Map generate(WorldGenLevel level, RandomSource list2.add(origin.offset(0, 1, 0)); } } - ArrayList positions = Lists.newArrayList(); + List positions = new ArrayList<>(); Predicate placementPredicate = GeodeFeature.isReplaceable(this.geodeBlockSettings.cannotReplace); for (BlockPos pos : BlockPos.betweenClosed(origin.offset(minOffset, minOffset, minOffset), origin.offset(maxOffset, maxOffset, maxOffset))) { @@ -199,10 +196,10 @@ public Map generate(WorldGenLevel level, RandomSource double s = 0.0; double t = 0.0; for (var pair : points) { - s += Mth.fastInvSqrt(pos.distSqr(pair.getFirst()) + (double) pair.getSecond()) + noiseValue; + s += Mth.invSqrt(pos.distSqr(pair.first()) + (double) pair.secondInt()) + noiseValue; } for (BlockPos origin4 : list2) { - t += Mth.fastInvSqrt(pos.distSqr(origin4) + (double) geodeCrackSettings.crackPointOffset) + noiseValue; + t += Mth.invSqrt(pos.distSqr(origin4) + (double) geodeCrackSettings.crackPointOffset) + noiseValue; } if (s < outerSize) continue; if (!level.ensureCanWrite(pos)) diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/LayeredVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/LayeredVeinGenerator.java index e70da76fd8b..8e41df82fb5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/LayeredVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/LayeredVeinGenerator.java @@ -24,6 +24,8 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import com.tterrag.registrate.util.nullness.NonNullSupplier; +import it.unimi.dsi.fastutil.floats.FloatArrayList; +import it.unimi.dsi.fastutil.floats.FloatList; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import java.util.ArrayList; @@ -32,7 +34,6 @@ import java.util.function.Consumer; import java.util.function.Supplier; import java.util.stream.Collectors; -import java.util.stream.Stream; public class LayeredVeinGenerator extends VeinGenerator { @@ -57,24 +58,12 @@ public List getLayerPatterns() { } @Override - public List, Integer>> getAllEntries() { + public List getAllEntries() { return getLayerPatterns().stream() .flatMap(pattern -> pattern.layers.stream()) - .map(layer -> Map.entry( - layer.targets.stream() - .flatMap(entry -> entry.map( - blockStates -> blockStates.stream() - .map(state -> Either.left(state.state)), - material -> Stream.of(Either.right(material)))) - .toList(), - layer.weight)) - .flatMap(entry -> { - var iterator = entry.getKey().iterator(); - return Stream.generate(() -> Map.entry(iterator.next(), entry.getValue())) - .limit(entry.getKey().size()); - }) + .flatMap(GTLayerPattern.Layer::asVeinEntries) .distinct() - .collect(Collectors.toList()); + .toList(); } @Override @@ -104,7 +93,7 @@ public Map generate(WorldGenLevel level, RandomSource return Map.of(); List resolvedLayers = new ArrayList<>(); - List layerDiameterOffsets = new ArrayList<>(); + FloatList layerDiameterOffsets = new FloatArrayList(); int layerCoordinate = random.nextInt(4); int slantyCoordinate = random.nextInt(3); @@ -142,7 +131,7 @@ public Map generate(WorldGenLevel level, RandomSource } if ((sizeFractionX * sizeFractionX) + (sizeFractionY * sizeFractionY) + - (sizeFractionZ * sizeFractionZ) > 1 * layerDiameterOffsets.get(layerIndex)) + (sizeFractionZ * sizeFractionZ) > 1 * layerDiameterOffsets.getFloat(layerIndex)) continue; GTLayerPattern.Layer layer = resolvedLayers.get(layerIndex); diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/NoopVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/NoopVeinGenerator.java index 56a0abd5aa9..96e8b83d9ff 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/NoopVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/NoopVeinGenerator.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.api.data.worldgen.generator.veins; -import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.worldgen.GTOreDefinition; import com.gregtechceu.gtceu.api.data.worldgen.generator.VeinGenerator; import com.gregtechceu.gtceu.api.data.worldgen.ores.OreBlockPlacer; @@ -8,11 +7,10 @@ import net.minecraft.core.BlockPos; import net.minecraft.util.RandomSource; import net.minecraft.world.level.WorldGenLevel; -import net.minecraft.world.level.block.state.BlockState; -import com.mojang.datafixers.util.Either; import com.mojang.serialization.Codec; +import java.util.Collections; import java.util.List; import java.util.Map; @@ -22,14 +20,14 @@ public class NoopVeinGenerator extends VeinGenerator { public static final Codec CODEC = Codec.unit(() -> INSTANCE); @Override - public List, Integer>> getAllEntries() { - return List.of(); + public List getAllEntries() { + return Collections.emptyList(); } @Override public Map generate(WorldGenLevel level, RandomSource random, GTOreDefinition entry, BlockPos origin) { - return Map.of(); + return Collections.emptyMap(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/StandardVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/StandardVeinGenerator.java index d16ae48c718..4a5e7860366 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/StandardVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/StandardVeinGenerator.java @@ -35,7 +35,6 @@ import java.util.List; import java.util.Map; import java.util.function.Function; -import java.util.stream.Collectors; public class StandardVeinGenerator extends VeinGenerator { @@ -91,18 +90,24 @@ public StandardVeinGenerator withMaterial(Material material) { return this; } + private List defaultEntries = null; + + private List getDefaultEntries() { + if (defaultEntries == null) { + defaultEntries = List.of( + VeinEntry.ofBlock(block.get().defaultBlockState(), 1), + VeinEntry.ofBlock(deepBlock.get().defaultBlockState(), 1), + VeinEntry.ofBlock(netherBlock.get().defaultBlockState(), 1)); + } + return defaultEntries; + } + @Override - public List, Integer>> getAllEntries() { + public List getAllEntries() { if (this.blocks != null) { - return this.blocks.map(blockStates -> blockStates.stream() - .map(state -> Either.left(state.state)) - .map(entry -> Map.entry(entry, 1)) - .collect(Collectors.toList()), material -> List.of(Map.entry(Either.right(material), 1))); + return VeinGenerator.mapTarget(blocks, 1).toList(); } else { - return List.of( - Map.entry(Either.left(block.get().defaultBlockState()), 1), - Map.entry(Either.left(deepBlock.get().defaultBlockState()), 1), - Map.entry(Either.left(netherBlock.get().defaultBlockState()), 1)); + return getDefaultEntries(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/VeinedVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/VeinedVeinGenerator.java index a1676edcd21..efcded6a955 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/VeinedVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/VeinedVeinGenerator.java @@ -7,9 +7,9 @@ import com.gregtechceu.gtceu.api.data.worldgen.generator.VeinGenerator; import com.gregtechceu.gtceu.api.data.worldgen.ores.OreBlockPlacer; import com.gregtechceu.gtceu.api.data.worldgen.ores.OreVeinUtil; -import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.data.GTFeatures; import com.gregtechceu.gtceu.utils.GTUtil; +import com.gregtechceu.gtceu.utils.WeightedEntry; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; @@ -30,6 +30,7 @@ import net.minecraft.world.level.levelgen.XoroshiroRandomSource; import net.minecraft.world.level.levelgen.blending.Blender; import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration.TargetBlockState; import net.minecraft.world.level.levelgen.structure.templatesystem.AlwaysTrueTest; import com.mojang.datafixers.util.Either; @@ -43,8 +44,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; -import java.util.stream.Stream; import javax.annotation.ParametersAreNonnullByDefault; @@ -54,8 +53,8 @@ @Accessors(fluent = true, chain = true) public class VeinedVeinGenerator extends VeinGenerator { - public static final Codec, Material>> BLOCK_ENTRY_CODEC = Codec - .either(OreConfiguration.TargetBlockState.CODEC.listOf(), GTCEuAPI.materialManager.codec()); + public static final Codec, Material>> BLOCK_ENTRY_CODEC = Codec + .either(TargetBlockState.CODEC.listOf(), GTCEuAPI.materialManager.codec()); public static final Codec CODEC = RecordCodecBuilder.create((instance) -> instance.group( VeinBlockDefinition.CODEC.listOf().fieldOf("ore_blocks").forGetter(it -> it.oreBlocks), @@ -101,17 +100,15 @@ public VeinedVeinGenerator(GTOreDefinition entry) { } @Override - public List, Integer>> getAllEntries() { - var s1 = this.oreBlocks.stream().flatMap(definition -> definition.block.map( - state -> state.stream() - .map(target -> Map.entry(Either.left(target.state), definition.weight)), - material -> Stream.of(Map.entry(Either.right(material), definition.weight)))); - var s2 = this.rareBlocks.stream().flatMap(definition -> definition.block.map( - state -> state.stream() - .map(target -> Map.entry(Either.left(target.state), definition.weight)), - material -> Stream.of(Map.entry(Either.right(material), definition.weight)))); - - return Stream.concat(s1, s2).collect(Collectors.toList()); + public List getAllEntries() { + List entries = new ArrayList<>(oreBlocks.size() + rareBlocks.size()); + for (var def : oreBlocks) { + VeinGenerator.mapTarget(def.block, def.weight).forEach(entries::add); + } + for (var def : rareBlocks) { + VeinGenerator.mapTarget(def.block, def.weight).forEach(entries::add); + } + return entries; } @Override @@ -119,14 +116,9 @@ public Map generate(WorldGenLevel level, RandomSource BlockPos origin) { Map generatedBlocks = new Object2ObjectOpenHashMap<>(); - Registry densityFunctions = GTRegistries.builtinRegistry() + Registry densityFunctions = level.registryAccess() .registry(Registries.DENSITY_FUNCTION).get(); - List> commonEntries = oreBlocks.stream() - .map(b -> Map.entry(b.weight, b)).toList(); - List> rareEntries = rareBlocks.stream() - .map(b -> Map.entry(b.weight, b)).toList(); // never accessed if rareBlocks is null - RandomState randomState = level.getLevel().getChunkSource().randomState(); Blender blender; if (level instanceof WorldGenRegion region) { @@ -206,16 +198,16 @@ public Blender getBlender() { final var randomSeed = random.nextLong(); // Fully deterministic regardless of chunk order generatedBlocks.put(pos, (access, section) -> placeBlock(access, section, randomSeed, entry, chance, - rareEntries, pos, commonEntries)); + rareBlocks, pos, oreBlocks)); } return generatedBlocks; } private void placeBlock(BulkSectionAccess access, LevelChunkSection section, long randomSeed, GTOreDefinition entry, - double chance, List> rareEntries, + double chance, List rareEntries, BlockPos.MutableBlockPos pos, - List> commonEntries) { + List commonEntries) { RandomSource random = new XoroshiroRandomSource(randomSeed); int sectionX = SectionPos.sectionRelative(pos.getX()); int sectionY = SectionPos.sectionRelative(pos.getY()); @@ -225,11 +217,13 @@ private void placeBlock(BulkSectionAccess access, LevelChunkSection section, lon if (random.nextFloat() <= entry.density()) { if (random.nextFloat() < chance) { if (rareBlocks != null && !rareBlocks.isEmpty() && random.nextFloat() < rareBlockChance) { - placeOre(rareBlocks.get(GTUtil.getRandomItem(random, rareEntries, rareEntries.size())).block, - current, access, section, random, pos, entry); + var ore = GTUtil.getRandomItem(random, rareEntries); + if (ore == null) return; + placeOre(ore.block, current, access, section, random, pos, entry); } else { - placeOre(oreBlocks.get(GTUtil.getRandomItem(random, commonEntries, commonEntries.size())).block, - current, access, section, random, pos, entry); + var ore = GTUtil.getRandomItem(random, commonEntries); + if (ore == null) return; + placeOre(ore.block, current, access, section, random, pos, entry); } } else { if (fillerBlock == null || fillerBlock.isAir()) @@ -241,7 +235,7 @@ private void placeBlock(BulkSectionAccess access, LevelChunkSection section, lon } } - protected static void placeOre(Either, Material> block, BlockState current, + protected static void placeOre(Either, Material> block, BlockState current, BulkSectionAccess level, LevelChunkSection section, RandomSource random, BlockPos.MutableBlockPos pos, GTOreDefinition entry) { int x = SectionPos.sectionRelative(pos.getX()); @@ -249,7 +243,7 @@ protected static void placeOre(Either, M int z = SectionPos.sectionRelative(pos.getZ()); block.ifLeft(blockStates -> { - for (OreConfiguration.TargetBlockState targetState : blockStates) { + for (TargetBlockState targetState : blockStates) { if (!OreVeinUtil.canPlaceOre(current, level::getBlockState, random, entry, targetState, pos)) continue; if (targetState.state.isAir()) @@ -293,7 +287,7 @@ public VeinedVeinGenerator oreBlock(Material block, int weight) { } public VeinedVeinGenerator oreBlock(BlockState blockState, int weight) { - OreConfiguration.TargetBlockState target = OreConfiguration.target(AlwaysTrueTest.INSTANCE, blockState); + TargetBlockState target = OreConfiguration.target(AlwaysTrueTest.INSTANCE, blockState); return this.oreBlock(new VeinBlockDefinition(List.of(target), weight)); } @@ -307,7 +301,7 @@ public VeinedVeinGenerator rareBlock(Material block, int weight) { } public VeinedVeinGenerator rareBlock(BlockState blockState, int weight) { - OreConfiguration.TargetBlockState target = OreConfiguration.target(AlwaysTrueTest.INSTANCE, blockState); + TargetBlockState target = OreConfiguration.target(AlwaysTrueTest.INSTANCE, blockState); return this.rareBlock(new VeinBlockDefinition(List.of(target), weight)); } @@ -316,7 +310,8 @@ public VeinedVeinGenerator rareBlock(VeinBlockDefinition material) { return this; } - public record VeinBlockDefinition(Either, Material> block, int weight) { + public record VeinBlockDefinition(Either, Material> block, int weight) + implements WeightedEntry { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( BLOCK_ENTRY_CODEC.fieldOf("block").forGetter(x -> x.block), @@ -326,7 +321,7 @@ public VeinBlockDefinition(Material block, int weight) { this(Either.right(block), weight); } - public VeinBlockDefinition(List block, int weight) { + public VeinBlockDefinition(List block, int weight) { this(Either.left(block), weight); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/FrequencyModifier.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/FrequencyModifier.java index b8240ac8a24..f659cb34b01 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/FrequencyModifier.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/FrequencyModifier.java @@ -19,11 +19,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/20 - * @implNote GTOrePlacementModifier - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class FrequencyModifier extends PlacementModifier { diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/ores/OreGenCache.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/ores/OreGenCache.java index bdae89af54c..0e16434e1e7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/ores/OreGenCache.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/ores/OreGenCache.java @@ -127,12 +127,12 @@ private Stream getSurroundingChunks(ChunkPos center, int searchDistanc return Stream.generate(() -> { if (x.incrementAndGet() <= maxX) { - return new ChunkPos(x.getValue(), z.getValue()); + return new ChunkPos(x.intValue(), z.intValue()); } if (z.incrementAndGet() <= maxZ) { x.setValue(minX); - return new ChunkPos(x.getValue(), z.getValue()); + return new ChunkPos(x.intValue(), z.intValue()); } return null; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/ores/OreGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/ores/OreGenerator.java index d0c83708ed1..9774686283a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/ores/OreGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/ores/OreGenerator.java @@ -141,11 +141,11 @@ private Stream getEntries(WorldGenLevel level, BlockPos veinCen @Nullable private GTOreDefinition getEntry(WorldGenLevel level, Holder biome, RandomSource random, IWorldGenLayer layer) { - var veins = WorldGeneratorUtils.getCachedBiomeVeins(level.getLevel(), biome, random).stream() - .filter(vein -> vein.getValue().layer().equals(layer)) + var veins = WorldGeneratorUtils.getCachedBiomeVeins(level.getLevel(), biome).stream() + .filter(vein -> vein.vein().layer().equals(layer)) .toList(); - int randomEntryIndex = GTUtil.getRandomItem(random, veins, veins.size()); - return randomEntryIndex == -1 ? null : veins.get(randomEntryIndex).getValue(); + var randomVein = GTUtil.getRandomItem(random, veins); + return randomVein == null ? null : randomVein.vein(); } @NotNull diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/ores/OreVeinUtil.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/ores/OreVeinUtil.java index db2e3d492b4..cb461179df4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/ores/OreVeinUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/ores/OreVeinUtil.java @@ -19,6 +19,7 @@ import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; +import com.google.common.base.Suppliers; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonPrimitive; @@ -119,9 +120,9 @@ public static Supplier> resolveBiomes(List biomes) { RegistryOps registryOps = RegistryOps.create(JsonOps.INSTANCE, GTRegistries.builtinRegistry()); JsonElement codecInput = resolveBiomeCodecInput(biomes); - return () -> RegistryCodecs.homogeneousList(Registries.BIOME) + return Suppliers.memoize(() -> RegistryCodecs.homogeneousList(Registries.BIOME) .parse(registryOps, codecInput) - .getOrThrow(false, GTCEu.LOGGER::error); + .getOrThrow(false, GTCEu.LOGGER::error)); } private static JsonElement resolveBiomeCodecInput(List biomes) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/fluids/FluidBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/fluids/FluidBuilder.java index 07b32a05804..fd38f96c99b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/fluids/FluidBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/fluids/FluidBuilder.java @@ -240,10 +240,10 @@ private static int convertViscosity(double viscosity) { return this; } - public @NotNull Supplier build(@NotNull String modid, Material material, FluidStorageKey key, + public @NotNull Supplier build(Material material, @NotNull FluidStorageKey key, GTRegistrate registrate) { determineName(material, key); - determineTextures(material, key, modid); + determineTextures(material, key, material.getModid()); if (name == null) { throw new IllegalStateException("Could not determine fluid name"); diff --git a/src/main/java/com/gregtechceu/gtceu/api/fluids/store/FluidStorageImpl.java b/src/main/java/com/gregtechceu/gtceu/api/fluids/store/FluidStorageImpl.java index a2a4165a847..4f3a8b864cb 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/fluids/store/FluidStorageImpl.java +++ b/src/main/java/com/gregtechceu/gtceu/api/fluids/store/FluidStorageImpl.java @@ -82,8 +82,7 @@ public void registerFluids(@NotNull Material material, GTRegistrate registrate) material); return; } - Supplier fluid = entry.getValue().build(material.getModid(), material, - entry.getKey(), registrate); + Supplier fluid = entry.getValue().build(material, entry.getKey(), registrate); if (!storeNoOverwrites(entry.getKey(), fluid, entry.getValue())) { GTCEu.LOGGER.error("{} already has an associated fluid for material {}", material, material); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/fluids/store/FluidStorageKey.java b/src/main/java/com/gregtechceu/gtceu/api/fluids/store/FluidStorageKey.java index a6b151d26a4..85f2225d91c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/fluids/store/FluidStorageKey.java +++ b/src/main/java/com/gregtechceu/gtceu/api/fluids/store/FluidStorageKey.java @@ -2,9 +2,12 @@ import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconType; +import com.gregtechceu.gtceu.api.data.tag.TagUtil; import com.gregtechceu.gtceu.api.fluids.FluidState; import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; +import net.minecraft.world.level.material.Fluid; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import lombok.Getter; @@ -22,7 +25,7 @@ public final class FluidStorageKey { @Getter private final ResourceLocation resourceLocation; @Getter - private final String tagKey; + private final TagKey extraTag; @Getter private final MaterialIconType iconType; private final Function registryNameFunction; @@ -33,13 +36,13 @@ public final class FluidStorageKey { @Getter private final int registrationPriority; - public FluidStorageKey(@NotNull ResourceLocation resourceLocation, @NotNull String tagKey, + public FluidStorageKey(@NotNull ResourceLocation resourceLocation, @Nullable TagKey extraTag, @NotNull MaterialIconType iconType, @NotNull Function<@NotNull Material, @NotNull String> registryNameFunction, @NotNull Function<@NotNull Material, @NotNull String> translationKeyFunction, @Nullable FluidState defaultFluidState, int registrationPriority) { this.resourceLocation = resourceLocation; - this.tagKey = tagKey; + this.extraTag = extraTag; this.iconType = iconType; this.registryNameFunction = registryNameFunction; this.translationKeyFunction = translationKeyFunction; @@ -52,6 +55,25 @@ public FluidStorageKey(@NotNull ResourceLocation resourceLocation, @NotNull Stri keys.put(resourceLocation, this); } + public FluidStorageKey(@NotNull ResourceLocation resourceLocation, @NotNull String tagKey, + @NotNull MaterialIconType iconType, + @NotNull Function<@NotNull Material, @NotNull String> registryNameFunction, + @NotNull Function<@NotNull Material, @NotNull String> translationKeyFunction, + @Nullable FluidState defaultFluidState, int registrationPriority) { + this(resourceLocation, TagUtil.createFluidTag(tagKey), iconType, + registryNameFunction, translationKeyFunction, + defaultFluidState, registrationPriority); + } + + public FluidStorageKey(@NotNull ResourceLocation resourceLocation, @NotNull MaterialIconType iconType, + @NotNull Function<@NotNull Material, @NotNull String> registryNameFunction, + @NotNull Function<@NotNull Material, @NotNull String> translationKeyFunction, + @Nullable FluidState defaultFluidState, int registrationPriority) { + this(resourceLocation, (TagKey) null, iconType, + registryNameFunction, translationKeyFunction, + defaultFluidState, registrationPriority); + } + public static @Nullable FluidStorageKey getByName(@NotNull ResourceLocation location) { return keys.get(location); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/fluids/store/FluidStorageKeys.java b/src/main/java/com/gregtechceu/gtceu/api/fluids/store/FluidStorageKeys.java index 72ade027fb4..712e56e0672 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/fluids/store/FluidStorageKeys.java +++ b/src/main/java/com/gregtechceu/gtceu/api/fluids/store/FluidStorageKeys.java @@ -6,20 +6,19 @@ import com.gregtechceu.gtceu.api.data.chemical.material.properties.FluidProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.fluids.FluidState; +import com.gregtechceu.gtceu.data.recipe.CustomTags; import org.jetbrains.annotations.NotNull; public final class FluidStorageKeys { public static final FluidStorageKey LIQUID = new FluidStorageKey(GTCEu.id("liquid"), - "liquids", MaterialIconType.liquid, m -> prefixedRegisteredName("liquid_", FluidStorageKeys.LIQUID, m), m -> m.hasProperty(PropertyKey.DUST) ? "gtceu.fluid.liquid_generic" : "gtceu.fluid.generic", FluidState.LIQUID, 0); public static final FluidStorageKey GAS = new FluidStorageKey(GTCEu.id("gas"), - "gases", MaterialIconType.gas, m -> postfixedRegisteredName("_gas", FluidStorageKeys.GAS, m), m -> { @@ -37,14 +36,12 @@ public final class FluidStorageKeys { FluidState.GAS, 0); public static final FluidStorageKey PLASMA = new FluidStorageKey(GTCEu.id("plasma"), - "plasmas", MaterialIconType.plasma, m -> m.getName() + "_plasma", m -> "gtceu.fluid.plasma", FluidState.PLASMA, -1); - public static final FluidStorageKey MOLTEN = new FluidStorageKey(GTCEu.id("molten"), - "molten", + public static final FluidStorageKey MOLTEN = new FluidStorageKey(GTCEu.id("molten"), CustomTags.MOLTEN_FLUIDS, MaterialIconType.molten, m -> "molten_" + m.getName(), m -> "gtceu.fluid.molten", diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/GuiTextures.java b/src/main/java/com/gregtechceu/gtceu/api/gui/GuiTextures.java index 2fbc44aa184..a8d39e6b28b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/GuiTextures.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/GuiTextures.java @@ -3,11 +3,6 @@ import com.lowdragmc.lowdraglib.gui.texture.ResourceBorderTexture; import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote GuiTextures - */ @SuppressWarnings("unused") public class GuiTextures { @@ -112,6 +107,8 @@ public class GuiTextures { "gtceu:textures/gui/widget/button_distinct_buses.png"); public static final ResourceTexture BUTTON_POWER = new ResourceTexture( "gtceu:textures/gui/widget/button_power.png"); + public static final ResourceTexture BUTTON_BATCH = new ResourceTexture( + "gtceu:textures/gui/widget/button_batch.png"); public static final ResourceTexture BUTTON_FILTER_NBT = new ResourceTexture( "gtceu:textures/gui/widget/button_filter_nbt.png"); public static final ResourceTexture BUTTON_FLUID_OUTPUT = new ResourceTexture( @@ -127,6 +124,10 @@ public class GuiTextures { public static final ResourceTexture BUTTON_LEFT = new ResourceTexture("gtceu:textures/gui/widget/left.png"); public static final ResourceTexture BUTTON_PUBLIC_PRIVATE = new ResourceTexture( "gtceu:textures/gui/widget/button_public_private.png"); + public static final ResourceTexture BUTTON_CHECK = new ResourceTexture( + "gtceu:textures/gui/widget/button_check.png"); + public static final ResourceTexture BUTTON_LIST = new ResourceTexture( + "gtceu:textures/gui/widget/button_list.png"); public static final ResourceTexture BUTTON_RIGHT = new ResourceTexture("gtceu:textures/gui/widget/right.png"); public static final ResourceTexture BUTTON_SILK_TOUCH_MODE = new ResourceTexture( "gtceu:textures/gui/widget/button_silk_touch_mode.png"); @@ -190,7 +191,7 @@ public class GuiTextures { public static final ResourceTexture MAINTENANCE_ICON = new ResourceTexture( "gtceu:textures/block/overlay/machine/overlay_maintenance.png"); public static final ResourceTexture STORAGE_ICON = new ResourceTexture( - "gtceu:textures/item/storage_cover.png"); + "gtceu:textures/item/storage.png"); public static final ResourceTexture BUTTON_MINER_MODES = new ResourceTexture( "gtceu:textures/gui/widget/button_miner_modes.png"); @@ -495,7 +496,7 @@ public class GuiTextures { // Covers public static final ResourceTexture COVER_MACHINE_CONTROLLER = new ResourceTexture( - "gtceu:textures/items/metaitems/cover.controller.png"); + "gtceu:textures/items/machine_controller_cover.png"); // Terminal public static final ResourceTexture ICON_REMOVE = new ResourceTexture( diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/SteamTexture.java b/src/main/java/com/gregtechceu/gtceu/api/gui/SteamTexture.java index 7b3e89070fd..fa3743bcf94 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/SteamTexture.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/SteamTexture.java @@ -2,11 +2,6 @@ import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote SteamTexture - */ public class SteamTexture { private static final String BRONZE = "bronze"; diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/UITemplate.java b/src/main/java/com/gregtechceu/gtceu/api/gui/UITemplate.java index 98a9cb0348e..46bb179cbeb 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/UITemplate.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/UITemplate.java @@ -7,11 +7,6 @@ import net.minecraft.world.entity.player.Inventory; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote UITemplate - */ public class UITemplate { public static WidgetGroup bindPlayerInventory(Inventory inventoryPlayer, IGuiTexture imageLocation, int x, int y, diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/WidgetUtils.java b/src/main/java/com/gregtechceu/gtceu/api/gui/WidgetUtils.java index 07259f0db76..ed996599973 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/WidgetUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/WidgetUtils.java @@ -9,11 +9,6 @@ import java.util.function.Consumer; import java.util.regex.Pattern; -/** - * @author KilaBash - * @date 2023/3/29 - * @implNote WidgetUtils - */ public class WidgetUtils { public static List getWidgetsById(WidgetGroup group, String regex) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/EditableMachineUI.java b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/EditableMachineUI.java index 6134c419e2d..56798f4bace 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/EditableMachineUI.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/EditableMachineUI.java @@ -23,11 +23,6 @@ import java.util.function.BiConsumer; import java.util.function.Supplier; -/** - * @author KilaBash - * @date 2023/7/4 - * @implNote EditableMachineUI - */ public class EditableMachineUI implements IEditableUI { @Getter diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/EditableUI.java b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/EditableUI.java index d3004e686c0..3020d5f7676 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/EditableUI.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/EditableUI.java @@ -10,11 +10,6 @@ import java.util.function.BiConsumer; import java.util.function.Supplier; -/** - * @author KilaBash - * @date 2023/7/4 - * @implNote EditableUI - */ public class EditableUI implements IEditableUI { @Getter diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/GTUIEditor.java b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/GTUIEditor.java index 7f608003d10..9f372444007 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/GTUIEditor.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/GTUIEditor.java @@ -8,11 +8,6 @@ import static com.lowdragmc.lowdraglib.gui.editor.ui.tool.WidgetToolBox.Default.registerTab; -/** - * @author KilaBash - * @date 2023/7/5 - * @implNote GTUIEditor - */ @LDLRegister(name = "editor.gtceu", group = "editor") public class GTUIEditor extends UIEditor { diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/IEditableUI.java b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/IEditableUI.java index 3b264950e11..9af8c25799c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/IEditableUI.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/IEditableUI.java @@ -6,11 +6,6 @@ import java.util.function.BiConsumer; import java.util.function.Supplier; -/** - * @author KilaBash - * @date 2023/7/4 - * @implNote IEditableUI - */ public interface IEditableUI { W createDefault(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/MachineUIProject.java b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/MachineUIProject.java index 0c2c73ed88b..ef0cf9410a0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/MachineUIProject.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/MachineUIProject.java @@ -30,11 +30,6 @@ import java.io.IOException; import java.util.*; -/** - * @author KilaBash - * @date 2023/3/29 - * @implNote RecipeTypeUIProject - */ @LDLRegister(name = "mui", group = "editor.gtceu") public class MachineUIProject extends UIProject { diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/RecipeTypeUIProject.java b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/RecipeTypeUIProject.java index 284882b8a7b..5927dedaea1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/RecipeTypeUIProject.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/RecipeTypeUIProject.java @@ -32,11 +32,6 @@ import java.util.List; import java.util.Map; -/** - * @author KilaBash - * @date 2023/3/29 - * @implNote RecipeTypeUIProject - */ @LDLRegister(name = "rtui", group = "editor.gtceu") public class RecipeTypeUIProject extends UIProject { diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/TemplateTab.java b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/TemplateTab.java index e879fd44616..717d9e662b6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/TemplateTab.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/TemplateTab.java @@ -4,11 +4,6 @@ import com.lowdragmc.lowdraglib.gui.editor.ui.menu.MenuTab; import com.lowdragmc.lowdraglib.gui.util.TreeBuilder; -/** - * @author KilaBash - * @date 2023/3/29 - * @implNote RecipeTypeMenu - */ @LDLRegister(name = "template_tab", group = "editor.gtceu") public class TemplateTab extends MenuTab { diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/UIMainPanel.java b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/UIMainPanel.java index 45edd4c8ef0..430266b226a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/UIMainPanel.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/UIMainPanel.java @@ -12,11 +12,6 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -/** - * @author KilaBash - * @date 2023/7/5 - * @implNote UIMainPanel - */ public class UIMainPanel extends MainPanel { final String description; diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/factory/CoverUIFactory.java b/src/main/java/com/gregtechceu/gtceu/api/gui/factory/CoverUIFactory.java index ce23b1c7f6b..45b15bb3335 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/factory/CoverUIFactory.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/factory/CoverUIFactory.java @@ -16,11 +16,6 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -/** - * @author KilaBash - * @date 2023/3/12 - * @implNote CoverUIFactory - */ public class CoverUIFactory extends UIFactory { public static final CoverUIFactory INSTANCE = new CoverUIFactory(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/factory/MachineUIFactory.java b/src/main/java/com/gregtechceu/gtceu/api/gui/factory/MachineUIFactory.java index 8215be8b0d1..0a71e7c5454 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/factory/MachineUIFactory.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/factory/MachineUIFactory.java @@ -15,11 +15,6 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -/** - * @author KilaBash - * @date 2023/2/17 - * @implNote MachineUIFactory - */ public class MachineUIFactory extends UIFactory { public static final MachineUIFactory INSTANCE = new MachineUIFactory(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/ConfiguratorPanel.java b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/ConfiguratorPanel.java index 31543417142..6ab93be46bc 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/ConfiguratorPanel.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/ConfiguratorPanel.java @@ -32,11 +32,6 @@ import java.util.Collections; import java.util.List; -/** - * @author KilaBash - * @date 2023/6/27 - * @implNote ConfiguratorPanel - */ public class ConfiguratorPanel extends WidgetGroup { @Getter diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/FancyMachineUIWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/FancyMachineUIWidget.java index fd68a5135bb..ed934ed888d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/FancyMachineUIWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/FancyMachineUIWidget.java @@ -20,11 +20,6 @@ import java.util.List; import java.util.stream.Stream; -/** - * @author KilaBash - * @date 2023/6/27 - * @implNote FancyMachineUIWidget - */ @Getter public class FancyMachineUIWidget extends WidgetGroup { diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyConfigurator.java b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyConfigurator.java index 8519d5f8b0b..c60ff187844 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyConfigurator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyConfigurator.java @@ -10,11 +10,6 @@ import java.util.function.BiConsumer; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/6/28 - * @implNote IFancyConfigurator - */ public interface IFancyConfigurator { Component getTitle(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyConfiguratorButton.java b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyConfiguratorButton.java index 4cf7299a51d..0708b49eccc 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyConfiguratorButton.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyConfiguratorButton.java @@ -18,11 +18,6 @@ import java.util.function.Consumer; import java.util.function.Function; -/** - * @author KilaBash - * @date 2023/7/24 - * @implNote IFancyConfiguratorButton - */ public interface IFancyConfiguratorButton extends IFancyConfigurator { void onClick(ClickData clickData); diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyTooltip.java b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyTooltip.java index 3cc1b71be73..a0af005a9cf 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyTooltip.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyTooltip.java @@ -8,13 +8,9 @@ import org.jetbrains.annotations.Nullable; import java.util.List; +import java.util.function.BooleanSupplier; import java.util.function.Supplier; -/** - * @author KilaBash - * @date 2023/6/28 - * @implNote IFancyConfigurator - */ public interface IFancyTooltip { IGuiTexture getFancyTooltipIcon(); @@ -30,7 +26,7 @@ default TooltipComponent getFancyComponent() { return null; } - record Basic(Supplier icon, Supplier> content, Supplier predicate, + record Basic(Supplier icon, Supplier> content, BooleanSupplier predicate, Supplier componentSupplier) implements IFancyTooltip { @@ -51,7 +47,7 @@ public List getFancyTooltip() { @Override public boolean showFancyTooltip() { - return predicate.get(); + return predicate.getAsBoolean(); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyUIProvider.java b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyUIProvider.java index a2b6ec89184..b5d878fcdc5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyUIProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyUIProvider.java @@ -11,11 +11,6 @@ import java.util.Collections; import java.util.List; -/** - * @author KilaBash - * @date 2023/6/27 - * @implNote IFancyUIProvider - */ public interface IFancyUIProvider { /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/TabsWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/TabsWidget.java index a15f7c18fa0..e30d94a8280 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/TabsWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/TabsWidget.java @@ -25,11 +25,6 @@ import java.util.function.BiConsumer; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/6/27 - * @implNote TabsWidget - */ @Getter public class TabsWidget extends Widget { diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/TooltipsPanel.java b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/TooltipsPanel.java index 5e56a1d8762..5e5e01d7975 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/TooltipsPanel.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/TooltipsPanel.java @@ -15,11 +15,6 @@ import java.util.Arrays; import java.util.List; -/** - * @author KilaBash - * @date 2023/6/27 - * @implNote TooltipsPanel - */ public class TooltipsPanel extends Widget { @Getter diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java b/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java index f565186cf81..8cc8200fb72 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java @@ -38,6 +38,7 @@ import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fluids.FluidStack; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; @@ -47,11 +48,6 @@ import java.util.*; -/** - * @author KilaBash - * @date 2023/7/10 - * @implNote ProspectorMode - */ public abstract class ProspectorMode { public static ProspectorMode ORE = new ProspectorMode<>("metaitem.prospector.mode.ores", 16) { @@ -148,11 +144,11 @@ public Class getItemClass() { @Override public void appendTooltips(List items, List tooltips, String selected) { - Map counter = new HashMap<>(); + Object2IntOpenHashMap counter = new Object2IntOpenHashMap<>(); for (var array : items) { for (String item : array) { if (ProspectingTexture.SELECTED_ALL.equals(selected) || selected.equals(getUniqueID(item))) { - counter.put(item, counter.getOrDefault(item, 0) + 1); + counter.addTo(item, 1); } } } @@ -299,7 +295,7 @@ public void scan(OreInfo[][][] storage, LevelChunk chunk) { var left = 100 * oreVein.getOperationsRemaining() / BedrockOreVeinSavedData.MAXIMUM_VEIN_OPERATIONS; for (var entry : oreVein.getDefinition().materials()) { storage[0][0] = ArrayUtils.add(storage[0][0], - new OreInfo(entry.getFirst(), entry.getSecond(), left, oreVein.getOreYield())); + new OreInfo(entry.material(), entry.weight(), left, oreVein.getOreYield())); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/texture/ProspectingTexture.java b/src/main/java/com/gregtechceu/gtceu/api/gui/texture/ProspectingTexture.java index 1573c570e7d..f987592eee7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/texture/ProspectingTexture.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/texture/ProspectingTexture.java @@ -5,6 +5,8 @@ import com.gregtechceu.gtceu.api.gui.misc.ProspectorMode; import com.lowdragmc.lowdraglib.gui.editor.ColorPattern; +import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; +import com.lowdragmc.lowdraglib.gui.texture.TransformTexture; import com.lowdragmc.lowdraglib.gui.util.DrawerHelper; import com.lowdragmc.lowdraglib.utils.ColorUtils; @@ -23,6 +25,7 @@ import com.mojang.blaze3d.vertex.Tesselator; import com.mojang.blaze3d.vertex.VertexFormat; import lombok.Getter; +import org.joml.Matrix4f; import java.io.IOException; import java.lang.reflect.Array; @@ -31,12 +34,15 @@ import static com.mojang.blaze3d.vertex.DefaultVertexFormat.POSITION_TEX_COLOR; +@SuppressWarnings({ "rawtypes", "unchecked" }) @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault @OnlyIn(Dist.CLIENT) public class ProspectingTexture extends AbstractTexture { public static final String SELECTED_ALL = "[all]"; + private static final ResourceTexture ARROW = GuiTextures.UP.copy().setColor(ColorPattern.RED.color); + @Getter private String selected = SELECTED_ALL; private boolean darkMode; @@ -108,13 +114,13 @@ private NativeImage getImage() { NativeImage image = new NativeImage(wh, wh, false); for (int i = 0; i < wh; i++) { for (int j = 0; j < wh; j++) { - var items = this.data[i * mode.cellSize / 16][j * mode.cellSize / 16]; + Object[] items = this.data[i * mode.cellSize / 16][j * mode.cellSize / 16]; // draw bg image.setPixelRGBA(i, j, (darkMode ? ColorPattern.GRAY.color : ColorPattern.WHITE.color)); // draw items - for (var item : items) { + for (Object item : items) { if (!selected.equals(SELECTED_ALL) && !selected.equals(mode.getUniqueID(item))) continue; - var color = mode.getItemColor(item); + int color = mode.getItemColor(item); image.setPixelRGBA(i, j, combine(255, ColorUtils.blueI(color), ColorUtils.greenI(color), ColorUtils.redI(color))); break; @@ -146,17 +152,17 @@ private void doLoad(NativeImage image) { public void draw(GuiGraphics graphics, int x, int y) { if (this.getId() == -1) return; - Tesselator tessellator = Tesselator.getInstance(); - BufferBuilder bufferbuilder = tessellator.getBuilder(); + Tesselator tesselator = Tesselator.getInstance(); + BufferBuilder bufferbuilder = tesselator.getBuilder(); RenderSystem.setShader(GameRenderer::getPositionTexColorShader); RenderSystem.setShaderTexture(0, this.getId()); - var matrix4f = graphics.pose().last().pose(); + Matrix4f matrix4f = graphics.pose().last().pose(); bufferbuilder.begin(VertexFormat.Mode.QUADS, POSITION_TEX_COLOR); bufferbuilder.vertex(matrix4f, x, y + imageHeight, 0).uv(0, 1).color(-1).endVertex(); bufferbuilder.vertex(matrix4f, x + imageWidth, y + imageHeight, 0).uv(1, 1).color(-1).endVertex(); bufferbuilder.vertex(matrix4f, x + imageWidth, y, 0).uv(1, 0).color(-1).endVertex(); bufferbuilder.vertex(matrix4f, x, y, 0).uv(0, 0).color(-1).endVertex(); - tessellator.end(); + tesselator.end(); // draw special grid (e.g. fluid) for (int cx = 0; cx < radius * 2 - 1; cx++) { @@ -167,9 +173,8 @@ public void draw(GuiGraphics graphics, int x, int y) { } } } - - GuiTextures.UP.copy().setColor(ColorPattern.RED.color).rotate(direction / 2).draw(graphics, 0, 0, - x + playerXGui - 20, y + playerYGui - 20, 40, 40); + TransformTexture arrow = ARROW.rotate(this.direction / 2); + arrow.draw(graphics, 0, 0, x + playerXGui - 20, y + playerYGui - 20, 40, 40); // draw red vertical line if (playerXGui % 16 > 7 || playerXGui % 16 == 0) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ColorBlockWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ColorBlockWidget.java new file mode 100644 index 00000000000..5e7bbf3e412 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ColorBlockWidget.java @@ -0,0 +1,65 @@ +package com.gregtechceu.gtceu.api.gui.widget; + +import com.lowdragmc.lowdraglib.gui.util.DrawerHelper; +import com.lowdragmc.lowdraglib.gui.widget.Widget; + +import net.minecraft.client.gui.GuiGraphics; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; +import org.jetbrains.annotations.NotNull; + +import java.util.function.IntSupplier; + +@Setter +@Accessors(chain = true) +public class ColorBlockWidget extends Widget { + + private IntSupplier colorSupplier; + @Getter + private int currentColor; + private static boolean isShowAlpha = false; + + public ColorBlockWidget(int x, int y, int width, int height) { + super(x, y, width, height); + this.currentColor = 0xFFFFFFFF; + } + + @Override + public void updateScreen() { + super.updateScreen(); + if (isClientSideWidget && colorSupplier != null) { + currentColor = colorSupplier.getAsInt(); + } + } + + @Override + public boolean mouseClicked(double mouseX, double mouseY, int button) { + if (isMouseOverElement(mouseX, mouseY)) { + playButtonClickSound(); + isShowAlpha = !isShowAlpha; + return true; + } + return super.mouseClicked(mouseX, mouseY, button); + } + + @OnlyIn(Dist.CLIENT) + @Override + public void drawInBackground(@NotNull GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + int x = getPosition().x + 1; + int y = getPosition().y + 1; + int width = getSize().width - 2; + int height = getSize().height - 2; + + if (colorSupplier != null) { + currentColor = colorSupplier.getAsInt(); + } + final int BORDER_COLOR = 0xFF000000; + int opaqueColor = isShowAlpha ? currentColor : currentColor | 0xFF000000; + graphics.fill(x, y, x + width, y + height, opaqueColor); + DrawerHelper.drawBorder(graphics, x, y, width, height, BORDER_COLOR, 1); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ConfirmTextInputWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ConfirmTextInputWidget.java new file mode 100644 index 00000000000..9a77e5e26c1 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ConfirmTextInputWidget.java @@ -0,0 +1,73 @@ +package com.gregtechceu.gtceu.api.gui.widget; + +import com.gregtechceu.gtceu.api.gui.GuiTextures; + +import com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup; +import com.lowdragmc.lowdraglib.gui.widget.ButtonWidget; +import com.lowdragmc.lowdraglib.gui.widget.TextFieldWidget; +import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; + +import lombok.AccessLevel; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; +import org.jetbrains.annotations.Nullable; + +import java.util.function.Consumer; +import java.util.function.Function; + +@Accessors(chain = true) +public class ConfirmTextInputWidget extends WidgetGroup { + + private final Consumer textResponder; + @Nullable + private final Function returnValidator; + private Function validator = (s) -> s; + @Getter(AccessLevel.PRIVATE) + @Setter(AccessLevel.PRIVATE) + private String inputText = ""; + @Setter + private String tooltip = ""; + + public ConfirmTextInputWidget(int x, int y, int width, int height, String text, + Consumer textResponder, + @Nullable Function validator, + @Nullable Function returnValidator) { + super(x, y, width, height); + this.textResponder = textResponder; + this.returnValidator = returnValidator; + if (validator != null) { + this.validator = validator; + } + if (text != null) { + this.inputText = text; + } + } + + @Override + public void initWidget() { + super.initWidget(); + this.addWidget(new ButtonWidget( + getSizeWidth() - getSizeHeight(), + 0, + getSizeHeight(), + getSizeHeight(), + pressed -> { + if (returnValidator != null) { + inputText = returnValidator.apply(inputText); + } + textResponder.accept(inputText); + }) + .setButtonTexture( + new GuiTextureGroup(GuiTextures.VANILLA_BUTTON, GuiTextures.BUTTON_CHECK))); + this.addWidget(new TextFieldWidget( + 1, + 1, + getSizeWidth() - getSizeHeight() - 4, + getSizeHeight() - 2, + this::getInputText, + this::setInputText) + .setValidator(validator) + .setHoverTooltips(tooltip)); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/NumberInputWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/NumberInputWidget.java index 53c6c49327e..fdcd8bf9884 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/NumberInputWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/NumberInputWidget.java @@ -10,6 +10,7 @@ import com.lowdragmc.lowdraglib.gui.util.ClickData; import com.lowdragmc.lowdraglib.gui.widget.ButtonWidget; import com.lowdragmc.lowdraglib.gui.widget.TextFieldWidget; +import com.lowdragmc.lowdraglib.gui.widget.Widget; import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; import com.lowdragmc.lowdraglib.utils.Position; import com.lowdragmc.lowdraglib.utils.Size; @@ -111,6 +112,12 @@ public void readInitialData(FriendlyByteBuf buffer) { textField.setCurrentString(buffer.readUtf()); } + @Override + public Widget setHoverTooltips(String... tooltipText) { + textField.setHoverTooltips(tooltipText); + return super.setHoverTooltips(tooltipText); + } + private void buildUI() { int buttonWidth = Mth.clamp(this.getSize().width / 5, 15, 40); int textFieldWidth = this.getSize().width - (2 * buttonWidth) - 4; diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewSlotWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewSlotWidget.java new file mode 100644 index 00000000000..432e8be1636 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewSlotWidget.java @@ -0,0 +1,112 @@ +package com.gregtechceu.gtceu.api.gui.widget; + +import com.lowdragmc.lowdraglib.gui.modular.ModularUIGuiContainer; +import com.lowdragmc.lowdraglib.gui.util.DrawerHelper; +import com.lowdragmc.lowdraglib.utils.ColorUtils; +import com.lowdragmc.lowdraglib.utils.Position; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.items.IItemHandlerModifiable; + +import com.mojang.blaze3d.systems.RenderSystem; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.lwjgl.opengl.GL11; + +import javax.annotation.Nonnull; + +public class PatternPreviewSlotWidget extends SlotWidget { + + public PatternPreviewSlotWidget(IItemHandlerModifiable itemHandler, int slotIndex, int xPosition, int yPosition, + boolean canTakeItems, boolean canPutItems) { + super(itemHandler, slotIndex, xPosition, yPosition, canTakeItems, canPutItems); + } + + /** + * Override the draw method for regular slot widget since we do custom offsets when drawing the stack + */ + @Override + public void drawInBackground(@NotNull GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + super.drawBackgroundTexture(graphics, mouseX, mouseY); + Position pos = this.getPosition(); + if (this.slotReference != null) { + ItemStack itemStack = this.getRealStack(this.slotReference.getItem()); + ModularUIGuiContainer modularUIGui = this.gui == null ? null : this.gui.getModularUIGui(); + if (itemStack.isEmpty() && modularUIGui != null && modularUIGui.getQuickCrafting() && + modularUIGui.getQuickCraftSlots().contains(this.slotReference)) { + int splitSize = modularUIGui.getQuickCraftSlots().size(); + itemStack = this.gui.getModularUIContainer().getCarried(); + if (!itemStack.isEmpty() && splitSize > 1 && + AbstractContainerMenu.canItemQuickReplace(this.slotReference, itemStack, true)) { + itemStack = itemStack.copy(); + itemStack.grow(AbstractContainerMenu.getQuickCraftPlaceCount(modularUIGui.getQuickCraftSlots(), + modularUIGui.dragSplittingLimit, itemStack)); + int k = Math.min(itemStack.getMaxStackSize(), this.slotReference.getMaxStackSize(itemStack)); + if (itemStack.getCount() > k) { + itemStack.setCount(k); + } + } + } + + if (!itemStack.isEmpty()) { + drawItemStack(graphics, itemStack, pos.x + 1, pos.y + 1, -1, (String) null); + } + } + + this.drawOverlay(graphics, mouseX, mouseY, partialTicks); + if (this.drawHoverOverlay && this.isMouseOverElement((double) mouseX, (double) mouseY) && + this.getHoverElement((double) mouseX, (double) mouseY) == this) { + RenderSystem.colorMask(true, true, true, false); + DrawerHelper.drawSolidRect(graphics, this.getPosition().x + 1, this.getPosition().y + 1, 16, 16, + -2130706433); + RenderSystem.colorMask(true, true, true, true); + } + } + + public static void drawItemStack(@Nonnull GuiGraphics graphics, ItemStack itemStack, int x, int y, int color, + @Nullable String altTxt) { + var a = ColorUtils.alpha(color); + var r = ColorUtils.red(color); + var g = ColorUtils.green(color); + var b = ColorUtils.blue(color); + RenderSystem.setShaderColor(r, g, b, a); + + RenderSystem.enableDepthTest(); + RenderSystem.depthMask(true); + + Minecraft mc = Minecraft.getInstance(); + + graphics.pose().pushPose(); + graphics.pose().translate(0, 0, 100); + + graphics.renderItem(itemStack, x, y); + graphics.pose().translate(0, 0, 100); + + graphics.pose().pushPose(); + + // actual offset bit that's important :3 + int xOffset = 0; + if (itemStack.getCount() / 100_000 != 0) { + xOffset = 9; + } else if (itemStack.getCount() / 10_000 != 0) { + xOffset = 6; + } else if (itemStack.getCount() / 1000 != 0) { + xOffset = 3; + } + + graphics.renderItemDecorations(mc.font, itemStack, x + xOffset, y, altTxt); + graphics.pose().popPose(); + + graphics.pose().popPose(); + + // clear depth buffer,it may cause some rendering issues? + RenderSystem.clear(GL11.GL_DEPTH_BUFFER_BIT, Minecraft.ON_OSX); + RenderSystem.depthMask(false); + RenderSystem.setShaderColor(1F, 1F, 1F, 1F); + RenderSystem.enableBlend(); + RenderSystem.disableDepthTest(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java index 00377e338b7..3855367f846 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java @@ -31,6 +31,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; +import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; @@ -57,17 +58,13 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -/** - * @author KilaBash - * @date 2023/3/5 - * @implNote PatterShapeInfoWidget - */ @OnlyIn(Dist.CLIENT) public class PatternPreviewWidget extends WidgetGroup { private boolean isLoaded; private static TrackedDummyWorld LEVEL; - private static BlockPos LAST_POS = new BlockPos(0, 50, 0); + private static final int REGION_SIZE = 512; + private static int LAST_OFFSET_INDEX = 0; private static final Map CACHE = new HashMap<>(); private final SceneWidget sceneWidget; private final DraggableScrollableWidgetGroup scrollableWidgetGroup; @@ -216,18 +213,14 @@ private void setupScene(MBPattern pattern) { Stream stream = pattern.blockMap.keySet().stream() .filter(pos -> layer == -1 || layer + pattern.minY == pos.getY()); if (pattern.controllerBase.isFormed()) { - LongSet set = pattern.controllerBase.getMultiblockState().getMatchContext().getOrDefault("renderMask", + LongSet modelDisabled = pattern.controllerBase.getMultiblockState().getMatchContext().getOrDefault( + "renderMask", LongSets.EMPTY_SET); - Set modelDisabled = set.stream().map(BlockPos::of).collect(Collectors.toSet()); if (!modelDisabled.isEmpty()) { - sceneWidget.setRenderedCore( - stream.filter(pos -> !modelDisabled.contains(pos)).collect(Collectors.toList()), null); - } else { - sceneWidget.setRenderedCore(stream.toList(), null); + stream = stream.filter(pos -> !modelDisabled.contains(pos.asLong())); } - } else { - sceneWidget.setRenderedCore(stream.toList(), null); } + sceneWidget.setRenderedCore(stream.toList(), null); } public static PatternPreviewWidget getPatternWidget(MultiblockMachineDefinition controllerDefinition) { @@ -254,10 +247,21 @@ public void setPage(int index) { } slotWidgets = new SlotWidget[Math.min(pattern.parts.size(), 18)]; var itemHandler = new CycleItemStackHandler(pattern.parts); + int xOffset = 0; for (int i = 0; i < slotWidgets.length; i++) { - slotWidgets[i] = new SlotWidget(itemHandler, i, 4 + i * 18, 0, false, false) + int padding = 1; + if (itemHandler.getStackInSlot(i).getCount() / 100_000 >= 1) { + padding = 10; + } else if (itemHandler.getStackInSlot(i).getCount() / 10_000 >= 1) { + padding = 7; + } else if (itemHandler.getStackInSlot(i).getCount() / 1_000 >= 1) { + padding = 4; + } + + slotWidgets[i] = new PatternPreviewSlotWidget(itemHandler, i, (4 + xOffset + padding), 0, false, false) .setBackgroundTexture(ColorPattern.T_GRAY.rectTexture()) .setIngredientIO(IngredientIO.INPUT); + xOffset += 18 + (2 * padding); scrollableWidgetGroup.addWidget(slotWidgets[i]); } } @@ -311,10 +315,43 @@ private void onPosSelected(BlockPos pos, Direction facing) { } } - public static BlockPos locateNextRegion(int range) { - BlockPos pos = LAST_POS; - LAST_POS = LAST_POS.offset(range, 0, range); - return pos; + /** + * Finds the next section of the dummy preview level to place a multiblock at in a spiral pattern. + *

+ * This results in positions that are considerably closer to the world origin than + * the one it replaces, which did {@code prevPos.offset(500, 0, 500)}, + * which results in absurdly high offsets for the later multiblocks. + *

+ * The regions being closer to {@code (0,0)} means that Z-fighting should be less likely, + * since floating point inaccuracies won't be as large of a factor. + * + * @return the area to place the current multiblock at + */ + public static BlockPos locateNextRegion() { + int currentIndex = LAST_OFFSET_INDEX++; + + // Origin coordinates scaled back to the offset value, from global + int x = 0, z = 0; + if (currentIndex > 0) { + int v = (int) (Mth.sqrt(currentIndex + 0.25f) - 0.5f); + int nextV = v + 1; + int spiralBaseIndex = v * nextV; + // this is 1 or -1 depending on if v is odd or even + int flipFlop = (v & 1) * 2 - 1; + + int offset = flipFlop * nextV / 2; + x += offset; + z += offset; + + int cornerIndex = spiralBaseIndex + nextV; + if (currentIndex < cornerIndex) { + x -= flipFlop * (currentIndex - spiralBaseIndex + 1); + } else { + x -= flipFlop * nextV; + z -= flipFlop * (currentIndex - cornerIndex + 1); + } + } + return new BlockPos(x * REGION_SIZE, 50, z * REGION_SIZE); } @Override @@ -340,7 +377,7 @@ public void drawInBackground(@NotNull GuiGraphics graphics, int mouseX, int mous private MBPattern initializePattern(MultiblockShapeInfo shapeInfo, HashSet blockDrops) { Map blockMap = new HashMap<>(); IMultiController controllerBase = null; - BlockPos multiPos = locateNextRegion(500); + BlockPos multiPos = locateNextRegion(); BlockInfo[][][] blocks = shapeInfo.getBlocks(); for (int x = 0; x < blocks.length; x++) { @@ -384,21 +421,19 @@ private MBPattern initializePattern(MultiblockShapeInfo shapeInfo, HashSet poses, IMultiController controllerBase) { + private void loadControllerFormed(Collection positions, IMultiController controllerBase) { BlockPattern pattern = controllerBase.getPattern(); if (pattern != null && pattern.checkPatternAt(controllerBase.getMultiblockState(), true)) { controllerBase.onStructureFormed(); } if (controllerBase.isFormed()) { - LongSet set = controllerBase.getMultiblockState().getMatchContext().getOrDefault("renderMask", + LongSet modelDisabled = controllerBase.getMultiblockState().getMatchContext().getOrDefault("renderMask", LongSets.EMPTY_SET); - Set modelDisabled = set.stream().map(BlockPos::of).collect(Collectors.toSet()); if (!modelDisabled.isEmpty()) { - sceneWidget.setRenderedCore( - poses.stream().filter(pos -> !modelDisabled.contains(pos)).collect(Collectors.toList()), null); - } else { - sceneWidget.setRenderedCore(poses, null); + positions = new HashSet<>(positions); + positions.removeIf(pos -> modelDisabled.contains(pos.asLong())); } + sceneWidget.setRenderedCore(positions, null); } else { GTCEu.LOGGER.warn("Pattern formed checking failed: {}", controllerBase.self().getDefinition()); } @@ -408,7 +443,7 @@ private Map gatherBlockDrops(Map bl Map partsMap = new Object2ObjectOpenHashMap<>(); for (Map.Entry entry : blocks.entrySet()) { BlockPos pos = entry.getKey(); - BlockState blockState = ((Level) PatternPreviewWidget.LEVEL).getBlockState(pos); + BlockState blockState = PatternPreviewWidget.LEVEL.getBlockState(pos); ItemStack itemStack = blockState.getBlock().getCloneItemStack(PatternPreviewWidget.LEVEL, pos, blockState); if (itemStack.isEmpty() && !blockState.getFluidState().isEmpty()) { @@ -443,15 +478,13 @@ private static class PartInfo { public List getItemStack() { return Arrays.stream(itemStackKey.getItemStack()) - .map(itemStack -> { - var item = itemStack.copy(); - item.setCount(amount); - return item; - }).filter(item -> !item.isEmpty()).toList(); + .map(stack -> stack.copyWithCount(amount)) + .filter(item -> !item.isEmpty()) + .toList(); } } - private static class MBPattern { + public static class MBPattern { @NotNull final List> parts; diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PredicatedButtonWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PredicatedButtonWidget.java index 19fbb69a7e2..11b8e95e682 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PredicatedButtonWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PredicatedButtonWidget.java @@ -11,11 +11,6 @@ import java.util.function.BooleanSupplier; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/2/24 - * @implNote DisplayButtonWidget - */ public class PredicatedButtonWidget extends ButtonWidget { private final BooleanSupplier predicate; diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PredicatedImageWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PredicatedImageWidget.java index 8f92e3844ad..be26db6e526 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PredicatedImageWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PredicatedImageWidget.java @@ -14,11 +14,6 @@ import java.util.function.BooleanSupplier; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote PredicatedImageWidget - */ @Accessors(chain = true) public class PredicatedImageWidget extends ImageWidget { diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/TankWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/TankWidget.java index 91f3322c424..98156b678b1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/TankWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/TankWidget.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.api.gui.widget; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; import com.gregtechceu.gtceu.client.TooltipsHandler; import com.gregtechceu.gtceu.integration.xei.entry.fluid.FluidEntryList; @@ -112,6 +113,8 @@ public class TankWidget extends Widget implements IRecipeIngredientSlot, IConfig protected int lastTankCapacity; @Setter protected Runnable changeListener; + @Setter + protected boolean showAmountOverlay = true; public TankWidget() { this(null, 0, 0, 18, 18, true, true); @@ -131,8 +134,7 @@ public TankWidget(IFluidHandler fluidTank, int x, int y, boolean allowClickConta public TankWidget(@Nullable IFluidHandler fluidTank, int x, int y, int width, int height, boolean allowClickContainerFilling, boolean allowClickContainerEmptying) { super(new Position(x, y), new Size(width, height)); - this.fluidTank = fluidTank; - this.tank = 0; + setFluidTank(fluidTank, 0); this.showAmount = true; this.allowClickFilled = allowClickContainerFilling; this.allowClickDrained = allowClickContainerEmptying; @@ -147,8 +149,7 @@ public TankWidget(IFluidHandler fluidHandler, int tank, int x, int y, boolean al public TankWidget(@Nullable IFluidHandler fluidHandler, int tank, int x, int y, int width, int height, boolean allowClickContainerFilling, boolean allowClickContainerEmptying) { super(new Position(x, y), new Size(width, height)); - this.fluidTank = fluidHandler; - this.tank = tank; + setFluidTank(fluidHandler, tank); this.showAmount = true; this.allowClickFilled = allowClickContainerFilling; this.allowClickDrained = allowClickContainerEmptying; @@ -156,17 +157,17 @@ public TankWidget(@Nullable IFluidHandler fluidHandler, int tank, int x, int y, } public TankWidget setFluidTank(IFluidHandler fluidTank) { - this.fluidTank = fluidTank; - this.tank = 0; - if (isClientSideWidget) { - setClientSideWidget(); - } - return this; + return setFluidTank(fluidTank, 0); } public TankWidget setFluidTank(IFluidHandler fluidTank, int tank) { - this.fluidTank = fluidTank; - this.tank = tank; + if (fluidTank instanceof NotifiableFluidTank notifiable) { + this.fluidTank = notifiable.getStorages()[tank]; + this.tank = 0; + } else { + this.fluidTank = fluidTank; + this.tank = tank; + } if (isClientSideWidget) { setClientSideWidget(); } @@ -388,7 +389,7 @@ public void drawInBackground(@NotNull GuiGraphics graphics, int mouseX, int mous ((int) (width * drawnWidth)), ((int) (height * drawnHeight))); } - if (showAmount && !renderedFluid.isEmpty()) { + if (showAmount && showAmountOverlay && !renderedFluid.isEmpty()) { graphics.pose().pushPose(); graphics.pose().scale(0.5F, 0.5F, 1); String s = TextFormattingUtil.formatLongToCompactStringBuckets(renderedFluid.getAmount(), 3) + "B"; diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ToggleButtonWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ToggleButtonWidget.java index 674975f9f7c..716725601e1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ToggleButtonWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ToggleButtonWidget.java @@ -13,11 +13,6 @@ import java.util.List; import java.util.function.BooleanSupplier; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote ToggleButtonWidget - */ public class ToggleButtonWidget extends SwitchWidget { private final IGuiTexture texture; diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/ComponentItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/ComponentItem.java index a8ff0de3989..b45213e753e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/ComponentItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/ComponentItem.java @@ -4,7 +4,6 @@ import com.gregtechceu.gtceu.api.capability.IElectricItem; import com.gregtechceu.gtceu.api.item.capability.ElectricItem; import com.gregtechceu.gtceu.api.item.component.*; -import com.gregtechceu.gtceu.api.item.component.forge.IComponentCapability; import com.lowdragmc.lowdraglib.client.renderer.IItemRendererProvider; import com.lowdragmc.lowdraglib.client.renderer.IRenderer; @@ -36,12 +35,9 @@ import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; import com.google.common.collect.Multimap; import lombok.Getter; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; @@ -50,11 +46,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote ComponentItem - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class ComponentItem extends Item @@ -365,19 +356,6 @@ public boolean doesSneakBypassUse(ItemStack stack, LevelReader level, BlockPos p return result; } - @Override - public LazyOptional getCapability(@NotNull final ItemStack itemStack, @NotNull final Capability cap) { - for (IItemComponent component : components) { - if (component instanceof IComponentCapability componentCapability) { - var value = componentCapability.getCapability(itemStack, cap); - if (value.isPresent()) { - return value; - } - } - } - return LazyOptional.empty(); - } - @Override public int getBurnTime(ItemStack itemStack, @Nullable RecipeType recipeType) { return burnTime; diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/DrumMachineItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/DrumMachineItem.java index 448b9eafa9f..399ac3c30cc 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/DrumMachineItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/DrumMachineItem.java @@ -8,18 +8,13 @@ import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.common.data.machines.GTMachineUtils; +import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.common.capabilities.ICapabilityProvider; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/3/28 - * @implNote DrumMachineItem - */ public class DrumMachineItem extends MetaMachineItem { @NotNull @@ -34,22 +29,15 @@ public static DrumMachineItem create(IMachineBlock block, Properties properties, return new DrumMachineItem(block, properties, mat); } - public @NotNull LazyOptional getCapability(ItemStack itemStack, @NotNull Capability cap) { - FluidPipeProperties property; - if (mat.hasProperty(PropertyKey.FLUID_PIPE)) { - property = mat.getProperty(PropertyKey.FLUID_PIPE); - } else { - property = null; + @Override + public @Nullable ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundTag nbt) { + final FluidPipeProperties property = mat.getProperty(PropertyKey.FLUID_PIPE); + if (property == null) { + return null; } - - if (cap == ForgeCapabilities.FLUID_HANDLER_ITEM && property != null) { - return ForgeCapabilities.FLUID_HANDLER_ITEM.orEmpty(cap, LazyOptional.of( - () -> new ThermalFluidHandlerItemStack( - itemStack, - Math.toIntExact(GTMachineUtils.DRUM_CAPACITY.get(getDefinition())), - property.getMaxFluidTemperature(), property.isGasProof(), property.isAcidProof(), - property.isCryoProof(), property.isPlasmaProof()))); - } - return LazyOptional.empty(); + return new ThermalFluidHandlerItemStack(stack, + GTMachineUtils.DRUM_CAPACITY.getInt(getDefinition()), + property.getMaxFluidTemperature(), property.isGasProof(), property.isAcidProof(), + property.isCryoProof(), property.isPlasmaProof()); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/GTBucketItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/GTBucketItem.java index 7f6406bc3a1..84702cd7d8a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/GTBucketItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/GTBucketItem.java @@ -35,11 +35,6 @@ import javax.annotation.Nullable; -/** - * @author KilaBash - * @date 2023/3/28 - * @implNote GTBucketItem - */ public class GTBucketItem extends BucketItem { final Material material; diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/IComponentItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/IComponentItem.java index 95596c63d7c..7e50f647f82 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/IComponentItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/IComponentItem.java @@ -1,26 +1,47 @@ package com.gregtechceu.gtceu.api.item; import com.gregtechceu.gtceu.api.item.component.IItemComponent; +import com.gregtechceu.gtceu.api.item.component.forge.IComponentCapability; +import net.minecraft.core.Direction; import net.minecraft.core.NonNullList; +import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.ItemLike; import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.capabilities.ICapabilityProvider; +import net.minecraftforge.common.extensions.IForgeItem; import net.minecraftforge.common.util.LazyOptional; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.List; -public interface IComponentItem extends ItemLike { +public interface IComponentItem extends ItemLike, IForgeItem { List getComponents(); void attachComponents(IItemComponent... components); - default LazyOptional getCapability(@NotNull final ItemStack itemStack, @NotNull final Capability cap) { - return LazyOptional.empty(); + @Override + default @Nullable ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundTag nbt) { + return new ICapabilityProvider() { + + @Override + public @NotNull LazyOptional getCapability(@NotNull Capability cap, @Nullable Direction side) { + for (IItemComponent component : getComponents()) { + if (component instanceof IComponentCapability componentCapability) { + var value = componentCapability.getCapability(stack, cap); + if (value.isPresent()) { + return value; + } + } + } + return LazyOptional.empty(); + } + }; } default void fillItemCategory(CreativeModeTab category, NonNullList items) {} diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java b/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java index e5389f21c83..f849bd5a7cf 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.api.item; -import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.capability.CombinedCapabilityProvider; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; @@ -30,13 +29,13 @@ import com.lowdragmc.lowdraglib.gui.modular.ModularUI; import net.minecraft.client.color.item.ItemColor; -import net.minecraft.client.resources.language.I18n; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.NonNullList; -import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.locale.Language; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; +import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundSource; @@ -67,6 +66,7 @@ import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import it.unimi.dsi.fastutil.objects.Object2IntMap; +import it.unimi.dsi.fastutil.objects.Object2IntMaps; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -148,17 +148,18 @@ default ItemStack get() { // Set tool and material enchantments Object2IntMap enchantments = new Object2IntOpenHashMap<>(toolProperty.getEnchantments()); enchantments.putAll(toolStats.getDefaultEnchantments(stack)); - enchantments.forEach((enchantment, level) -> { + for (var entry : Object2IntMaps.fastIterable(enchantments)) { + var enchantment = entry.getKey(); if (enchantment.canEnchant(stack)) { - stack.enchant(enchantment, level); + stack.enchant(enchantment, entry.getIntValue()); } - }); + } // Set behaviours CompoundTag behaviourTag = getBehaviorsTag(stack); getToolStats().getBehaviors().forEach(behavior -> behavior.addBehaviorNBT(stack, behaviourTag)); - if (aoeDefinition != AoESymmetrical.none()) { + if (!aoeDefinition.isZero()) { behaviourTag.putInt(MAX_AOE_COLUMN_KEY, aoeDefinition.column); behaviourTag.putInt(MAX_AOE_ROW_KEY, aoeDefinition.row); behaviourTag.putInt(MAX_AOE_LAYER_KEY, aoeDefinition.layer); @@ -358,10 +359,10 @@ default int getTotalHarvestLevel(ItemStack stack) { getToolStats().getBehaviors().forEach(behavior -> behavior.onBlockStartBreak(stack, pos, player)); if (!player.isShiftKeyDown()) { - ServerPlayer playerMP = (ServerPlayer) player; + ServerPlayer serverPlayer = (ServerPlayer) player; int result = -1; if (isTool(stack, GTToolType.SHEARS)) { - result = shearBlockRoutine(playerMP, stack, pos); + result = shearBlockRoutine(serverPlayer, stack, pos); } if (result != 0) { // prevent exploits with instantly breakable blocks @@ -377,7 +378,7 @@ default int getTotalHarvestLevel(ItemStack stack) { effective |= isToolEffective(state, getToolClasses(stack), getTotalHarvestLevel(stack)); if (effective) { - if (areaOfEffectBlockBreakRoutine(stack, playerMP)) { + if (areaOfEffectBlockBreakRoutine(stack, serverPlayer, pos)) { if (playSoundOnBlockDestroy()) playSound(player); } else { if (result == -1) { @@ -628,9 +629,6 @@ default int getTotalHarvestLevel(ItemStack stack) { } } - // Client-side methods - - @OnlyIn(Dist.CLIENT) default void definition$appendHoverText(@NotNull ItemStack stack, @Nullable Level world, @NotNull List tooltip, TooltipFlag flag) { if (!(stack.getItem() instanceof IGTTool tool)) return; @@ -642,12 +640,8 @@ default int getTotalHarvestLevel(ItemStack stack) { // electric info if (this.isElectric()) { - - tooltip.add(Component.translatable("metaitem.generic.electric_item.tooltip", - FormattingUtil.formatNumbers(getCharge(stack)), - FormattingUtil.formatNumbers(getMaxCharge(stack)), - GTValues.VNF[getElectricTier()])); - ElectricStats.addCurrentChargeTooltip(tooltip, getCharge(stack), getMaxCharge(stack), getElectricTier()); + ElectricStats.addCurrentChargeTooltip(tooltip, getCharge(stack), getMaxCharge(stack), getElectricTier(), + false); } // durability info @@ -681,7 +675,7 @@ default int getTotalHarvestLevel(ItemStack stack) { int harvestLevel = tool.getTotalHarvestLevel(stack); String harvestName = "item.gtceu.tool.harvest_level." + harvestLevel; - if (I18n.exists(harvestName)) { // if there's a defined name for the harvest level, use it + if (Language.getInstance().has(harvestName)) { // if there's a defined name for the harvest level, use it tooltip.add(Component.translatable("item.gtceu.tool.tooltip.harvest_level_extra", harvestLevel, Component.translatable(harvestName))); } else { @@ -693,8 +687,8 @@ default int getTotalHarvestLevel(ItemStack stack) { boolean addedBehaviorNewLine = false; AoESymmetrical aoeDefinition = getAoEDefinition(stack); - if (aoeDefinition != AoESymmetrical.none()) { - addedBehaviorNewLine = tooltip.add(Component.literal("")); + if (!aoeDefinition.isZero()) { + addedBehaviorNewLine = tooltip.add(CommonComponents.EMPTY); tooltip.add(Component.translatable("item.gtceu.tool.behavior.aoe_mining", aoeDefinition.column * 2 + 1, aoeDefinition.row * 2 + 1, aoeDefinition.layer + 1)); } @@ -703,29 +697,29 @@ default int getTotalHarvestLevel(ItemStack stack) { if (behaviorsTag.getBoolean(RELOCATE_MINED_BLOCKS_KEY)) { if (!addedBehaviorNewLine) { addedBehaviorNewLine = true; - tooltip.add(Component.literal("")); + tooltip.add(CommonComponents.EMPTY); } tooltip.add(Component.translatable("item.gtceu.tool.behavior.relocate_mining")); } if (!addedBehaviorNewLine && !toolStats.getBehaviors().isEmpty()) { - tooltip.add(Component.literal("")); + tooltip.add(CommonComponents.EMPTY); } toolStats.getBehaviors().forEach(behavior -> behavior.addInformation(stack, world, tooltip, flag)); // unique tooltip - String uniqueTooltip = "item.gtceu.tool." + BuiltInRegistries.ITEM.getKey(this.asItem()).getPath() + ".tooltip"; - if (I18n.exists(uniqueTooltip)) { - tooltip.add(Component.literal("")); + String uniqueTooltip = this.getToolType().getUnlocalizedName() + ".tooltip"; + if (Language.getInstance().has(uniqueTooltip)) { + tooltip.add(CommonComponents.EMPTY); tooltip.add(Component.translatable(uniqueTooltip)); } - tooltip.add(Component.literal("")); + tooltip.add(CommonComponents.EMPTY); // valid tools tooltip.add(Component.translatable("item.gtceu.tool.usable_as", getToolClassNames(stack).stream() - .filter(s -> I18n.exists("gtceu.tool.class." + s)) + .filter(s -> Language.getInstance().has("gtceu.tool.class." + s)) .map(s -> Component.translatable("gtceu.tool.class." + s)) .collect(Component::empty, FormattingUtil::combineComponents, FormattingUtil::combineComponents))); @@ -773,7 +767,7 @@ default int getTotalHarvestLevel(ItemStack stack) { case "enchantment.cofhcore.smelting": // cofhcore case "enchantment.as.smelting": // astral sorcery // block autosmelt enchants from AoE and Tree-Felling tools - return getToolStats().getAoEDefinition(stack) == AoESymmetrical.none() && + return getToolStats().getAoEDefinition(stack).isZero() && !getBehaviorsTag(stack).contains(TREE_FELLING_KEY); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/MaterialBlockItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/MaterialBlockItem.java index 19251e5d898..6c8addb7469 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/MaterialBlockItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/MaterialBlockItem.java @@ -2,8 +2,10 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.MaterialBlock; +import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.DustProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; +import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.lowdragmc.lowdraglib.client.renderer.IBlockRendererProvider; import com.lowdragmc.lowdraglib.client.renderer.IItemRendererProvider; @@ -12,27 +14,24 @@ import net.minecraft.client.color.item.ItemColor; import net.minecraft.network.chat.Component; import net.minecraft.world.item.BlockItem; -import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.level.block.Block; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @implNote MaterialBlockItem - */ public class MaterialBlockItem extends BlockItem implements IItemRendererProvider { - protected MaterialBlockItem(MaterialBlock block, Properties properties) { - super(block, properties); - } + public final TagPrefix tagPrefix; + public final Material material; - public static MaterialBlockItem create(MaterialBlock block, Item.Properties properties) { - return new MaterialBlockItem(block, properties); + public MaterialBlockItem(Block block, Properties properties, TagPrefix tagPrefix, Material material) { + super(block, properties); + this.tagPrefix = tagPrefix; + this.material = material; } @Override @@ -40,8 +39,6 @@ public int getBurnTime(ItemStack itemStack, @Nullable RecipeType recipeType) return getItemBurnTime(); } - public void onRegister() {} - @Override @NotNull public MaterialBlock getBlock() { @@ -49,13 +46,8 @@ public MaterialBlock getBlock() { } @OnlyIn(Dist.CLIENT) - public static ItemColor tintColor() { - return (itemStack, index) -> { - if (itemStack.getItem() instanceof MaterialBlockItem materialBlockItem) { - return materialBlockItem.getBlock().material.getLayerARGB(index); - } - return -1; - }; + public static ItemColor tintColor(Material material) { + return (itemStack, index) -> material.getLayerARGB(index); } @Nullable @@ -89,10 +81,10 @@ public Component getName(ItemStack stack) { } public int getItemBurnTime() { - var material = getBlock().material; DustProperty property = material.isNull() ? null : material.getProperty(PropertyKey.DUST); - if (property != null) - return (int) (property.getBurnTime() * getBlock().tagPrefix.getMaterialAmount(material) / GTValues.M); + if (property != null) { + return (int) (property.getBurnTime() * tagPrefix.getMaterialAmount(material) / GTValues.M); + } return -1; } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/MaterialPipeBlockItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/MaterialPipeBlockItem.java index 52ca3f5ecb4..97851db6697 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/MaterialPipeBlockItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/MaterialPipeBlockItem.java @@ -17,10 +17,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @implNote MaterialBlockItem - */ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public class MaterialPipeBlockItem extends PipeBlockItem implements IItemRendererProvider { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/MetaMachineItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/MetaMachineItem.java index 6e83030b51b..f6ece747ce6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/MetaMachineItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/MetaMachineItem.java @@ -4,32 +4,26 @@ import com.gregtechceu.gtceu.api.block.PipeBlock; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.pipenet.IPipeNode; - -import com.lowdragmc.lowdraglib.client.renderer.IItemRendererProvider; -import com.lowdragmc.lowdraglib.client.renderer.IRenderer; +import com.gregtechceu.gtceu.client.renderer.ItemWithBERModelRenderer; import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.BlockItem; -import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.client.extensions.common.IClientItemExtensions; -import org.jetbrains.annotations.Nullable; +import java.util.function.Consumer; import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/18 - * @implNote MetaMachineItem - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class MetaMachineItem extends BlockItem implements IItemRendererProvider { +public class MetaMachineItem extends BlockItem { public MetaMachineItem(IMachineBlock block, Properties properties) { super(block.self(), properties); @@ -39,12 +33,6 @@ public MachineDefinition getDefinition() { return ((IMachineBlock) getBlock()).getDefinition(); } - @Nullable - @Override - public IRenderer getRenderer(ItemStack stack) { - return ((IMachineBlock) getBlock()).getDefinition().getRenderer(); - } - @Override @SuppressWarnings({ "rawtypes", "unchecked" }) protected boolean placeBlock(BlockPlaceContext context, BlockState state) { @@ -67,4 +55,15 @@ protected boolean placeBlock(BlockPlaceContext context, BlockState state) { } return superVal; } + + @Override + public void initializeClient(Consumer consumer) { + consumer.accept(new IClientItemExtensions() { + + @Override + public BlockEntityWithoutLevelRenderer getCustomRenderer() { + return ItemWithBERModelRenderer.INSTANCE; + } + }); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/PipeBlockItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/PipeBlockItem.java index c03cfb6a6a2..72bf1949d89 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/PipeBlockItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/PipeBlockItem.java @@ -25,11 +25,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/6/23 - * @implNote PipeBlockItem - */ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public class PipeBlockItem extends BlockItem { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/QuantumTankMachineItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/QuantumTankMachineItem.java new file mode 100644 index 00000000000..2f4793b109c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/item/QuantumTankMachineItem.java @@ -0,0 +1,23 @@ +package com.gregtechceu.gtceu.api.item; + +import com.gregtechceu.gtceu.api.block.IMachineBlock; +import com.gregtechceu.gtceu.api.misc.forge.QuantumFluidHandlerItemStack; +import com.gregtechceu.gtceu.common.machine.storage.QuantumTankMachine; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.common.capabilities.ICapabilityProvider; + +import org.jetbrains.annotations.Nullable; + +public class QuantumTankMachineItem extends MetaMachineItem { + + public QuantumTankMachineItem(IMachineBlock block, Properties properties) { + super(block, properties); + } + + @Override + public @Nullable ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundTag nbt) { + return new QuantumFluidHandlerItemStack(stack, QuantumTankMachine.TANK_CAPACITY.getLong(getDefinition())); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/TagPrefixItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/TagPrefixItem.java index cacd62fdb91..7a201d29084 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/TagPrefixItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/TagPrefixItem.java @@ -30,11 +30,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/14 - * @implNote MaterialItem - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class TagPrefixItem extends Item { @@ -56,16 +51,9 @@ public int getBurnTime(ItemStack itemStack, @Nullable RecipeType recipeType) return getItemBurnTime(); } - public void onRegister() {} - @OnlyIn(Dist.CLIENT) - public static ItemColor tintColor() { - return (itemStack, index) -> { - if (itemStack.getItem() instanceof TagPrefixItem tagPrefixItem) { - return tagPrefixItem.material.getLayerARGB(index); - } - return -1; - }; + public static ItemColor tintColor(Material material) { + return (itemStack, index) -> material.getLayerARGB(index); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorComponentItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorComponentItem.java index 5bd2c0b6628..428b2a658df 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorComponentItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorComponentItem.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.item.IComponentItem; import com.gregtechceu.gtceu.api.item.component.*; -import com.gregtechceu.gtceu.api.item.component.forge.IComponentCapability; import com.gregtechceu.gtceu.common.data.GTItems; import net.minecraft.client.model.HumanoidModel; @@ -11,7 +10,6 @@ import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResultHolder; -import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; @@ -22,13 +20,12 @@ import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; import net.minecraftforge.client.extensions.common.IClientItemExtensions; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; import com.google.common.base.Preconditions; import com.google.common.collect.*; import lombok.Getter; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.NotNullByDefault; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; @@ -36,6 +33,7 @@ import java.util.List; import java.util.function.Consumer; +@NotNullByDefault public class ArmorComponentItem extends ArmorItem implements IComponentItem { @Getter @@ -83,15 +81,9 @@ public EquipmentSlot getEquipmentSlot() { @Override public void onArmorTick(ItemStack stack, Level level, Player player) { - super.onArmorTick(stack, level, player); this.armorLogic.onArmorTick(level, player, stack); } - @Override - public int getMaxDamage(ItemStack stack) { - return super.getMaxDamage(stack); - } - @Override public boolean isValidRepairItem(ItemStack stack, ItemStack repairCandidate) { return false; @@ -111,9 +103,28 @@ public int getArmorDisplay(Player player, @NotNull ItemStack armor, EquipmentSlo return armorLogic.getArmorDisplay(player, armor, slot); } - public void damageArmor(LivingEntity entity, @NotNull ItemStack stack, DamageSource source, int damage, - EquipmentSlot slot) { - armorLogic.damageArmor(entity, stack, source, damage, slot); + // Some trickery to always receive damage events without ever actually breaking the armor + @Override + public boolean canBeDepleted() { + return true; + } + + @Override + public void setDamage(ItemStack stack, int damage) {} + + @Override + public boolean isDamaged(ItemStack stack) { + return false; + } + + @Override + public int getMaxDamage(ItemStack stack) { + return Integer.MAX_VALUE; + } + + @Override + public int damageItem(ItemStack stack, int amount, T entity, Consumer onBroken) { + return armorLogic.damageArmor(entity, stack, entity.getLastDamageSource(), amount, this.getEquipmentSlot()); } @Override @@ -132,7 +143,8 @@ public void initializeClient(Consumer consumer) { @Nullable @Override public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) { - return armorLogic.getArmorTexture(stack, entity, slot, type).toString(); + var textureId = armorLogic.getArmorTexture(stack, entity, slot, type); + return textureId == null ? null : textureId.toString(); } /////////////////////////////////////////// @@ -309,19 +321,6 @@ public boolean hasCraftingRemainingItem(ItemStack stack) { return super.hasCraftingRemainingItem(stack); } - @Override - public LazyOptional getCapability(@NotNull final ItemStack itemStack, @NotNull final Capability cap) { - for (IItemComponent component : components) { - if (component instanceof IComponentCapability componentCapability) { - var value = componentCapability.getCapability(itemStack, cap); - if (value.isPresent()) { - return value; - } - } - } - return LazyOptional.empty(); - } - @Override public boolean canWalkOnPowderedSnow(ItemStack stack, LivingEntity wearer) { return stack.is(GTItems.NANO_BOOTS.asItem()) || stack.is(GTItems.QUANTUM_BOOTS.asItem()); diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorLogicSuite.java b/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorLogicSuite.java index bba78688d91..8fdf231f41d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorLogicSuite.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorLogicSuite.java @@ -92,7 +92,12 @@ public void appendHoverText(ItemStack stack, @Nullable Level level, List lines) {} + public void addInfo(ItemStack itemStack, List lines) { + IElectricItem cont = GTCapabilityHelper.getElectricItem(itemStack); + if (cont != null) { + ElectricStats.addCurrentChargeTooltip(lines, cont.getCharge(), cont.getMaxCharge(), cont.getTier(), false); + } + } public InteractionResultHolder onRightClick(Level Level, Player player, InteractionHand hand) { return InteractionResultHolder.pass(player.getItemInHand(hand)); diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorUtils.java b/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorUtils.java index 1fe9fd90a29..1c189a0e068 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorUtils.java @@ -25,12 +25,14 @@ import net.minecraftforge.event.ForgeEventFactory; import com.mojang.datafixers.util.Pair; +import it.unimi.dsi.fastutil.ints.IntArrayList; +import it.unimi.dsi.fastutil.ints.IntIntPair; +import it.unimi.dsi.fastutil.ints.IntList; import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenCustomHashMap; import java.text.DecimalFormat; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import javax.annotation.Nonnull; @@ -60,10 +62,10 @@ public static boolean isPossibleToCharge(ItemStack chargeable) { * @param tier of charger * @return Map of the inventory and a list of the index of a chargable item */ - public static List, List>> getChargeableItem(Player player, int tier) { - List, List>> inventorySlotMap = new ArrayList<>(); + public static List, IntList>> getChargeableItem(Player player, int tier) { + List, IntList>> inventorySlotMap = new ArrayList<>(); - List openMainSlots = new ArrayList<>(); + IntList openMainSlots = new IntArrayList(); for (int i = 0; i < player.getInventory().items.size(); i++) { ItemStack current = player.getInventory().items.get(i); IElectricItem item = GTCapabilityHelper.getElectricItem(current); @@ -78,7 +80,7 @@ public static List, List>> getChargeableIte inventorySlotMap.add(Pair.of(player.getInventory().items, openMainSlots)); } - List openArmorSlots = new ArrayList<>(); + IntList openArmorSlots = new IntArrayList(); for (int i = 0; i < player.getInventory().armor.size(); i++) { ItemStack current = player.getInventory().armor.get(i); IElectricItem item = GTCapabilityHelper.getElectricItem(current); @@ -102,7 +104,7 @@ public static List, List>> getChargeableIte } if (isPossibleToCharge(offHand) && offHandItem.getTier() <= tier) { - inventorySlotMap.add(Pair.of(player.getInventory().offhand, Collections.singletonList(0))); + inventorySlotMap.add(Pair.of(player.getInventory().offhand, new IntArrayList(new int[] { 0 }))); } return inventorySlotMap; @@ -178,7 +180,7 @@ public static List format(List input) { List output = new ArrayList<>(); for (ItemStack itemStack : input) { if (items.containsKey(itemStack)) { - int amount = items.get(itemStack); + int amount = items.getInt(itemStack); items.replace(itemStack, ++amount); } else { items.put(itemStack, 1); @@ -224,14 +226,14 @@ public void newString(Component string) { public void draw(GuiGraphics poseStack) { for (int i = 0; i < stringAmount; i++) { - Pair coords = this.getStringCoord(i); - poseStack.drawString(mc.font, stringList.get(i), coords.getFirst(), coords.getSecond(), 0xFFFFFF, + IntIntPair coords = this.getStringCoord(i); + poseStack.drawString(mc.font, stringList.get(i), coords.firstInt(), coords.secondInt(), 0xFFFFFF, false); } } @Nonnull - private Pair getStringCoord(int index) { + private IntIntPair getStringCoord(int index) { int posX; int posY; int fontHeight = mc.font.lineHeight; @@ -260,7 +262,7 @@ private Pair getStringCoord(int index) { default -> throw new IllegalArgumentException( "Armor Hud config hudLocation is improperly configured. Allowed values: [1,2,3,4]"); } - return Pair.of(posX, posY); + return IntIntPair.of(posX, posY); } public void reset() { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/armor/IArmorLogic.java b/src/main/java/com/gregtechceu/gtceu/api/item/armor/IArmorLogic.java index f449c5227dc..c67bb1ca296 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/armor/IArmorLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/armor/IArmorLogic.java @@ -54,8 +54,10 @@ default boolean isPPE() { return false; } - default void damageArmor(LivingEntity entity, ItemStack itemStack, DamageSource source, int damage, - EquipmentSlot equipmentSlot) {} + default int damageArmor(LivingEntity entity, ItemStack itemStack, DamageSource source, int damage, + EquipmentSlot equipmentSlot) { + return 0; + } default Multimap getAttributeModifiers(EquipmentSlot slot, ItemStack stack) { return ImmutableMultimap.of(); @@ -94,4 +96,8 @@ default HumanoidModel getArmorModel(LivingEntity entityLiving, ItemStack item default float getHeatResistance() { return 1.0f; } + + default void onEquip(Player player) {} + + default void onUnequip(Player player) {} } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/ElectricStats.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/ElectricStats.java index 02a2169efa3..0d79562c552 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/ElectricStats.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/ElectricStats.java @@ -12,8 +12,6 @@ import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.utils.FormattingUtil; -import com.lowdragmc.lowdraglib.utils.LocalizationUtils; - import net.minecraft.ChatFormatting; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.GuiGraphics; @@ -67,11 +65,8 @@ public static ElectricStats create(long maxCharge, int tier, boolean chargeable, @Override public @NotNull LazyOptional getCapability(ItemStack itemStack, @NotNull Capability capability) { - if (capability == GTCapability.CAPABILITY_ELECTRIC_ITEM) { - return GTCapability.CAPABILITY_ELECTRIC_ITEM.orEmpty(capability, - LazyOptional.of(() -> new ElectricItem(itemStack, maxCharge, tier, chargeable, dischargeable))); - } - return LazyOptional.empty(); + return GTCapability.CAPABILITY_ELECTRIC_ITEM.orEmpty(capability, + LazyOptional.of(() -> new ElectricItem(itemStack, maxCharge, tier, chargeable, dischargeable))); } public static float getStoredPredicate(ItemStack itemStack) { @@ -184,14 +179,16 @@ private static void setInDischargeMode(ItemStack itemStack, boolean isDischargeM public void appendHoverText(ItemStack stack, @Nullable Level level, List tooltipComponents, TooltipFlag isAdvanced) { IElectricItem electricItem = GTCapabilityHelper.getElectricItem(stack); - if (electricItem != null && electricItem.canProvideChargeExternally()) { - addCurrentChargeTooltip(tooltipComponents, electricItem.getCharge(), electricItem.getMaxCharge(), - electricItem.getTier()); + if (electricItem == null) return; + addCurrentChargeTooltip(tooltipComponents, electricItem.getCharge(), electricItem.getMaxCharge(), + electricItem.getTier(), electricItem.canProvideChargeExternally()); + if (electricItem.canProvideChargeExternally()) { tooltipComponents.add(Component.translatable("metaitem.electric.discharge_mode.tooltip")); } } - public static void addCurrentChargeTooltip(List tooltip, long currentCharge, long maxCharge, int tier) { + public static void addCurrentChargeTooltip(List tooltip, long currentCharge, long maxCharge, int tier, + boolean showTimeRemaining) { double percentage = (double) currentCharge / (double) maxCharge; Instant start = Instant.now(); @@ -201,40 +198,39 @@ public static void addCurrentChargeTooltip(List tooltip, long current Duration durationMax = Duration.between(start, max); long currentChargeTime; long maxChargeTime; - String unit; - - if (durationCurrent.getSeconds() <= 60) { - maxChargeTime = durationMax.getSeconds(); - currentChargeTime = durationCurrent.toSeconds(); - unit = LocalizationUtils.format("item.gtceu.battery.charge_unit.second"); - } else if (durationCurrent.toMinutes() <= 60) { - maxChargeTime = durationMax.toMinutes(); - currentChargeTime = durationCurrent.toMinutes(); - unit = LocalizationUtils.format("item.gtceu.battery.charge_unit.minute"); - } else { - maxChargeTime = durationMax.toHours(); - currentChargeTime = durationCurrent.toHours(); - unit = LocalizationUtils.format("item.gtceu.battery.charge_unit.hour"); - } + Component unit; + ChatFormatting color = ChatFormatting.RED; if (percentage > 0.5) { - tooltip.add(Component.translatable("item.gtceu.battery.charge_detailed.0", - FormattingUtil.formatNumbers(currentCharge), FormattingUtil.formatNumbers(maxCharge), - GTValues.VNF[tier], - FormattingUtil.formatNumbers(currentChargeTime), FormattingUtil.formatNumbers(maxChargeTime), unit) - .withStyle(ChatFormatting.GREEN)); + color = ChatFormatting.GREEN; } else if (percentage > 0.3) { - tooltip.add(Component.translatable("item.gtceu.battery.charge_detailed.1", + color = ChatFormatting.YELLOW; + } + + if (showTimeRemaining) { + if (durationCurrent.getSeconds() <= 60) { + maxChargeTime = durationMax.getSeconds(); + currentChargeTime = durationCurrent.toSeconds(); + unit = Component.translatable("item.gtceu.battery.charge_unit.second"); + } else if (durationCurrent.toMinutes() <= 60) { + maxChargeTime = durationMax.toMinutes(); + currentChargeTime = durationCurrent.toMinutes(); + unit = Component.translatable("item.gtceu.battery.charge_unit.minute"); + } else { + maxChargeTime = durationMax.toHours(); + currentChargeTime = durationCurrent.toHours(); + unit = Component.translatable("item.gtceu.battery.charge_unit.hour"); + } + tooltip.add(Component.translatable("item.gtceu.battery.charge_detailed", FormattingUtil.formatNumbers(currentCharge), FormattingUtil.formatNumbers(maxCharge), GTValues.VNF[tier], - FormattingUtil.formatNumbers(currentChargeTime), FormattingUtil.formatNumbers(maxChargeTime), unit) - .withStyle(ChatFormatting.YELLOW)); + FormattingUtil.formatNumbers(currentChargeTime), FormattingUtil.formatNumbers(maxChargeTime), + unit) + .withStyle(color)); } else { - tooltip.add(Component.translatable("item.gtceu.battery.charge_detailed.2", + tooltip.add(Component.translatable("metaitem.generic.electric_item.tooltip", FormattingUtil.formatNumbers(currentCharge), FormattingUtil.formatNumbers(maxCharge), - GTValues.VNF[tier], - FormattingUtil.formatNumbers(currentChargeTime), FormattingUtil.formatNumbers(maxChargeTime), unit) - .withStyle(ChatFormatting.RED)); + GTValues.VNF[tier]).withStyle(color)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/FilteredFluidContainer.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/FilteredFluidContainer.java index 80370d5248f..04279911f02 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/FilteredFluidContainer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/FilteredFluidContainer.java @@ -23,35 +23,25 @@ public class FilteredFluidContainer implements IItemComponent, IComponentCapabil public final int capacity; public final boolean allowPartialFill; - @Nullable public Predicate filter; - protected FilteredFluidContainer(int capacity, boolean allowPartialFill, Predicate filter) { + public FilteredFluidContainer(int capacity, boolean allowPartialFill, Predicate filter) { this.allowPartialFill = allowPartialFill; this.capacity = capacity; this.filter = filter; } - public static FilteredFluidContainer create(int capacity, boolean allowPartialFill, Predicate filter) { - return new FilteredFluidContainer(capacity, allowPartialFill, filter); - } - @Override public @NotNull LazyOptional getCapability(ItemStack itemStack, @NotNull Capability cap) { - if (cap == ForgeCapabilities.FLUID_HANDLER_ITEM) { - return ForgeCapabilities.FLUID_HANDLER_ITEM.orEmpty(cap, - LazyOptional.of(() -> new FilteredFluidHandlerItemStack(itemStack, capacity, filter))); - } - return LazyOptional.empty(); + return ForgeCapabilities.FLUID_HANDLER_ITEM.orEmpty(cap, + LazyOptional.of(() -> new FilteredFluidHandlerItemStack(itemStack, capacity, filter))); } @Override public void appendHoverText(ItemStack stack, @Nullable Level level, List tooltipComponents, TooltipFlag isAdvanced) { - if (stack.hasTag()) { - FluidUtil.getFluidContained(stack).ifPresent(tank -> tooltipComponents - .add(Component.translatable("gtceu.universal.tooltip.fluid_stored", tank.getDisplayName(), - tank.getAmount()))); - } + FluidUtil.getFluidContained(stack).ifPresent(fluid -> tooltipComponents + .add(Component.translatable("gtceu.universal.tooltip.fluid_stored", fluid.getDisplayName(), + fluid.getAmount()))); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/FoodStats.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/FoodStats.java index 0bedb592ba2..1accd68cc4c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/FoodStats.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/FoodStats.java @@ -19,9 +19,6 @@ /** * Simple {@link IEdibleItem} implementation. - * - * @author GateGuardian - * @date : 2024/7/22 */ public class FoodStats implements IEdibleItem, IInteractionItem, IAddInformation { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/IAddInformation.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/IAddInformation.java index a51e8d9f6af..24ae38b7004 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/IAddInformation.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/IAddInformation.java @@ -9,11 +9,6 @@ import java.util.List; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote IAddInformation - */ public interface IAddInformation extends IItemComponent { void appendHoverText(ItemStack stack, @Nullable Level level, List tooltipComponents, diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/ICustomDescriptionId.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/ICustomDescriptionId.java index 469387f2211..93146985a38 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/ICustomDescriptionId.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/ICustomDescriptionId.java @@ -5,11 +5,6 @@ import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/2/23 - * @implNote ICustomDescriptionId - */ public interface ICustomDescriptionId extends IItemComponent { @Nullable diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/ICustomRenderer.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/ICustomRenderer.java index ac2372e7c6f..9a295f6e91f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/ICustomRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/ICustomRenderer.java @@ -4,11 +4,6 @@ import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2023/2/24 - * @implNote ICustomRenderer - */ public interface ICustomRenderer extends IItemComponent { @NotNull diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/IDataItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/IDataItem.java index b4c15f8a294..c4778df3637 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/IDataItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/IDataItem.java @@ -3,4 +3,6 @@ public interface IDataItem { boolean requireDataBank(); + + int getCapacity(); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/IDurabilityBar.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/IDurabilityBar.java index ff23fbdad19..0409b821822 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/IDurabilityBar.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/IDurabilityBar.java @@ -7,14 +7,10 @@ import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; +import it.unimi.dsi.fastutil.ints.IntIntPair; import org.apache.commons.lang3.tuple.Pair; import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote IDurabilityBar - */ public interface IDurabilityBar extends IItemDecoratorComponent { default int getBarWidth(ItemStack stack) { @@ -40,7 +36,7 @@ default int getBarColor(ItemStack stack) { /** The first and last colors of a gradient. Default to Green durability gradient (null Pair). */ @Nullable - default Pair getDurabilityColorsForDisplay(ItemStack itemStack) { + default IntIntPair getDurabilityColorsForDisplay(ItemStack itemStack) { return null; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/IInteractionItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/IInteractionItem.java index 39a477ec3a3..442e424c40f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/IInteractionItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/IInteractionItem.java @@ -13,11 +13,6 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote IInteractionItem - */ public interface IInteractionItem extends IItemComponent { default InteractionResult onItemUseFirst(ItemStack itemStack, UseOnContext context) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/IItemComponent.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/IItemComponent.java index 110ce70d44b..fc72345c0b8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/IItemComponent.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/IItemComponent.java @@ -5,13 +5,8 @@ import net.minecraft.world.item.Item; /** - * @author KilaBash - * @date 2023/2/22 - * @implNote IItemComponent - * - * Describes generic component attachable to {@link ComponentItem} - * Multiple components can be attached to one item - * + * Describes generic component attachable to {@link ComponentItem} + * Multiple components can be attached to one item */ public interface IItemComponent { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/IItemLifeCycle.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/IItemLifeCycle.java index 52d40f9addb..c7285c49feb 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/IItemLifeCycle.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/IItemLifeCycle.java @@ -4,11 +4,6 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; -/** - * @author KilaBash - * @date 2023/2/24 - * @implNote IItemLifeCycle - */ public interface IItemLifeCycle extends IItemComponent { void inventoryTick(ItemStack stack, Level level, Entity entity, int slotId, boolean isSelected); diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/IItemUIFactory.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/IItemUIFactory.java index 62353b29daf..33da6b1e1f2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/IItemUIFactory.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/IItemUIFactory.java @@ -11,11 +11,6 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; -/** - * @author KilaBash - * @date 2023/2/23 - * @implNote IItemUIFactory - */ public interface IItemUIFactory extends IInteractionItem { ModularUI createUI(HeldItemUIFactory.HeldItemHolder holder, Player entityPlayer); diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/IMaterialPartItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/IMaterialPartItem.java index 389ef5b3a95..505cec2888c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/IMaterialPartItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/IMaterialPartItem.java @@ -20,11 +20,6 @@ import java.util.List; -/** - * @author KilaBash - * @date 2023/7/10 - * @implNote IMaterialPartItem - */ public interface IMaterialPartItem extends IItemComponent, IDurabilityBar, IAddInformation, ICustomDescriptionId { int getPartMaxDurability(ItemStack itemStack); diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/IMonitorModuleItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/IMonitorModuleItem.java new file mode 100644 index 00000000000..d7c01b2f671 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/IMonitorModuleItem.java @@ -0,0 +1,18 @@ +package com.gregtechceu.gtceu.api.item.component; + +import com.gregtechceu.gtceu.client.renderer.monitor.IMonitorRenderer; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.CentralMonitorMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.monitor.MonitorGroup; + +import com.lowdragmc.lowdraglib.gui.widget.Widget; + +import net.minecraft.world.item.ItemStack; + +public interface IMonitorModuleItem extends IItemComponent { + + default void tick(ItemStack stack, CentralMonitorMachine machine, MonitorGroup group) {} + + IMonitorRenderer getRenderer(ItemStack stack, CentralMonitorMachine machine, MonitorGroup group); + + Widget createUIWidget(ItemStack stack, CentralMonitorMachine machine, MonitorGroup group); +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/IRecipeRemainder.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/IRecipeRemainder.java index e1d09d9c511..28ad807eb42 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/IRecipeRemainder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/IRecipeRemainder.java @@ -2,11 +2,6 @@ import net.minecraft.world.item.ItemStack; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote IRecipeRemainder - */ @FunctionalInterface public interface IRecipeRemainder extends IItemComponent { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/ISubItemHandler.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/ISubItemHandler.java index bc2053730bb..cb83d825586 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/ISubItemHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/ISubItemHandler.java @@ -5,11 +5,6 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -/** - * @author KilaBash - * @date 2023/2/23 - * @implNote ISubItemHandler - */ public interface ISubItemHandler extends IItemComponent { default void fillItemCategory(Item item, CreativeModeTab category, NonNullList items) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/ThermalFluidStats.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/ThermalFluidStats.java index 8f756aa869a..8b997683bfc 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/ThermalFluidStats.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/ThermalFluidStats.java @@ -22,11 +22,6 @@ import java.util.List; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote ThermalFluidStats - */ public class ThermalFluidStats implements IItemComponent, IComponentCapability, IAddInformation { public final int capacity; diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/forge/IComponentCapability.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/forge/IComponentCapability.java index 2cbcb927c69..51f9033d40e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/forge/IComponentCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/forge/IComponentCapability.java @@ -6,11 +6,6 @@ import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2023/3/19 - * @implNote IComponentCapability - */ public interface IComponentCapability { @NotNull LazyOptional getCapability(ItemStack itemStack, @NotNull Capability cap); diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolItem.java index 552ff5ebc18..2c875ae0a8a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolItem.java @@ -36,11 +36,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/23 - * @implNote GTToolItem - */ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public class GTToolItem extends DiggerItem implements IGTTool { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolType.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolType.java index 0df003a3ccb..fe5d8fb541d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolType.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolType.java @@ -33,11 +33,6 @@ import java.util.*; import java.util.function.UnaryOperator; -/** - * @author Screret - * @date 2023/2/23 - * @implNote GTToolType - */ public class GTToolType { @Getter @@ -476,13 +471,13 @@ public class GTToolType { @Nullable public final SoundEntry soundEntry; public final boolean playSoundOnBlockDestroy; - public final Character symbol; + public final char symbol; public final long materialAmount; public final IGTToolDefinition toolDefinition; public final ToolConstructor constructor; public final int electricTier; - public GTToolType(String name, String idFormat, Character symbol, Set toolClasses, + public GTToolType(String name, String idFormat, char symbol, Set toolClasses, IGTToolDefinition toolDefinition, ToolConstructor constructor, List> harvestTags, List> itemTags, ResourceLocation modelLocation, Set toolClassNames, @Nullable SoundEntry soundEntry, boolean playSoundOnBlockDestroy, int electricTier, @@ -545,7 +540,7 @@ public static class Builder { @Setter private int tier = -1; @Setter - private Character symbol = null; + private char symbol = ' '; @Setter private ToolConstructor constructor = GTToolItem::create; @Setter @@ -625,7 +620,7 @@ public GTToolType build() { if (toolClassNames.isEmpty()) { toolClassNames.add(name); } - if (this.symbol == null) { + if (this.symbol == ' ') { return get(); } GTToolType existing = ToolHelper.getToolFromSymbol(this.symbol); diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/IGTToolDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/IGTToolDefinition.java index 1c55f4a01cb..bd1f7663ec5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/IGTToolDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/IGTToolDefinition.java @@ -83,7 +83,7 @@ default float getAttackSpeed(ItemStack stack) { } default AoESymmetrical getAoEDefinition(ItemStack stack) { - return AoESymmetrical.none(); + return AoESymmetrical.ZERO; } /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/IToolGridHighlight.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/IToolGridHighlight.java index ff480f05515..a79ccf07b39 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/IToolGridHighlight.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/IToolGridHighlight.java @@ -12,10 +12,6 @@ import java.util.Set; -/** - * @author KilaBash - * @date 2023/3/2 - */ public interface IToolGridHighlight { default boolean shouldRenderGrid(Player player, BlockPos pos, BlockState state, ItemStack held, @@ -23,9 +19,8 @@ default boolean shouldRenderGrid(Player player, BlockPos pos, BlockState state, return true; } - @Nullable - default ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + default @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { return null; } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/MaterialToolTier.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/MaterialToolTier.java index a25c0b3aa92..87a5531a673 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/MaterialToolTier.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/MaterialToolTier.java @@ -13,11 +13,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/2/23 - * @implNote MaterialTier - */ public class MaterialToolTier implements Tier { public final Material material; diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolDefinitionBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolDefinitionBuilder.java index 0378bb645ce..9dff082b2bd 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolDefinitionBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolDefinitionBuilder.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.api.item.tool.aoe.AoESymmetrical; import com.gregtechceu.gtceu.api.item.tool.behavior.IToolBehavior; +import com.gregtechceu.gtceu.config.ConfigHolder; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.Enchantment; @@ -57,7 +58,7 @@ public class ToolDefinitionBuilder { @Setter private Supplier brokenStack = () -> ItemStack.EMPTY; @Setter - private AoESymmetrical aoe = AoESymmetrical.none(); + private AoESymmetrical aoe = AoESymmetrical.ZERO; private final Set effectiveBlocks = new ObjectOpenHashSet<>(); private Predicate effectiveStates; private final Object2IntMap defaultEnchantments = new Object2IntArrayMap<>(); @@ -140,11 +141,10 @@ public ToolDefinitionBuilder effectiveStates(Predicate effectiveStat } public ToolDefinitionBuilder defaultEnchantment(Enchantment enchantment, int level) { - return this.defaultEnchantment(enchantment, level, 0); - } + if (ConfigHolder.INSTANCE.recipes.enchantedTools) { + this.defaultEnchantments.put(enchantment, level); + } - public ToolDefinitionBuilder defaultEnchantment(Enchantment enchantment, int level, int growth) { - this.defaultEnchantments.put(enchantment, level); return this; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java index d5350d5f96b..03fe648f7b6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java @@ -38,9 +38,11 @@ import net.minecraft.stats.Stats; import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Tier; import net.minecraft.world.item.Tiers; @@ -48,6 +50,7 @@ import net.minecraft.world.item.enchantment.DigDurabilityEnchantment; import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.item.enchantment.Enchantments; +import net.minecraft.world.level.ClipContext; import net.minecraft.world.level.GameType; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.*; @@ -56,7 +59,6 @@ import net.minecraft.world.level.storage.loot.LootParams; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.Vec3; import net.minecraftforge.common.ForgeHooks; import net.minecraftforge.common.IForgeShearable; @@ -67,19 +69,15 @@ import it.unimi.dsi.fastutil.chars.Char2ReferenceOpenHashMap; import it.unimi.dsi.fastutil.chars.CharSet; import it.unimi.dsi.fastutil.chars.CharSets; -import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; +import it.unimi.dsi.fastutil.objects.Object2IntMaps; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.UnmodifiableView; import java.util.*; +import java.util.function.Predicate; import java.util.function.Supplier; -/** - * @author KilaBash - * @date 2023/2/23 - * @implNote ToolHelper - */ public class ToolHelper { public static final String TOOL_TAG_KEY = "GT.Tool"; @@ -176,6 +174,16 @@ public static ItemStack get(GTToolType toolType, Material material) { return ItemStack.EMPTY; } + public static ItemStack getArmor(ArmorItem.Type armorType, Material material) { + if (material.hasProperty(PropertyKey.ARMOR)) { + var entry = GTMaterialItems.ARMOR_ITEMS.get(material, armorType); + if (entry != null) { + return entry.get().getDefaultInstance(); + } + } + return ItemStack.EMPTY; + } + public static boolean is(ItemStack stack, GTToolType toolType) { return getToolTypes(stack).contains(toolType); } @@ -246,9 +254,9 @@ public static void playToolSound(GTToolType toolType, ServerPlayer player) { public static ItemStack getAndSetToolData(GTToolType toolType, Material material, int maxDurability, int harvestLevel, float toolSpeed, float attackDamage) { - var entry = GTMaterialItems.TOOL_ITEMS.get(material, toolType); - if (entry == null) return ItemStack.EMPTY; - ItemStack stack = entry.get().getRaw(); + var tool = GTMaterialItems.TOOL_ITEMS.get(material, toolType); + if (tool == null) return ItemStack.EMPTY; + ItemStack stack = tool.get().getRaw(); stack.getOrCreateTag().putInt(HIDE_FLAGS, 2); CompoundTag toolTag = getToolTag(stack); toolTag.putInt(MAX_DURABILITY_KEY, maxDurability); @@ -257,11 +265,12 @@ public static ItemStack getAndSetToolData(GTToolType toolType, Material material toolTag.putFloat(ATTACK_DAMAGE_KEY, attackDamage); ToolProperty toolProperty = material.getProperty(PropertyKey.TOOL); if (toolProperty != null) { - toolProperty.getEnchantments().forEach((enchantment, level) -> { - if (entry.get().definition$canApplyAtEnchantingTable(stack, enchantment)) { - stack.enchant(enchantment, level); + for (var entry : Object2IntMaps.fastIterable(toolProperty.getEnchantments())) { + var enchantment = entry.getKey(); + if (tool.get().definition$canApplyAtEnchantingTable(stack, enchantment)) { + stack.enchant(enchantment, entry.getIntValue()); } - }); + } } return stack; } @@ -269,15 +278,14 @@ public static ItemStack getAndSetToolData(GTToolType toolType, Material material /** * AoE Block Breaking Routine. */ - public static boolean areaOfEffectBlockBreakRoutine(ItemStack stack, ServerPlayer player) { + public static boolean areaOfEffectBlockBreakRoutine(ItemStack stack, ServerPlayer player, BlockPos targeted) { int currentDurability = stack.getDamageValue(); int maximumDurability = stack.getMaxDamage(); int remainingUses = maximumDurability - currentDurability; - Set harvestableBlocks = getHarvestableBlocks(stack, player); + var harvestableBlocks = getHarvestableBlocks(stack, player); if (!harvestableBlocks.isEmpty()) { - int blocksBroken = 0; for (BlockPos pos : harvestableBlocks) { - if (!breakBlockRoutine(player, stack, pos, blocksBroken++ == 0)) { + if (!breakBlockRoutine(player, stack, pos, pos == targeted)) { return true; } @@ -295,12 +303,6 @@ else if (!ItemStack.isSameItem(player.getMainHandItem(), stack)) { return false; } - @FunctionalInterface - public interface AOEFunction { - - boolean apply(ItemStack stack, Level level, Player player, BlockPos start, UseOnContext context); - } - public static AoESymmetrical getMaxAoEDefinition(ItemStack stack) { return AoESymmetrical.readMax(getBehaviorsTag(stack)); } @@ -309,80 +311,69 @@ public static AoESymmetrical getAoEDefinition(ItemStack stack) { return AoESymmetrical.read(getBehaviorsTag(stack), getMaxAoEDefinition(stack)); } - public static Set iterateAoE(ItemStack stack, AoESymmetrical aoeDefinition, Level world, - Player player, HitResult rayTraceResult, - AOEFunction function) { - if (aoeDefinition != AoESymmetrical.none() && rayTraceResult instanceof BlockHitResult blockHit && - blockHit.getDirection() != null) { - int column = aoeDefinition.column; - int row = aoeDefinition.row; - int layer = aoeDefinition.layer; - Direction playerFacing = player.getDirection(); - Direction.Axis playerAxis = playerFacing.getAxis(); - Direction.Axis sideHitAxis = blockHit.getDirection().getAxis(); - Direction.AxisDirection sideHitAxisDir = blockHit.getDirection().getAxisDirection(); - Set validPositions = new ObjectOpenHashSet<>(); - if (sideHitAxis.isVertical()) { - boolean isX = playerAxis == Direction.Axis.X; - boolean isDown = sideHitAxisDir == Direction.AxisDirection.NEGATIVE; - for (int y = 0; y <= layer; y++) { - for (int x = isX ? -row : -column; x <= (isX ? row : column); x++) { - for (int z = isX ? -column : -row; z <= (isX ? column : row); z++) { - if (!(x == 0 && y == 0 && z == 0)) { - BlockPos pos = blockHit.getBlockPos().offset(x, isDown ? y : -y, z); - if (player.mayUseItemAt(pos.relative(blockHit.getDirection()), blockHit.getDirection(), - stack)) { - if (function.apply(stack, world, player, pos, new UseOnContext(player.level(), - player, player.getUsedItemHand(), stack, blockHit))) { - validPositions.add(pos); - } - } - } - } + public static List iterateAoE(AoESymmetrical aoeDefinition, Predicate predicate, + UseOnContext context) { + Level level = context.getLevel(); + Player player = context.getPlayer(); + Direction hitFace = context.getClickedFace(); + ItemStack stack = context.getItemInHand(); + Direction playerFacing = player != null ? player.getDirection() : Direction.NORTH; + + Direction depthDirection = hitFace.getOpposite(); + Direction topDirection = Direction.UP; + Direction sideDirection = hitFace; + // Special case for any additional row > 1: https://i.imgur.com/Dvcx7Vg.png + // Same behaviour as the Flux Bore + int aoeRowStart = aoeDefinition.row == 0 ? 0 : -1; + int aoeRowEnd = aoeDefinition.row == 0 ? 0 : aoeDefinition.row * 2 - 1; + + if (hitFace.getAxis().isVertical()) { + topDirection = playerFacing; + sideDirection = playerFacing; + aoeRowStart = -aoeDefinition.row; + aoeRowEnd = aoeDefinition.row; + } + sideDirection = sideDirection.getClockWise(); + + List validPositions = new ArrayList<>(); + for (int depth = 0; depth <= aoeDefinition.layer; depth++) { + for (int top = aoeRowEnd; top >= aoeRowStart; top--) { + for (int side = -aoeDefinition.column; side <= aoeDefinition.column; side++) { + var pos = context.getClickedPos() + .relative(depthDirection, depth) + .relative(topDirection, top) + .relative(sideDirection, side); + if (player != null && !player.mayUseItemAt(pos.relative(hitFace), hitFace, stack)) { + continue; } - } - } else { - boolean isX = sideHitAxis == Direction.Axis.X; - boolean isNegative = sideHitAxisDir == Direction.AxisDirection.NEGATIVE; - for (int x = 0; x <= layer; x++) { - // Special case for any additional column > 1: https://i.imgur.com/Dvcx7Vg.png - // Same behaviour as the Flux Bore - for (int y = (row == 0 ? 0 : -1); y <= (row == 0 ? 0 : row * 2 - 1); y++) { - for (int z = -column; z <= column; z++) { - if (!(x == 0 && y == 0 && z == 0)) { - BlockPos pos = blockHit.getBlockPos().offset( - isX ? (isNegative ? x : -x) : (isNegative ? z : -z), y, - isX ? (isNegative ? z : -z) : (isNegative ? x : -x)); - if (function.apply(stack, world, player, pos, new UseOnContext(player.level(), player, - player.getUsedItemHand(), stack, blockHit))) { - validPositions.add(pos); - } - } - } + UseOnContext posContext = new UseOnContext(level, player, context.getHand(), stack, + context.getHitResult().withPosition(pos)); + if (predicate.test(posContext)) { + validPositions.add(pos); } } } - return validPositions; } - return Collections.emptySet(); + return validPositions; } - public static Set getHarvestableBlocks(ItemStack stack, AoESymmetrical aoeDefinition, Level world, - Player player, HitResult rayTraceResult) { - return iterateAoE(stack, aoeDefinition, world, player, rayTraceResult, ToolHelper::isBlockAoEHarvestable); + public static List getHarvestableBlocks(AoESymmetrical aoeDefinition, UseOnContext context) { + return iterateAoE(aoeDefinition, ToolHelper::isBlockAoEHarvestable, context); } - private static boolean isBlockAoEHarvestable(ItemStack stack, Level world, Player player, BlockPos pos, - UseOnContext context) { - if (world.getBlockState(pos).isAir()) return false; + private static boolean isBlockAoEHarvestable(UseOnContext context) { + Level level = context.getLevel(); + ItemStack stack = context.getItemInHand(); + BlockPos pos = context.getClickedPos(); + if (level.getBlockState(pos).isAir()) return false; - BlockState state = world.getBlockState(pos); + BlockState state = level.getBlockState(pos); if (state.getBlock() instanceof LiquidBlock) return false; BlockPos hitBlockPos = context.getClickedPos(); - BlockState hitBlockState = world.getBlockState(hitBlockPos); - if (state.getDestroySpeed(world, pos) < 0 || - state.getDestroySpeed(world, pos) - hitBlockState.getDestroySpeed(world, hitBlockPos) > 8) { + BlockState hitBlockState = level.getBlockState(hitBlockPos); + if (state.getDestroySpeed(level, pos) < 0 || + state.getDestroySpeed(level, pos) - hitBlockState.getDestroySpeed(level, hitBlockPos) > 8) { // If mining a block takes significantly longer than the center block, do not mine it. // Originally this was just a check for if it is at all harder of a block, however that // would cause some annoyances, like Grass Block not being broken if a Dirt Block was the @@ -399,10 +390,8 @@ private static boolean isBlockAoEHarvestable(ItemStack stack, Level world, Playe public static void applyHammerDropConversion(ServerLevel world, BlockPos pos, ItemStack tool, BlockState state, List drops, int fortune, float dropChance, RandomSource random) { - if (is(tool, GTToolType.HARD_HAMMER) || /* - * EnchantmentHelper.getEnchantmentLevel(EnchantmentHardHammer.INSTANCE, - * tool) - */ -1 > 0) { + // EnchantmentHelper.getEnchantmentLevel(EnchantmentHardHammer.INSTANCE, tool) + if (is(tool, GTToolType.HARD_HAMMER)) { List silktouchDrops = getSilkTouchDrop(world, pos, state); for (ItemStack silktouchDrop : silktouchDrops) { if (silktouchDrop.isEmpty()) continue; @@ -530,8 +519,7 @@ public static boolean removeBlockRoutine(@Nullable BlockState state, Level world boolean successful = world.removeBlock(pos, false); - if (playSound) - world.levelEvent(LevelEvent.PARTICLES_DESTROY_BLOCK, pos, Block.getId(state)); + if (playSound) world.levelEvent(LevelEvent.PARTICLES_DESTROY_BLOCK, pos, Block.getId(state)); if (successful) { state.getBlock().destroy(world, pos, state); @@ -539,25 +527,31 @@ public static boolean removeBlockRoutine(@Nullable BlockState state, Level world return successful; } - public static Set getHarvestableBlocks(ItemStack stack, Level world, Player player, - HitResult rayTraceResult) { - return getHarvestableBlocks(stack, getAoEDefinition(stack), world, player, rayTraceResult); - } - - public static Set getHarvestableBlocks(ItemStack stack, Player player) { - if (!hasBehaviorsTag(stack)) return Collections.emptySet(); + public static List getHarvestableBlocks(ItemStack stack, Player player) { + if (!hasBehaviorsTag(stack)) return List.of(); - AoESymmetrical aoeDefiniton = getAoEDefinition(stack); - if (aoeDefiniton == AoESymmetrical.none()) { - return Collections.emptySet(); + var aoeDefinition = getAoEDefinition(stack); + if (aoeDefinition.isZero()) { + return List.of(); } - HitResult rayTraceResult = getPlayerDefaultRaytrace(player); - return getHarvestableBlocks(stack, aoeDefiniton, player.level(), player, rayTraceResult); + BlockHitResult hitResult = getPlayerDefaultRaytrace(player); + UseOnContext context = new UseOnContext(player, player.getUsedItemHand(), hitResult); + return getHarvestableBlocks(aoeDefinition, context); + } + + public static BlockHitResult getPlayerDefaultRaytrace(@NotNull Player player) { + return entityPickBlock(player, getPlayerBlockReach(player), 1.0f, false); } - public static HitResult getPlayerDefaultRaytrace(@NotNull Player player) { - return player.pick(getPlayerBlockReach(player), 1.0f, false); + public static BlockHitResult entityPickBlock(Entity entity, double hitDistance, float partialTicks, + boolean hitFluids) { + Vec3 eyePos = entity.getEyePosition(partialTicks); + Vec3 lookVec = entity.getViewVector(partialTicks); + Vec3 maxDistance = eyePos.add(lookVec.x * hitDistance, lookVec.y * hitDistance, lookVec.z * hitDistance); + ClipContext context = new ClipContext(eyePos, maxDistance, ClipContext.Block.OUTLINE, + hitFluids ? ClipContext.Fluid.ANY : ClipContext.Fluid.NONE, entity); + return entity.level().clip(context); } /** @@ -565,19 +559,18 @@ public static HitResult getPlayerDefaultRaytrace(@NotNull Player player) { * Damages the item, plays the tool sound (if available), and swings the player's arm. * * @param player the player clicking the item - * @param world the world in which the click happened - * @param hand the hand holding the item + * @param stack the item that was used + * @param level the level in which the click happened + * @param pos the position that was clicked */ - public static void onActionDone(@NotNull Player player, @NotNull Level world, @NotNull InteractionHand hand) { - ItemStack stack = player.getItemInHand(hand); + public static void onActionDone(@Nullable Player player, @NotNull ItemStack stack, + @NotNull Level level, @NotNull Vec3 pos) { IGTTool tool = (IGTTool) stack.getItem(); ToolHelper.damageItem(stack, player); if (tool.getSound() != null) { - world.playSound(null, player.getX(), player.getY(), player.getZ(), tool.getSound().getMainEvent(), - SoundSource.PLAYERS, 1.0F, - 1.0F); + level.playSound(player, pos.x, pos.y, pos.z, tool.getSound().getMainEvent(), + SoundSource.PLAYERS, 1.0F, 1.0F); } - player.swing(hand); } @NotNull diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/aoe/AoESymmetrical.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/aoe/AoESymmetrical.java index 3ed0412da96..b64a3cf5138 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/aoe/AoESymmetrical.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/aoe/AoESymmetrical.java @@ -24,17 +24,17 @@ private AoESymmetrical(int column, int row, int layer) { this.layer = layer; } - private static final AoESymmetrical NONE = new AoESymmetrical(); + public static final AoESymmetrical ZERO = new AoESymmetrical(); - public static AoESymmetrical none() { - return NONE; + public boolean isZero() { + return this == ZERO; } public static AoESymmetrical of(int column, int row, int layer) { Preconditions.checkArgument(column >= 0, "Height cannot be negative."); Preconditions.checkArgument(row >= 0, "Width cannot be negative."); Preconditions.checkArgument(layer >= 0, "Depth cannot be negative."); - return column == 0 && row == 0 && layer == 0 ? NONE : new AoESymmetrical(column, row, layer); + return column == 0 && row == 0 && layer == 0 ? ZERO : new AoESymmetrical(column, row, layer); } public static AoESymmetrical readMax(CompoundTag tag) { @@ -48,7 +48,7 @@ public static AoESymmetrical readMax(CompoundTag tag) { if (tag.contains(ToolHelper.MAX_AOE_LAYER_KEY, Tag.TAG_INT)) { layer = tag.getInt(ToolHelper.MAX_AOE_LAYER_KEY); } - return column == 0 && row == 0 && layer == 0 ? NONE : AoESymmetrical.of(column, row, layer); + return column == 0 && row == 0 && layer == 0 ? ZERO : AoESymmetrical.of(column, row, layer); } public static AoESymmetrical read(CompoundTag tag, @Nullable AoESymmetrical defaultDefinition) { @@ -69,7 +69,7 @@ public static AoESymmetrical read(CompoundTag tag, @Nullable AoESymmetrical defa layer = defaultDefinition == null ? 0 : defaultDefinition.layer; } if (column == 0 && row == 0 && layer == 0) { - return NONE; + return ZERO; } tag.putInt(ToolHelper.AOE_COLUMN_KEY, column); tag.putInt(ToolHelper.AOE_ROW_KEY, row); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/ConditionalSubscriptionHandler.java b/src/main/java/com/gregtechceu/gtceu/api/machine/ConditionalSubscriptionHandler.java index d07933d1731..cc65f0d1002 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/ConditionalSubscriptionHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/ConditionalSubscriptionHandler.java @@ -8,7 +8,7 @@ import net.minecraft.util.thread.BlockableEventLoop; import net.minecraft.world.level.Level; -import java.util.function.Supplier; +import java.util.function.BooleanSupplier; /** * Handles a subscription that is only active in specific conditions. @@ -20,11 +20,11 @@ public class ConditionalSubscriptionHandler { private final ITickSubscription handler; private final Runnable runnable; - private final Supplier condition; + private final BooleanSupplier condition; private TickableSubscription subscription; - public ConditionalSubscriptionHandler(ITickSubscription handler, Runnable runnable, Supplier condition) { + public ConditionalSubscriptionHandler(ITickSubscription handler, Runnable runnable, BooleanSupplier condition) { this.handler = handler; this.runnable = runnable; this.condition = condition; @@ -54,7 +54,7 @@ protected void initialize(BlockableEventLoop server) { * Updates the subscription according to whether it should currently be active. */ public void updateSubscription() { - if (condition.get()) { + if (condition.getAsBoolean()) { subscription = handler.subscribeServerTick(subscription, runnable); } else if (subscription != null) { subscription.unsubscribe(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java index 0d6520b94c1..df3ff0930d0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java @@ -2,7 +2,9 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.IMachineBlock; +import com.gregtechceu.gtceu.api.blockentity.IPaintable; import com.gregtechceu.gtceu.api.item.tool.IToolGridHighlight; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.lowdragmc.lowdraglib.syncdata.blockentity.IAsyncAutoSyncBlockEntity; import com.lowdragmc.lowdraglib.syncdata.blockentity.IAutoPersistBlockEntity; @@ -11,8 +13,15 @@ import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraftforge.client.model.data.ModelData; +import net.minecraftforge.client.model.data.ModelProperty; +import net.minecraftforge.common.extensions.IForgeBlockEntity; + +import org.jetbrains.annotations.NotNull; /** * A simple compound Interface for all my TileEntities. @@ -20,7 +29,10 @@ * Also delivers most of the Information about TileEntities. */ public interface IMachineBlockEntity extends IToolGridHighlight, IAsyncAutoSyncBlockEntity, IRPCBlockEntity, - IAutoPersistBlockEntity { + IAutoPersistBlockEntity, IPaintable, IForgeBlockEntity { + + ModelProperty MODEL_DATA_LEVEL = new ModelProperty<>(); + ModelProperty MODEL_DATA_POS = new ModelProperty<>(); default BlockEntity self() { return (BlockEntity) this; @@ -45,13 +57,21 @@ default void scheduleRenderUpdate() { if (level() != null) { var state = level().getBlockState(pos); if (level().isClientSide) { - level().sendBlockUpdated(pos, state, state, 1 << 3); + level().sendBlockUpdated(pos, state, state, Block.UPDATE_IMMEDIATE); + self().requestModelDataUpdate(); } else { level().blockEvent(pos, state.getBlock(), 1, 0); } } } + @Override + default @NotNull ModelData getModelData() { + ModelData.Builder data = IForgeBlockEntity.super.getModelData().derive(); + getMetaMachine().updateModelData(data); + return data.build(); + } + default long getOffsetTimer() { if (level() == null) return getOffset(); else if (level().isClientSide()) return GTValues.CLIENT_TIME + getOffset(); @@ -70,6 +90,10 @@ default MachineDefinition getDefinition() { } } + MachineRenderState getRenderState(); + + void setRenderState(MachineRenderState state); + MetaMachine getMetaMachine(); long getOffset(); @@ -87,4 +111,19 @@ default void loadCustomPersistedData(CompoundTag tag) { IAutoPersistBlockEntity.super.loadCustomPersistedData(tag); getMetaMachine().loadCustomPersistedData(tag); } + + @Override + default int getPaintingColor() { + return getMetaMachine().getPaintingColor(); + } + + @Override + default void setPaintingColor(int color) { + getMetaMachine().setPaintingColor(color); + } + + @Override + default int getDefaultPaintingColor() { + return getMetaMachine().getDefaultPaintingColor(); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineCoverContainer.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineCoverContainer.java index 12d216c0ef8..9a122721d41 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineCoverContainer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineCoverContainer.java @@ -30,16 +30,12 @@ import java.util.ArrayList; -/** - * @author KilaBash - * @date 2023/2/18 - * @implNote MachineCoverContainer - */ public class MachineCoverContainer implements ICoverable, IEnhancedManaged { public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(MachineCoverContainer.class); @Getter private final FieldManagedStorage syncStorage = new FieldManagedStorage(this); + @Getter private final MetaMachine machine; @DescSynced @Persisted diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java index aa8472236dc..fa7c66cc068 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java @@ -2,17 +2,19 @@ import com.gregtechceu.gtceu.api.block.IMachineBlock; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; +import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.gui.editor.EditableMachineUI; import com.gregtechceu.gtceu.api.item.MetaMachineItem; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifier; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; -import com.lowdragmc.lowdraglib.client.renderer.IRenderer; import com.lowdragmc.lowdraglib.utils.ShapeUtils; import net.minecraft.core.Direction; +import net.minecraft.core.IdMapper; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; @@ -20,6 +22,7 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; @@ -27,6 +30,8 @@ import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import lombok.Getter; import lombok.Setter; +import lombok.experimental.Accessors; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -36,13 +41,12 @@ import java.util.function.*; /** - * @author KilaBash - * @date 2023/2/18 - * @implNote MachineDefinition - * Representing basic information of a machine. + * Representing basic information of a machine. */ public class MachineDefinition implements Supplier { + public static final IdMapper RENDER_STATE_REGISTRY = new IdMapper<>(512); + @Getter private final ResourceLocation id; // This is only stored here for KJS use. @@ -59,8 +63,7 @@ public class MachineDefinition implements Supplier { private Function machineSupplier; @Getter @Setter - @Nullable - private GTRecipeType[] recipeTypes; + private @NotNull GTRecipeType @NotNull [] recipeTypes; @Getter @Setter private int tier; @@ -99,7 +102,7 @@ public class MachineDefinition implements Supplier { @Getter @Setter - private IRenderer renderer; + private RotationState rotationState; @Setter private VoxelShape shape; @Getter @@ -115,6 +118,9 @@ public class MachineDefinition implements Supplier { @Getter @Setter private Supplier appearance; + @Getter + @Setter + private boolean allowCoverOnFront; @Nullable @Getter @Setter @@ -123,12 +129,19 @@ public class MachineDefinition implements Supplier { @Setter private Object2IntMap> recipeOutputLimits = new Object2IntOpenHashMap<>(); - protected MachineDefinition(ResourceLocation id) { + @Getter + @Setter(onMethod_ = @ApiStatus.Internal) + private StateDefinition stateDefinition; + @Accessors(fluent = true) + @Getter + private MachineRenderState defaultRenderState; + + public MachineDefinition(ResourceLocation id) { this.id = id; } - public static MachineDefinition createDefinition(ResourceLocation id) { - return new MachineDefinition(id); + public final void registerDefaultState(MachineRenderState state) { + this.defaultRenderState = state; } public Block getBlock() { @@ -171,7 +184,7 @@ public String getName() { @Override public String toString() { - return "[Definition: %s]".formatted(id); + return id.toString(); } public String getDescriptionId() { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index 5002c37d237..c095f03c379 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -1,10 +1,9 @@ package com.gregtechceu.gtceu.api.machine; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.block.BlockProperties; import com.gregtechceu.gtceu.api.block.IAppearance; -import com.gregtechceu.gtceu.api.block.IMachineBlock; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; import com.gregtechceu.gtceu.api.blockentity.IPaintable; import com.gregtechceu.gtceu.api.blockentity.ITickSubscription; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; @@ -20,11 +19,14 @@ import com.gregtechceu.gtceu.api.item.tool.IToolGridHighlight; import com.gregtechceu.gtceu.api.machine.feature.*; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.MachineTrait; import com.gregtechceu.gtceu.api.misc.IOFilteredInvWrapper; import com.gregtechceu.gtceu.api.misc.IOFluidHandlerList; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; +import com.gregtechceu.gtceu.client.util.ModelUtils; import com.gregtechceu.gtceu.common.cover.FluidFilterCover; import com.gregtechceu.gtceu.common.cover.ItemFilterCover; import com.gregtechceu.gtceu.common.item.tool.behavior.ToolModeSwitchBehavior; @@ -40,15 +42,14 @@ import com.lowdragmc.lowdraglib.syncdata.field.FieldManagedStorage; import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; import com.lowdragmc.lowdraglib.utils.DummyWorld; -import com.lowdragmc.lowdraglib.utils.LocalizationUtils; +import net.minecraft.ChatFormatting; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.locale.Language; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.server.TickTask; -import net.minecraft.server.level.ServerLevel; import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -65,6 +66,7 @@ import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.data.ModelData; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.items.IItemHandlerModifiable; @@ -72,10 +74,12 @@ import com.mojang.datafixers.util.Pair; import lombok.Getter; import lombok.Setter; +import org.jetbrains.annotations.MustBeInvokedByOverriders; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.*; +import java.util.function.Consumer; import java.util.function.Predicate; import javax.annotation.ParametersAreNonnullByDefault; @@ -83,14 +87,11 @@ import static com.gregtechceu.gtceu.api.item.tool.ToolHelper.getBehaviorsTag; /** - * @author KilaBash - * @date 2023/2/17 - * @implNote MetaMachine, an abstract layer of gregtech machine. - * Because I have to implement BlockEntities for both fabric and forge platform. - * All fundamental features will be implemented here. - * To add additional features, you can see {@link IMachineFeature} + * an abstract layer of gregtech machine. + * Because I have to implement BlockEntities for both fabric and forge platform. + * All fundamental features will be implemented here. + * To add additional features, you can see {@link IMachineFeature} */ -@SuppressWarnings("removal") @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class MetaMachine implements IEnhancedManaged, IToolable, ITickSubscription, IAppearance, IToolGridHighlight, @@ -112,7 +113,6 @@ public class MetaMachine implements IEnhancedManaged, IToolable, ITickSubscripti @Persisted(key = "cover") protected final MachineCoverContainer coverContainer; @Getter - @Setter @Persisted @DescSynced @RequireRerender @@ -171,6 +171,7 @@ public void notifyBlockUpdate() { holder.notifyBlockUpdate(); } + @Override public void scheduleRenderUpdate() { holder.scheduleRenderUpdate(); } @@ -185,6 +186,20 @@ public void scheduleNeighborShapeUpdate() { level.getBlockState(pos).updateNeighbourShapes(level, pos, Block.UPDATE_ALL); } + public void setPaintingColor(int color) { + if (color == this.paintingColor) return; + + this.paintingColor = color; + this.onPaintingColorChanged(color); + + MachineRenderState renderState = getRenderState(); + if (renderState.hasProperty(GTMachineModelProperties.IS_PAINTED)) { + setRenderState(renderState.setValue(GTMachineModelProperties.IS_PAINTED, this.isPainted())); + } + } + + public void onPaintingColorChanged(int color) {} + public long getOffsetTimer() { return holder.getOffsetTimer(); } @@ -209,6 +224,13 @@ public void onUnload() { public void onLoad() { traits.forEach(MachineTrait::onMachineLoad); coverContainer.onLoad(); + + // update the painted model property if the machine is painted + MachineRenderState renderState = getRenderState(); + if (renderState.hasProperty(GTMachineModelProperties.IS_PAINTED) && + this.isPainted() != renderState.getValue(GTMachineModelProperties.IS_PAINTED)) { + setRenderState(renderState.setValue(GTMachineModelProperties.IS_PAINTED, this.isPainted())); + } } /** @@ -242,19 +264,6 @@ public TickableSubscription subscribeServerTick(Runnable runnable) { if (!isRemote()) { var subscription = new TickableSubscription(runnable); waitingToAdd.add(subscription); - var blockState = getBlockState(); - if (!blockState.getValue(BlockProperties.SERVER_TICK)) { - if (getLevel() instanceof ServerLevel serverLevel) { - blockState = blockState.setValue(BlockProperties.SERVER_TICK, true); - holder.getSelf().setBlockState(blockState); - serverLevel.getServer().tell(new TickTask(0, () -> { - if (!isInValid()) { - serverLevel.setBlockAndUpdate(getPos(), - getBlockState().setValue(BlockProperties.SERVER_TICK, true)); - } - })); - } - } return subscription; } else if (getLevel() instanceof DummyWorld) { var subscription = new TickableSubscription(runnable); @@ -272,9 +281,6 @@ public void unsubscribe(@Nullable TickableSubscription current) { public final void serverTick() { executeTick(); - if (serverTicks.isEmpty() && waitingToAdd.isEmpty() && !isInValid()) { - getLevel().setBlockAndUpdate(getPos(), getBlockState().setValue(BlockProperties.SERVER_TICK, false)); - } } public boolean isFirstDummyWorldTick = true; @@ -295,8 +301,8 @@ private void executeTick() { serverTicks.addAll(waitingToAdd); waitingToAdd.clear(); } - var iter = serverTicks.iterator(); - while (iter.hasNext()) { + + for (var iter = serverTicks.iterator(); iter.hasNext();) { var tickable = iter.next(); if (tickable.isStillSubscribed()) { tickable.run(); @@ -369,8 +375,7 @@ protected InteractionResult onHardHammerClick(Player playerIn, InteractionHand h playerIn.sendSystemMessage(Component.translatable(mufflableMachine.isMuffled() ? "gtceu.machine.muffle.on" : "gtceu.machine.muffle.off")); } - playerIn.swing(hand); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } return InteractionResult.PASS; } @@ -385,73 +390,52 @@ protected InteractionResult onWrenchClick(Player playerIn, InteractionHand hand, if (gridSide == getFrontFacing() && allowExtendedFacing()) { setUpwardsFacing(playerIn.isShiftKeyDown() ? getUpwardsFacing().getCounterClockWise() : getUpwardsFacing().getClockWise()); - playerIn.swing(hand); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(isRemote()); } if (playerIn.isShiftKeyDown()) { if (gridSide == getFrontFacing() || !isFacingValid(gridSide)) { return InteractionResult.FAIL; } - if (!isRemote()) { - setFrontFacing(gridSide); - } - playerIn.swing(hand); - return InteractionResult.CONSUME; + setFrontFacing(gridSide); } else { - if (isRemote()) - return InteractionResult.CONSUME; var itemStack = playerIn.getItemInHand(hand); var tagCompound = getBehaviorsTag(itemStack); ToolModeSwitchBehavior.WrenchModeType type = ToolModeSwitchBehavior.WrenchModeType.values()[tagCompound .getByte("Mode")]; - if (type == ToolModeSwitchBehavior.WrenchModeType.ITEM || - type == ToolModeSwitchBehavior.WrenchModeType.BOTH) { + if (type.isItem()) { if (this instanceof IAutoOutputItem autoOutputItem && (!hasFrontFacing() || gridSide != getFrontFacing())) { autoOutputItem.setOutputFacingItems(gridSide); } } - if (type == ToolModeSwitchBehavior.WrenchModeType.FLUID || - type == ToolModeSwitchBehavior.WrenchModeType.BOTH) { + if (type.isFluid()) { if (this instanceof IAutoOutputFluid autoOutputFluid && (!hasFrontFacing() || gridSide != getFrontFacing())) { autoOutputFluid.setOutputFacingFluids(gridSide); } } - playerIn.swing(hand); - return InteractionResult.CONSUME; } + return InteractionResult.sidedSuccess(isRemote()); } protected InteractionResult onSoftMalletClick(Player playerIn, InteractionHand hand, Direction gridSide, BlockHitResult hitResult) { var controllable = GTCapabilityHelper.getControllable(getLevel(), getPos(), gridSide); - if (controllable != null) { - if (!isRemote()) { - if (!playerIn.isShiftKeyDown() || !controllable.isWorkingEnabled()) { - controllable.setWorkingEnabled(!controllable.isWorkingEnabled()); - playerIn.sendSystemMessage(Component.translatable(controllable.isWorkingEnabled() ? - "behaviour.soft_hammer.enabled" : "behaviour.soft_hammer.disabled")); - } else { - controllable.setSuspendAfterFinish(true); - playerIn.sendSystemMessage(Component.translatable("behaviour.soft_hammer.idle_after_cycle")); - } - } - playerIn.swing(hand); - return InteractionResult.CONSUME; + if (controllable == null) return InteractionResult.PASS; + if (!isRemote()) { + controllable.setWorkingEnabled(!controllable.isWorkingEnabled()); + playerIn.sendSystemMessage(Component.translatable(controllable.isWorkingEnabled() ? + "behaviour.soft_hammer.enabled" : "behaviour.soft_hammer.disabled_cycle")); } - return InteractionResult.PASS; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } protected InteractionResult onScrewdriverClick(Player playerIn, InteractionHand hand, Direction gridSide, BlockHitResult hitResult) { - var itemStack = playerIn.getItemInHand(hand); - var tagCompound = getBehaviorsTag(itemStack); - if (isRemote()) - return InteractionResult.CONSUME; + if (isRemote()) return InteractionResult.SUCCESS; if (playerIn.isShiftKeyDown()) { - boolean flag = false; + boolean changed = false; if (this instanceof IAutoOutputItem autoOutputItem) { if (autoOutputItem.getOutputFacingItems() == gridSide) { autoOutputItem.setAllowInputFromOutputSideItems(!autoOutputItem.isAllowInputFromOutputSideItems()); @@ -459,7 +443,7 @@ protected InteractionResult onScrewdriverClick(Player playerIn, InteractionHand .translatable("gtceu.machine.basic.input_from_output_side." + (autoOutputItem.isAllowInputFromOutputSideItems() ? "allow" : "disallow")) .append(Component.translatable("gtceu.creative.chest.item")), true); - flag = true; + changed = true; } } if (this instanceof IAutoOutputFluid autoOutputFluid) { @@ -470,31 +454,29 @@ protected InteractionResult onScrewdriverClick(Player playerIn, InteractionHand .translatable("gtceu.machine.basic.input_from_output_side." + (autoOutputFluid.isAllowInputFromOutputSideFluids() ? "allow" : "disallow")) .append(Component.translatable("gtceu.creative.tank.fluid")), true); - flag = true; + changed = true; } } - if (flag) { - playerIn.swing(hand); - return InteractionResult.SUCCESS; + if (changed) { + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } } else { - boolean flag = false; + boolean changed = false; if (this instanceof IAutoOutputItem autoOutputItem) { if (autoOutputItem.getOutputFacingItems() == gridSide) { autoOutputItem.setAutoOutputItems(!autoOutputItem.isAutoOutputItems()); - flag = true; + changed = true; } } if (this instanceof IAutoOutputFluid autoOutputFluid) { if (autoOutputFluid.getOutputFacingFluids() == gridSide) { autoOutputFluid.setAutoOutputFluids(!autoOutputFluid.isAutoOutputFluids()); - flag = true; + changed = true; } } - if (flag) { - playerIn.swing(hand); - return InteractionResult.SUCCESS; + if (changed) { + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } } return InteractionResult.PASS; @@ -543,8 +525,8 @@ public boolean shouldRenderGrid(Player player, BlockPos pos, BlockState state, I } @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { var cover = coverContainer.getCoverAtSide(side); if (cover != null) { var tips = cover.sideTips(player, pos, state, toolTypes, side); @@ -569,10 +551,25 @@ public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, S return null; } + public void addDebugOverlayText(Consumer lines) { + lines.accept(ChatFormatting.UNDERLINE + "Targeted Machine: "); + lines.accept(this.getDefinition().getId().toString()); + + // add render state info + MachineRenderState renderState = this.getRenderState(); + for (var property : renderState.getValues().entrySet()) { + lines.accept(ModelUtils.getPropertyValueString(property)); + } + } + public MachineDefinition getDefinition() { return holder.getDefinition(); } + public RotationState getRotationState() { + return getDefinition().getRotationState(); + } + /** * Called to obtain list of AxisAlignedBB used for collision testing, highlight rendering * and ray tracing this meta tile entity's block in world @@ -590,25 +587,15 @@ public boolean canSetIoOnSide(@Nullable Direction direction) { } public Direction getFrontFacing() { - var blockState = getBlockState(); - if (blockState.getBlock() instanceof MetaMachineBlock machineBlock) { - return machineBlock.getFrontFacing(blockState); - } - return Direction.NORTH; + return getRotationState() == RotationState.NONE ? Direction.NORTH : + getBlockState().getValue(getRotationState().property); } public final boolean hasFrontFacing() { - var blockState = getBlockState(); - if (blockState.getBlock() instanceof MetaMachineBlock machineBlock) { - return machineBlock.getRotationState() != RotationState.NONE; - } - return false; + return getRotationState() != RotationState.NONE; } public boolean isFacingValid(Direction facing) { - if (allowExtendedFacing()) { - return true; - } if (hasFrontFacing() && facing == getFrontFacing()) return false; var coverContainer = getCoverContainer(); if (coverContainer.hasCover(facing)) { @@ -619,11 +606,7 @@ public boolean isFacingValid(Direction facing) { return false; } } - var blockState = getBlockState(); - if (blockState.getBlock() instanceof MetaMachineBlock metaMachineBlock) { - return metaMachineBlock.rotationState.test(facing); - } - return false; + return getRotationState().test(facing); } public void setFrontFacing(Direction facing) { @@ -635,9 +618,8 @@ public void setFrontFacing(Direction facing) { } var blockState = getBlockState(); - if (blockState.getBlock() instanceof MetaMachineBlock metaMachineBlock && isFacingValid(facing)) { - getLevel().setBlockAndUpdate(getPos(), - blockState.setValue(metaMachineBlock.rotationState.property, facing)); + if (isFacingValid(facing)) { + getLevel().setBlockAndUpdate(getPos(), blockState.setValue(getRotationState().property, facing)); } if (getLevel() != null && !getLevel().isClientSide) { @@ -648,11 +630,11 @@ public void setFrontFacing(Direction facing) { public static @NotNull Direction getUpwardFacing(@Nullable MetaMachine machine) { return machine == null || !machine.allowExtendedFacing() ? Direction.NORTH : - machine.getBlockState().getValue(IMachineBlock.UPWARDS_FACING_PROPERTY); + machine.getBlockState().getValue(GTBlockStateProperties.UPWARDS_FACING); } public Direction getUpwardsFacing() { - return this.allowExtendedFacing() ? this.getBlockState().getValue(IMachineBlock.UPWARDS_FACING_PROPERTY) : + return this.allowExtendedFacing() ? this.getBlockState().getValue(GTBlockStateProperties.UPWARDS_FACING) : Direction.NORTH; } @@ -666,9 +648,9 @@ public void setUpwardsFacing(@NotNull Direction upwardsFacing) { } var blockState = getBlockState(); if (blockState.getBlock() instanceof MetaMachineBlock && - blockState.getValue(IMachineBlock.UPWARDS_FACING_PROPERTY) != upwardsFacing) { + blockState.getValue(GTBlockStateProperties.UPWARDS_FACING) != upwardsFacing) { getLevel().setBlockAndUpdate(getPos(), - blockState.setValue(IMachineBlock.UPWARDS_FACING_PROPERTY, upwardsFacing)); + blockState.setValue(GTBlockStateProperties.UPWARDS_FACING, upwardsFacing)); if (getLevel() != null && !getLevel().isClientSide) { notifyBlockUpdate(); markDirty(); @@ -709,6 +691,21 @@ public BlockState getBlockAppearance(BlockState state, BlockAndTintGetter level, return getDefinition().getAppearance().get(); } + @MustBeInvokedByOverriders + public void updateModelData(ModelData.Builder builder) { + for (MachineTrait trait : this.getTraits()) { + trait.updateModelData(builder); + } + } + + public MachineRenderState getRenderState() { + return this.getHolder().getRenderState(); + } + + public void setRenderState(MachineRenderState state) { + this.getHolder().setRenderState(state); + } + @Override public int getOutputSignal(@Nullable Direction side) { if (side == null) return 0; @@ -839,7 +836,7 @@ public void onAddFancyInformationTooltip(List tooltips) { getDefinition().getTooltipBuilder().accept(getDefinition().asStack(), tooltips); String mainKey = String.format("%s.machine.%s.tooltip", getDefinition().getId().getNamespace(), getDefinition().getId().getPath()); - if (LocalizationUtils.exist(mainKey)) { + if (Language.getInstance().has(mainKey)) { tooltips.add(0, Component.translatable(mainKey)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MultiblockMachineDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MultiblockMachineDefinition.java index efaaf6ead67..41d585e1881 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MultiblockMachineDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MultiblockMachineDefinition.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; +import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.pattern.BlockPattern; import com.gregtechceu.gtceu.api.pattern.MultiblockShapeInfo; @@ -11,6 +12,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; +import it.unimi.dsi.fastutil.ints.IntArrayList; import lombok.Getter; import lombok.NonNull; import lombok.Setter; @@ -19,13 +21,9 @@ import java.util.*; import java.util.function.BiConsumer; +import java.util.function.Function; import java.util.function.Supplier; -/** - * @author KilaBash - * @date 2023/3/4 - * @implNote MultiblockMachineDefinition - */ public class MultiblockMachineDefinition extends MachineDefinition { @Getter @@ -51,7 +49,7 @@ public class MultiblockMachineDefinition extends MachineDefinition { private Supplier recoveryItems; @Setter @Getter - private Comparator partSorter; + private Function> partSorter; @Getter @Setter private TriFunction partAppearance; @@ -59,28 +57,24 @@ public class MultiblockMachineDefinition extends MachineDefinition { @Setter private BiConsumer> additionalDisplay; - protected MultiblockMachineDefinition(ResourceLocation id) { + public MultiblockMachineDefinition(ResourceLocation id) { super(id); } - public static MultiblockMachineDefinition createDefinition(ResourceLocation id) { - return new MultiblockMachineDefinition(id); - } - public List getMatchingShapes() { var designs = shapes.get(); if (!designs.isEmpty()) return designs; var structurePattern = patternFactory.get(); int[][] aisleRepetitions = structurePattern.aisleRepetitions; - return repetitionDFS(structurePattern, new ArrayList<>(), aisleRepetitions, new Stack<>()); + return repetitionDFS(structurePattern, new ArrayList<>(), aisleRepetitions, new IntArrayList()); } private List repetitionDFS(BlockPattern pattern, List pages, - int[][] aisleRepetitions, Stack repetitionStack) { + int[][] aisleRepetitions, IntArrayList repetitionStack) { if (repetitionStack.size() == aisleRepetitions.length) { int[] repetition = new int[repetitionStack.size()]; for (int i = 0; i < repetitionStack.size(); i++) { - repetition[i] = repetitionStack.get(i); + repetition[i] = repetitionStack.getInt(i); } pages.add(new MultiblockShapeInfo(pattern.getPreview(repetition))); } else { @@ -88,7 +82,7 @@ private List repetitionDFS(BlockPattern pattern, List this.setAutoOutputFluids(nextState)); + } + + private IFancyConfigurator createAutoOutputItemConfigurator() { + return createAutoOutputConfigurator( + GuiTextures.IO_CONFIG_ITEM_MODES_BUTTON, + this::isAutoOutputItems, + (cd, nextState) -> this.setAutoOutputItems(nextState)); + } + + private IFancyConfigurator createAutoOutputConfigurator(ResourceTexture modesButtonTexture, + BooleanSupplier stateSupplier, + BiConsumer onToggle) { + return new IFancyConfiguratorButton.Toggle( + new GuiTextureGroup( + GuiTextures.TOGGLE_BUTTON_BACK.getSubTexture(0, 0, 1, 0.5), + modesButtonTexture.getSubTexture(0, 1 / 3f, 1, 1 / 3f)), + new GuiTextureGroup( + GuiTextures.TOGGLE_BUTTON_BACK.getSubTexture(0, 0.5, 1, 0.5), + modesButtonTexture.getSubTexture(0, 2 / 3f, 1, 1 / 3f)), + stateSupplier, + onToggle); + } + @SuppressWarnings("UnstableApiUsage") public static BiFunction EDITABLE_UI_CREATOR = Util .memoize((path, recipeType) -> new EditableMachineUI("simple", path, () -> { @@ -364,7 +401,7 @@ public void attachConfigurators(ConfiguratorPanel configuratorPanel) { })); /** - * Create an energy bar widget. + * Create a battery slot widget. */ protected static EditableUI createBatterySlot() { return new EditableUI<>("battery_slot", SlotWidget.class, () -> { @@ -381,7 +418,7 @@ protected static EditableUI createBatterySlot() } /** - * Create an energy bar widget. + * Create a ghost circuit slot widget. */ protected static EditableUI createCircuitConfigurator() { return new EditableUI<>("circuit_configurator", GhostCircuitSlotWidget.class, () -> { @@ -406,8 +443,8 @@ protected IGuiTexture getCircuitSlotOverlay() { // ******* Rendering ********// ////////////////////////////////////// @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.WRENCH)) { if (!player.isShiftKeyDown()) { if (!hasFrontFacing() || side != getFrontFacing()) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/TickableSubscription.java b/src/main/java/com/gregtechceu/gtceu/api/machine/TickableSubscription.java index a0632a2a51f..a284979f333 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/TickableSubscription.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/TickableSubscription.java @@ -2,11 +2,6 @@ import lombok.Getter; -/** - * @author KilaBash - * @date 2023/2/26 - * @implNote TickableSubscription - */ public class TickableSubscription { private final Runnable runnable; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java index 59b75cbc8a9..4777129e9f0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java @@ -21,11 +21,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/18 - * @implNote TieredMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class TieredEnergyMachine extends TieredMachine implements ITieredMachine, IExplosionMachine { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/TieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/TieredMachine.java index 802f23655ae..40fe9099ac3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/TieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/TieredMachine.java @@ -4,11 +4,6 @@ import lombok.Getter; -/** - * @author KilaBash - * @date 2023/2/28 - * @implNote TieredMachine - */ public class TieredMachine extends MetaMachine implements ITieredMachine { @Getter diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java index 20101b077bb..cdfe1dea696 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java @@ -23,11 +23,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/19 - * @implNote WorkableTieredMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public abstract class WorkableTieredMachine extends TieredEnergyMachine implements IRecipeLogicMachine, @@ -110,19 +105,11 @@ public ManagedFieldHolder getFieldHolder() { protected NotifiableEnergyContainer createEnergyContainer(Object... args) { long tierVoltage = GTValues.V[getTier()]; if (isEnergyEmitter()) { - return NotifiableEnergyContainer.emitterContainer(this, - tierVoltage * 64L, tierVoltage, getMaxInputOutputAmperage()); + return RecipeAmperageEnergyContainer.makeEmitterContainer(this, tierVoltage * 64L, + tierVoltage, getMaxInputOutputAmperage()); } else { - return new NotifiableEnergyContainer(this, tierVoltage * 64L, tierVoltage, 2, 0L, 0L) { - - @Override - public long getInputAmperage() { - if (getEnergyCapacity() / 2 > getEnergyStored() && recipeLogic.isActive()) { - return 2; - } - return 1; - } - }; + return RecipeAmperageEnergyContainer.makeReceiverContainer(this, tierVoltage * 64L, + tierVoltage, getMaxInputOutputAmperage()); } } @@ -136,12 +123,12 @@ protected NotifiableItemStackHandler createExportItemHandler(Object... args) { protected NotifiableFluidTank createImportFluidHandler(Object... args) { return new NotifiableFluidTank(this, getRecipeType().getMaxInputs(FluidRecipeCapability.CAP), - this.tankScalingFunction.apply(this.getTier()), IO.IN); + this.tankScalingFunction.applyAsInt(this.getTier()), IO.IN); } protected NotifiableFluidTank createExportFluidHandler(Object... args) { return new NotifiableFluidTank(this, getRecipeType().getMaxOutputs(FluidRecipeCapability.CAP), - this.tankScalingFunction.apply(this.getTier()), IO.OUT); + this.tankScalingFunction.applyAsInt(this.getTier()), IO.OUT); } protected NotifiableComputationContainer createImportComputationContainer(Object... args) { @@ -193,11 +180,6 @@ public void onUnload() { // ********** MISC ***********// ////////////////////////////////////// - @Override - protected long getMaxInputOutputAmperage() { - return 2L; - } - @Override public void onMachineRemoved() { clearInventory(importItems.storage); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/AutoStockingFancyConfigurator.java b/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/AutoStockingFancyConfigurator.java new file mode 100644 index 00000000000..94620e8736c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/AutoStockingFancyConfigurator.java @@ -0,0 +1,53 @@ +package com.gregtechceu.gtceu.api.machine.fancyconfigurator; + +import com.gregtechceu.gtceu.api.gui.fancy.IFancyConfigurator; +import com.gregtechceu.gtceu.api.gui.widget.IntInputWidget; +import com.gregtechceu.gtceu.common.data.GTItems; +import com.gregtechceu.gtceu.config.ConfigHolder; +import com.gregtechceu.gtceu.integration.ae2.machine.MEStockingBusPartMachine; +import com.gregtechceu.gtceu.integration.ae2.machine.feature.multiblock.IMEStockingPart; + +import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; +import com.lowdragmc.lowdraglib.gui.texture.ItemStackTexture; +import com.lowdragmc.lowdraglib.gui.widget.LabelWidget; +import com.lowdragmc.lowdraglib.gui.widget.Widget; +import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; + +import net.minecraft.network.chat.Component; + +public class AutoStockingFancyConfigurator implements IFancyConfigurator { + + private IMEStockingPart machine; + + public AutoStockingFancyConfigurator(IMEStockingPart machine) { + this.machine = machine; + } + + @Override + public Component getTitle() { + return Component.translatable("gtceu.gui.adv_stocking_config.title"); + } + + @Override + public IGuiTexture getIcon() { + return new ItemStackTexture(GTItems.TOOL_DATA_STICK.asStack()); + } + + @Override + public Widget createConfigurator() { + var group = new WidgetGroup(0, 0, 90, 70); + + String suffix = machine instanceof MEStockingBusPartMachine ? "min_item_count" : "min_fluid_count"; + + group.addWidget(new LabelWidget(4, 2, "gtceu.gui.title.adv_stocking_config." + suffix)); + group.addWidget(new IntInputWidget(4, 12, 81, 14, machine::getMinStackSize, + machine::setMinStackSize).setMin(1) + .appendHoverTooltips(Component.translatable("gtceu.gui.adv_stocking_config." + suffix))); + group.addWidget(new LabelWidget(4, 36, "gtceu.gui.title.adv_stocking_config.ticks_per_cycle")); + group.addWidget(new IntInputWidget(4, 46, 81, 14, machine::getTicksPerCycle, + machine::setTicksPerCycle).setMin(ConfigHolder.INSTANCE.compat.ae2.updateIntervals) + .setHoverTooltips(Component.translatable("gtceu.gui.adv_stocking_config.ticks_per_cycle"))); + + return group; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/CircuitFancyConfigurator.java b/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/CircuitFancyConfigurator.java index 16df5e81037..522673f4fc7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/CircuitFancyConfigurator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/CircuitFancyConfigurator.java @@ -30,11 +30,6 @@ import java.util.function.BiConsumer; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/6/30 - * @implNote CircuitFancyConfigurator - */ public class CircuitFancyConfigurator implements IFancyConfigurator, IFancyCustomMouseWheelAction, IFancyCustomMiddleClickAction { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/MachineModeFancyConfigurator.java b/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/MachineModeFancyConfigurator.java index 0e23cf36950..ead597bd7ff 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/MachineModeFancyConfigurator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/MachineModeFancyConfigurator.java @@ -19,10 +19,6 @@ import java.util.ArrayList; import java.util.List; -/** - * @author Rundas/Screret - * @implNote MachineModeFancyConfigurator - */ public class MachineModeFancyConfigurator implements IFancyUIProvider { protected IRecipeLogicMachine machine; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/OverclockFancyConfigurator.java b/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/OverclockFancyConfigurator.java deleted file mode 100644 index 15b69fe97a1..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/OverclockFancyConfigurator.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.gregtechceu.gtceu.api.machine.fancyconfigurator; - -import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.gui.GuiTextures; -import com.gregtechceu.gtceu.api.gui.fancy.IFancyConfigurator; -import com.gregtechceu.gtceu.api.gui.widget.PredicatedButtonWidget; -import com.gregtechceu.gtceu.api.machine.feature.IOverclockMachine; - -import com.lowdragmc.lowdraglib.gui.editor.Icons; -import com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup; -import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; -import com.lowdragmc.lowdraglib.gui.texture.TextTexture; -import com.lowdragmc.lowdraglib.gui.widget.ButtonWidget; -import com.lowdragmc.lowdraglib.gui.widget.ImageWidget; -import com.lowdragmc.lowdraglib.gui.widget.Widget; -import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; - -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.chat.Component; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.function.BiConsumer; -import java.util.function.Consumer; - -/** - * @author KilaBash - * @date 2023/7/1 - * @implNote OverclockFancyConfigurator - */ -public class OverclockFancyConfigurator implements IFancyConfigurator { - - protected IOverclockMachine overclockMachine; - // runtime - protected int currentTier; - - public OverclockFancyConfigurator(IOverclockMachine overclockMachine) { - this.overclockMachine = overclockMachine; - } - - @Override - public Component getTitle() { - return Component.translatable("gtceu.gui.overclock.title"); - } - - @Override - public IGuiTexture getIcon() { - return currentTier <= GTValues.UV ? GuiTextures.TIER[currentTier].copy().scale(1.2f) : - new TextTexture(GTValues.VNF[this.currentTier]).setDropShadow(false); - } - - @Override - public void writeInitialData(FriendlyByteBuf buffer) { - this.currentTier = overclockMachine.getOverclockTier(); - buffer.writeVarInt(currentTier); - } - - @Override - public void readInitialData(FriendlyByteBuf buffer) { - this.currentTier = buffer.readVarInt(); - } - - @Override - public void detectAndSendChange(BiConsumer> sender) { - var newTier = overclockMachine.getOverclockTier(); - if (newTier != currentTier) { - this.currentTier = newTier; - sender.accept(0, buf -> buf.writeVarInt(newTier)); - } - } - - @Override - public void readUpdateInfo(int id, FriendlyByteBuf buf) { - if (id == 0) { - this.currentTier = buf.readVarInt(); - } - } - - @Override - public Widget createConfigurator() { - return new WidgetGroup(0, 0, 120, 40) { - - final Map lightGroups = new HashMap<>(); - - @Override - public void initWidget() { - super.initWidget(); - setBackground(GuiTextures.BACKGROUND_INVERSE); - addWidget(new PredicatedButtonWidget(5, 5, 10, 20, - new GuiTextureGroup(GuiTextures.BUTTON, Icons.LEFT.copy().scale(0.7f)), cd -> { - if (!cd.isRemote) { - overclockMachine.setOverclockTier(currentTier - 1); - } - }, () -> currentTier > overclockMachine.getMinOverclockTier())); - addWidget(new ImageWidget(20, 5, 120 - 5 - 10 - 5 - 20, 20, - () -> new GuiTextureGroup(GuiTextures.DISPLAY_FRAME, - new TextTexture(GTValues.VNF[currentTier])))); - addWidget(new PredicatedButtonWidget(120 - 5 - 10, 5, 10, 20, - new GuiTextureGroup(GuiTextures.BUTTON, Icons.RIGHT.copy().scale(0.7f)), cd -> { - if (!cd.isRemote) { - overclockMachine.setOverclockTier(currentTier + 1); - } - }, () -> currentTier < overclockMachine.getMaxOverclockTier())); - } - - @Override - public void writeInitialData(FriendlyByteBuf buffer) { - int min = overclockMachine.getMinOverclockTier(); - int max = overclockMachine.getMaxOverclockTier(); - buffer.writeVarInt(min); - buffer.writeVarInt(max); - buffer.writeVarInt(currentTier); - updateLightButton(min, max); - super.writeInitialData(buffer); - } - - @Override - public void readInitialData(FriendlyByteBuf buffer) { - int min = buffer.readVarInt(); - int max = buffer.readVarInt(); - currentTier = buffer.readVarInt(); - updateLightButton(min, max); - super.readInitialData(buffer); - } - - private void updateLightButton(int min, int max) { - for (WidgetGroup light : lightGroups.values()) { - removeWidget(light); - } - lightGroups.clear(); - int x = 5; - for (int tier = min; tier <= max; tier++) { - int finalTier = tier; - var lightGroup = new WidgetGroup(x, 27, 8, 8); - lightGroup.addWidget(new ButtonWidget(0, 0, 8, 8, null, cd -> { - if (!cd.isRemote) { - overclockMachine.setOverclockTier(finalTier); - } - })); - lightGroup.addWidget(new ImageWidget(0, 0, 8, 8, - () -> currentTier >= finalTier ? GuiTextures.LIGHT_ON : GuiTextures.LIGHT_OFF)); - lightGroups.put(tier, lightGroup); - addWidget(lightGroup); - x += 10; - } - } - - @Override - public void detectAndSendChanges() { - super.detectAndSendChanges(); - int min = overclockMachine.getMinOverclockTier(); - int max = overclockMachine.getMaxOverclockTier(); - if (lightGroups.size() != max - min + 1) { - updateLightButton(min, max); - writeUpdateInfo(0, buf -> { - buf.writeVarInt(min); - buf.writeVarInt(max); - }); - } else { - for (int i = min; i <= max; i++) { - if (!lightGroups.containsKey(i)) { - updateLightButton(min, max); - writeUpdateInfo(0, buf -> { - buf.writeVarInt(min); - buf.writeVarInt(max); - }); - return; - } - } - } - } - - @Override - public void readUpdateInfo(int id, FriendlyByteBuf buffer) { - if (id == 0) { - int min = buffer.readVarInt(); - int max = buffer.readVarInt(); - updateLightButton(min, max); - } else { - super.readUpdateInfo(id, buffer); - } - } - }; - } - - @Override - public List getTooltips() { - return List.of(getTitle(), - Component.translatable("gtceu.gui.overclock.range", - GTValues.VNF[overclockMachine.getMinOverclockTier()], - GTValues.VNF[overclockMachine.getMaxOverclockTier()])); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IAutoOutputBoth.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IAutoOutputBoth.java index 715db1981d7..ce21d151ee7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IAutoOutputBoth.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IAutoOutputBoth.java @@ -1,10 +1,5 @@ package com.gregtechceu.gtceu.api.machine.feature; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote IAutoOutputMachine - */ public interface IAutoOutputBoth extends IAutoOutputItem, IAutoOutputFluid, IMachineFeature { } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IAutoOutputFluid.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IAutoOutputFluid.java index 9a00ff2c6c6..9a47c81243e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IAutoOutputFluid.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IAutoOutputFluid.java @@ -4,11 +4,6 @@ import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/3/2 - * @implNote IAutoOutputItem - */ public interface IAutoOutputFluid extends IMachineFeature { boolean isAutoOutputFluids(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IAutoOutputItem.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IAutoOutputItem.java index c8c834a8be4..fb8ad43fd47 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IAutoOutputItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IAutoOutputItem.java @@ -4,11 +4,6 @@ import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/3/2 - * @implNote IAutoOutputItem - */ public interface IAutoOutputItem extends IMachineFeature { boolean isAutoOutputItems(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IEnvironmentalHazardEmitter.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IEnvironmentalHazardEmitter.java index 6bcf6a76c5f..86bb8b68348 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IEnvironmentalHazardEmitter.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IEnvironmentalHazardEmitter.java @@ -11,9 +11,7 @@ import net.minecraft.server.level.ServerLevel; /** - * @author screret - * @date 2024/6/8 - * @apiNote common interface for environmental hazard (e.g. pollution) emitters like mufflers. + * common interface for environmental hazard (e.g. pollution) emitters like mufflers. */ public interface IEnvironmentalHazardEmitter extends IMachineFeature { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExhaustVentMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExhaustVentMachine.java index 3724918d841..8493f730910 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExhaustVentMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExhaustVentMachine.java @@ -1,8 +1,11 @@ package com.gregtechceu.gtceu.api.machine.feature; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.common.data.GTDamageTypes; import com.gregtechceu.gtceu.config.ConfigHolder; +import com.gregtechceu.gtceu.utils.GTUtil; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -14,6 +17,7 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.shapes.Shapes; @@ -26,6 +30,8 @@ */ public interface IExhaustVentMachine extends IMachineFeature { + EnumProperty VENT_DIRECTION_PROPERTY = GTMachineModelProperties.VENT_DIRECTION; + /** * @return the direction the vent faces */ @@ -81,20 +87,33 @@ default boolean isVentingBlocked() { * @param pos the position of the machine */ default void tryDoVenting(@NotNull Level level, @NotNull BlockPos pos) { - if (isNeedsVenting() && !isVentingBlocked()) { - doVentingDamage(level, pos); + if (!isNeedsVenting()) return; - Direction ventingDirection = getVentingDirection(); - double posX = pos.getX() + 0.5 + ventingDirection.getStepX() * 0.6; - double posY = pos.getY() + 0.5 + ventingDirection.getStepY() * 0.6; - double posZ = pos.getZ() + 0.5 + ventingDirection.getStepZ() * 0.6; - createVentingParticles(level, posX, posY, posZ); + if (!isVentingBlocked()) { + performVenting(level, pos); + return; + } - if (ConfigHolder.INSTANCE.machines.machineSounds) { - playVentingSound(level, posX, posY, posZ); - } - markVentingComplete(); + BlockPos ventingPos = pos.relative(getVentingDirection()); + if (GTUtil.tryBreakSnow(level, ventingPos, level.getBlockState(ventingPos), false)) { + performVenting(level, pos); + } + } + + private void performVenting(@NotNull Level level, @NotNull BlockPos pos) { + doVentingDamage(level, pos); + + Direction ventingDirection = getVentingDirection(); + double posX = pos.getX() + 0.5 + ventingDirection.getStepX() * 0.6; + double posY = pos.getY() + 0.5 + ventingDirection.getStepY() * 0.6; + double posZ = pos.getZ() + 0.5 + ventingDirection.getStepZ() * 0.6; + createVentingParticles(level, posX, posY, posZ); + + if (ConfigHolder.INSTANCE.machines.machineSounds) { + playVentingSound(level, posX, posY, posZ); } + + markVentingComplete(); } /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExplosionMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExplosionMachine.java index a7054b955e8..bf1c40a6b88 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExplosionMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExplosionMachine.java @@ -10,10 +10,7 @@ import net.minecraft.world.level.block.Blocks; /** - * @author KilaBash - * @date 2023/2/18 - * @implNote IExplosionMachine - * A machine which may cause explosion. e.g. whether, water around + * A machine which may cause explosion. e.g. whether, water around */ public interface IExplosionMachine extends IMachineFeature { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IFancyUIMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IFancyUIMachine.java index 5f8b568fecf..99d38a97cc2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IFancyUIMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IFancyUIMachine.java @@ -6,7 +6,6 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.fancyconfigurator.CombinedDirectionalFancyConfigurator; import com.gregtechceu.gtceu.api.machine.fancyconfigurator.MachineModeFancyConfigurator; -import com.gregtechceu.gtceu.api.machine.fancyconfigurator.OverclockFancyConfigurator; import com.lowdragmc.lowdraglib.gui.modular.ModularUI; import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; @@ -31,11 +30,6 @@ import java.util.ArrayList; import java.util.List; -/** - * @author KilaBash - * @date 2023/6/28 - * @implNote IFancyUIMachine - */ public interface IFancyUIMachine extends IUIMachine, IFancyUIProvider { @Override @@ -125,9 +119,6 @@ default void attachConfigurators(ConfiguratorPanel configuratorPanel) { Component.translatable( pressed ? "behaviour.soft_hammer.enabled" : "behaviour.soft_hammer.disabled")))); } - if (this instanceof IOverclockMachine overclockMachine) { - configuratorPanel.attachConfigurators(new OverclockFancyConfigurator(overclockMachine)); - } if (this instanceof MetaMachine machine) { for (var direction : Direction.values()) { if (machine.getCoverContainer().hasCover(direction)) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IInteractedMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IInteractedMachine.java index c278cad1f9f..ca28205513d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IInteractedMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IInteractedMachine.java @@ -10,9 +10,7 @@ import net.minecraft.world.phys.BlockHitResult; /** - * @author KilaBash - * @date 2022/11/6 - * @implNote A machine which hooks right click events. + * A machine which hooks right click events. */ public interface IInteractedMachine extends IMachineFeature { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/ILocalizedHazardEmitter.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/ILocalizedHazardEmitter.java index 72ab936914a..41144c5946c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/ILocalizedHazardEmitter.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/ILocalizedHazardEmitter.java @@ -11,9 +11,7 @@ import net.minecraft.server.level.ServerLevel; /** - * @author screret - * @date 2024/6/9 - * @apiNote common interface for localized hazard (e.g. radiation) emitters like nuclear reactors. + * common interface for localized hazard (e.g. radiation) emitters like nuclear reactors. */ public interface ILocalizedHazardEmitter extends IMachineFeature { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineFeature.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineFeature.java index f40f4aab86c..518cd573cfb 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineFeature.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineFeature.java @@ -2,11 +2,6 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; -/** - * @author KilaBash - * @date 2023/2/18 - * @implNote IMachine - */ public interface IMachineFeature { default MetaMachine self() { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineLife.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineLife.java index b99210226d5..b41e7044297 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineLife.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineLife.java @@ -10,11 +10,6 @@ import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/2/17 - * @implNote events are fired for machine - */ public interface IMachineLife extends IMachineFeature { /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineModifyDrops.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineModifyDrops.java index d29fa107cfc..e7b57207514 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineModifyDrops.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineModifyDrops.java @@ -4,11 +4,6 @@ import java.util.List; -/** - * @author KilaBash - * @date 2022/9/23 - * @implNote IBlockEntityModifyDrops - */ public interface IMachineModifyDrops extends IMachineFeature { /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMufflableMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMufflableMachine.java index cc0e49b2e31..d80b5f915b6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMufflableMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMufflableMachine.java @@ -1,10 +1,5 @@ package com.gregtechceu.gtceu.api.machine.feature; -/** - * @author KilaBash - * @date 2023/3/22 - * @implNote IMufflableMachine - */ public interface IMufflableMachine extends IMachineFeature { boolean isMuffled(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IOverclockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IOverclockMachine.java index fe05b3d22e0..00e3ef66fe2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IOverclockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IOverclockMachine.java @@ -2,11 +2,6 @@ import com.gregtechceu.gtceu.api.GTValues; -/** - * @author KilaBash - * @date 2023/3/2 - * @implNote IOverclockMachine - */ public interface IOverclockMachine extends IMachineFeature { int getOverclockTier(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java index f1a728f4aa0..83a53f754ce 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java @@ -13,10 +13,7 @@ import org.jetbrains.annotations.Nullable; /** - * @author KilaBash - * @date 2023/2/20 - * @implNote IRecipeMachine - * A machine can handle recipes. + * A machine can handle recipes. */ public interface IRecipeLogicMachine extends IRecipeCapabilityHolder, IMachineFeature, IWorkable, ICleanroomReceiver, IVoidable { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRedstoneSignalMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRedstoneSignalMachine.java index 0142664af73..145eefb84b8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRedstoneSignalMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRedstoneSignalMachine.java @@ -4,11 +4,6 @@ import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/2/18 - * @implNote IRedstoneSignalMachine - */ public interface IRedstoneSignalMachine extends IMachineFeature { default int getOutputSignal(@Nullable Direction side) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/ITieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/ITieredMachine.java index 0c4f19aa609..feef8458d96 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/ITieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/ITieredMachine.java @@ -2,11 +2,6 @@ import com.gregtechceu.gtceu.api.GTValues; -/** - * @author KilaBash - * @date 2023/2/18 - * @implNote ITieredMachine - */ public interface ITieredMachine extends IMachineFeature { /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IUIMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IUIMachine.java index 81bb408d6fc..55db2a80cf5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IUIMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IUIMachine.java @@ -12,9 +12,7 @@ import net.minecraft.world.phys.BlockHitResult; /** - * @author KilaBash - * @date 2023/2/17 - * @implNote A machine that has gui. can be opened via right click. + * A machine that has gui. can be opened via right click. */ public interface IUIMachine extends IUIHolder, IMachineFeature { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IDisplayUIMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IDisplayUIMachine.java index 4ea74e60c9a..11efe7775c4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IDisplayUIMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IDisplayUIMachine.java @@ -16,11 +16,6 @@ import java.util.List; -/** - * @author KilaBash - * @date 2023/3/16 - * @implNote IDisplayUIMachine - */ public interface IDisplayUIMachine extends IUIMachine, IMultiController { default void addDisplayText(List textList) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IDistinctPart.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IDistinctPart.java index a1b45691fa8..1c1947d7ed3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IDistinctPart.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IDistinctPart.java @@ -10,11 +10,6 @@ import java.util.List; -/** - * @author KilaBash - * @date 2023/7/24 - * @implNote IDistinctPart - */ public interface IDistinctPart extends IMultiPart { boolean isDistinct(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IFluidRenderMulti.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IFluidRenderMulti.java new file mode 100644 index 00000000000..473eb1ba5f4 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IFluidRenderMulti.java @@ -0,0 +1,43 @@ +package com.gregtechceu.gtceu.api.machine.feature.multiblock; + +import com.gregtechceu.gtceu.api.machine.feature.IMachineFeature; + +import net.minecraft.core.BlockPos; + +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; + +import java.util.Set; + +public interface IFluidRenderMulti extends IWorkableMultiController, IMachineFeature { + + @ApiStatus.NonExtendable + default Set getFluidOffsets() { + Set offsets = getFluidBlockOffsets(); + if (offsets.isEmpty() && this.isFormed()) { + offsets = saveOffsets(); + setFluidBlockOffsets(offsets); + } + return offsets; + } + + @ApiStatus.OverrideOnly + @NotNull + Set getFluidBlockOffsets(); + + @ApiStatus.Internal + void setFluidBlockOffsets(@NotNull Set offsets); + + @Override + default void onStructureFormed() { + saveOffsets(); + } + + @Override + default void onStructureInvalid() { + getFluidBlockOffsets().clear(); + } + + @NotNull + Set saveOffsets(); +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMaintenanceMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMaintenanceMachine.java index 97182a18b13..fb13f511326 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMaintenanceMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMaintenanceMachine.java @@ -4,17 +4,20 @@ import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.fancy.IFancyTooltip; import com.gregtechceu.gtceu.api.gui.fancy.TooltipsPanel; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.config.ConfigHolder; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Style; +import net.minecraft.world.level.block.state.properties.BooleanProperty; import java.util.ArrayList; public interface IMaintenanceMachine extends IMultiPart { + BooleanProperty MAINTENANCE_TAPED_PROPERTY = GTMachineModelProperties.IS_TAPED; int MINIMUM_MAINTENANCE_TIME = 3456000; // 48 real-life hours = 3456000 ticks byte ALL_PROBLEMS = 0; byte NO_PROBLEMS = 0b111111; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java index 9cfd428aec1..c6e240b9e98 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine; import com.gregtechceu.gtceu.api.machine.feature.IMachineFeature; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.pattern.BlockPattern; import com.gregtechceu.gtceu.api.pattern.MultiblockState; import com.gregtechceu.gtceu.client.renderer.MultiblockInWorldPreviewRenderer; @@ -16,22 +17,21 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Comparator; import java.util.List; import java.util.Optional; import java.util.concurrent.locks.Lock; -/** - * @author KilaBash - * @date 2023/3/3 - * @implNote IControllerComponent - */ public interface IMultiController extends IMachineFeature, IInteractedMachine { + BooleanProperty IS_FORMED_PROPERTY = GTMachineModelProperties.IS_FORMED; + @Override default MultiblockControllerMachine self() { return (MultiblockControllerMachine) this; @@ -154,6 +154,14 @@ default BlockPattern getPattern() { */ Optional getParallelHatch(); + /** + * + * @return Whether batching is enabled on this multiblock + */ + default boolean isBatchEnabled() { + return false; + } + /** * Called from part, when part is invalid due to chunk unload or broken. */ @@ -182,6 +190,10 @@ default BlockState getPartAppearance(IMultiPart part, Direction side, BlockState return null; } + default Comparator getPartSorter() { + return self().getDefinition().getPartSorter().apply(self()); + } + /** * Show the preview of structure. */ diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiPart.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiPart.java index 76e0c1d2d5a..0ab6861e6b4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiPart.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiPart.java @@ -19,11 +19,6 @@ import java.util.List; import java.util.SortedSet; -/** - * @author KilaBash - * @date 2023/3/3 - * @implNote IMultiPart - */ public interface IMultiPart extends IMachineFeature, IFancyUIMachine { /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IRotorHolderMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IRotorHolderMachine.java index d2c8a39e316..3f46cf2765b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IRotorHolderMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IRotorHolderMachine.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.fancy.IFancyTooltip; import com.gregtechceu.gtceu.api.gui.fancy.TooltipsPanel; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.common.item.TurbineRotorBehaviour; @@ -13,21 +14,21 @@ import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Style; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.state.properties.BooleanProperty; import org.jetbrains.annotations.NotNull; import java.util.List; -/** - * @author KilaBash - * @date 2023/7/10 - * @implNote IRotorHolderMachine - */ public interface IRotorHolderMachine extends IMultiPart { int SPEED_INCREMENT = 1; int SPEED_DECREMENT = 3; + BooleanProperty HAS_ROTOR_PROPERTY = GTMachineModelProperties.HAS_ROTOR; + BooleanProperty ROTOR_SPINNING_PROPERTY = GTMachineModelProperties.IS_ROTOR_SPINNING; + BooleanProperty EMISSIVE_ROTOR_PROPERTY = GTMachineModelProperties.IS_EMISSIVE_ROTOR; + /** * @return the base efficiency of the rotor holder in % */ diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IWorkableMultiController.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IWorkableMultiController.java index 705d2745a5b..1f5ce9feb5f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IWorkableMultiController.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IWorkableMultiController.java @@ -2,9 +2,4 @@ import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; -/** - * @author KilaBash - * @date 2023/7/2 - * @implNote IWorkableMultiController - */ public interface IWorkableMultiController extends IMultiController, IRecipeLogicMachine {} diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/CoilWorkableElectricMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/CoilWorkableElectricMultiblockMachine.java index f6f4be279b2..112c5566288 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/CoilWorkableElectricMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/CoilWorkableElectricMultiblockMachine.java @@ -10,11 +10,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/4 - * @implNote PyrolyseOvenMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class CoilWorkableElectricMultiblockMachine extends WorkableElectricMultiblockMachine { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java index 58d2c485c14..cc5535e2fbb 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java @@ -1,16 +1,18 @@ package com.gregtechceu.gtceu.api.machine.multiblock; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.block.IMachineBlock; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; import com.gregtechceu.gtceu.api.capability.IParallelHatch; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.pattern.MultiblockState; import com.gregtechceu.gtceu.api.pattern.MultiblockWorldSavedData; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; @@ -43,11 +45,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/3 - * @implNote MultiblockControllerMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class MultiblockControllerMachine extends MetaMachine implements IMultiController { @@ -177,6 +174,11 @@ public void asyncCheckPattern(long periodID) { @Override public void onStructureFormed() { isFormed = true; + MachineRenderState renderState = getRenderState(); + if (renderState.hasProperty(GTMachineModelProperties.IS_FORMED)) { + setRenderState(renderState.setValue(GTMachineModelProperties.IS_FORMED, true)); + } + this.parts.clear(); Set set = getMultiblockState().getMatchContext().getOrCreate("parts", Collections::emptySet); for (IMultiPart part : set) { @@ -184,7 +186,7 @@ public void onStructureFormed() { this.parts.add(part); } } - this.parts.sort(getDefinition().getPartSorter()); + this.parts.sort(getPartSorter()); for (var part : parts) { if (part instanceof IParallelHatch pHatch) { parallelHatch = pHatch; @@ -197,6 +199,11 @@ public void onStructureFormed() { @Override public void onStructureInvalid() { isFormed = false; + MachineRenderState renderState = getRenderState(); + if (renderState.hasProperty(GTMachineModelProperties.IS_FORMED)) { + setRenderState(renderState.setValue(GTMachineModelProperties.IS_FORMED, false)); + } + for (IMultiPart part : parts) { part.removedFromController(this); } @@ -247,9 +254,9 @@ public void setUpwardsFacing(@NotNull Direction upwardsFacing) { } var blockState = getBlockState(); if (blockState.getBlock() instanceof MetaMachineBlock && - blockState.getValue(IMachineBlock.UPWARDS_FACING_PROPERTY) != upwardsFacing) { + blockState.getValue(GTBlockStateProperties.UPWARDS_FACING) != upwardsFacing) { getLevel().setBlockAndUpdate(getPos(), - blockState.setValue(IMachineBlock.UPWARDS_FACING_PROPERTY, upwardsFacing)); + blockState.setValue(GTBlockStateProperties.UPWARDS_FACING, upwardsFacing)); if (getLevel() != null && !getLevel().isClientSide) { notifyBlockUpdate(); markDirty(); @@ -264,8 +271,7 @@ protected InteractionResult onWrenchClick(Player playerIn, InteractionHand hand, if (gridSide == getFrontFacing() && allowExtendedFacing()) { setUpwardsFacing(playerIn.isShiftKeyDown() ? getUpwardsFacing().getCounterClockWise() : getUpwardsFacing().getClockWise()); - playerIn.swing(hand); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } if (playerIn.isShiftKeyDown()) { if (gridSide == getFrontFacing() || !isFacingValid(gridSide)) { @@ -274,8 +280,7 @@ protected InteractionResult onWrenchClick(Player playerIn, InteractionHand hand, if (!isRemote()) { setFrontFacing(gridSide); } - playerIn.swing(hand); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } return super.onWrenchClick(playerIn, hand, gridSide, hitResult); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockDisplayText.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockDisplayText.java index 28b2e9ae6d1..57c599480e3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockDisplayText.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockDisplayText.java @@ -332,6 +332,13 @@ public Builder addProgressLine(double currentDuration, double maxDuration, doubl return this; } + public Builder addBatchModeLine(boolean batchEnabled, int batchAmount) { + if (batchEnabled && batchAmount > 0) { + textList.add(Component.translatable("gtceu.multiblock.batch_enabled", batchAmount)); + } + return this; + } + public Builder addOutputLines(GTRecipe recipe) { if (!isStructureFormed || !isActive) return this; @@ -350,7 +357,7 @@ public Builder addOutputLines(GTRecipe recipe) { int count = stack.getCount(); double countD = count; if (item.chance < item.maxChance) { - countD = countD * recipe.parallels * + countD = countD * recipe.parallels * recipe.batchParallels * function.getBoostedChance(item, recipeTier, chanceTier) / item.maxChance; count = countD < 1 ? 1 : (int) Math.round(countD); } @@ -371,7 +378,7 @@ public Builder addOutputLines(GTRecipe recipe) { int amount = stack.getAmount(); double amountD = amount; if (fluid.chance < fluid.maxChance) { - amountD = amountD * recipe.parallels * + amountD = amountD * recipe.parallels * recipe.batchParallels * function.getBoostedChance(fluid, recipeTier, chanceTier) / fluid.maxChance; amount = amountD < 1 ? 1 : (int) Math.round(amountD); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/PartAbility.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/PartAbility.java index 12282f5d0e3..7a5e705678b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/PartAbility.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/PartAbility.java @@ -12,13 +12,6 @@ import java.util.*; import java.util.function.Supplier; -/** - * @author KilaBash - * @date 2023/3/4 - * @implNote MultiblockAbility - * Fine, It's not really needed。It used to specify which blocks are available. - * Only registered blocks can be used as part of gtceu's multiblock. - */ public class PartAbility { public static final PartAbility EXPORT_ITEMS = new PartAbility("export_items"); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/TieredWorkableElectricMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/TieredWorkableElectricMultiblockMachine.java index a05f44afede..b3fa9310bee 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/TieredWorkableElectricMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/TieredWorkableElectricMultiblockMachine.java @@ -14,11 +14,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author screret - * @date 2023/7/11 - * @implNote TieredWorkableElectricMultiblockMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class TieredWorkableElectricMultiblockMachine extends WorkableElectricMultiblockMachine diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java index 3d076c7153e..19eca15094f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java @@ -7,9 +7,7 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.IRecipeHandler; import com.gregtechceu.gtceu.api.gui.GuiTextures; -import com.gregtechceu.gtceu.api.gui.fancy.FancyMachineUIWidget; -import com.gregtechceu.gtceu.api.gui.fancy.IFancyUIProvider; -import com.gregtechceu.gtceu.api.gui.fancy.TooltipsPanel; +import com.gregtechceu.gtceu.api.gui.fancy.*; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; import com.gregtechceu.gtceu.api.machine.feature.IOverclockMachine; @@ -17,10 +15,14 @@ import com.gregtechceu.gtceu.api.machine.feature.multiblock.IDisplayUIMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.misc.EnergyContainerList; +import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifierList; +import com.gregtechceu.gtceu.common.data.GTRecipeModifiers; import com.gregtechceu.gtceu.utils.GTUtil; import com.lowdragmc.lowdraglib.gui.modular.ModularUI; import com.lowdragmc.lowdraglib.gui.widget.*; +import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; +import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.network.chat.Component; @@ -29,30 +31,36 @@ import lombok.Getter; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Objects; import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/6 - * @implNote WorkableElectricMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class WorkableElectricMultiblockMachine extends WorkableMultiblockMachine implements IFancyUIMachine, IDisplayUIMachine, ITieredMachine, IOverclockMachine { + public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( + WorkableElectricMultiblockMachine.class, WorkableMultiblockMachine.MANAGED_FIELD_HOLDER); // runtime protected EnergyContainerList energyContainer; @Getter protected int tier; + @Persisted + @Getter + protected boolean batchEnabled; public WorkableElectricMultiblockMachine(IMachineBlockEntity holder, Object... args) { super(holder, args); } + @Override + public ManagedFieldHolder getFieldHolder() { + return MANAGED_FIELD_HOLDER; + } + ////////////////////////////////////// // *** Multiblock Lifecycle ***// ////////////////////////////////////// @@ -84,14 +92,17 @@ public void onPartUnload() { @Override public void addDisplayText(List textList) { int numParallels; + int batchParallels; boolean exact = false; if (recipeLogic.isActive() && recipeLogic.getLastRecipe() != null) { numParallels = recipeLogic.getLastRecipe().parallels; + batchParallels = recipeLogic.getLastRecipe().batchParallels; exact = true; } else { numParallels = getParallelHatch() .map(IParallelHatch::getCurrentParallel) .orElse(0); + batchParallels = 0; } MultiblockDisplayText.builder(textList, isFormed()) @@ -100,6 +111,7 @@ public void addDisplayText(List textList) { .addEnergyTierLine(tier) .addMachineModeLine(getRecipeType(), getRecipeTypes().length > 1) .addParallelsLine(numParallels, exact) + .addBatchModeLine(isBatchEnabled(), batchParallels) .addWorkingStatusLine() .addProgressLine(recipeLogic.getProgress(), recipeLogic.getMaxProgress(), recipeLogic.getProgressPercent()) @@ -131,6 +143,23 @@ public List getSubTabs() { return getParts().stream().filter(Objects::nonNull).map(IFancyUIProvider.class::cast).toList(); } + @Override + public void attachConfigurators(ConfiguratorPanel configuratorPanel) { + if (getDefinition().getRecipeModifier() instanceof RecipeModifierList list && Arrays.stream(list.getModifiers()) + .anyMatch(modifier -> modifier == GTRecipeModifiers.BATCH_MODE)) { + configuratorPanel.attachConfigurators(new IFancyConfiguratorButton.Toggle( + GuiTextures.BUTTON_BATCH.getSubTexture(0, 0, 1, 0.5), + GuiTextures.BUTTON_BATCH.getSubTexture(0, 0.5, 1, 0.5), + this::isBatchEnabled, + (cd, p) -> batchEnabled = p) + .setTooltipsSupplier( + p -> List.of( + Component.translatable("gtceu.machine.batch_" + (p ? "enabled" : "disabled"))))); + } + + IFancyUIMachine.super.attachConfigurators(configuratorPanel); + } + @Override public void attachTooltips(TooltipsPanel tooltipsPanel) { for (IMultiPart part : getParts()) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java index 6bbda577e51..7f4ff88c22e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java @@ -1,6 +1,6 @@ package com.gregtechceu.gtceu.api.machine.multiblock; -import com.gregtechceu.gtceu.api.block.ActiveBlock; +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.IRecipeHandler; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; @@ -9,12 +9,14 @@ import com.gregtechceu.gtceu.api.machine.feature.IMufflableMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IWorkableMultiController; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.IRecipeHandlerTrait; import com.gregtechceu.gtceu.api.machine.trait.MachineTrait; import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.lowdragmc.lowdraglib.syncdata.ISubscription; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; @@ -23,7 +25,9 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.Block; +import it.unimi.dsi.fastutil.longs.Long2ObjectMap; import it.unimi.dsi.fastutil.longs.Long2ObjectMaps; import it.unimi.dsi.fastutil.longs.LongSet; import it.unimi.dsi.fastutil.longs.LongSets; @@ -36,11 +40,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/3 - * @implNote WorkableMultiblockMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public abstract class WorkableMultiblockMachine extends MultiblockControllerMachine @@ -120,7 +119,8 @@ public void onStructureFormed() { capabilitiesFlat.clear(); traitSubscriptions.forEach(ISubscription::unsubscribe); traitSubscriptions.clear(); - Map ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", Long2ObjectMaps::emptyMap); + Long2ObjectMap ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", + Long2ObjectMaps::emptyMap); for (IMultiPart part : getParts()) { IO io = ioMap.getOrDefault(part.self().getPos().asLong(), IO.BOTH); if (io == IO.NONE) continue; @@ -213,10 +213,10 @@ public void updateActiveBlocks(boolean active) { for (long pos : activeBlocks) { var blockPos = BlockPos.of(pos); var blockState = getLevel().getBlockState(blockPos); - if (blockState.getBlock() instanceof ActiveBlock block) { - var newState = block.changeActive(blockState, active); + if (blockState.hasProperty(GTBlockStateProperties.ACTIVE)) { + var newState = blockState.setValue(GTBlockStateProperties.ACTIVE, active); if (newState != blockState) { - getLevel().setBlockAndUpdate(blockPos, newState); + getLevel().setBlock(blockPos, newState, Block.UPDATE_CLIENTS | Block.UPDATE_KNOWN_SHAPE); } } } @@ -234,6 +234,12 @@ public void notifyStatusChanged(RecipeLogic.Status oldStatus, RecipeLogic.Status if (newStatus == RecipeLogic.Status.WORKING || oldStatus == RecipeLogic.Status.WORKING) { updateActiveBlocks(newStatus == RecipeLogic.Status.WORKING); } + for (IMultiPart part : getParts()) { + MachineRenderState state = part.self().getRenderState(); + if (state.hasProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS)) { + part.self().setRenderState(state.setValue(GTMachineModelProperties.RECIPE_LOGIC_STATUS, newStatus)); + } + } } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java index 9736e3d9be6..bd6bf81a2de 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java @@ -6,11 +6,12 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.IRecipeHandlerTrait; import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; -import com.lowdragmc.lowdraglib.syncdata.annotation.RequireRerender; import com.lowdragmc.lowdraglib.syncdata.annotation.UpdateListener; import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; @@ -20,6 +21,7 @@ import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import it.unimi.dsi.fastutil.objects.ReferenceLinkedOpenHashSet; +import org.jetbrains.annotations.MustBeInvokedByOverriders; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.UnmodifiableView; @@ -31,11 +33,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/4 - * @implNote MultiblockPartMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class MultiblockPartMachine extends MetaMachine implements IMultiPart { @@ -44,7 +41,6 @@ public class MultiblockPartMachine extends MetaMachine implements IMultiPart { MetaMachine.MANAGED_FIELD_HOLDER); @DescSynced - @RequireRerender @UpdateListener(methodName = "onControllersUpdated") protected final Set controllerPositions = new ObjectOpenHashSet<>(8); protected final SortedSet controllers = new ReferenceLinkedOpenHashSet<>(8); @@ -113,7 +109,7 @@ protected RecipeHandlerList getHandlerList() { if (handlers.isEmpty()) { handlerList = RecipeHandlerList.NO_DATA; } else { - handlerList = RecipeHandlerList.of(handlerIO, handlers); + handlerList = RecipeHandlerList.of(handlerIO, getPaintingColor(), handlers); } } return handlerList; @@ -140,15 +136,29 @@ public void onUnload() { // *** Multiblock LifeCycle ***// ////////////////////////////////////// + @MustBeInvokedByOverriders @Override public void removedFromController(IMultiController controller) { controllerPositions.remove(controller.self().getPos()); controllers.remove(controller); + + if (controllers.isEmpty()) { + MachineRenderState renderState = getRenderState(); + if (renderState.hasProperty(GTMachineModelProperties.IS_FORMED)) { + setRenderState(renderState.setValue(GTMachineModelProperties.IS_FORMED, false)); + } + } } + @MustBeInvokedByOverriders @Override public void addedToController(IMultiController controller) { controllerPositions.add(controller.self().getPos()); controllers.add(controller); + + MachineRenderState renderState = getRenderState(); + if (renderState.hasProperty(GTMachineModelProperties.IS_FORMED)) { + setRenderState(renderState.setValue(GTMachineModelProperties.IS_FORMED, true)); + } } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredIOPartMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredIOPartMachine.java index 05f243b1fed..d0bc262c0f7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredIOPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredIOPartMachine.java @@ -17,11 +17,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/4 - * @implNote TieredIOPartMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class TieredIOPartMachine extends TieredPartMachine implements IControllable { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredPartMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredPartMachine.java index cedaafbdbf5..becbaf3bd68 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredPartMachine.java @@ -9,11 +9,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/4 - * @implNote TieredPartMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class TieredPartMachine extends MultiblockPartMachine implements ITieredMachine { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/property/GTMachineModelProperties.java b/src/main/java/com/gregtechceu/gtceu/api/machine/property/GTMachineModelProperties.java new file mode 100644 index 00000000000..b88a0b1e93a --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/property/GTMachineModelProperties.java @@ -0,0 +1,44 @@ +package com.gregtechceu.gtceu.api.machine.property; + +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; +import com.gregtechceu.gtceu.common.machine.electric.ChargerMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.part.DiodePartMachine; + +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; + +import lombok.experimental.UtilityClass; + +// spotless:off +@UtilityClass +public class GTMachineModelProperties { + + // Generic properties + public static final BooleanProperty IS_PAINTED = BooleanProperty.create("is_painted"); + public static final BooleanProperty IS_FORMED = BooleanProperty.create("is_formed"); + public static final BooleanProperty IS_TAPED = BooleanProperty.create("taped"); + + // Recipe-related properties + public static final EnumProperty RECIPE_LOGIC_STATUS = EnumProperty.create("recipe_logic_status", RecipeLogic.Status.class); + public static final BooleanProperty IS_WORKING_ENABLED = BooleanProperty.create("working_enabled"); + public static final BooleanProperty IS_ACTIVE = BooleanProperty.create("active"); + + // Machine-specific properties + public static final BooleanProperty IS_STEEL_MACHINE = BooleanProperty.create("steel"); + public static final EnumProperty VENT_DIRECTION = EnumProperty.create("steam_vent", RelativeDirection.class); + + public static final EnumProperty CHARGER_STATE = EnumProperty.create("charger_state", ChargerMachine.State.class); + public static final BooleanProperty IS_FE_TO_EU = BooleanProperty.create("fe_to_eu"); + public static final BooleanProperty IS_TRANSFORM_UP = BooleanProperty.create("transform_up"); + public static final EnumProperty DIODE_AMP_MODE = EnumProperty.create("amp_mode", DiodePartMachine.AmpMode.class); + + public static final BooleanProperty IS_HPCA_PART_DAMAGED = BooleanProperty.create("hpca_part_damaged"); + public static final BooleanProperty IS_RANDOM_TICK_MODE = BooleanProperty.create("random_tick_mode"); + + public static final BooleanProperty HAS_ROTOR = BooleanProperty.create("has_rotor"); + public static final BooleanProperty IS_ROTOR_SPINNING = BooleanProperty.create("rotor_spinning"); + public static final BooleanProperty IS_EMISSIVE_ROTOR = BooleanProperty.create("emissive_rotor"); + +} +// spotless:on diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java index cf96d20898b..e34ee2d0277 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java @@ -11,13 +11,16 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IExhaustVentMachine; import com.gregtechceu.gtceu.api.machine.feature.IUIMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.api.recipe.modifier.ModifierFunction; import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifier; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.gregtechceu.gtceu.common.recipe.condition.VentCondition; import com.lowdragmc.lowdraglib.gui.modular.ModularUI; @@ -33,6 +36,7 @@ import net.minecraftforge.fluids.FluidType; import com.google.common.collect.Tables; +import lombok.Getter; import lombok.Setter; import org.jetbrains.annotations.NotNull; @@ -51,6 +55,7 @@ public class SimpleSteamMachine extends SteamWorkableMachine implements IExhaust public final NotifiableItemStackHandler importItems; @Persisted public final NotifiableItemStackHandler exportItems; + @Getter @Setter @Persisted private boolean needsVenting; @@ -59,6 +64,12 @@ public SimpleSteamMachine(IMachineBlockEntity holder, boolean isHighPressure, Ob super(holder, isHighPressure, args); this.importItems = createImportItemHandler(args); this.exportItems = createExportItemHandler(args); + + MachineRenderState renderState = getRenderState(); + if (renderState.hasProperty(GTMachineModelProperties.VENT_DIRECTION)) { + // outputFacing will always be opposite the front facing on init + setRenderState(renderState.setValue(GTMachineModelProperties.VENT_DIRECTION, RelativeDirection.BACK)); + } } ////////////////////////////////////// @@ -105,14 +116,50 @@ public float getVentingDamage() { return isHighPressure() ? 12F : 6F; } + @SuppressWarnings("DataFlowIssue") @Override public @NotNull Direction getVentingDirection() { return getOutputFacing(); } + public void updateModelVentDirection() { + MachineRenderState renderState = getRenderState(); + if (renderState.hasProperty(GTMachineModelProperties.VENT_DIRECTION)) { + Direction upwardsDir = getUpwardsFacing(); + // the up facing is already rotated if extended facing is enabled for the machine + if (getFrontFacing() == Direction.UP && !allowExtendedFacing()) { + upwardsDir = upwardsDir.getOpposite(); + } + var relative = RelativeDirection.findRelativeOf(getFrontFacing(), getVentingDirection(), upwardsDir); + setRenderState(renderState.setValue(GTMachineModelProperties.VENT_DIRECTION, relative)); + } + } + + @Override + public void setOutputFacing(@NotNull Direction outputFacing) { + var oldFacing = getOutputFacing(); + super.setOutputFacing(outputFacing); + if (getOutputFacing() != oldFacing) { + updateModelVentDirection(); + } + } + @Override - public boolean isNeedsVenting() { - return this.needsVenting; + public void setFrontFacing(Direction facing) { + var oldFacing = getFrontFacing(); + super.setFrontFacing(facing); + if (getFrontFacing() != oldFacing) { + updateModelVentDirection(); + } + } + + @Override + public void setUpwardsFacing(@NotNull Direction upwardsFacing) { + var oldFacing = getUpwardsFacing(); + super.setUpwardsFacing(upwardsFacing); + if (getUpwardsFacing() != oldFacing) { + updateModelVentDirection(); + } } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java index 9174999b711..54ab1abc50a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java @@ -60,11 +60,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/14 - * @implNote SteamBoilerMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public abstract class SteamBoilerMachine extends SteamWorkableMachine @@ -132,8 +127,8 @@ public void onUnload() { } @Override - public void setOutputFacing(@NotNull Direction outputFacing) { - // no op - boilers do not have output facings + public boolean hasOutputFacing() { + return false; } ////////////////////////////////////// @@ -198,7 +193,7 @@ protected void updateCurrentTemperature() { if (getOffsetTimer() % 10 == 0) { if (currentTemperature >= 100) { - int fillAmount = (int) (getBaseSteamOutput() * ((float) currentTemperature / getMaxTemperature()) / 2); + int fillAmount = (int) getTotalSteamOutput(); boolean hasDrainedWater = !waterTank.drainInternal(1, FluidAction.EXECUTE).isEmpty(); var filledSteam = 0L; if (hasDrainedWater) { @@ -255,6 +250,12 @@ private double getTemperaturePercent() { protected abstract long getBaseSteamOutput(); + /** Returns the current total steam output every 10 ticks. */ + public long getTotalSteamOutput() { + if (currentTemperature < 100) return 0; + return (long) (getBaseSteamOutput() * ((float) currentTemperature / getMaxTemperature()) / 2); + } + /** * Recipe Modifier for Steam Boiler Machines - can be used as a valid {@link RecipeModifier} *

diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamEnergyRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamEnergyRecipeHandler.java index 03c5f25d8c6..ab2e69cb39a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamEnergyRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamEnergyRecipeHandler.java @@ -6,6 +6,7 @@ import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.api.recipe.GTRecipe; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.utils.GTMath; @@ -15,15 +16,9 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; -import java.util.Collections; import java.util.List; -/** - * @author KilaBash - * @date 2023/3/15 - * @implNote SteamEnergyRecipeHandler - */ -public class SteamEnergyRecipeHandler implements IRecipeHandler { +public class SteamEnergyRecipeHandler implements IRecipeHandler { private final NotifiableFluidTank steamTank; private final double conversionRate; // mB steam per EU @@ -34,19 +29,31 @@ public SteamEnergyRecipeHandler(NotifiableFluidTank steamTank, double conversion } @Override - public List handleRecipeInner(IO io, GTRecipe recipe, List left, boolean simulate) { - long eut = left.stream().reduce(0L, Long::sum); - int totalSteam = GTMath.saturatedCast((long) Math.ceil(eut * conversionRate)); - if (totalSteam > 0) { - var steam = io == IO.IN ? FluidIngredient.of(GTMaterials.Steam.getFluidTag(), totalSteam) : - FluidIngredient.of(GTMaterials.Steam.getFluid(totalSteam)); - var list = new ArrayList(); - list.add(steam); - var leftSteam = steamTank.handleRecipeInner(io, recipe, list, simulate); - if (leftSteam == null || leftSteam.isEmpty()) return null; - eut = (long) (leftSteam.get(0).getAmount() / conversionRate); + public List handleRecipeInner(IO io, GTRecipe recipe, List left, boolean simulate) { + for (var it = left.listIterator(); it.hasNext();) { + EnergyStack stack = it.next(); + if (stack.isEmpty()) { + it.remove(); + continue; + } + + long totalEU = stack.getTotalEU(); + int totalSteam = GTMath.saturatedCast((long) Math.ceil(totalEU * conversionRate)); + if (totalSteam > 0) { + var steam = io == IO.IN ? FluidIngredient.of(GTMaterials.Steam.getFluidTag(), totalSteam) : + FluidIngredient.of(GTMaterials.Steam.getFluid(totalSteam)); + var list = new ArrayList(); + list.add(steam); + var leftSteam = steamTank.handleRecipeInner(io, recipe, list, simulate); + if (leftSteam == null || leftSteam.isEmpty()) { + it.remove(); + } else { + totalEU = (long) (leftSteam.get(0).getAmount() / conversionRate); + it.set(new EnergyStack(totalEU)); + } + } } - return eut <= 0 ? null : Collections.singletonList(eut); + return left.isEmpty() ? null : left; } @Override @@ -77,7 +84,7 @@ public double getTotalContentAmount() { } @Override - public RecipeCapability getCapability() { + public RecipeCapability getCapability() { return EURecipeCapability.CAP; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java index 28bde9c8fb6..52e8fc65de9 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.common.data.GTMaterials; @@ -10,16 +11,12 @@ import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.world.level.block.state.properties.BooleanProperty; import lombok.Getter; import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/14 - * @implNote SteamMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public abstract class SteamMachine extends MetaMachine implements ITieredMachine { @@ -27,6 +24,8 @@ public abstract class SteamMachine extends MetaMachine implements ITieredMachine protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(SteamMachine.class, MetaMachine.MANAGED_FIELD_HOLDER); + public static final BooleanProperty STEEL_PROPERTY = GTMachineModelProperties.IS_STEEL_MACHINE; + @Getter public final boolean isHighPressure; @Persisted diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java index a4335a700e3..5721c0a9435 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java @@ -42,11 +42,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/14 - * @implNote SteamWorkableMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public abstract class SteamWorkableMachine extends SteamMachine @@ -69,7 +64,6 @@ public abstract class SteamWorkableMachine extends SteamMachine public int activeRecipeType; @Persisted @DescSynced - @Getter @RequireRerender protected Direction outputFacing; @Persisted @@ -136,22 +130,41 @@ public void onUnload() { recipeLogic.inValid(); } + public boolean hasOutputFacing() { + return true; + } + /** * @param outputFacing the facing to set */ public void setOutputFacing(@NotNull Direction outputFacing) { - if (!hasFrontFacing() || this.outputFacing != getFrontFacing()) { + if (hasOutputFacing() && (!hasFrontFacing() || this.outputFacing != getFrontFacing())) { this.outputFacing = outputFacing; } } + public @Nullable Direction getOutputFacing() { + if (hasOutputFacing()) { + return outputFacing; + } + return null; + } + + @Override + public boolean isFacingValid(Direction facing) { + if (facing == getOutputFacing()) { + return false; + } + return super.isFacingValid(facing); + } + @Override protected InteractionResult onWrenchClick(Player playerIn, InteractionHand hand, Direction gridSide, BlockHitResult hitResult) { - if (!playerIn.isShiftKeyDown() && !isRemote()) { + if (!playerIn.isShiftKeyDown()) { if (hasFrontFacing() && gridSide == getFrontFacing()) return InteractionResult.PASS; setOutputFacing(gridSide); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } return super.onWrenchClick(playerIn, hand, gridSide, hitResult); } @@ -182,8 +195,8 @@ public void clientTick() { // ******* Rendering ********// ////////////////////////////////////// @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.WRENCH)) { if (!player.isShiftKeyDown()) { if (!hasFrontFacing() || side != getFrontFacing()) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/FluidTankProxyTrait.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/FluidTankProxyTrait.java index e64af182ba9..19fa260639b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/FluidTankProxyTrait.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/FluidTankProxyTrait.java @@ -15,11 +15,6 @@ import lombok.experimental.Accessors; import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2023/3/16 - * @implNote FluidTankProxyTrait - */ @Accessors(chain = true) public class FluidTankProxyTrait extends MachineTrait implements IFluidHandlerModifiable, ICapabilityTrait { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ICapabilityTrait.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ICapabilityTrait.java index 7b9a1fc1782..9498f67203d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ICapabilityTrait.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ICapabilityTrait.java @@ -2,20 +2,15 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; -/** - * @author KilaBash - * @date 2023/2/25 - * @implNote ICapabilityTrait - */ public interface ICapabilityTrait { IO getCapabilityIO(); default boolean canCapInput() { - return getCapabilityIO() == IO.IN || getCapabilityIO() == IO.BOTH; + return getCapabilityIO().support(IO.IN); } default boolean canCapOutput() { - return getCapabilityIO() == IO.OUT || getCapabilityIO() == IO.BOTH; + return getCapabilityIO().support(IO.OUT); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/IRecipeHandlerTrait.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/IRecipeHandlerTrait.java index 8d46d747168..29e39511ad2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/IRecipeHandlerTrait.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/IRecipeHandlerTrait.java @@ -5,11 +5,6 @@ import com.lowdragmc.lowdraglib.syncdata.ISubscription; -/** - * @author KilaBash - * @date 2023/2/25 - * @implNote IRecipeHandlerTrait - */ public interface IRecipeHandlerTrait extends IRecipeHandler { IO getHandlerIO(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ItemHandlerProxyTrait.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ItemHandlerProxyTrait.java index a398a816b48..169ef746b3d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ItemHandlerProxyTrait.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ItemHandlerProxyTrait.java @@ -16,11 +16,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/3/16 - * @implNote ItemHandlerProxyTrait - */ @Accessors(chain = true) public class ItemHandlerProxyTrait extends MachineTrait implements IItemHandlerModifiable, ICapabilityTrait { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTrait.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTrait.java index f178e128c58..1b9faabef81 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTrait.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTrait.java @@ -1,12 +1,14 @@ package com.gregtechceu.gtceu.api.machine.trait; import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.lowdragmc.lowdraglib.syncdata.IEnhancedManaged; import com.lowdragmc.lowdraglib.syncdata.field.FieldManagedStorage; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; +import net.minecraftforge.client.model.data.ModelData; import lombok.Getter; import lombok.Setter; @@ -16,10 +18,8 @@ import java.util.function.Predicate; /** - * @author KilaBash - * @date 2023/2/18 - * @implNote MachineTrait represents an abstract capability held by machine. Such as item, fluid, energy, etc. - * All trait should be added while MetaMachine is creating. you cannot modify it on the fly。 + * represents an abstract capability held by machine. Such as item, fluid, energy, etc. + * All trait should be added while MetaMachine is creating. you cannot modify it on the fly。 */ public abstract class MachineTrait implements IEnhancedManaged { @@ -50,6 +50,16 @@ public void onMachineLoad() {} public void onMachineUnLoad() {} + public void updateModelData(ModelData.Builder builder) {} + + public MachineRenderState getRenderState() { + return getMachine().getRenderState(); + } + + public void setRenderState(MachineRenderState state) { + getMachine().setRenderState(state); + } + /** * Use for data not able to be saved with the SyncData system, like optional mod compatiblity in internal machines. * diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableEnergyContainer.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableEnergyContainer.java index 27b6effd8d0..a8cf22eccad 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableEnergyContainer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableEnergyContainer.java @@ -11,7 +11,9 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.IExplosionMachine; +import com.gregtechceu.gtceu.api.misc.EnergyContainerList; import com.gregtechceu.gtceu.api.recipe.GTRecipe; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.utils.GTUtil; @@ -32,7 +34,7 @@ import java.util.List; import java.util.function.Predicate; -public class NotifiableEnergyContainer extends NotifiableRecipeHandlerTrait implements IEnergyContainer { +public class NotifiableEnergyContainer extends NotifiableRecipeHandlerTrait implements IEnergyContainer { public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( NotifiableEnergyContainer.class, NotifiableRecipeHandlerTrait.MANAGED_FIELD_HOLDER); @@ -174,7 +176,7 @@ public void serverTick() { if (energyContainer != null && energyContainer.inputsEnergy(oppositeSide)) { amperesUsed += energyContainer.acceptEnergyFromNetwork(oppositeSide, outputVoltage, outputAmperes - amperesUsed); - if (amperesUsed == outputAmperes) break; + if (amperesUsed >= outputAmperes) break; } } if (amperesUsed > 0) { @@ -211,17 +213,17 @@ public boolean dischargeOrRechargeEnergyContainers(IItemHandlerModifiable itemHa } private boolean handleElectricItem(IElectricItem electricItem, boolean simulate) { - var machineTier = GTUtil.getTierByVoltage(Math.max(getInputVoltage(), getOutputVoltage())); - var chargeTier = Math.min(machineTier, electricItem.getTier()); - var chargePercent = getEnergyStored() / (getEnergyCapacity() * 1.0); + int machineTier = GTUtil.getTierByVoltage(Math.max(getInputVoltage(), getOutputVoltage())); + int chargeTier = Math.min(machineTier, electricItem.getTier()); + double chargePercent = (double) getEnergyStored() / (getEnergyCapacity() * 1.0); // Check if the item is a battery (or similar), and if we can receive some amount of energy if (electricItem.canProvideChargeExternally() && getEnergyCanBeInserted() > 0) { - // Drain from the battery if we are below half energy capacity, and if the tier matches - if (chargePercent <= 0.5 && chargeTier == machineTier) { - long dischargedBy = electricItem.discharge(getEnergyCanBeInserted(), machineTier, false, true, - simulate); + // Drain from the battery if we are below 1/3rd energy capacity, and if the tier matches + if (chargePercent <= 0.33 && chargeTier == machineTier) { + long dischargedBy = electricItem.discharge(getEnergyCanBeInserted(), machineTier, + false, true, simulate); if (!simulate) { addEnergy(dischargedBy); } @@ -229,9 +231,9 @@ private boolean handleElectricItem(IElectricItem electricItem, boolean simulate) } } - // Else, check if we have above 65% power - if (chargePercent > 0.65) { - long chargedBy = electricItem.charge(getEnergyStored(), chargeTier, false, simulate); + // Else, check if we have above 2/3rds charge + if (chargePercent > 0.66) { + long chargedBy = electricItem.charge(getEnergyStored(), chargeTier, false, false); if (!simulate) { removeEnergy(chargedBy); } @@ -244,7 +246,7 @@ private boolean handleForgeEnergyItem(IEnergyStorage energyStorage, boolean simu int machineTier = GTUtil.getTierByVoltage(Math.max(getInputVoltage(), getOutputVoltage())); double chargePercent = getEnergyStored() / (getEnergyCapacity() * 1.0); - if (chargePercent > 0.65) { // 2/3rds full + if (chargePercent > 0.66) { // 2/3rds full long chargedBy = FeCompat.insertEu(energyStorage, GTValues.V[machineTier], simulate); if (!simulate) { removeEnergy(chargedBy); @@ -303,28 +305,38 @@ public long changeEnergy(long energyToAdd) { } @Override - public List handleRecipeInner(IO io, GTRecipe recipe, List left, boolean simulate) { - IEnergyContainer capability = this; - long sum = left.stream().reduce(0L, Long::sum); - if (io == IO.IN) { - var canOutput = capability.getEnergyStored(); - if (!simulate) { - capability.addEnergy(-Math.min(canOutput, sum)); + public List handleRecipeInner(IO io, GTRecipe recipe, List left, boolean simulate) { + for (var it = left.listIterator(); it.hasNext();) { + EnergyStack stack = it.next(); + if (stack.isEmpty()) { + it.remove(); + continue; } - sum = sum - canOutput; - } else if (io == IO.OUT) { - long canInput = capability.getEnergyCapacity() - capability.getEnergyStored(); + + long totalEU = stack.getTotalEU(); + long canTransfer = Math.min(totalEU, (io == IO.IN ? this.getEnergyStored() : + this.getEnergyCapacity() - this.getEnergyStored())); if (!simulate) { - capability.addEnergy(Math.min(canInput, sum)); + // invert the EU value if we're doing inputs (inputting *to the recipe* -> removing from handlers) + this.changeEnergy(io == IO.IN ? -canTransfer : canTransfer); } - sum = sum - canInput; + + totalEU -= canTransfer; + if (totalEU <= 0) { + it.remove(); + } else { + it.set(new EnergyStack(totalEU)); + } + } - return sum <= 0 ? null : Collections.singletonList(sum); + + return left.isEmpty() ? null : left; } @Override public @NotNull List getContents() { - return List.of(energyStored); + long amperage = Math.max(getInputAmperage(), getOutputAmperage()); + return Collections.singletonList(EnergyContainerList.calculateVoltageAmperage(getEnergyStored(), amperage)); } @Override @@ -333,7 +345,7 @@ public double getTotalContentAmount() { } @Override - public RecipeCapability getCapability() { + public RecipeCapability getCapability() { return EURecipeCapability.CAP; } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java index 41136327398..5a60fd557f7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java @@ -6,6 +6,7 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; +import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderFluidIngredient; import com.gregtechceu.gtceu.api.transfer.fluid.CustomFluidTank; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; import com.gregtechceu.gtceu.utils.GTTransferUtils; @@ -24,11 +25,6 @@ import java.util.*; import java.util.function.Predicate; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote NotifiableFluidTank - */ public class NotifiableFluidTank extends NotifiableRecipeHandlerTrait implements ICapabilityTrait, IFluidHandlerModifiable { @@ -85,7 +81,6 @@ public NotifiableFluidTank(MetaMachine machine, List storages, this(machine, storages, io, io); } - // TODO Kross: See if this can be decoupled from CustomFluidTank public void onContentsChanged() { isEmpty = null; notifyListeners(); @@ -102,6 +97,14 @@ public List handleRecipeInner(IO io, GTRecipe recipe, List {}); + } + boolean changed = false; + FluidAction action = simulate ? FluidAction.SIMULATE : FluidAction.EXECUTE; // Store the FluidStack in each slot after an operation // Necessary for simulation since we don't actually modify the slot's contents @@ -114,68 +117,108 @@ public List handleRecipeInner(IO io, GTRecipe recipe, List 0) { + visited[tank] = output.copy(); + // shortcut for oldAmount + filled (wow what an idea) + visited[tank].setAmount(existing.getFluidAmount()); + changed = true; } + amount -= filled; + + if (amount > 0) ingredient.setAmount(amount); + else it.remove(); // Continue to next ingredient regardless of if we filled this ingredient completely continue; } } for (int tank = 0; tank < storages.length; ++tank) { - FluidStack stored = getFluidInTank(tank); - int amount = (visited[tank] == null ? stored.getAmount() : visited[tank].getAmount()); + FluidStack current = visited[tank] == null ? getFluidInTank(tank) : visited[tank]; + int count = current.getAmount(); + if (io == IO.IN) { - if (amount == 0) continue; - if ((visited[tank] == null && ingredient.test(stored)) || ingredient.test(visited[tank])) { - var drained = storages[tank].drain(ingredient.getAmount(), action); - if (drained.getAmount() > 0) { + if (current.isEmpty()) continue; + if (ingredient.test(current)) { + var drained = storages[tank].drain(Math.min(count, amount), action); + if (!drained.isEmpty()) { visited[tank] = drained.copy(); - visited[tank].setAmount(amount - drained.getAmount()); - ingredient.shrink(drained.getAmount()); + visited[tank].setAmount(count - drained.getAmount()); + changed = true; } + amount -= drained.getAmount(); } - } else { // IO.OUT && No tank already has this output + } else { // IO.OUT && allow same fluids FluidStack output = fluids[0].copy(); - output.setAmount(ingredient.getAmount()); + output.setAmount(amount); if (visited[tank] == null || visited[tank].isFluidEqual(output)) { - int filled = storages[tank].fill(output, action); - if (filled > 0) { - visited[tank] = output.copy(); - visited[tank].setAmount(filled); - ingredient.shrink(filled); - if (!allowSameFluids) { - if (ingredient.getAmount() <= 0) it.remove(); - break; + if (count < storages[tank].getCapacity()) { + int filled = storages[tank].fill(output, action); + if (filled > 0) { + visited[tank] = output.copy(); + visited[tank].setAmount(count + filled); + changed = true; + amount -= filled; + + if (!allowSameFluids) { + if (amount <= 0) it.remove(); + break; + } } } } } - if (ingredient.getAmount() <= 0) { + if (amount <= 0) { it.remove(); break; } } + // Modify ingredient if we didn't finish it off + if (amount > 0) { + ingredient.setAmount(amount); + } } + + for (int i = 0; i < storages.length; i++) { + storages[i].setOnContentsChanged(listeners[i]); + if (changed && action.execute()) listeners[i].run(); + } + return left.isEmpty() ? null : left; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java index ad90200e286..f59c2aa3e1f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java @@ -33,11 +33,6 @@ import java.util.function.IntFunction; import java.util.function.Predicate; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote NotifiableItemStackHandler - */ public class NotifiableItemStackHandler extends NotifiableRecipeHandlerTrait implements ICapabilityTrait, IItemHandlerModifiable { @@ -99,6 +94,12 @@ public static List handleRecipe(IO io, GTRecipe recipe, List {}); + boolean changed = false; + // Store the ItemStack in each slot after an operation // Necessary for simulation since we don't actually modify the slot's contents // Doesn't hurt for execution, and definitely cheaper than copying the entire storage @@ -110,31 +111,61 @@ public static List handleRecipe(IO io, GTRecipe recipe, List outputStorageLimit) { + it.remove(); + continue; + } else if (simulate) { + amount = provider.getCountProvider().getMaxValue(); + } else { + amount = Math.min(output.getCount(), outputStorageLimit); + } + } else { + items = ingredient.getItems(); + if (items.length == 0 || items[0].isEmpty()) { + it.remove(); + continue; + } + if (ingredient instanceof SizedIngredient si) amount = si.getAmount(); + else amount = items[0].getCount(); + } for (int slot = 0; slot < storage.getSlots(); ++slot) { - ItemStack stored = storage.getStackInSlot(slot); - int count = (visited[slot] == null ? stored.getCount() : visited[slot].getCount()); + ItemStack current = visited[slot] == null ? storage.getStackInSlot(slot) : visited[slot]; + int count = current.getCount(); if (io == IO.IN) { - if (count == 0) continue; - if ((visited[slot] == null && ingredient.test(stored)) || ingredient.test(visited[slot])) { + if (current.isEmpty()) continue; + if (ingredient.test(current)) { var extracted = getActioned(storage, slot, recipe.ingredientActions); if (extracted == null) extracted = storage.extractItem(slot, Math.min(count, amount), simulate); if (!extracted.isEmpty()) { + changed = true; visited[slot] = extracted.copyWithCount(count - extracted.getCount()); } amount -= extracted.getCount(); @@ -142,11 +173,12 @@ public static List handleRecipe(IO io, GTRecipe recipe, List handleRecipe(IO io, GTRecipe recipe, List actions) { + private static @Nullable ItemStack getActioned(CustomItemStackHandler storage, int index, List actions) { if (!GTCEu.Mods.isKubeJSLoaded()) return null; // noinspection unchecked var actioned = KJSCallWrapper.applyIngredientAction(storage, index, (List) actions); @@ -262,7 +297,7 @@ public ItemStack getStackInSlot(int slot) { } @Override - public void setStackInSlot(int index, ItemStack stack) { + public void setStackInSlot(int index, @NotNull ItemStack stack) { storage.setStackInSlot(index, stack); } @@ -307,7 +342,6 @@ public static class KJSCallWrapper { public static ItemStack applyIngredientAction(CustomItemStackHandler storage, int index, List ingredientActions) { var stack = storage.getStackInSlot(index); - if (stack.isEmpty()) { return ItemStack.EMPTY; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableRecipeHandlerTrait.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableRecipeHandlerTrait.java index c916120b306..476a92cccc6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableRecipeHandlerTrait.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableRecipeHandlerTrait.java @@ -13,11 +13,6 @@ import java.util.ArrayList; import java.util.List; -/** - * @author KilaBash - * @date 2023/2/27 - * @implNote NotifiableTrait - */ public abstract class NotifiableRecipeHandlerTrait extends MachineTrait implements IRecipeHandlerTrait { public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeAmperageEnergyContainer.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeAmperageEnergyContainer.java new file mode 100644 index 00000000000..ffe4e3b27c9 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeAmperageEnergyContainer.java @@ -0,0 +1,51 @@ +package com.gregtechceu.gtceu.api.machine.trait; + +import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; + +public class RecipeAmperageEnergyContainer extends NotifiableEnergyContainer { + + protected final IRecipeLogicMachine machine; + + public RecipeAmperageEnergyContainer(IRecipeLogicMachine machine, long maxCapacity, + long maxInputVoltage, long maxInputAmperage, + long maxOutputVoltage, long maxOutputAmperage) { + super(machine.self(), maxCapacity, maxInputVoltage, maxInputAmperage, maxOutputVoltage, maxOutputAmperage); + this.machine = machine; + } + + public static RecipeAmperageEnergyContainer makeEmitterContainer(IRecipeLogicMachine machine, long maxCapacity, + long maxOutputVoltage, long maxOutputAmperage) { + return new RecipeAmperageEnergyContainer(machine, maxCapacity, 0L, 0L, maxOutputVoltage, maxOutputAmperage); + } + + public static RecipeAmperageEnergyContainer makeReceiverContainer(IRecipeLogicMachine machine, long maxCapacity, + long maxInputVoltage, long maxInputAmperage) { + return new RecipeAmperageEnergyContainer(machine, maxCapacity, maxInputVoltage, maxInputAmperage, 0L, 0L); + } + + @Override + public long getInputAmperage() { + var lastRecipe = machine.getRecipeLogic().getLastRecipe(); + long amperage; + if (lastRecipe != null) { + amperage = lastRecipe.getInputEUt().amperage(); + } else { + amperage = super.getInputAmperage(); + } + if (getEnergyCapacity() / 2 > getEnergyStored() && machine.getRecipeLogic().isActive()) { + return amperage + 1; + } else { + return amperage; + } + } + + @Override + public long getOutputAmperage() { + var lastRecipe = machine.getRecipeLogic().getLastRecipe(); + if (lastRecipe != null) { + return lastRecipe.getOutputEUt().amperage(); + } else { + return super.getOutputAmperage(); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerGroup.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerGroup.java new file mode 100644 index 00000000000..256246aa8ea --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerGroup.java @@ -0,0 +1,10 @@ +package com.gregtechceu.gtceu.api.machine.trait; + +public interface RecipeHandlerGroup { + + @Override + boolean equals(Object o); + + @Override + int hashCode(); +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerGroupColor.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerGroupColor.java new file mode 100644 index 00000000000..99314feb0c8 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerGroupColor.java @@ -0,0 +1,7 @@ +package com.gregtechceu.gtceu.api.machine.trait; + +public record RecipeHandlerGroupColor(int color) implements RecipeHandlerGroup { + + // Note: An un-dyed hatch is the same as an "indistinct" hatch. + public static final RecipeHandlerGroup UNDYED = new RecipeHandlerGroupColor(-1); +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerGroupDistinctness.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerGroupDistinctness.java new file mode 100644 index 00000000000..d853244ba7b --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerGroupDistinctness.java @@ -0,0 +1,6 @@ +package com.gregtechceu.gtceu.api.machine.trait; + +public enum RecipeHandlerGroupDistinctness implements RecipeHandlerGroup { + BUS_DISTINCT, + BYPASS_DISTINCT +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerList.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerList.java index f0a9099c03f..090c250e781 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerList.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerList.java @@ -9,6 +9,7 @@ import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap; import lombok.Getter; +import lombok.Setter; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; @@ -34,12 +35,24 @@ public class RecipeHandlerList { @Getter private final IO handlerIO; @Getter - private boolean isDistinct = false; + private int color = -1; + + @Setter + @Getter + @NotNull + private RecipeHandlerGroup group = RecipeHandlerGroupColor.UNDYED; protected RecipeHandlerList(IO handlerIO) { this.handlerIO = handlerIO; } + public static RecipeHandlerList of(IO io, int color, IRecipeHandler... handlers) { + RecipeHandlerList rhl = new RecipeHandlerList(io); + rhl.addHandlers(handlers); + rhl.setColor(color); + return rhl; + } + public static RecipeHandlerList of(IO io, IRecipeHandler... handlers) { RecipeHandlerList rhl = new RecipeHandlerList(io); rhl.addHandlers(handlers); @@ -52,6 +65,13 @@ public static RecipeHandlerList of(IO io, Iterable> handlers) return rhl; } + public static RecipeHandlerList of(IO io, int color, Iterable> handlers) { + RecipeHandlerList rhl = new RecipeHandlerList(io); + rhl.addHandlers(handlers); + rhl.setColor(color); + return rhl; + } + public void addHandler(IRecipeHandler handler) { addHandlers(List.of(handler)); } @@ -66,7 +86,7 @@ public void addHandlers(Iterable> handlers) { allHandlers.add(handler); if (handler instanceof NotifiableRecipeHandlerTrait rht) allHandlerTraits.add(rht); } - if (handlerIO == IO.OUT) sort(); + if (handlerIO.support(IO.OUT)) sort(); } private void sort() { @@ -84,15 +104,37 @@ public final void setDistinct(boolean distinct) { } protected void setDistinct(boolean distinct, boolean notify) { - if (isDistinct != distinct) { - isDistinct = distinct; + boolean currentDistinct = isDistinct(); + if (currentDistinct != distinct) { + this.group = currentDistinct ? new RecipeHandlerGroupColor(color) : + RecipeHandlerGroupDistinctness.BUS_DISTINCT; for (var rht : allHandlerTraits) { - rht.setDistinct(isDistinct); + rht.setDistinct(distinct); if (notify) rht.notifyListeners(); } } } + public boolean isDistinct() { + return this.group == RecipeHandlerGroupDistinctness.BUS_DISTINCT; + } + + public void setColor(int color) { + setColor(color, false); + } + + public void setColor(int color, boolean notify) { + this.color = color; + if (this.group != RecipeHandlerGroupDistinctness.BUS_DISTINCT) { + this.group = new RecipeHandlerGroupColor(color); + } + if (notify) { + for (var rht : allHandlerTraits) { + rht.notifyListeners(); + } + } + } + public boolean hasCapability(RecipeCapability cap) { return getHandlerMap().containsKey(cap); } @@ -101,6 +143,20 @@ public boolean hasCapability(RecipeCapability cap) { return getHandlerMap().getOrDefault(cap, Collections.emptyList()); } + public @NotNull Set> getCapabilities() { + return getHandlerMap().keySet(); + } + + /** + * @return whether any of the capabilities in this RHL should bypass distinct checks + */ + public boolean doesCapabilityBypassDistinct() { + for (var capability : getCapabilities()) { + if (capability.shouldBypassDistinct()) return true; + } + return false; + } + public boolean isValid(IO extIO) { if (this == NO_DATA || handlerIO == IO.NONE) return false; return (extIO == IO.BOTH || handlerIO == IO.BOTH || extIO == handlerIO); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java index 168e2f99fb2..facc3d24e89 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.capability.IWorkable; +import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.gui.GuiTextures; @@ -9,12 +10,12 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.recipe.ActionResult; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.sound.AutoReleasedSound; -import com.gregtechceu.gtceu.config.ConfigHolder; import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; import com.lowdragmc.lowdraglib.syncdata.IEnhancedManaged; @@ -27,7 +28,9 @@ import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; +import net.minecraft.util.StringRepresentable; import net.minecraft.world.item.crafting.RecipeManager; +import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -42,13 +45,22 @@ public class RecipeLogic extends MachineTrait implements IEnhancedManaged, IWorkable, IFancyTooltip { - public enum Status { - IDLE, - WORKING, - WAITING, - SUSPEND + public enum Status implements StringRepresentable { + + IDLE("idle"), + WORKING("working"), + WAITING("waiting"), + SUSPEND("suspend"); + + @Getter + private final String serializedName; + + Status(String name) { + this.serializedName = name; + } } + public static final EnumProperty STATUS_PROPERTY = GTMachineModelProperties.RECIPE_LOGIC_STATUS; public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(RecipeLogic.class); public final IRecipeLogicMachine machine; @@ -102,8 +114,11 @@ public enum Status { @Persisted @Getter protected long totalContinuousRunningTime; + protected int runAttempt = 0; + protected int runDelay = 0; @Persisted @Setter + @Getter protected boolean suspendAfterFinish = false; @Getter protected final Map, Object2IntMap> chanceCaches = makeChanceCaches(); @@ -115,21 +130,15 @@ public RecipeLogic(IRecipeLogicMachine machine) { this.machine = machine; } - @OnlyIn(Dist.CLIENT) @SuppressWarnings("unused") protected void onStatusSynced(Status newValue, Status oldValue) { - getMachine().scheduleRenderUpdate(); + scheduleRenderUpdate(); updateSound(); } - @OnlyIn(Dist.CLIENT) + @SuppressWarnings("unused") protected void onActiveSynced(boolean newActive, boolean oldActive) { - getMachine().scheduleRenderUpdate(); - } - - @Override - public void scheduleRenderUpdate() { - getMachine().scheduleRenderUpdate(); + scheduleRenderUpdate(); } /** @@ -144,8 +153,9 @@ public void resetRecipeLogic() { duration = 0; isActive = false; lastFailedMatches = null; - if (status != Status.SUSPEND) - status = Status.IDLE; + if (status != Status.SUSPEND) { + setStatus(Status.IDLE); + } updateTickSubscription(); } @@ -181,7 +191,11 @@ public void serverTick() { if (!isSuspend()) { if (!isIdle() && lastRecipe != null) { if (progress < duration) { - handleRecipeWorking(); + if (runDelay > 0) { + runDelay--; + } else { + handleRecipeWorking(); + } } if (progress >= duration) { onRecipeFinish(); @@ -214,13 +228,7 @@ public void serverTick() { } protected ActionResult matchRecipe(GTRecipe recipe) { - var match = RecipeHelper.matchRecipe(machine, recipe); - if (!match.isSuccess()) return match; - - var matchTick = RecipeHelper.matchTickRecipe(machine, recipe); - if (!matchTick.isSuccess()) return matchTick; - - return ActionResult.SUCCESS; + return RecipeHelper.matchContents(machine, recipe); } protected ActionResult checkRecipe(GTRecipe recipe) { @@ -247,7 +255,6 @@ public boolean checkMatchedRecipeAvailable(GTRecipe match) { } public void handleRecipeWorking() { - Status last = this.status; assert lastRecipe != null; var conditionResult = RecipeHelper.checkConditions(lastRecipe, this); if (conditionResult.isSuccess()) { @@ -262,6 +269,16 @@ public void handleRecipeWorking() { totalContinuousRunningTime++; } else { setWaiting(handleTick.reason()); + + // Machine isn't getting enough power, suspend after 5 attempts. + if (conditionResult.io() == IO.IN && conditionResult.capability() == EURecipeCapability.CAP) { + runAttempt++; + if (runAttempt > 5) { + runAttempt = 0; + setStatus(Status.SUSPEND); + } + runDelay = runAttempt * 10; + } } } else { setWaiting(conditionResult.reason()); @@ -269,20 +286,11 @@ public void handleRecipeWorking() { if (isWaiting()) { regressRecipe(); } - if (last == Status.WORKING && getStatus() != Status.WORKING) { - RecipeHelper.postWorking(machine, lastRecipe); - } else if (last != Status.WORKING && getStatus() == Status.WORKING) { - RecipeHelper.preWorking(machine, lastRecipe); - } } protected void regressRecipe() { if (progress > 0 && machine.regressWhenWaiting()) { - if (ConfigHolder.INSTANCE.machines.recipeProgressLowEnergy) { - this.progress = 1; - } else { - this.progress = Math.max(1, progress - 2); - } + this.progress = 1; } } @@ -345,7 +353,6 @@ public void setupRecipe(GTRecipe recipe) { isActive = false; return; } - RecipeHelper.preWorking(machine, recipe); var handledIO = handleRecipeIO(recipe, IO.IN); if (handledIO.isSuccess()) { if (lastRecipe != null && !recipe.equals(lastRecipe)) { @@ -365,8 +372,12 @@ public void setStatus(Status status) { if (this.status == Status.WORKING) { this.totalContinuousRunningTime = 0; } + if (status == Status.SUSPEND && suspendAfterFinish) { + suspendAfterFinish = false; + } machine.notifyStatusChanged(this.status, status); this.status = status; + setRenderState(getRenderState().setValue(GTMachineModelProperties.RECIPE_LOGIC_STATUS, status)); updateTickSubscription(); if (this.status != Status.WAITING) { waitingReason = null; @@ -405,14 +416,13 @@ public boolean isSuspend() { } public boolean isWorkingEnabled() { - return !isSuspend(); + return !isSuspend() && !isSuspendAfterFinish(); } @Override public void setWorkingEnabled(boolean isWorkingAllowed) { - if (!isWorkingAllowed) { - setStatus(Status.SUSPEND); - } else { + setSuspendAfterFinish(!isWorkingAllowed); + if (isWorkingAllowed) { if (lastRecipe != null && duration > 0) { setStatus(Status.WORKING); } else { @@ -433,8 +443,9 @@ public boolean isActive() { public void onRecipeFinish() { machine.afterWorking(); if (lastRecipe != null) { + runAttempt = 0; + runDelay = 0; consecutiveRecipes++; - RecipeHelper.postWorking(machine, lastRecipe); handleRecipeIO(lastRecipe, IO.OUT); if (machine.alwaysTryModifyRecipe()) { if (lastOriginRecipe != null) { @@ -449,14 +460,17 @@ public void onRecipeFinish() { } } // try it again - if (!recipeDirty && !suspendAfterFinish && checkRecipe(lastRecipe).isSuccess()) { + var recipeCheck = checkRecipe(lastRecipe); + if (!recipeDirty && !suspendAfterFinish && recipeCheck.isSuccess()) { setupRecipe(lastRecipe); } else { if (suspendAfterFinish) { setStatus(Status.SUSPEND); - suspendAfterFinish = false; } else { setStatus(Status.IDLE); + if (recipeCheck.io() != IO.IN || recipeCheck.capability() == EURecipeCapability.CAP) { + waitingReason = recipeCheck.reason(); + } } consecutiveRecipes = 0; progress = 0; @@ -480,18 +494,14 @@ protected ActionResult handleTickRecipeIO(GTRecipe recipe, IO io) { public void interruptRecipe() { machine.afterWorking(); if (lastRecipe != null) { - RecipeHelper.postWorking(machine, lastRecipe); setStatus(Status.IDLE); progress = 0; duration = 0; } } - public void inValid() { - if (lastRecipe != null && isWorking()) { - RecipeHelper.postWorking(machine, lastRecipe); - } - } + // Remains for legacy + for subclasses + public void inValid() {} @Override public ManagedFieldHolder getFieldHolder() { @@ -527,7 +537,7 @@ public void updateSound() { @Override public IGuiTexture getFancyTooltipIcon() { - if (isWaiting()) { + if (waitingReason != null) { return GuiTextures.INSUFFICIENT_INPUT; } return IGuiTexture.EMPTY; @@ -535,7 +545,7 @@ public IGuiTexture getFancyTooltipIcon() { @Override public List getFancyTooltip() { - if (isWaiting() && waitingReason != null) { + if (waitingReason != null) { return List.of(waitingReason); } return Collections.emptyList(); @@ -543,7 +553,7 @@ public List getFancyTooltip() { @Override public boolean showFancyTooltip() { - return isWaiting(); + return waitingReason != null; } protected Map, Object2IntMap> makeChanceCaches() { @@ -562,7 +572,7 @@ public void saveCustomPersistedData(@NotNull CompoundTag tag, boolean forDrop) { ListTag cacheTag = new ListTag(); for (var entry : cache.object2IntEntrySet()) { CompoundTag compoundTag = new CompoundTag(); - var obj = cap.serializer.toNbtGeneric(cap.of(entry.getKey())); + var obj = cap.contentToNbt(entry.getKey()); compoundTag.put("entry", obj); compoundTag.putInt("cached_chance", entry.getIntValue()); cacheTag.add(compoundTag); @@ -595,7 +605,7 @@ public void loadCustomPersistedData(@NotNull CompoundTag tag) { ListTag cacheTag = new ListTag(); for (var entry : cache.object2IntEntrySet()) { CompoundTag compoundTag = new CompoundTag(); - var obj = cap.serializer.toNbtGeneric(cap.of(entry.getKey())); + var obj = cap.contentToNbt(entry.getKey()); compoundTag.put("entry", obj); compoundTag.putInt("cached_chance", entry.getIntValue()); cacheTag.add(compoundTag); diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/EnergyContainerList.java b/src/main/java/com/gregtechceu/gtceu/api/misc/EnergyContainerList.java index f4b0c6c0aaf..034603a682a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/misc/EnergyContainerList.java +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/EnergyContainerList.java @@ -1,11 +1,11 @@ package com.gregtechceu.gtceu.api.misc; import com.gregtechceu.gtceu.api.capability.IEnergyContainer; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import net.minecraft.core.Direction; import lombok.Getter; -import org.jetbrains.annotations.NotNull; import java.util.List; @@ -57,12 +57,12 @@ public EnergyContainerList(List energyContainerList) } } - long[] voltageAmperage = calculateVoltageAmperage(totalInputVoltage, inputAmperage); - this.inputVoltage = voltageAmperage[0]; - this.inputAmperage = voltageAmperage[1]; + EnergyStack voltageAmperage = calculateVoltageAmperage(totalInputVoltage, inputAmperage); + this.inputVoltage = voltageAmperage.voltage(); + this.inputAmperage = voltageAmperage.amperage(); voltageAmperage = calculateVoltageAmperage(totalOutputVoltage, outputAmperage); - this.outputVoltage = voltageAmperage[0]; - this.outputAmperage = voltageAmperage[1]; + this.outputVoltage = voltageAmperage.voltage(); + this.outputAmperage = voltageAmperage.amperage(); this.highestInputVoltage = highestInputVoltage; this.numHighestInputContainers = numHighestInputContainers; } @@ -73,10 +73,9 @@ public EnergyContainerList(List energyContainerList) * @param voltage the sum of voltage * amperage for each hatch * @param amperage the total amperage of all hatches * - * @return [newVoltage, newAmperage] + * @return EnergyStack */ - @NotNull - private static long[] calculateVoltageAmperage(long voltage, long amperage) { + public static EnergyStack calculateVoltageAmperage(long voltage, long amperage) { if (voltage > 1 && amperage > 1) { // don't operate if there is no voltage or no amperage if (hasPrimeFactorGreaterThanTwo(amperage)) { @@ -104,7 +103,7 @@ private static long[] calculateVoltageAmperage(long voltage, long amperage) { amperage = 1; } } - return new long[] { voltage, amperage }; + return new EnergyStack(voltage, amperage); } private static boolean hasPrimeFactorGreaterThanTwo(long l) { @@ -133,10 +132,9 @@ private static boolean isPowerOfFour(long l) { @Override public long acceptEnergyFromNetwork(Direction side, long voltage, long amperage) { long amperesUsed = 0L; - List energyContainerList = this.energyContainerList; - for (IEnergyContainer iEnergyContainer : energyContainerList) { - amperesUsed += iEnergyContainer.acceptEnergyFromNetwork(null, voltage, amperage); - if (amperage == amperesUsed) { + for (IEnergyContainer container : this.energyContainerList) { + amperesUsed += container.acceptEnergyFromNetwork(null, voltage, amperage); + if (amperesUsed >= amperage) { return amperesUsed; } } @@ -146,9 +144,8 @@ public long acceptEnergyFromNetwork(Direction side, long voltage, long amperage) @Override public long changeEnergy(long energyToAdd) { long energyAdded = 0L; - List energyContainerList = this.energyContainerList; - for (IEnergyContainer iEnergyContainer : energyContainerList) { - energyAdded += iEnergyContainer.changeEnergy(energyToAdd - energyAdded); + for (IEnergyContainer container : this.energyContainerList) { + energyAdded += container.changeEnergy(energyToAdd - energyAdded); if (energyAdded == energyToAdd) { return energyAdded; } @@ -159,8 +156,8 @@ public long changeEnergy(long energyToAdd) { @Override public long getEnergyStored() { long energyStored = 0L; - for (IEnergyContainer iEnergyContainer : energyContainerList) { - energyStored += iEnergyContainer.getEnergyStored(); + for (IEnergyContainer container : energyContainerList) { + energyStored += container.getEnergyStored(); } return energyStored; } @@ -168,8 +165,8 @@ public long getEnergyStored() { @Override public long getEnergyCapacity() { long energyCapacity = 0L; - for (IEnergyContainer iEnergyContainer : energyContainerList) { - energyCapacity += iEnergyContainer.getEnergyCapacity(); + for (IEnergyContainer container : energyContainerList) { + energyCapacity += container.getEnergyCapacity(); } return energyCapacity; } @@ -187,9 +184,8 @@ public boolean outputsEnergy(Direction side) { @Override public long getInputPerSec() { long sum = 0; - List energyContainerList = this.energyContainerList; - for (IEnergyContainer iEnergyContainer : energyContainerList) { - sum += iEnergyContainer.getInputPerSec(); + for (IEnergyContainer container : this.energyContainerList) { + sum += container.getInputPerSec(); } return sum; } @@ -197,9 +193,8 @@ public long getInputPerSec() { @Override public long getOutputPerSec() { long sum = 0; - List energyContainerList = this.energyContainerList; - for (IEnergyContainer iEnergyContainer : energyContainerList) { - sum += iEnergyContainer.getOutputPerSec(); + for (IEnergyContainer container : this.energyContainerList) { + sum += container.getOutputPerSec(); } return sum; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/EnergyInfoProviderList.java b/src/main/java/com/gregtechceu/gtceu/api/misc/EnergyInfoProviderList.java index 5001abd9e6f..a0197e1e411 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/misc/EnergyInfoProviderList.java +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/EnergyInfoProviderList.java @@ -34,6 +34,24 @@ public EnergyInfo getEnergyInfo() { return new EnergyInfo(capacity, stored); } + @Override + public long getInputPerSec() { + long sum = 0; + for (IEnergyInfoProvider eip : list) { + sum += eip.getInputPerSec(); + } + return sum; + } + + @Override + public long getOutputPerSec() { + long sum = 0; + for (IEnergyInfoProvider eip : list) { + sum += eip.getOutputPerSec(); + } + return sum; + } + @Override public boolean supportsBigIntEnergyValues() { return list.size() > 1; diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/IOFluidHandlerList.java b/src/main/java/com/gregtechceu/gtceu/api/misc/IOFluidHandlerList.java index f5dc08904cc..5cd23c9039e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/misc/IOFluidHandlerList.java +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/IOFluidHandlerList.java @@ -13,11 +13,6 @@ import java.util.List; import java.util.function.Predicate; -/** - * @author KilaBash - * @date 2023/3/14 - * @implNote IOFluidTransferList - */ public class IOFluidHandlerList extends FluidHandlerList implements IFluidHandlerModifiable { @Getter diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/IgnoreEnergyRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/api/misc/IgnoreEnergyRecipeHandler.java index bdb2ba3e081..37ec078d7ba 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/misc/IgnoreEnergyRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/IgnoreEnergyRecipeHandler.java @@ -5,21 +5,22 @@ import com.gregtechceu.gtceu.api.capability.recipe.IRecipeHandler; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.recipe.GTRecipe; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import org.jetbrains.annotations.NotNull; import java.util.List; -public class IgnoreEnergyRecipeHandler implements IRecipeHandler { +public class IgnoreEnergyRecipeHandler implements IRecipeHandler { @Override - public List handleRecipeInner(IO io, GTRecipe recipe, List left, boolean simulate) { + public List handleRecipeInner(IO io, GTRecipe recipe, List left, boolean simulate) { return null; } @Override public @NotNull List getContents() { - return List.of(Long.MAX_VALUE); + return List.of(EnergyStack.MAX); } @Override @@ -28,7 +29,7 @@ public double getTotalContentAmount() { } @Override - public RecipeCapability getCapability() { + public RecipeCapability getCapability() { return EURecipeCapability.CAP; } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/ImageCache.java b/src/main/java/com/gregtechceu/gtceu/api/misc/ImageCache.java new file mode 100644 index 00000000000..de9b8410f25 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/ImageCache.java @@ -0,0 +1,62 @@ +package com.gregtechceu.gtceu.api.misc; + +import com.gregtechceu.gtceu.GTCEu; + +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.function.Consumer; + +public class ImageCache { + + public static final long REFRESH_SECS = 120; + public static final long EXPIRE_SECS = 300; + private static final byte[] NULL_MARKER = new byte[0]; + + private static boolean downloading = false; + + private static final LoadingCache CACHE = CacheBuilder.newBuilder() + .refreshAfterWrite(REFRESH_SECS, TimeUnit.SECONDS) + .expireAfterAccess(EXPIRE_SECS, TimeUnit.SECONDS) + .concurrencyLevel(3) + .build(CacheLoader.from(url -> { + if (downloading) return NULL_MARKER; + downloading = true; + + try (InputStream stream = new URL(url).openStream()) { + return stream.readAllBytes(); + } catch (IOException e) { + GTCEu.LOGGER.error("Could not load image {}", url, e); + downloading = false; + return NULL_MARKER; + } finally { + GTCEu.LOGGER.debug("Downloaded image {}! Executing callback", url); + downloading = false; + } + })); + + public static void queryServerImage(String url, Consumer callback) { + try { + if (downloading) return; + + byte[] image = CACHE.get(url); + if (image != NULL_MARKER) { + callback.accept(image); + } else { + CACHE.invalidate(url); + } + } catch (ExecutionException e) { + Throwable t = e; + if (t.getCause() != null) { + t = t.getCause(); + } + GTCEu.LOGGER.error("Could not load image {}", url, t); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/ItemRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/api/misc/ItemRecipeHandler.java index 47dc77e0f8e..64bc1a0f32a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/misc/ItemRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/ItemRecipeHandler.java @@ -17,11 +17,6 @@ import java.util.ArrayList; import java.util.List; -/** - * @author KilaBash - * @date 2023/7/13 - * @implNote ItemRecipeHandler - */ public class ItemRecipeHandler implements IRecipeHandler { @Getter diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/forge/FilteredFluidHandlerItemStack.java b/src/main/java/com/gregtechceu/gtceu/api/misc/forge/FilteredFluidHandlerItemStack.java index fde82d03cce..3ad31910d16 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/misc/forge/FilteredFluidHandlerItemStack.java +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/forge/FilteredFluidHandlerItemStack.java @@ -10,7 +10,7 @@ public class FilteredFluidHandlerItemStack extends FluidHandlerItemStack { - Predicate filter; + protected final Predicate filter; /** * @param container The container itemStack, data is stored on it directly as NBT. @@ -22,26 +22,6 @@ public FilteredFluidHandlerItemStack(@NotNull ItemStack container, int capacity, this.filter = filter; } - @Override - public @NotNull FluidStack drain(FluidStack resource, FluidAction action) { - FluidStack drained = super.drain(resource, action); - this.removeTagWhenEmpty(action); - return drained; - } - - @Override - public @NotNull FluidStack drain(int maxDrain, FluidAction action) { - FluidStack drained = super.drain(maxDrain, action); - this.removeTagWhenEmpty(action); - return drained; - } - - private void removeTagWhenEmpty(FluidAction action) { - if (getFluid() == FluidStack.EMPTY && action.execute()) { - this.container.setTag(null); - } - } - @Override public boolean canFillFluidType(FluidStack fluid) { return filter.test(fluid); diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/forge/FilteredFluidHandlerItemStackSimple.java b/src/main/java/com/gregtechceu/gtceu/api/misc/forge/FilteredFluidHandlerItemStackSimple.java new file mode 100644 index 00000000000..52fa2fe0c8c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/forge/FilteredFluidHandlerItemStackSimple.java @@ -0,0 +1,29 @@ +package com.gregtechceu.gtceu.api.misc.forge; + +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.capability.templates.FluidHandlerItemStackSimple; + +import org.jetbrains.annotations.NotNull; + +import java.util.function.Predicate; + +public class FilteredFluidHandlerItemStackSimple extends FluidHandlerItemStackSimple { + + protected final Predicate filter; + + /** + * @param container The container itemStack, data is stored on it directly as NBT. + * @param capacity The maximum capacity of this fluid tank. + */ + public FilteredFluidHandlerItemStackSimple(@NotNull ItemStack container, int capacity, + Predicate filter) { + super(container, capacity); + this.filter = filter; + } + + @Override + public boolean canFillFluidType(FluidStack fluid) { + return filter.test(fluid); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/forge/QuantumFluidHandlerItemStack.java b/src/main/java/com/gregtechceu/gtceu/api/misc/forge/QuantumFluidHandlerItemStack.java new file mode 100644 index 00000000000..f201f62ac5b --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/forge/QuantumFluidHandlerItemStack.java @@ -0,0 +1,166 @@ +package com.gregtechceu.gtceu.api.misc.forge; + +import com.gregtechceu.gtceu.utils.GTMath; + +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.capabilities.ForgeCapabilities; +import net.minecraftforge.common.capabilities.ICapabilityProvider; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.capability.IFluidHandler; +import net.minecraftforge.fluids.capability.IFluidHandlerItem; + +import lombok.Getter; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class QuantumFluidHandlerItemStack implements IFluidHandlerItem, ICapabilityProvider { + + private final LazyOptional holder = LazyOptional.of(() -> this); + @Getter + protected @NotNull ItemStack container; + protected long capacity; + + public QuantumFluidHandlerItemStack(@NotNull ItemStack container, long capacity) { + this.container = container; + this.capacity = capacity; + } + + // Retrieve the capacity clamped to an int. + protected int getClampedCapacity() { + return GTMath.saturatedCast(this.capacity); + } + + // For Fluid IO, clamping to int is fine. + // For internal structures, make sure to use getFluidAmount() alongside this. + public @NotNull FluidStack getFluid() { + CompoundTag tagCompound = this.container.getTag(); + if (tagCompound == null || !tagCompound.contains("stored") || !tagCompound.contains("storedAmount")) { + return FluidStack.EMPTY; + } + FluidStack stack = FluidStack.loadFluidStackFromNBT(tagCompound.getCompound("stored")); + stack.setAmount(GTMath.saturatedCast(tagCompound.getLong("storedAmount"))); + return stack; + } + + public long getFluidAmount() { + CompoundTag tagCompound = this.container.getTag(); + if (tagCompound == null || !tagCompound.contains("storedAmount")) return 0; + return tagCompound.getLong("storedAmount"); + } + + private void setFluid(FluidStack fluid, long amount) { + fluid.setAmount(GTMath.saturatedCast(amount)); + + CompoundTag fluidTag = new CompoundTag(); + fluid.writeToNBT(fluidTag); + + CompoundTag containerTag = this.container.getOrCreateTag(); + containerTag.put("stored", fluidTag); + containerTag.putLong("storedAmount", amount); + } + + @Override + public int getTanks() { + return 1; + } + + @Override + public @NotNull FluidStack getFluidInTank(int tank) { + return this.getFluid(); + } + + @Override + public int getTankCapacity(int tank) { + return getClampedCapacity(); + } + + @Override + public boolean isFluidValid(int tank, @NotNull FluidStack stack) { + return true; + } + + @Override + public int fill(FluidStack resource, IFluidHandler.FluidAction doFill) { + if (this.container.getCount() != 1 || resource.isEmpty() || !this.canFillFluidType(resource)) { + return 0; + } + FluidStack contained = this.getFluid(); + long amount = this.getFluidAmount(); + if (contained.isEmpty()) { + int fillAmount = Math.min(getClampedCapacity(), resource.getAmount()); + if (doFill.execute()) { + FluidStack filled = resource.copy(); + this.setFluid(filled, fillAmount); + } + + return fillAmount; + } else if (contained.isFluidEqual(resource)) { + + int fillAmount = Math.min(GTMath.saturatedCast(this.capacity - amount), resource.getAmount()); + if (doFill.execute() && fillAmount > 0) { + long fluidAmountAfterFill = amount + (long) fillAmount; + this.setFluid(contained, fluidAmountAfterFill); + } + + return fillAmount; + } else { + return 0; + } + } + + @Override + public @NotNull FluidStack drain(FluidStack resource, IFluidHandler.FluidAction action) { + return this.container.getCount() == 1 && !resource.isEmpty() && resource.isFluidEqual(this.getFluid()) ? + this.drain(resource.getAmount(), action) : FluidStack.EMPTY; + } + + @Override + public @NotNull FluidStack drain(int maxDrain, IFluidHandler.FluidAction action) { + if (this.container.getCount() != 1 || maxDrain <= 0) { + return FluidStack.EMPTY; + } + FluidStack contained = this.getFluid(); + long fluidAmount = this.getFluidAmount(); + if (fluidAmount <= 0 || !this.canDrainFluidType(contained)) { + return FluidStack.EMPTY; + } + + // Can drain at most Integer.MAX_VALUE + int drainAmount = GTMath.saturatedCast(Math.min(fluidAmount, maxDrain)); + FluidStack drained = contained.copy(); + drained.setAmount(drainAmount); + if (action.execute()) { + long fluidAfterDrain = fluidAmount - (long) drainAmount; + contained.setAmount(GTMath.saturatedCast(fluidAfterDrain)); + if (contained.isEmpty()) { + this.setContainerToEmpty(); + } else { + this.setFluid(contained, fluidAfterDrain); + } + } + + return drained; + } + + public boolean canFillFluidType(FluidStack fluid) { + return true; + } + + public boolean canDrainFluidType(FluidStack fluid) { + return true; + } + + protected void setContainerToEmpty() { + this.container.removeTagKey("stored"); + this.container.removeTagKey("storedAmount"); + } + + @Override + public @NotNull LazyOptional getCapability(@NotNull Capability capability, @Nullable Direction facing) { + return ForgeCapabilities.FLUID_HANDLER_ITEM.orEmpty(capability, this.holder); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/forge/SimpleThermalFluidHandlerItemStack.java b/src/main/java/com/gregtechceu/gtceu/api/misc/forge/SimpleThermalFluidHandlerItemStack.java index a256aede09b..134cd1b73a9 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/misc/forge/SimpleThermalFluidHandlerItemStack.java +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/forge/SimpleThermalFluidHandlerItemStack.java @@ -3,23 +3,23 @@ import com.gregtechceu.gtceu.api.capability.IThermalFluidHandlerItemStack; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.templates.FluidHandlerItemStackSimple; +import lombok.Getter; import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote FluidHandlerHelperImpl - */ public class SimpleThermalFluidHandlerItemStack extends FluidHandlerItemStackSimple implements IThermalFluidHandlerItemStack { - public final int maxFluidTemperature; + @Getter + private final int maxFluidTemperature; + @Getter private final boolean gasProof; + @Getter private final boolean acidProof; + @Getter private final boolean cryoProof; + @Getter private final boolean plasmaProof; public SimpleThermalFluidHandlerItemStack(@NotNull ItemStack container, int capacity, int maxFluidTemperature, @@ -32,49 +32,4 @@ public SimpleThermalFluidHandlerItemStack(@NotNull ItemStack container, int capa this.cryoProof = cryoProof; this.plasmaProof = plasmaProof; } - - @Override - public @NotNull FluidStack drain(FluidStack resource, FluidAction action) { - FluidStack drained = super.drain(resource, action); - this.removeTagWhenEmpty(action); - return drained; - } - - @Override - public @NotNull FluidStack drain(int maxDrain, FluidAction action) { - FluidStack drained = super.drain(maxDrain, action); - this.removeTagWhenEmpty(action); - return drained; - } - - private void removeTagWhenEmpty(FluidAction action) { - if (getFluid() == FluidStack.EMPTY && action.execute()) { - this.container.setTag(null); - } - } - - @Override - public int getMaxFluidTemperature() { - return maxFluidTemperature; - } - - @Override - public boolean isGasProof() { - return gasProof; - } - - @Override - public boolean isAcidProof() { - return acidProof; - } - - @Override - public boolean isCryoProof() { - return cryoProof; - } - - @Override - public boolean isPlasmaProof() { - return plasmaProof; - } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/forge/ThermalFluidHandlerItemStack.java b/src/main/java/com/gregtechceu/gtceu/api/misc/forge/ThermalFluidHandlerItemStack.java index 987090ffe83..580a71d4767 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/misc/forge/ThermalFluidHandlerItemStack.java +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/forge/ThermalFluidHandlerItemStack.java @@ -6,14 +6,20 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.templates.FluidHandlerItemStack; +import lombok.Getter; import org.jetbrains.annotations.NotNull; public class ThermalFluidHandlerItemStack extends FluidHandlerItemStack implements IThermalFluidHandlerItemStack { + @Getter private final int maxFluidTemperature; + @Getter private final boolean gasProof; + @Getter private final boolean acidProof; + @Getter private final boolean cryoProof; + @Getter private final boolean plasmaProof; /** @@ -30,53 +36,8 @@ public ThermalFluidHandlerItemStack(@NotNull ItemStack container, int capacity, this.plasmaProof = plasmaProof; } - @Override - public @NotNull FluidStack drain(FluidStack resource, FluidAction action) { - FluidStack drained = super.drain(resource, action); - this.removeTagWhenEmpty(action); - return drained; - } - - @Override - public @NotNull FluidStack drain(int maxDrain, FluidAction action) { - FluidStack drained = super.drain(maxDrain, action); - this.removeTagWhenEmpty(action); - return drained; - } - - private void removeTagWhenEmpty(FluidAction action) { - if (getFluid() == FluidStack.EMPTY && action.execute()) { - this.container.setTag(null); - } - } - @Override public boolean canFillFluidType(FluidStack fluid) { return IThermalFluidHandlerItemStack.super.canFillFluidType(fluid); } - - @Override - public int getMaxFluidTemperature() { - return maxFluidTemperature; - } - - @Override - public boolean isGasProof() { - return gasProof; - } - - @Override - public boolean isAcidProof() { - return acidProof; - } - - @Override - public boolean isCryoProof() { - return cryoProof; - } - - @Override - public boolean isPlasmaProof() { - return plasmaProof; - } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/EntryTypes.java b/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/EntryTypes.java new file mode 100644 index 00000000000..9910f108a88 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/EntryTypes.java @@ -0,0 +1,64 @@ +package com.gregtechceu.gtceu.api.misc.virtualregistry; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.misc.virtualregistry.entries.VirtualTank; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; + +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import org.jetbrains.annotations.Nullable; + +import java.util.Map; +import java.util.function.Supplier; + +public final class EntryTypes { + + private static final Map> TYPES_MAP = new Object2ObjectOpenHashMap<>(); + public static final EntryTypes ENDER_FLUID = addEntryType(GTCEu.id("ender_fluid"), VirtualTank::new); + // ENDER_ITEM("ender_item", null), + // ENDER_ENERGY("ender_energy", null), + // ENDER_REDSTONE("ender_redstone", null); + private final ResourceLocation location; + private final Supplier factory; + + private EntryTypes(ResourceLocation location, Supplier supplier) { + this.location = location; + this.factory = supplier; + } + + @Nullable + public static EntryTypes fromString(String name) { + return TYPES_MAP.getOrDefault(GTCEu.id(name), null); + } + + @Nullable + public static EntryTypes fromLocation(ResourceLocation location) { + return TYPES_MAP.getOrDefault(location, null); + } + + public static EntryTypes addEntryType(ResourceLocation location, Supplier supplier) { + var type = new EntryTypes<>(location, supplier); + if (!TYPES_MAP.containsKey(location)) { + TYPES_MAP.put(location, type); + } else { + GTCEu.LOGGER.warn("Entry \"{}\" is already registered!", location); + } + return type; + } + + public T createInstance(CompoundTag nbt) { + var entry = createInstance(); + entry.deserializeNBT(nbt); + return entry; + } + + public T createInstance() { + return factory.get(); + } + + @Override + public String toString() { + return this.location.toString(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/VirtualEnderRegistry.java b/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/VirtualEnderRegistry.java new file mode 100644 index 00000000000..d76b54600b8 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/VirtualEnderRegistry.java @@ -0,0 +1,137 @@ +package com.gregtechceu.gtceu.api.misc.virtualregistry; + +import com.gregtechceu.gtceu.GTCEu; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.level.saveddata.SavedData; +import net.minecraftforge.server.ServerLifecycleHooks; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.HashMap; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.function.Predicate; + +public class VirtualEnderRegistry extends SavedData { + + private static final String DATA_ID = GTCEu.MOD_ID + ".virtual_entry_data"; + private static final String PUBLIC_KEY = "Public"; + private static final String PRIVATE_KEY = "Private"; + private static volatile VirtualEnderRegistry data; + private final Map VIRTUAL_REGISTRIES = new HashMap<>(); + + public VirtualEnderRegistry() {} + + public VirtualEnderRegistry(CompoundTag name) { + readFromNBT(name); + } + + public static VirtualEnderRegistry getInstance() { + if (data == null) { + var server = ServerLifecycleHooks.getCurrentServer(); + if (server != null) { + data = server.overworld().getDataStorage() + .computeIfAbsent(VirtualEnderRegistry::new, VirtualEnderRegistry::new, DATA_ID); + } + } + + return data; + } + + /** + * To be called on server stopped event + */ + public static void release() { + if (data != null) { + data = null; + GTCEu.LOGGER.debug("VirtualEnderRegistry has been unloaded"); + } + } + + public T getEntry(@Nullable UUID owner, EntryTypes type, String name) { + return getRegistry(owner).getEntry(type, name); + } + + public void addEntry(@Nullable UUID owner, String name, VirtualEntry entry) { + getRegistry(owner).addEntry(name, entry); + } + + public boolean hasEntry(@Nullable UUID owner, EntryTypes type, String name) { + return getRegistry(owner).contains(type, name); + } + + public @NotNull T getOrCreateEntry(@Nullable UUID owner, EntryTypes type, String name) { + if (!hasEntry(owner, type, name)) addEntry(owner, name, type.createInstance()); + return getEntry(owner, type, name); + } + + /** + * Removes an entry from the registry. Use with caution! + * + * @param owner The uuid of the player the entry is private to, or null if the entry is public + * @param type Type of the registry to remove from + * @param name The name of the entry + */ + public void deleteEntry(@Nullable UUID owner, EntryTypes type, String name) { + var registry = getRegistry(owner); + if (registry.contains(type, name)) { + registry.deleteEntry(type, name); + return; + } + GTCEu.LOGGER.warn("Attempted to delete {} entry {} of type {}, which does not exist", + owner == null ? "public" : String.format("private [%s]", owner), name, type); + } + + public void deleteEntryIf(@Nullable UUID owner, EntryTypes type, String name, + Predicate shouldDelete) { + T entry = getEntry(owner, type, name); + if (entry != null && shouldDelete.test(entry)) deleteEntry(owner, type, name); + } + + public Set getEntryNames(UUID owner, EntryTypes type) { + return getRegistry(owner).getEntryNames(type); + } + + private VirtualRegistryMap getRegistry(UUID owner) { + if (data == null) getInstance(); + return data.VIRTUAL_REGISTRIES.computeIfAbsent(owner, key -> new VirtualRegistryMap()); + } + + public final void readFromNBT(CompoundTag nbt) { + if (nbt.contains(PUBLIC_KEY)) { + VIRTUAL_REGISTRIES.put(null, new VirtualRegistryMap(nbt.getCompound(PUBLIC_KEY))); + } + if (nbt.contains(PRIVATE_KEY)) { + CompoundTag privateEntries = nbt.getCompound(PRIVATE_KEY); + for (String owner : privateEntries.getAllKeys()) { + var privateMap = privateEntries.getCompound(owner); + VIRTUAL_REGISTRIES.put(UUID.fromString(owner), new VirtualRegistryMap(privateMap)); + } + } + } + + @NotNull + @Override + public final CompoundTag save(@NotNull CompoundTag tag) { + var privateTag = new CompoundTag(); + for (var owner : VIRTUAL_REGISTRIES.keySet()) { + var mapTag = VIRTUAL_REGISTRIES.get(owner).serializeNBT(); + if (owner != null) { + privateTag.put(owner.toString(), mapTag); + } else { + tag.put(PUBLIC_KEY, mapTag); + } + } + tag.put(PRIVATE_KEY, privateTag); + return tag; + } + + @Override + public boolean isDirty() { + // can't think of a good way to mark dirty other than always return true; + return true; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/VirtualEntry.java b/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/VirtualEntry.java new file mode 100644 index 00000000000..1c4d24e118f --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/VirtualEntry.java @@ -0,0 +1,83 @@ +package com.gregtechceu.gtceu.api.misc.virtualregistry; + +import com.lowdragmc.lowdraglib.syncdata.ITagSerializable; + +import net.minecraft.nbt.CompoundTag; +import net.minecraftforge.common.util.INBTSerializable; + +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; +import org.jetbrains.annotations.NotNull; + +import java.util.Locale; + +@Getter +@Accessors(chain = true) +public abstract class VirtualEntry implements INBTSerializable, ITagSerializable { + + public static final String DEFAULT_COLOR = "FFFFFFFF"; + protected static final String COLOR_KEY = "color"; + protected static final String DESC_KEY = "description"; + + @Setter + @NotNull + private String description = ""; + private int color = 0xFFFFFFFF; + private String colorStr = DEFAULT_COLOR; + + public abstract EntryTypes getType(); + + public void setColor(String color) { + this.color = parseColor(color); + this.colorStr = color.toUpperCase(Locale.ROOT); + } + + public void setColor(int color) { + this.color = color; + this.colorStr = Integer.toHexString(color).toUpperCase(Locale.ROOT); + } + + public static int parseColor(String colorString) { + if (colorString.length() < 8) { + throw new IllegalArgumentException("Invalid color string: " + colorString); + } + + int red = Integer.parseInt(colorString.substring(0, 2), 16); + int green = Integer.parseInt(colorString.substring(2, 4), 16); + int blue = Integer.parseInt(colorString.substring(4, 6), 16); + int alpha = Integer.parseInt(colorString.substring(6, 8), 16); + + return (alpha << 24) | (red << 16) | (green << 8) | blue; + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof VirtualEntry other)) return false; + return this.getType() == other.getType() && this.color == other.color && + this.description.equals(other.description); + } + + @Override + public CompoundTag serializeNBT() { + var tag = new CompoundTag(); + tag.putString(COLOR_KEY, this.colorStr); + + if (!description.isEmpty()) + tag.putString(DESC_KEY, this.description); + + return tag; + } + + @Override + public void deserializeNBT(CompoundTag nbt) { + setColor(nbt.getString(COLOR_KEY)); + + if (nbt.contains(DESC_KEY)) + this.description = nbt.getString(DESC_KEY); + } + + public boolean canRemove() { + return this.description.isEmpty(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/VirtualRegistryMap.java b/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/VirtualRegistryMap.java new file mode 100644 index 00000000000..3d48f8b0200 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/VirtualRegistryMap.java @@ -0,0 +1,86 @@ +package com.gregtechceu.gtceu.api.misc.virtualregistry; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.common.util.INBTSerializable; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Collections; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +public class VirtualRegistryMap implements INBTSerializable { + + private final Map, Map> registryMap = new ConcurrentHashMap<>(); + + public VirtualRegistryMap() {} + + public VirtualRegistryMap(CompoundTag tag) { + deserializeNBT(tag); + } + + @SuppressWarnings("unchecked") + public @Nullable T getEntry(EntryTypes type, String name) { + return (T) registryMap.getOrDefault(type, Collections.emptyMap()).get(name); + } + + public void addEntry(String name, VirtualEntry entry) { + registryMap.computeIfAbsent(entry.getType(), k -> new ConcurrentHashMap<>()).put(name, entry); + } + + public boolean contains(EntryTypes type, String name) { + return registryMap.containsKey(type) && registryMap.get(type).containsKey(name); + } + + public void deleteEntry(EntryTypes type, String name) { + Map entries = registryMap.get(type); + if (entries != null) { + entries.remove(name); + if (entries.isEmpty()) { + registryMap.remove(type); + } + } + } + + public void clear() { + registryMap.clear(); + } + + public Set getEntryNames(EntryTypes type) { + return new HashSet<>(registryMap.getOrDefault(type, Collections.emptyMap()).keySet()); + } + + @Override + public @NotNull CompoundTag serializeNBT() { + CompoundTag tag = new CompoundTag(); + for (Map.Entry, Map> entry : registryMap.entrySet()) { + CompoundTag entriesTag = new CompoundTag(); + for (Map.Entry subEntry : entry.getValue().entrySet()) { + entriesTag.put(subEntry.getKey(), subEntry.getValue().serializeNBT()); + } + tag.put(entry.getKey().toString(), entriesTag); + } + return tag; + } + + @Override + public void deserializeNBT(CompoundTag nbt) { + for (String entryTypeString : nbt.getAllKeys()) { + EntryTypes type = entryTypeString.contains(":") ? + EntryTypes.fromLocation(ResourceLocation.tryParse(entryTypeString)) : + EntryTypes.fromString(entryTypeString); + + if (type == null) continue; + + CompoundTag virtualEntries = nbt.getCompound(entryTypeString); + for (String name : virtualEntries.getAllKeys()) { + CompoundTag entryTag = virtualEntries.getCompound(name); + addEntry(name, type.createInstance(entryTag)); + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/entries/VirtualTank.java b/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/entries/VirtualTank.java new file mode 100644 index 00000000000..b142de09b9a --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/entries/VirtualTank.java @@ -0,0 +1,71 @@ +package com.gregtechceu.gtceu.api.misc.virtualregistry.entries; + +import com.gregtechceu.gtceu.api.misc.virtualregistry.EntryTypes; +import com.gregtechceu.gtceu.api.misc.virtualregistry.VirtualEntry; + +import net.minecraft.nbt.CompoundTag; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.capability.templates.FluidTank; + +import lombok.Getter; +import org.jetbrains.annotations.NotNull; + +public class VirtualTank extends VirtualEntry { + + public static final int DEFAULT_CAPACITY = 160_000; // 160B for per second transfer + protected static final String CAPACITY_KEY = "capacity"; + protected static final String FLUID_KEY = "fluid"; + @NotNull + @Getter + private final FluidTank fluidTank; + private int capacity; + + public VirtualTank(int capacity) { + this.capacity = capacity; + fluidTank = new FluidTank(this.capacity); + } + + public VirtualTank() { + this(DEFAULT_CAPACITY); + } + + @Override + public EntryTypes getType() { + return EntryTypes.ENDER_FLUID; + } + + public void setFluid(FluidStack fluid) { + this.fluidTank.setFluid(fluid); + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof VirtualTank other)) return false; + return this.fluidTank == other.fluidTank; + } + + @Override + public CompoundTag serializeNBT() { + var tag = super.serializeNBT(); + tag.putInt(CAPACITY_KEY, this.capacity); + + if (this.fluidTank.getFluid() != FluidStack.EMPTY) + tag.put(FLUID_KEY, this.fluidTank.getFluid().writeToNBT(new CompoundTag())); + + return tag; + } + + @Override + public void deserializeNBT(CompoundTag nbt) { + super.deserializeNBT(nbt); + this.capacity = nbt.getInt(CAPACITY_KEY); + + if (nbt.contains(FLUID_KEY)) + setFluid(FluidStack.loadFluidStackFromNBT(nbt.getCompound(FLUID_KEY))); + } + + @Override + public boolean canRemove() { + return super.canRemove() && this.fluidTank.isEmpty(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/BlockPattern.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/BlockPattern.java index 6053834f313..1bac08ce084 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/BlockPattern.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/BlockPattern.java @@ -33,9 +33,11 @@ import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.items.IItemHandler; -import com.mojang.datafixers.util.Pair; +import it.unimi.dsi.fastutil.ints.IntObjectPair; import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; import it.unimi.dsi.fastutil.longs.LongOpenHashSet; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import lombok.Getter; import org.apache.commons.lang3.ArrayUtils; import org.jetbrains.annotations.NotNull; @@ -43,7 +45,7 @@ import java.lang.reflect.Array; import java.util.*; -import java.util.function.BiFunction; +import java.util.function.BiPredicate; import java.util.function.Consumer; public class BlockPattern { @@ -108,14 +110,19 @@ public boolean checkPatternAt(MultiblockState worldState, boolean savePredicate) return false; } + @Deprecated(forRemoval = true, since = "7.0") + public int[] getDimensions() { + return new int[] { fingerLength, thumbLength, palmLength }; + } + public boolean checkPatternAt(MultiblockState worldState, BlockPos centerPos, Direction frontFacing, Direction upwardsFacing, boolean isFlipped, boolean savePredicate) { boolean findFirstAisle = false; int minZ = -centerOffset[4]; worldState.clean(); PatternMatchContext matchContext = worldState.getMatchContext(); - Map globalCount = worldState.getGlobalCount(); - Map layerCount = worldState.getLayerCount(); + Object2IntMap globalCount = worldState.getGlobalCount(); + Object2IntMap layerCount = worldState.getLayerCount(); // Checking aisles for (int c = 0, z = minZ++, r; c < this.fingerLength; c++) { // Checking repeatable slices @@ -178,8 +185,8 @@ public boolean checkPatternAt(MultiblockState worldState, BlockPos centerPos, Di z++; // Check layer-local matcher predicate - for (Map.Entry entry : layerCount.entrySet()) { - if (entry.getValue() < entry.getKey().minLayerCount) { + for (var entry : layerCount.object2IntEntrySet()) { + if (entry.getIntValue() < entry.getKey().minLayerCount) { worldState.setError(new SinglePredicateError(entry.getKey(), 3)); return false; } @@ -199,8 +206,8 @@ public boolean checkPatternAt(MultiblockState worldState, BlockPos centerPos, Di } // Check count matches amount - for (Map.Entry entry : globalCount.entrySet()) { - if (entry.getValue() < entry.getKey().minCount) { + for (var entry : globalCount.object2IntEntrySet()) { + if (entry.getIntValue() < entry.getKey().minCount) { worldState.setError(new SinglePredicateError(entry.getKey(), 1)); return false; } @@ -220,8 +227,8 @@ public void autoBuild(Player player, MultiblockState worldState) { Direction facing = controller.self().getFrontFacing(); Direction upwardsFacing = controller.self().getUpwardsFacing(); boolean isFlipped = controller.self().isFlipped(); - Map cacheGlobal = worldState.getGlobalCount(); - Map cacheLayer = worldState.getLayerCount(); + Object2IntOpenHashMap cacheGlobal = worldState.getGlobalCount(); + Object2IntOpenHashMap cacheLayer = worldState.getLayerCount(); Map blocks = new HashMap<>(); Set placeBlockPos = new HashSet<>(); blocks.put(centerPos, controller); @@ -244,15 +251,13 @@ public void autoBuild(Player player, MultiblockState worldState) { BlockInfo[] infos = new BlockInfo[0]; for (SimplePredicate limit : predicate.limited) { if (limit.minLayerCount > 0) { - if (!cacheLayer.containsKey(limit)) { - cacheLayer.put(limit, 1); - } else - if (cacheLayer.get(limit) < limit.minLayerCount && (limit.maxLayerCount == -1 || - cacheLayer.get(limit) < limit.maxLayerCount)) { - cacheLayer.put(limit, cacheLayer.get(limit) + 1); - } else { - continue; - } + int curr = cacheLayer.getInt(limit); + if (curr < limit.minLayerCount && + (limit.maxLayerCount == -1 || curr < limit.maxLayerCount)) { + cacheLayer.addTo(limit, 1); + } else { + continue; + } } else { continue; } @@ -263,14 +268,12 @@ public void autoBuild(Player player, MultiblockState worldState) { if (!find) { for (SimplePredicate limit : predicate.limited) { if (limit.minCount > 0) { - if (!cacheGlobal.containsKey(limit)) { - cacheGlobal.put(limit, 1); - } else if (cacheGlobal.get(limit) < limit.minCount && - (limit.maxCount == -1 || cacheGlobal.get(limit) < limit.maxCount)) { - cacheGlobal.put(limit, cacheGlobal.get(limit) + 1); - } else { - continue; - } + int curr = cacheGlobal.getInt(limit); + if (curr < limit.minCount && (limit.maxCount == -1 || curr < limit.maxCount)) { + cacheGlobal.addTo(limit, 1); + } else { + continue; + } } else { continue; } @@ -282,21 +285,15 @@ public void autoBuild(Player player, MultiblockState worldState) { if (!find) { // no limited for (SimplePredicate limit : predicate.limited) { if (limit.maxLayerCount != -1 && - cacheLayer.getOrDefault(limit, Integer.MAX_VALUE) == limit.maxLayerCount) + cacheLayer.getOrDefault(limit, Integer.MAX_VALUE) == limit.maxLayerCount) { continue; + } if (limit.maxCount != -1 && - cacheGlobal.getOrDefault(limit, Integer.MAX_VALUE) == limit.maxCount) + cacheGlobal.getOrDefault(limit, Integer.MAX_VALUE) == limit.maxCount) { continue; - if (cacheLayer.containsKey(limit)) { - cacheLayer.put(limit, cacheLayer.get(limit) + 1); - } else { - cacheLayer.put(limit, 1); - } - if (cacheGlobal.containsKey(limit)) { - cacheGlobal.put(limit, cacheGlobal.get(limit) + 1); - } else { - cacheGlobal.put(limit, 1); } + cacheLayer.addTo(limit, 1); + cacheGlobal.addTo(limit, 1); infos = ArrayUtils.addAll(infos, limit.candidates == null ? null : limit.candidates.get()); } @@ -323,8 +320,8 @@ public void autoBuild(Player player, MultiblockState worldState) { var foundHandler = getMatchStackWithHandler(candidates, player.getCapability(ForgeCapabilities.ITEM_HANDLER)); if (foundHandler != null) { - foundSlot = foundHandler.getFirst(); - handler = foundHandler.getSecond(); + foundSlot = foundHandler.firstInt(); + handler = foundHandler.second(); found = handler.getStackInSlot(foundSlot).copy(); } } else { @@ -381,7 +378,7 @@ public void autoBuild(Player player, MultiblockState worldState) { } public BlockInfo[][][] getPreview(int[] repetition) { - Map cacheGlobal = new HashMap<>(); + Object2IntOpenHashMap cacheGlobal = new Object2IntOpenHashMap<>(); Map blocks = new HashMap<>(); int minX = Integer.MAX_VALUE; int minY = Integer.MAX_VALUE; @@ -392,7 +389,7 @@ public BlockInfo[][][] getPreview(int[] repetition) { for (int l = 0, x = 0; l < this.fingerLength; l++) { for (int r = 0; r < repetition[l]; r++) { // Checking single slice - Map cacheLayer = new HashMap<>(); + Object2IntOpenHashMap cacheLayer = new Object2IntOpenHashMap<>(); for (int y = 0; y < this.thumbLength; y++) { for (int z = 0; z < this.palmLength; z++) { TraceabilityPredicate predicate = this.blockMatches[l][y][z]; @@ -400,21 +397,15 @@ public BlockInfo[][][] getPreview(int[] repetition) { BlockInfo[] infos = null; for (SimplePredicate limit : predicate.limited) { // check layer and previewCount if (limit.minLayerCount > 0) { - if (!cacheLayer.containsKey(limit)) { - cacheLayer.put(limit, 1); - } else if (cacheLayer.get(limit) < limit.minLayerCount) { - cacheLayer.put(limit, cacheLayer.get(limit) + 1); + if (cacheLayer.getInt(limit) < limit.minLayerCount) { + cacheLayer.addTo(limit, 1); } else { continue; } - if (cacheGlobal.getOrDefault(limit, 0) < limit.previewCount) { - if (!cacheGlobal.containsKey(limit)) { - cacheGlobal.put(limit, 1); - } else if (cacheGlobal.get(limit) < limit.previewCount) { - cacheGlobal.put(limit, cacheGlobal.get(limit) + 1); - } else { - continue; - } + if (cacheGlobal.getInt(limit) < limit.previewCount) { + cacheGlobal.addTo(limit, 1); + } else { + continue; } } else { continue; @@ -426,19 +417,11 @@ public BlockInfo[][][] getPreview(int[] repetition) { if (!find) { // check global and previewCount for (SimplePredicate limit : predicate.limited) { if (limit.minCount == -1 && limit.previewCount == -1) continue; - if (cacheGlobal.getOrDefault(limit, 0) < limit.previewCount) { - if (!cacheGlobal.containsKey(limit)) { - cacheGlobal.put(limit, 1); - } else if (cacheGlobal.get(limit) < limit.previewCount) { - cacheGlobal.put(limit, cacheGlobal.get(limit) + 1); - } else { - continue; - } + if (cacheGlobal.getInt(limit) < limit.previewCount) { + cacheGlobal.addTo(limit, 1); } else if (limit.minCount > 0) { - if (!cacheGlobal.containsKey(limit)) { - cacheGlobal.put(limit, 1); - } else if (cacheGlobal.get(limit) < limit.minCount) { - cacheGlobal.put(limit, cacheGlobal.get(limit) + 1); + if (cacheGlobal.getInt(limit) < limit.minCount) { + cacheGlobal.addTo(limit, 1); } else { continue; } @@ -453,10 +436,8 @@ public BlockInfo[][][] getPreview(int[] repetition) { if (!find) { // check common with previewCount for (SimplePredicate common : predicate.common) { if (common.previewCount > 0) { - if (!cacheGlobal.containsKey(common)) { - cacheGlobal.put(common, 1); - } else if (cacheGlobal.get(common) < common.previewCount) { - cacheGlobal.put(common, cacheGlobal.get(common) + 1); + if (cacheGlobal.getInt(common) < common.previewCount) { + cacheGlobal.addTo(common, 1); } else { continue; } @@ -479,21 +460,12 @@ public BlockInfo[][][] getPreview(int[] repetition) { } if (!find) { // check max for (SimplePredicate limit : predicate.limited) { - if (limit.previewCount != -1) { - continue; - } else if (limit.maxCount != -1 || limit.maxLayerCount != -1) { + if (limit.previewCount != -1) continue; + if (limit.maxCount != -1 || limit.maxLayerCount != -1) { if (cacheGlobal.getOrDefault(limit, 0) < limit.maxCount) { - if (!cacheGlobal.containsKey(limit)) { - cacheGlobal.put(limit, 1); - } else { - cacheGlobal.put(limit, cacheGlobal.get(limit) + 1); - } + cacheGlobal.addTo(limit, 1); } else if (cacheLayer.getOrDefault(limit, 0) < limit.maxLayerCount) { - if (!cacheLayer.containsKey(limit)) { - cacheLayer.put(limit, 1); - } else { - cacheLayer.put(limit, cacheLayer.get(limit) + 1); - } + cacheLayer.addTo(limit, 1); } else { continue; } @@ -548,7 +520,7 @@ public BlockInfo[][][] getPreview(int[] repetition) { } private void resetFacing(BlockPos pos, BlockState blockState, Direction facing, - BiFunction checker, Consumer consumer) { + BiPredicate checker, Consumer consumer) { if (blockState.hasProperty(BlockStateProperties.FACING)) { tryFacings(blockState, pos, checker, consumer, BlockStateProperties.FACING, facing == null ? FACINGS : ArrayUtils.addAll(new Direction[] { facing }, FACINGS)); @@ -559,11 +531,11 @@ private void resetFacing(BlockPos pos, BlockState blockState, Direction facing, } } - private void tryFacings(BlockState blockState, BlockPos pos, BiFunction checker, + private void tryFacings(BlockState blockState, BlockPos pos, BiPredicate checker, Consumer consumer, Property property, Direction[] facings) { Direction found = null; for (Direction facing : facings) { - if (checker.apply(pos, facing)) { + if (checker.test(pos, facing)) { found = facing; break; } @@ -580,7 +552,7 @@ private BlockPos setActualRelativeOffset(int x, int y, int z, Direction facing, if (facing == Direction.UP || facing == Direction.DOWN) { Direction of = facing == Direction.DOWN ? upwardsFacing : upwardsFacing.getOpposite(); for (int i = 0; i < 3; i++) { - switch (structureDir[i].getActualFacing(of)) { + switch (structureDir[i].getActualDirection(of)) { case UP -> c1[1] = c0[i]; case DOWN -> c1[1] = -c0[i]; case WEST -> c1[0] = -c0[i]; @@ -610,7 +582,7 @@ private BlockPos setActualRelativeOffset(int x, int y, int z, Direction facing, } } else { for (int i = 0; i < 3; i++) { - switch (structureDir[i].getActualFacing(facing)) { + switch (structureDir[i].getActualDirection(facing)) { case UP -> c1[1] = c0[i]; case DOWN -> c1[1] = -c0[i]; case WEST -> c1[0] = -c0[i]; @@ -658,10 +630,10 @@ private BlockPos setActualRelativeOffset(int x, int y, int z, Direction facing, } @Nullable - private static Pair getMatchStackWithHandler( + private static IntObjectPair getMatchStackWithHandler( List candidates, LazyOptional cap) { - IItemHandler handler = cap.orElse(null); + IItemHandler handler = cap.resolve().orElse(null); if (handler == null) { return null; } @@ -679,7 +651,7 @@ private static Pair getMatchStackWithHandler( } } else if (candidates.stream().anyMatch(candidate -> ItemStack.isSameItemSameTags(candidate, stack)) && !stack.isEmpty() && stack.getItem() instanceof BlockItem) { - return Pair.of(i, handler); + return IntObjectPair.of(i, handler); } } return null; diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/FactoryBlockPattern.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/FactoryBlockPattern.java index 8ef60f55b95..305d342caed 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/FactoryBlockPattern.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/FactoryBlockPattern.java @@ -3,22 +3,23 @@ import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.google.common.base.Joiner; +import it.unimi.dsi.fastutil.chars.Char2ObjectArrayMap; +import it.unimi.dsi.fastutil.chars.Char2ObjectMap; +import it.unimi.dsi.fastutil.chars.CharArrayList; +import it.unimi.dsi.fastutil.chars.CharList; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; import java.lang.reflect.Array; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.Map.Entry; public class FactoryBlockPattern { private static final Joiner COMMA_JOIN = Joiner.on(","); private final List depth; private final List aisleRepetitions; - private final Map symbolMap; + private final Char2ObjectMap symbolMap; private final RelativeDirection[] structureDir; private int aisleHeight; private int rowWidth; @@ -26,7 +27,7 @@ public class FactoryBlockPattern { private FactoryBlockPattern(RelativeDirection charDir, RelativeDirection stringDir, RelativeDirection aisleDir) { depth = new ArrayList<>(); aisleRepetitions = new ArrayList<>(); - symbolMap = new HashMap<>(); + symbolMap = new Char2ObjectArrayMap<>(); structureDir = new RelativeDirection[3]; structureDir[0] = charDir; structureDir[1] = stringDir; @@ -167,11 +168,11 @@ private TraceabilityPredicate[][][] makePredicateArray() { } private void checkMissingPredicates() { - List list = new ArrayList<>(); + CharList list = new CharArrayList(); - for (Entry entry : this.symbolMap.entrySet()) { + for (var entry : this.symbolMap.char2ObjectEntrySet()) { if (entry.getValue() == null) { - list.add(entry.getKey()); + list.add(entry.getCharKey()); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockState.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockState.java index 4549c444225..eca90ad7f7c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockState.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockState.java @@ -20,13 +20,12 @@ import it.unimi.dsi.fastutil.longs.LongOpenHashSet; import it.unimi.dsi.fastutil.longs.LongSet; import it.unimi.dsi.fastutil.longs.LongSets; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import lombok.Getter; import lombok.Setter; import org.jetbrains.annotations.Nullable; import java.util.Collection; -import java.util.HashMap; -import java.util.Map; import java.util.stream.Collectors; public class MultiblockState { @@ -41,9 +40,9 @@ public class MultiblockState { @Getter private final PatternMatchContext matchContext; @Getter - private Map globalCount; + private Object2IntOpenHashMap globalCount; @Getter - private Map layerCount; + private Object2IntOpenHashMap layerCount; public TraceabilityPredicate predicate; public IO io; public PatternError error; @@ -64,14 +63,14 @@ public MultiblockState(Level world, BlockPos controllerPos) { this.matchContext = new PatternMatchContext(); } - protected void clean() { + public void clean() { this.matchContext.reset(); - this.globalCount = new HashMap<>(); - this.layerCount = new HashMap<>(); + this.globalCount = new Object2IntOpenHashMap<>(); + this.layerCount = new Object2IntOpenHashMap<>(); cache = new LongOpenHashSet(); } - protected boolean update(BlockPos posIn, TraceabilityPredicate predicate) { + public boolean update(BlockPos posIn, TraceabilityPredicate predicate) { this.pos = posIn; this.blockState = null; this.tileEntity = null; @@ -158,7 +157,7 @@ public boolean isPosInCache(BlockPos pos) { } public Collection getCache() { - return cache.stream().map(BlockPos::of).collect(Collectors.toList()); + return cache.longStream().mapToObj(BlockPos::of).collect(Collectors.toSet()); } public void onBlockStateChanged(BlockPos pos, BlockState state) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockWorldSavedData.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockWorldSavedData.java index 3d0be413e64..5dc845df58c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockWorldSavedData.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockWorldSavedData.java @@ -18,11 +18,9 @@ public class MultiblockWorldSavedData extends SavedData { - private final ServerLevel serverLevel; - public static MultiblockWorldSavedData getOrCreate(ServerLevel serverLevel) { - return serverLevel.getDataStorage().computeIfAbsent(tag -> new MultiblockWorldSavedData(serverLevel, tag), - () -> new MultiblockWorldSavedData(serverLevel), "gtceu_multiblock"); + return serverLevel.getDataStorage() + .computeIfAbsent(MultiblockWorldSavedData::new, MultiblockWorldSavedData::new, "gtceu_multiblock"); } /** @@ -34,18 +32,17 @@ public static MultiblockWorldSavedData getOrCreate(ServerLevel serverLevel) { */ public final Map> chunkPosMapping; - private MultiblockWorldSavedData(ServerLevel serverLevel) { - this.serverLevel = serverLevel; + private MultiblockWorldSavedData() { this.mapping = new Object2ObjectOpenHashMap<>(); this.chunkPosMapping = new HashMap<>(); } - private MultiblockWorldSavedData(ServerLevel serverLevel, CompoundTag tag) { - this(serverLevel); + private MultiblockWorldSavedData(CompoundTag tag) { + this(); } - public MultiblockState[] getControllerInChunk(ChunkPos chunkPos) { - return chunkPosMapping.getOrDefault(chunkPos, Collections.emptySet()).toArray(MultiblockState[]::new); + public Set getControllersInChunk(ChunkPos chunkPos) { + return chunkPosMapping.getOrDefault(chunkPos, Collections.emptySet()); } public void addMapping(MultiblockState state) { @@ -53,7 +50,6 @@ public void addMapping(MultiblockState state) { for (BlockPos blockPos : state.getCache()) { chunkPosMapping.computeIfAbsent(new ChunkPos(blockPos), c -> new HashSet<>()).add(state); } - setDirty(true); } public void removeMapping(MultiblockState state) { @@ -61,7 +57,6 @@ public void removeMapping(MultiblockState state) { for (Set set : chunkPosMapping.values()) { set.remove(state); } - setDirty(true); } @NotNull diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java index 8b008342c64..413a17137ee 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.api.pattern; import com.gregtechceu.gtceu.api.GTCEuAPI; -import com.gregtechceu.gtceu.api.block.ActiveBlock; import com.gregtechceu.gtceu.api.block.ICoilType; import com.gregtechceu.gtceu.api.block.IMachineBlock; import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; @@ -9,6 +8,7 @@ import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.multiblock.IBatteryData; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; import com.gregtechceu.gtceu.api.pattern.error.PatternStringError; @@ -37,6 +37,7 @@ import java.util.function.Predicate; import java.util.function.Supplier; +import static com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties.ACTIVE; import static com.gregtechceu.gtceu.common.machine.multiblock.electric.PowerSubstationMachine.PMC_BATTERY_HEADER; public class Predicates { @@ -49,8 +50,8 @@ public static TraceabilityPredicate states(BlockState... allowedStates) { var candidates = new ArrayList(); for (BlockState state : allowedStates) { candidates.add(state); - if (state.getBlock() instanceof ActiveBlock block) { - candidates.add(block.changeActive(state, !block.isActive(state))); + if (state.hasProperty(ACTIVE)) { + candidates.add(state.setValue(ACTIVE, !state.getValue(ACTIVE))); } } return new TraceabilityPredicate(new PredicateStates(candidates.toArray(BlockState[]::new))); @@ -65,6 +66,16 @@ public static TraceabilityPredicate blocks(IMachineBlock... blocks) { new PredicateBlocks(Arrays.stream(blocks).map(IMachineBlock::self).toArray(Block[]::new))); } + public static TraceabilityPredicate machines(MachineDefinition... definitions) { + ArrayList machineBlocks = new ArrayList<>(definitions.length); + for (var definition : definitions) { + if (definition != null) { + machineBlocks.add(definition.get()); + } + } + return blocks(machineBlocks.toArray(IMachineBlock[]::new)); + } + public static TraceabilityPredicate blockTag(TagKey tag) { return new TraceabilityPredicate(new PredicateBlockTag(tag)); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/predicates/SimplePredicate.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/predicates/SimplePredicate.java index d4082a60dbc..552d450fed2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/predicates/SimplePredicate.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/predicates/SimplePredicate.java @@ -21,6 +21,7 @@ import net.minecraftforge.api.distmarker.OnlyIn; import it.unimi.dsi.fastutil.longs.Long2ObjectArrayMap; +import it.unimi.dsi.fastutil.longs.Long2ObjectMap; import it.unimi.dsi.fastutil.longs.LongOpenHashSet; import org.jetbrains.annotations.Nullable; @@ -142,7 +143,7 @@ private boolean checkInnerConditions(MultiblockState blockWorldState) { return false; } if (slotName != null) { - Map> slots = blockWorldState.getMatchContext().getOrCreate("slots", + Long2ObjectMap> slots = blockWorldState.getMatchContext().getOrCreate("slots", Long2ObjectArrayMap::new); slots.computeIfAbsent(blockWorldState.getPos().asLong(), s -> new HashSet<>()).add(slotName); return true; @@ -152,10 +153,8 @@ private boolean checkInnerConditions(MultiblockState blockWorldState) { public boolean testGlobal(MultiblockState blockWorldState) { if (minCount == -1 && maxCount == -1) return true; - Integer count = blockWorldState.getGlobalCount().get(this); boolean base = predicate.test(blockWorldState); - count = (count == null ? 0 : count) + (base ? 1 : 0); - blockWorldState.getGlobalCount().put(this, count); + int count = blockWorldState.getGlobalCount().mergeInt(this, base ? 1 : 0, Integer::sum); if (maxCount == -1 || count <= maxCount) return base; blockWorldState.setError(new SinglePredicateError(this, 0)); return false; @@ -163,10 +162,8 @@ public boolean testGlobal(MultiblockState blockWorldState) { public boolean testLayer(MultiblockState blockWorldState) { if (minLayerCount == -1 && maxLayerCount == -1) return true; - Integer count = blockWorldState.getLayerCount().get(this); boolean base = predicate.test(blockWorldState); - count = (count == null ? 0 : count) + (base ? 1 : 0); - blockWorldState.getLayerCount().put(this, count); + int count = blockWorldState.getLayerCount().mergeInt(this, base ? 1 : 0, Integer::sum); if (maxLayerCount == -1 || count <= maxLayerCount) return base; blockWorldState.setError(new SinglePredicateError(this, 2)); return false; diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java index 7f442b7cb83..9e23eee4f08 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java @@ -1,124 +1,180 @@ package com.gregtechceu.gtceu.api.pattern.util; +import com.gregtechceu.gtceu.utils.GTUtil; + import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Vec3i; +import net.minecraft.util.StringRepresentable; + +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; + +import java.util.Comparator; +import java.util.Locale; +import java.util.function.UnaryOperator; -import java.util.function.Function; +public enum RelativeDirection implements StringRepresentable { -/** - * Relative direction when facing horizontally - */ -public enum RelativeDirection { + UP(dir -> dir.getAxis() == Direction.Axis.Y ? Direction.NORTH : Direction.UP, Direction.UP), + DOWN(dir -> dir.getAxis() == Direction.Axis.Y ? Direction.SOUTH : Direction.DOWN, Direction.DOWN), + LEFT(dir -> { + if (dir == Direction.UP) return Direction.EAST; + else if (dir == Direction.DOWN) return Direction.WEST; + else return dir.getCounterClockWise(); + }, Direction.WEST), + RIGHT(dir -> { + if (dir == Direction.UP) return Direction.WEST; + else if (dir == Direction.DOWN) return Direction.EAST; + else return dir.getClockWise(); + }, Direction.EAST), + FRONT(UnaryOperator.identity(), Direction.NORTH), + BACK(Direction::getOpposite, Direction.SOUTH); - UP(f -> Direction.UP, Direction.Axis.Y), - DOWN(f -> Direction.DOWN, Direction.Axis.Y), - LEFT(Direction::getCounterClockWise, Direction.Axis.X), - RIGHT(Direction::getClockWise, Direction.Axis.X), - FRONT(Function.identity(), Direction.Axis.Z), - BACK(Direction::getOpposite, Direction.Axis.Z); + public static final StringRepresentable.EnumCodec CODEC = StringRepresentable + .fromEnum(RelativeDirection::values); - final Function actualFacing; - public final Direction.Axis axis; + public static final RelativeDirection[] VALUES = values(); + private static final RelativeDirection[] BY_GLOBAL_DIRECTION = new RelativeDirection[GTUtil.DIRECTIONS.length]; - RelativeDirection(Function actualFacing, Direction.Axis axis) { - this.actualFacing = actualFacing; - this.axis = axis; + static { + for (var relative : VALUES) { + BY_GLOBAL_DIRECTION[relative.global.ordinal()] = relative; + } } - public Direction getActualFacing(Direction facing) { - return getRelativeFacing(facing, Direction.NORTH, false); + private final UnaryOperator actualDirection; + /** + * Equivalent global direction to this relative direction + * with {@link Direction#NORTH NORTH} as the "forward" direction. + */ + public final Direction global; + + RelativeDirection(UnaryOperator actualDirection, Direction global) { + this.actualDirection = actualDirection; + this.global = global; + } + + @Override + public @NotNull String getSerializedName() { + return name().toLowerCase(Locale.ROOT); } - public boolean isSameAxis(RelativeDirection dir) { - return this.axis == dir.axis; + public RelativeDirection getOpposite() { + return switch (this) { + case UP -> DOWN; + case DOWN -> UP; + case LEFT -> RIGHT; + case RIGHT -> LEFT; + case FRONT -> BACK; + case BACK -> FRONT; + }; + } + + public Direction getActualDirection(Direction direction) { + return actualDirection.apply(direction); + } + + /** + * @param other The other direction to check + * @return Whether both directions are on the same axis + */ + public boolean isSameAxis(RelativeDirection other) { + return this.global.getAxis() == other.global.getAxis(); } public Vec3i applyVec3i(Direction facing) { - return getActualFacing(facing).getNormal(); + return getActualDirection(facing).getNormal(); } + /** + * @deprecated Renamed to {@link RelativeDirection#getRelative(Direction, Direction, boolean) getRelative}. + */ + @ApiStatus.ScheduledForRemoval(inVersion = "8.0.0") + @Deprecated(since = "7.0.0", forRemoval = true) public Direction getRelativeFacing(Direction frontFacing, Direction upwardsFacing, boolean isFlipped) { - Direction.Axis frontAxis = frontFacing.getAxis(); + return getRelative(frontFacing, upwardsFacing, isFlipped); + } + + public Direction getRelative(Direction frontDir, Direction upwardsDir, boolean isFlipped) { + Direction.Axis frontAxis = frontDir.getAxis(); return switch (this) { case UP -> { if (frontAxis == Direction.Axis.Y) { // same direction as upwards facing - yield upwardsFacing; + yield upwardsDir; } else { // transform the upwards facing into a real facing - yield switch (upwardsFacing) { + yield switch (upwardsDir) { case NORTH -> Direction.UP; case SOUTH -> Direction.DOWN; - case EAST -> frontFacing.getCounterClockWise(); - default -> frontFacing.getClockWise(); // WEST + case EAST -> frontDir.getCounterClockWise(); + default -> frontDir.getClockWise(); // WEST }; } } case DOWN -> { if (frontAxis == Direction.Axis.Y) { // opposite direction as upwards facing - yield upwardsFacing.getOpposite(); + yield upwardsDir.getOpposite(); } else { // transform the upwards facing into a real facing - yield switch (upwardsFacing) { + yield switch (upwardsDir) { case NORTH -> Direction.DOWN; case SOUTH -> Direction.UP; - case EAST -> frontFacing.getClockWise(); - default -> frontFacing.getCounterClockWise(); // WEST + case EAST -> frontDir.getClockWise(); + default -> frontDir.getCounterClockWise(); // WEST }; } } case LEFT -> { - Direction facing; + Direction direction; if (frontAxis == Direction.Axis.Y) { - facing = frontFacing.getStepY() > 0 ? upwardsFacing.getClockWise() : - upwardsFacing.getCounterClockWise(); + direction = frontDir.getStepY() > 0 ? upwardsDir.getClockWise() : upwardsDir.getCounterClockWise(); } else { - facing = switch (upwardsFacing) { - case NORTH -> frontFacing.getCounterClockWise(); - case SOUTH -> frontFacing.getClockWise(); + direction = switch (upwardsDir) { + case NORTH -> frontDir.getCounterClockWise(); + case SOUTH -> frontDir.getClockWise(); case EAST -> Direction.DOWN; default -> Direction.UP; // WEST }; } - yield isFlipped ? facing.getOpposite() : facing; + yield isFlipped ? direction.getOpposite() : direction; } case RIGHT -> { - Direction facing; + Direction direction; if (frontAxis == Direction.Axis.Y) { - facing = frontFacing.getStepY() > 0 ? upwardsFacing.getCounterClockWise() : - upwardsFacing.getClockWise(); + direction = frontDir.getStepY() > 0 ? upwardsDir.getCounterClockWise() : upwardsDir.getClockWise(); } else { - facing = switch (upwardsFacing) { - case NORTH -> frontFacing.getClockWise(); - case SOUTH -> frontFacing.getCounterClockWise(); + direction = switch (upwardsDir) { + case NORTH -> frontDir.getClockWise(); + case SOUTH -> frontDir.getCounterClockWise(); case EAST -> Direction.UP; default -> Direction.DOWN; // WEST }; } // invert if flipped - yield isFlipped ? facing.getOpposite() : facing; + yield isFlipped ? direction.getOpposite() : direction; } // same direction as front facing, upwards facing doesn't matter - case FRONT -> frontFacing; + case FRONT -> frontDir; // opposite direction as front facing, upwards facing doesn't matter - case BACK -> frontFacing.getOpposite(); + case BACK -> frontDir.getOpposite(); }; } - public Function getSorter(Direction frontFacing, Direction upwardsFacing, boolean isFlipped) { + public Comparator getSorter(Direction frontDir, Direction upwardsDir, boolean isFlipped) { // get the direction to go in for the part sorter - Direction sorterDirection = getRelativeFacing(frontFacing, upwardsFacing, isFlipped); + Direction sorterDirection = getRelative(frontDir, upwardsDir, isFlipped); // Determined by Direction.Axis + Direction.AxisDirection return switch (sorterDirection) { - case UP -> BlockPos::getY; - case DOWN -> pos -> -pos.getY(); - case EAST -> BlockPos::getX; - case WEST -> pos -> -pos.getX(); - case NORTH -> pos -> -pos.getZ(); - case SOUTH -> BlockPos::getZ; + case UP -> Comparator.comparingInt(BlockPos::getY); + case DOWN -> Comparator.comparingInt(pos -> -pos.getY()); + case NORTH -> Comparator.comparingInt(pos -> -pos.getZ()); + case EAST -> Comparator.comparingInt(BlockPos::getX); + case SOUTH -> Comparator.comparingInt(BlockPos::getZ); + case WEST -> Comparator.comparingInt(pos -> -pos.getX()); }; } @@ -127,43 +183,42 @@ public Function getSorter(Direction frontFacing, Direction up * * @return Returns the new upwards facing. */ - public static Direction simulateAxisRotation(Direction newFrontFacing, Direction oldFrontFacing, - Direction upwardsFacing) { - if (newFrontFacing == oldFrontFacing) return upwardsFacing; + public static Direction simulateAxisRotation(Direction newFrontDir, Direction oldFrontDir, Direction upwardsDir) { + if (newFrontDir == oldFrontDir) return upwardsDir; - Direction.Axis newAxis = newFrontFacing.getAxis(); - Direction.Axis oldAxis = oldFrontFacing.getAxis(); + Direction.Axis newAxis = newFrontDir.getAxis(); + Direction.Axis oldAxis = oldFrontDir.getAxis(); if (newAxis != Direction.Axis.Y && oldAxis != Direction.Axis.Y) { // no change needed - return upwardsFacing; + return upwardsDir; } else if (newAxis == Direction.Axis.Y && oldAxis != Direction.Axis.Y) { // going from horizontal to vertical axis - Direction newUpwardsFacing = switch (upwardsFacing) { - case NORTH -> oldFrontFacing.getOpposite(); - case SOUTH -> oldFrontFacing; - case EAST -> oldFrontFacing.getCounterClockWise(); - default -> oldFrontFacing.getClockWise(); // WEST + Direction newUpwardsDir = switch (upwardsDir) { + case NORTH -> oldFrontDir.getOpposite(); + case SOUTH -> oldFrontDir; + case EAST -> oldFrontDir.getCounterClockWise(); + default -> oldFrontDir.getClockWise(); // WEST }; - return newFrontFacing == Direction.DOWN && upwardsFacing.getAxis() == Direction.Axis.Z ? - newUpwardsFacing.getOpposite() : newUpwardsFacing; + return newFrontDir == Direction.DOWN && upwardsDir.getAxis() == Direction.Axis.Z ? + newUpwardsDir.getOpposite() : newUpwardsDir; } else if (newAxis != Direction.Axis.Y) { // going from vertical to horizontal axis - Direction newUpwardsFacing; - if (upwardsFacing == newFrontFacing.getOpposite()) { - newUpwardsFacing = Direction.NORTH; - } else if (upwardsFacing == newFrontFacing) { - newUpwardsFacing = Direction.SOUTH; - } else if (upwardsFacing == newFrontFacing.getClockWise()) { - newUpwardsFacing = Direction.WEST; + Direction newUpwardsDir; + if (upwardsDir == newFrontDir) { + newUpwardsDir = Direction.SOUTH; + } else if (upwardsDir == newFrontDir.getOpposite()) { + newUpwardsDir = Direction.NORTH; + } else if (upwardsDir == newFrontDir.getClockWise()) { + newUpwardsDir = Direction.WEST; } else { // getCounterClockWise - newUpwardsFacing = Direction.EAST; + newUpwardsDir = Direction.EAST; } - return oldFrontFacing == Direction.DOWN && newUpwardsFacing.getAxis() == Direction.Axis.Z ? - newUpwardsFacing.getOpposite() : newUpwardsFacing; + return oldFrontDir == Direction.DOWN && newUpwardsDir.getAxis() == Direction.Axis.Z ? + newUpwardsDir.getOpposite() : newUpwardsDir; } else { // was on vertical axis and still is. Must have flipped from up to down or vice versa - return upwardsFacing.getOpposite(); + return upwardsDir.getOpposite(); } } @@ -171,28 +226,90 @@ public static Direction simulateAxisRotation(Direction newFrontFacing, Direction * Offset a BlockPos relatively in any direction by any amount. Pass negative values to offset down, right or * backwards. */ - public static BlockPos offsetPos(BlockPos pos, Direction frontFacing, Direction upwardsFacing, boolean isFlipped, + public static BlockPos offsetPos(BlockPos pos, Direction frontDir, Direction upwardsDir, boolean isFlipped, int upOffset, int leftOffset, int forwardOffset) { if (upOffset == 0 && leftOffset == 0 && forwardOffset == 0) { return pos; } int oX = 0, oY = 0, oZ = 0; - final Direction relUp = UP.getRelativeFacing(frontFacing, upwardsFacing, isFlipped); + final Direction relUp = UP.getRelative(frontDir, upwardsDir, isFlipped); oX += relUp.getStepX() * upOffset; oY += relUp.getStepY() * upOffset; oZ += relUp.getStepZ() * upOffset; - final Direction relLeft = LEFT.getRelativeFacing(frontFacing, upwardsFacing, isFlipped); + final Direction relLeft = LEFT.getRelative(frontDir, upwardsDir, isFlipped); oX += relLeft.getStepX() * leftOffset; oY += relLeft.getStepY() * leftOffset; oZ += relLeft.getStepZ() * leftOffset; - final Direction relForward = FRONT.getRelativeFacing(frontFacing, upwardsFacing, isFlipped); + final Direction relForward = FRONT.getRelative(frontDir, upwardsDir, isFlipped); oX += relForward.getStepX() * forwardOffset; oY += relForward.getStepY() * forwardOffset; oZ += relForward.getStepZ() * forwardOffset; return pos.offset(oX, oY, oZ); } + + public static RelativeDirection fromGlobalDirection(Direction direction) { + return BY_GLOBAL_DIRECTION[direction.ordinal()]; + } + + public static Direction getActualDirection(Direction original, Direction current, Direction direction) { + return findRelativeOf(original, current).getActualDirection(direction); + } + + /** + * Finds the difference of {@code baseDir} and {@code relativeDir} as a relative direction. + *
+ * If {@code baseDir} is vertical (e.g. {@link Direction#UP UP} or {@link Direction#DOWN DOWN}), + * the rotation is calculated with {@link Direction#NORTH NORTH} as the upwards direction. + * + * @param baseDir the direction to offset + * @param relativeDir the direction to offset by + * @return The difference of {@code baseDir} and {@code relativeDir} as a relative direction + */ + public static RelativeDirection findRelativeOf(Direction baseDir, Direction relativeDir) { + return findRelativeOf(baseDir, relativeDir, Direction.NORTH); + } + + /** + * Finds the difference of {@code baseDir} and {@code relativeDir} as a relative direction. + *
+ * If {@code baseDir} is vertical, the rotation is calculated with {@code upwardsDir} as the "upwards" direction. + * + * @param baseDir the direction to offset + * @param relativeDir the direction to offset by + * @param upwardsDir the upwards direction + * @return The difference of {@code baseDir} and {@code relativeDir} as a relative direction + */ + public static RelativeDirection findRelativeOf(Direction baseDir, Direction relativeDir, Direction upwardsDir) { + // Check simple cases first + if (baseDir == relativeDir) return RelativeDirection.FRONT; + if (baseDir.getOpposite() == relativeDir) return RelativeDirection.BACK; + + if (baseDir.getAxis().isHorizontal()) { // baseDir is one of N,S,W,E + if (relativeDir == Direction.UP) return RelativeDirection.UP; + else if (relativeDir == Direction.DOWN) return RelativeDirection.DOWN; + else if (relativeDir == baseDir.getCounterClockWise()) return RelativeDirection.LEFT; + else return RelativeDirection.RIGHT; // getClockWise + } else { // baseDir is UP or DOWN + if (upwardsDir.getAxis() == Direction.Axis.Y) { + throw new IllegalStateException("upwardsDir must be a horizontal direction! is " + upwardsDir); + } + + if (relativeDir == upwardsDir.getCounterClockWise()) { + return RelativeDirection.LEFT; + } else if (relativeDir == upwardsDir.getClockWise()) { + return RelativeDirection.RIGHT; + } else { // relativeDir is NORTH or SOUTH (assuming upwardsDir is NORTH) + RelativeDirection dir; + if (relativeDir == upwardsDir.getOpposite()) dir = RelativeDirection.UP; + else dir = RelativeDirection.DOWN; // relativeDir == NORTH + + if (baseDir == Direction.DOWN) dir = dir.getOpposite(); + return dir; + } + } + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/pipenet/IAttachData.java b/src/main/java/com/gregtechceu/gtceu/api/pipenet/IAttachData.java index 59ca6377ae7..9430665659b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pipenet/IAttachData.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pipenet/IAttachData.java @@ -2,11 +2,6 @@ import net.minecraft.core.Direction; -/** - * @author KilaBash - * @date 2023/3/1 - * @implNote IAttachData - */ public interface IAttachData { /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/pipenet/ITickablePipeNet.java b/src/main/java/com/gregtechceu/gtceu/api/pipenet/ITickablePipeNet.java index c84dedb39ef..d3752d20eca 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pipenet/ITickablePipeNet.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pipenet/ITickablePipeNet.java @@ -1,10 +1,5 @@ package com.gregtechceu.gtceu.api.pipenet; -/** - * @author KilaBash - * @date 2023/2/28 - * @implNote ITickablePipeNet - */ public interface ITickablePipeNet { void update(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeCoverContainer.java b/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeCoverContainer.java index 4dfec360223..5f97235a781 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeCoverContainer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeCoverContainer.java @@ -31,12 +31,6 @@ import lombok.Getter; import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/2/18 - * @implNote PipeCoverContainer - */ - public class PipeCoverContainer implements ICoverable, IEnhancedManaged { public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(PipeCoverContainer.class); diff --git a/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeNet.java b/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeNet.java index 1f6bee43baf..61410075c56 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeNet.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeNet.java @@ -26,7 +26,7 @@ public abstract class PipeNet implements ITagSerializable> nodeByBlockPos = new HashMap<>(); private final Map> unmodifiableNodeByBlockPos = Collections .unmodifiableMap(nodeByBlockPos); - private final Map ownedChunks = new HashMap<>(); + private final Object2IntOpenHashMap ownedChunks = new Object2IntOpenHashMap<>(); private long lastUpdate; boolean isValid = false; @@ -121,17 +121,17 @@ public void removeNode(BlockPos nodePos) { protected void checkAddedInChunk(BlockPos nodePos) { ChunkPos chunkPos = new ChunkPos(nodePos); - int newValue = this.ownedChunks.compute(chunkPos, (pos, old) -> (old == null ? 0 : old) + 1); - if (newValue == 1 && isValid()) { + int oldValue = this.ownedChunks.addTo(chunkPos, 1); + if (oldValue == 0 && isValid()) { this.worldData.addPipeNetToChunk(chunkPos, this); } } protected void ensureRemovedFromChunk(BlockPos nodePos) { ChunkPos chunkPos = new ChunkPos(nodePos); - int newValue = this.ownedChunks.compute(chunkPos, (pos, old) -> old == null ? 0 : old - 1); - if (newValue == 0) { - this.ownedChunks.remove(chunkPos); + int oldValue = this.ownedChunks.containsKey(chunkPos) ? ownedChunks.addTo(chunkPos, -1) : 0; + if (oldValue == 1) { + this.ownedChunks.removeInt(chunkPos); if (isValid()) { this.worldData.removePipeNetFromChunk(chunkPos, this); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/IPlaceholderInfoProviderCover.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/IPlaceholderInfoProviderCover.java new file mode 100644 index 00000000000..586cb41c17b --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/IPlaceholderInfoProviderCover.java @@ -0,0 +1,15 @@ +package com.gregtechceu.gtceu.api.placeholder; + +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; + +import java.util.List; + +public interface IPlaceholderInfoProviderCover { + + long getTicksSincePlaced(); + + List getCreateDisplayTargetBuffer(); + + void setDisplayTargetBufferLine(int line, MutableComponent component); +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/MultiLineComponent.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/MultiLineComponent.java new file mode 100644 index 00000000000..dcaacaa61e4 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/MultiLineComponent.java @@ -0,0 +1,145 @@ +package com.gregtechceu.gtceu.api.placeholder; + +import com.gregtechceu.gtceu.utils.GTUtil; + +import net.minecraft.ChatFormatting; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.nbt.Tag; +import net.minecraft.network.chat.*; + +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +public class MultiLineComponent extends ArrayList { + + public MultiLineComponent(List components) { + super(); + this.addAll(components); + } + + public static MultiLineComponent of(Component c) { + return new MultiLineComponent(List.of(c.copy())); + } + + public static MultiLineComponent literal(String s) { + return MultiLineComponent.of(Component.literal(s)); + } + + public static MultiLineComponent literal(long n) { + return MultiLineComponent.literal(String.valueOf(n)); + } + + public static MultiLineComponent literal(double n) { + return MultiLineComponent.literal(String.valueOf(n)); + } + + public static MultiLineComponent empty() { + return MultiLineComponent.of(CommonComponents.EMPTY); + } + + @Override + public boolean equals(Object o) { + if (o instanceof MultiLineComponent) + return Objects.equals(this.toString(), o.toString()); + return false; + } + + public boolean equalsString(String s) { + return Objects.equals(this.toString(), s); + } + + public String toString() { + StringBuilder out = new StringBuilder(); + if (this.isEmpty()) return out.toString(); + for (Component component : this) { + out.append(component.getString()); + out.append('\n'); + } + return out.substring(0, out.length() - 1); + } + + public double toDouble() { + if (this.isEmpty()) return 0; + if (this.size() > 1) throw new NumberFormatException(this.toString()); + return Double.parseDouble(this.get(0).getString()); + } + + public int toInt() { + if (this.isEmpty()) return 0; + if (this.size() > 1) throw new NumberFormatException(this.toString()); + return Integer.parseInt(this.get(0).getString()); + } + + public void append(@Nullable String s) { + if (s != null) + GTUtil.getLast(this).append(s); + } + + public void append(char c) { + append(String.valueOf(c)); + } + + public MultiLineComponent append(@Nullable List lines) { + if (lines == null) return this; + if (lines.isEmpty()) return this; + for (Component line : lines) { + GTUtil.getLast(this).append(line); + this.add(MutableComponent.create(ComponentContents.EMPTY)); + } + this.remove(this.size() - 1); + return this; + } + + public void appendNewline() { + this.add(MutableComponent.create(ComponentContents.EMPTY)); + } + + public MultiLineComponent withStyle(Style style) { + MultiLineComponent out = MultiLineComponent.empty(); + for (MutableComponent c : this) { + out.append(MultiLineComponent.of(c.withStyle(style))); + out.appendNewline(); + } + return out; + } + + public MultiLineComponent withStyle(ChatFormatting... style) { + MultiLineComponent out = MultiLineComponent.empty(); + for (MutableComponent c : this) { + out.append(MultiLineComponent.of(c.withStyle(style))); + out.appendNewline(); + } + return out; + } + + public List toImmutable() { + return new ArrayList<>(this); + } + + public Tag toTag() { + ListTag tag = new ListTag(); + for (MutableComponent component : this) { + tag.add(StringTag.valueOf(Component.Serializer.toJson(component))); + } + return tag; + } + + public static MultiLineComponent fromTag(ListTag tag) { + MultiLineComponent out = MultiLineComponent.empty(); + out.clear(); + for (Tag i : tag) { + out.add(Component.Serializer.fromJson(i.getAsString())); + } + return out; + } + + public long toLong() { + if (this.isEmpty()) return 0; + if (this.size() > 1) throw new NumberFormatException(this.toString()); + return Long.parseLong(this.get(0).getString()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/Placeholder.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/Placeholder.java new file mode 100644 index 00000000000..7f153477389 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/Placeholder.java @@ -0,0 +1,27 @@ +package com.gregtechceu.gtceu.api.placeholder; + +import com.gregtechceu.gtceu.api.placeholder.exceptions.PlaceholderException; + +import lombok.Getter; + +import java.util.List; + +public abstract class Placeholder { + + @Getter + private final String name; + @Getter + private final int priority; + + public abstract MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException; + + public Placeholder(String name) { + this(name, 0); + } + + public Placeholder(String name, int priority) { + this.name = name; + this.priority = priority; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderContext.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderContext.java new file mode 100644 index 00000000000..ab88492f62e --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderContext.java @@ -0,0 +1,17 @@ +package com.gregtechceu.gtceu.api.placeholder; + +import com.gregtechceu.gtceu.api.cover.CoverBehavior; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.Level; +import net.minecraftforge.items.ItemStackHandler; + +import org.jetbrains.annotations.Nullable; + +public record PlaceholderContext(Level level, + BlockPos pos, + Direction side, + @Nullable ItemStackHandler itemStackHandler, + @Nullable CoverBehavior cover, + @Nullable MultiLineComponent previousText) {} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderHandler.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderHandler.java new file mode 100644 index 00000000000..6b8ba7e41b5 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderHandler.java @@ -0,0 +1,161 @@ +package com.gregtechceu.gtceu.api.placeholder; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.placeholder.exceptions.PlaceholderException; +import com.gregtechceu.gtceu.api.placeholder.exceptions.UnclosedBracketException; +import com.gregtechceu.gtceu.api.placeholder.exceptions.UnexpectedBracketException; +import com.gregtechceu.gtceu.api.placeholder.exceptions.UnknownPlaceholderException; +import com.gregtechceu.gtceu.data.lang.LangHandler; +import com.gregtechceu.gtceu.utils.GTStringUtils; +import com.gregtechceu.gtceu.utils.GTUtil; + +import com.lowdragmc.lowdraglib.gui.texture.TextTexture; +import com.lowdragmc.lowdraglib.gui.widget.DraggableScrollableWidgetGroup; +import com.lowdragmc.lowdraglib.gui.widget.TextTextureWidget; +import com.lowdragmc.lowdraglib.gui.widget.Widget; +import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; + +import net.minecraft.ChatFormatting; +import net.minecraft.MethodsReturnNonnullByDefault; + +import java.util.*; +import java.util.function.Consumer; + +import javax.annotation.ParametersAreNonnullByDefault; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +public class PlaceholderHandler { + + private static final char ARG_SEPARATOR = ' '; + private static final char PLACEHOLDER_BEGIN = '{'; + private static final char PLACEHOLDER_END = '}'; + private static final char ESCAPE = '\\'; + private static final char LITERAL_ESCAPE = '"'; + private static final char NEWLINE = '\n'; + private static final char ESCAPED_NEWLINE = 'n'; + + private static final Map placeholders = new HashMap<>(); + + public static void addPlaceholder(Placeholder placeholder) { + if (placeholders.containsKey(placeholder.getName())) { + if (placeholders.get(placeholder.getName()).getPriority() <= placeholder.getPriority()) { + placeholders.put(placeholder.getName(), placeholder); + } + } else placeholders.put(placeholder.getName(), placeholder); + } + + public static boolean placeholderExists(MultiLineComponent placeholder) { + return placeholders.containsKey(placeholder.toString()); + } + + public static MultiLineComponent processPlaceholder(List placeholder, + PlaceholderContext context) throws PlaceholderException { + if (!placeholderExists(placeholder.get(0))) + throw new UnknownPlaceholderException(placeholder.get(0).toString()); + return placeholders.get(placeholder.get(0).toString()).apply(context, + placeholder.subList(1, placeholder.size())); + } + + public static MultiLineComponent processPlaceholders(String s, PlaceholderContext ctx) { + if (ctx.level().isClientSide) + GTCEu.LOGGER.warn("Placeholder processing is running on client instead of server!"); + List exceptions = new ArrayList<>(); + boolean escape = false; + boolean escapeNext = false; + boolean literalEscape = false; + int line = 1; + int symbol = 1; + Stack> stack = new Stack<>(); + stack.push(GTUtil.list(MultiLineComponent.empty())); + for (char c : s.toCharArray()) { + if (escape || (literalEscape && c != LITERAL_ESCAPE)) { + if (c == ESCAPED_NEWLINE && !literalEscape) { + GTUtil.getLast(stack.peek()).appendNewline(); + line++; + symbol = 0; + } else if (c == NEWLINE) continue; + else GTUtil.getLast(stack.peek()).append(c); + } else { + switch (c) { + case ESCAPE -> escapeNext = true; + case LITERAL_ESCAPE -> literalEscape = !literalEscape; + case NEWLINE -> { + GTUtil.getLast(stack.peek()).appendNewline(); + line++; + symbol = 0; + } + case ARG_SEPARATOR -> { + if (stack.size() == 1) GTUtil.getLast(stack.peek()).append(c); + else stack.peek().add(MultiLineComponent.empty()); + } + case PLACEHOLDER_BEGIN -> stack.push(GTUtil.list(MultiLineComponent.empty())); + case PLACEHOLDER_END -> { + List placeholder = stack.pop(); + try { + if (stack.isEmpty()) throw new UnexpectedBracketException(); + MultiLineComponent result = processPlaceholder(placeholder, ctx); + GTUtil.getLast(stack.peek()).append(result); + } catch (PlaceholderException e) { + e.setLineInfo(line, symbol); + exceptions.add(e); + } catch (RuntimeException e) { + exceptions.add(e); + } + } + default -> GTUtil.getLast(stack.peek()).append(c); + } + } + escape = escapeNext; + escapeNext = false; + symbol++; + } + if (stack.size() > 1) { + PlaceholderException exception = new UnclosedBracketException(); + exception.setLineInfo(line, symbol); + exceptions.add(exception); + } + if (exceptions.isEmpty()) + return stack.peek().stream().reduce(MultiLineComponent.empty(), MultiLineComponent::append); + MultiLineComponent out = MultiLineComponent.empty(); + exceptions.forEach(exception -> { + out.append(exception.getMessage()); + out.appendNewline(); + }); + return out.withStyle(ChatFormatting.DARK_RED); + } + + public static Set getAllPlaceholderNames() { + return placeholders.keySet(); + } + + public static Widget getPlaceholderHandlerUI(String filter) { + DraggableScrollableWidgetGroup placeholderReference = new DraggableScrollableWidgetGroup(280, 15, 100, 200); + Consumer onSearch = (newSearch) -> { + placeholderReference.clearAllWidgets(); + int y = 2; + ArrayList placeholders = new ArrayList<>(getAllPlaceholderNames()); + placeholders.removeIf(s -> s == null || !s.contains(newSearch)); + placeholders.sort(String::compareTo); + for (String placeholder : placeholders) { + TextTextureWidget placeholderName = new TextTextureWidget(0, y, 80, 15, placeholder); + placeholderName.getTextTexture().type = TextTexture.TextType.LEFT; + placeholderName.setHoverTooltips(GTStringUtils + .toImmutable(LangHandler.getSingleOrMultiLang("gtceu.placeholder_info." + placeholder))); + placeholderReference.addWidget(placeholderName); + y += 15; + } + }; + onSearch.accept(filter); + TextTextureWidget placeholderReferenceLabel = new TextTextureWidget( + 280, 0, + 160, 15, + GTStringUtils.componentsToString( + LangHandler.getMultiLang("gtceu.gui.computer_monitor_cover.placeholder_reference"))); + placeholderReferenceLabel.getTextTexture().type = TextTexture.TextType.LEFT; + WidgetGroup out = new WidgetGroup(); + out.addWidget(placeholderReferenceLabel); + out.addWidget(placeholderReference); + return out; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderUtils.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderUtils.java new file mode 100644 index 00000000000..eeb8f00cff3 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderUtils.java @@ -0,0 +1,49 @@ +package com.gregtechceu.gtceu.api.placeholder; + +import com.gregtechceu.gtceu.api.placeholder.exceptions.InvalidNumberException; +import com.gregtechceu.gtceu.api.placeholder.exceptions.NotEnoughArgsException; +import com.gregtechceu.gtceu.api.placeholder.exceptions.OutOfRangeException; +import com.gregtechceu.gtceu.api.placeholder.exceptions.WrongNumberOfArgsException; + +import java.util.List; + +public class PlaceholderUtils { + + public static void checkRange(String what, int min, int max, int n) throws OutOfRangeException { + if (n < min || n > max) throw new OutOfRangeException(what, min, max, n); + } + + public static int toInt(MultiLineComponent component) throws InvalidNumberException { + try { + return component.toInt(); + } catch (NumberFormatException e) { + throw new InvalidNumberException(component.toString()); + } + } + + public static double toDouble(MultiLineComponent component) throws InvalidNumberException { + try { + return component.toDouble(); + } catch (NumberFormatException e) { + throw new InvalidNumberException(component.toString()); + } + } + + public static void checkArgs(List args, int args_num) throws WrongNumberOfArgsException { + if (args.size() != args_num) throw new WrongNumberOfArgsException(args_num, args.size()); + } + + public static void checkArgs(List args, int args_num, + boolean allowMore) throws NotEnoughArgsException, WrongNumberOfArgsException { + if (!allowMore) checkArgs(args, args_num); + if (args.size() < args_num) throw new NotEnoughArgsException(args_num, args.size()); + } + + public static long toLong(MultiLineComponent component) throws InvalidNumberException { + try { + return component.toLong(); + } catch (NumberFormatException e) { + throw new InvalidNumberException(component.toString()); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/InvalidArgsException.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/InvalidArgsException.java new file mode 100644 index 00000000000..2eec004295c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/InvalidArgsException.java @@ -0,0 +1,10 @@ +package com.gregtechceu.gtceu.api.placeholder.exceptions; + +import net.minecraft.network.chat.Component; + +public class InvalidArgsException extends PlaceholderException { + + public InvalidArgsException() { + super(Component.translatable("gtceu.computer_monitor_cover.error.invalid_args").getString()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/InvalidNumberException.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/InvalidNumberException.java new file mode 100644 index 00000000000..ca2a5895ebf --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/InvalidNumberException.java @@ -0,0 +1,10 @@ +package com.gregtechceu.gtceu.api.placeholder.exceptions; + +import net.minecraft.network.chat.Component; + +public class InvalidNumberException extends PlaceholderException { + + public InvalidNumberException(String number) { + super(Component.translatable("gtceu.computer_monitor_cover.error.invalid_number", number).getString()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/MissingItemException.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/MissingItemException.java new file mode 100644 index 00000000000..fa31f6c7206 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/MissingItemException.java @@ -0,0 +1,10 @@ +package com.gregtechceu.gtceu.api.placeholder.exceptions; + +import net.minecraft.network.chat.Component; + +public class MissingItemException extends PlaceholderException { + + public MissingItemException(String item, int slot) { + super(Component.translatable("gtceu.computer_monitor_cover.error.missing_item", item, slot).getString()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/NoMENetworkException.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/NoMENetworkException.java new file mode 100644 index 00000000000..aecc8cfeba4 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/NoMENetworkException.java @@ -0,0 +1,10 @@ +package com.gregtechceu.gtceu.api.placeholder.exceptions; + +import net.minecraft.network.chat.Component; + +public class NoMENetworkException extends PlaceholderException { + + public NoMENetworkException() { + super(Component.translatable("gtceu.computer_monitor_cover.error.no_ae").getString()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/NotEnoughArgsException.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/NotEnoughArgsException.java new file mode 100644 index 00000000000..b12b30db941 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/NotEnoughArgsException.java @@ -0,0 +1,10 @@ +package com.gregtechceu.gtceu.api.placeholder.exceptions; + +import net.minecraft.network.chat.Component; + +public class NotEnoughArgsException extends PlaceholderException { + + public NotEnoughArgsException(int expected, int got) { + super(Component.translatable("gtceu.computer_monitor_cover.error.not_enough_args", expected, got).getString()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/NotSupportedException.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/NotSupportedException.java new file mode 100644 index 00000000000..7218faaaf40 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/NotSupportedException.java @@ -0,0 +1,10 @@ +package com.gregtechceu.gtceu.api.placeholder.exceptions; + +import net.minecraft.network.chat.Component; + +public class NotSupportedException extends PlaceholderException { + + public NotSupportedException() { + super(Component.translatable("gtceu.computer_monitor_cover.error.not_supported").getString()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/OutOfRangeException.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/OutOfRangeException.java new file mode 100644 index 00000000000..76c047abad7 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/OutOfRangeException.java @@ -0,0 +1,11 @@ +package com.gregtechceu.gtceu.api.placeholder.exceptions; + +import net.minecraft.network.chat.Component; + +public class OutOfRangeException extends PlaceholderException { + + public OutOfRangeException(String what, int min, int max, int provided) { + super(Component.translatable("gtceu.computer_monitor_cover.error.not_in_range", what, min, max, provided) + .getString()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/PlaceholderException.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/PlaceholderException.java new file mode 100644 index 00000000000..30882b11f89 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/PlaceholderException.java @@ -0,0 +1,22 @@ +package com.gregtechceu.gtceu.api.placeholder.exceptions; + +public class PlaceholderException extends Exception { + + private String message; + private int line = 0, symbol = 0; + + public PlaceholderException(String message) { + super(message); + this.message = message; + } + + public void setLineInfo(int line, int symbol) { + this.line = line; + this.symbol = symbol; + } + + @Override + public String getMessage() { + return "%d:%d: %s".formatted(line, symbol, message); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/UnclosedBracketException.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/UnclosedBracketException.java new file mode 100644 index 00000000000..17ad606f6cc --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/UnclosedBracketException.java @@ -0,0 +1,10 @@ +package com.gregtechceu.gtceu.api.placeholder.exceptions; + +import net.minecraft.network.chat.Component; + +public class UnclosedBracketException extends PlaceholderException { + + public UnclosedBracketException() { + super(Component.translatable("gtceu.computer_monitor_cover.error.unclosed_bracket").getString()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/UnexpectedBracketException.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/UnexpectedBracketException.java new file mode 100644 index 00000000000..df9db034f83 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/UnexpectedBracketException.java @@ -0,0 +1,10 @@ +package com.gregtechceu.gtceu.api.placeholder.exceptions; + +import net.minecraft.network.chat.Component; + +public class UnexpectedBracketException extends RuntimeException { + + public UnexpectedBracketException() { + super(Component.translatable("gtceu.computer_monitor_cover.error.unexpected_bracket").getString()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/UnknownPlaceholderException.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/UnknownPlaceholderException.java new file mode 100644 index 00000000000..fc9efe4916b --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/UnknownPlaceholderException.java @@ -0,0 +1,10 @@ +package com.gregtechceu.gtceu.api.placeholder.exceptions; + +import net.minecraft.network.chat.Component; + +public class UnknownPlaceholderException extends PlaceholderException { + + public UnknownPlaceholderException(String name) { + super(Component.translatable("gtceu.computer_monitor_cover.error.no_placeholder", name).getString()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/WrongNumberOfArgsException.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/WrongNumberOfArgsException.java new file mode 100644 index 00000000000..88e3f6f6da2 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/WrongNumberOfArgsException.java @@ -0,0 +1,11 @@ +package com.gregtechceu.gtceu.api.placeholder.exceptions; + +import net.minecraft.network.chat.Component; + +public class WrongNumberOfArgsException extends PlaceholderException { + + public WrongNumberOfArgsException(int expected, int got) { + super(Component.translatable("gtceu.computer_monitor_cover.error.wrong_number_of_args", expected, got) + .getString()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ActionResult.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ActionResult.java index 8d4f795f70f..9294b66e51e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ActionResult.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ActionResult.java @@ -1,5 +1,8 @@ package com.gregtechceu.gtceu.api.recipe; +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; + import net.minecraft.network.chat.Component; import org.jetbrains.annotations.Nullable; @@ -8,17 +11,18 @@ * @param isSuccess is action success * @param reason if fail, fail reason */ -public record ActionResult(boolean isSuccess, @Nullable Component reason) { +public record ActionResult(boolean isSuccess, @Nullable Component reason, @Nullable RecipeCapability capability, + @Nullable IO io) { - public final static ActionResult SUCCESS = new ActionResult(true, null); - public final static ActionResult FAIL_NO_REASON = new ActionResult(false, null); + public final static ActionResult SUCCESS = new ActionResult(true, null, null, null); + public final static ActionResult FAIL_NO_REASON = new ActionResult(false, null, null, null); public final static ActionResult PASS_NO_CONTENTS = new ActionResult(true, - Component.translatable("gtceu.recipe_logic.no_contents")); + Component.translatable("gtceu.recipe_logic.no_contents"), null, null); public final static ActionResult FAIL_NO_CAPABILITIES = new ActionResult(false, - Component.translatable("gtceu.recipe_logic.no_capabilities")); + Component.translatable("gtceu.recipe_logic.no_capabilities"), null, null); - public static ActionResult fail(@Nullable Component component) { - return new ActionResult(false, component); + public static ActionResult fail(@Nullable Component component, @Nullable RecipeCapability capability, IO io) { + return new ActionResult(false, component, capability, io); } public Component reason() { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/FacadeCoverRecipe.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/FacadeCoverRecipe.java index 75f6f4931e4..8b41fb4569a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/FacadeCoverRecipe.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/FacadeCoverRecipe.java @@ -20,16 +20,12 @@ import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; import com.google.gson.JsonObject; import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/28 - * @implNote FacadeCoverRecipe - */ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public class FacadeCoverRecipe implements CraftingRecipe { @@ -55,37 +51,47 @@ public void toNetwork(FriendlyByteBuf buffer, FacadeCoverRecipe recipe) {} @Override public boolean matches(CraftingContainer container, Level level) { - int plateSize = 0; + int platesCount = 0; boolean foundBlockItem = false; for (int i = 0; i < container.getContainerSize(); i++) { var item = container.getItem(i); if (item.isEmpty()) continue; if (FacadeItemBehaviour.isValidFacade(item)) { + if (foundBlockItem) { + return false; + } foundBlockItem = true; - continue; + } else if (item.is(ChemicalHelper.getTag(TagPrefix.plate, GTMaterials.Iron))) { + if (platesCount > 3) { + return false; + } + platesCount++; + } else { + return false; } - if (item.is(ChemicalHelper.getTag(TagPrefix.plate, GTMaterials.Iron))) { - plateSize++; - continue; - } - return false; } - return foundBlockItem && plateSize == 3; + return foundBlockItem && platesCount == 3; } @Override public ItemStack assemble(CraftingContainer container, RegistryAccess registryManager) { ItemStack itemStack = GTItems.COVER_FACADE.asStack(); + BlockState facadeState = null; + for (int i = 0; i < container.getContainerSize(); i++) { var item = container.getItem(i); if (item.isEmpty()) continue; if (FacadeItemBehaviour.isValidFacade(item)) { - FacadeItemBehaviour.setFacadeStack(itemStack, item); - itemStack.setCount(6); + facadeState = FacadeItemBehaviour.getFacadeState(item); break; } } - return itemStack; + if (facadeState != null) { + FacadeItemBehaviour.setFacadeState(itemStack, facadeState); + itemStack.setCount(6); + return itemStack; + } + return ItemStack.EMPTY; } @Override @@ -99,13 +105,13 @@ public NonNullList getIngredients() { @Override public boolean canCraftInDimensions(int width, int height) { - return false; + return width * height >= 4; } @Override public ItemStack getResultItem(RegistryAccess registryManager) { var result = GTItems.COVER_FACADE.asStack(); - FacadeItemBehaviour.setFacadeStack(GTItems.COVER_FACADE.asStack(), new ItemStack(Blocks.STONE)); + FacadeItemBehaviour.setFacadeState(result, Blocks.STONE.defaultBlockState()); return result; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java index cbb0fbbc34e..ce79fbe0edd 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java @@ -5,6 +5,7 @@ import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.RegistryAccess; @@ -24,11 +25,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote GTRecipe - */ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public class GTRecipe implements net.minecraft.world.item.crafting.Recipe { @@ -55,8 +51,14 @@ public class GTRecipe implements net.minecraft.world.item.crafting.Recipe, List> inputs, @@ -133,6 +135,7 @@ public GTRecipe copy(ContentModifier modifier, boolean modifyDuration) { } copied.ocLevel = ocLevel; copied.parallels = parallels; + copied.batchParallels = batchParallels; return copied; } @@ -210,6 +213,19 @@ public ChanceLogic getChanceLogicForCapability(RecipeCapability cap, IO io, b return ChanceLogic.OR; } + // Technically should account for overflow but realistically not an issue. + protected @NotNull EnergyStack calculateEUt(Map, List> contents) { + var outputs = contents.get(EURecipeCapability.CAP); + if (outputs == null) return EnergyStack.EMPTY; + long v = 0, a = 0; + for (var content : outputs) { + EnergyStack stack = EURecipeCapability.CAP.of(content.content); + v += stack.voltage(); + a += stack.amperage(); + } + return new EnergyStack(v, a); + } + // Just check id as there *should* only ever be 1 instance of a recipe with this id. // If this doesn't work, fix. @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializer.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializer.java index 3007c787056..207e8976058 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializer.java @@ -18,10 +18,8 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; -import com.google.gson.JsonNull; import com.google.gson.JsonObject; import com.mojang.serialization.Codec; -import com.mojang.serialization.Dynamic; import com.mojang.serialization.JsonOps; import com.mojang.serialization.codecs.RecordCodecBuilder; import dev.latvian.mods.kubejs.recipe.ingredientaction.IngredientAction; @@ -29,11 +27,6 @@ import java.util.*; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote GTRecipeSerializer - */ public class GTRecipeSerializer implements RecipeSerializer { public static final Codec CODEC = makeCodec(GTCEu.Mods.isKubeJSLoaded()); @@ -193,7 +186,7 @@ public void toNetwork(FriendlyByteBuf buf, GTRecipe recipe) { } private static Codec makeCodec(boolean isKubeLoaded) { - // @formatter:off + // spotless:off if (!isKubeLoaded) { return RecordCodecBuilder.create(instance -> instance.group( GTRegistries.RECIPE_TYPES.codec().fieldOf("type").forGetter(val -> val.recipeType), @@ -242,17 +235,20 @@ private static Codec makeCodec(boolean isKubeLoaded) { GTRegistries.RECIPE_CATEGORIES.codec().optionalFieldOf("category", GTRecipeCategory.DEFAULT).forGetter(val -> val.recipeCategory)) .apply(instance, GTRecipe::new)); } - // @formatter:on + // spotless:on } public static class KJSCallWrapper { - public static final Codec> INGREDIENT_ACTION_CODEC = Codec.PASSTHROUGH.xmap( - dynamic -> { - JsonElement json = dynamic.convert(JsonOps.INSTANCE).getValue(); - return IngredientAction.parseList(json); - }, - list -> new Dynamic<>(JsonOps.INSTANCE, JsonNull.INSTANCE)); + public static final Codec> INGREDIENT_ACTION_CODEC = ExtraCodecs.JSON.xmap( + IngredientAction::parseList, + list -> { + JsonArray value = new JsonArray(); + for (IngredientAction action : list) { + value.add(action.toJson()); + } + return value; + }); public static List getIngredientActions(JsonObject json) { return IngredientAction.parseList(json.get("kubejs:actions")); diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java index c77e11bdc65..8ed88d3e3a2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java @@ -2,14 +2,12 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.capability.recipe.*; -import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialEntry; import com.gregtechceu.gtceu.api.gui.SteamTexture; import com.gregtechceu.gtceu.api.recipe.category.GTRecipeCategory; import com.gregtechceu.gtceu.api.recipe.chance.boost.ChanceBoostFunction; import com.gregtechceu.gtceu.api.recipe.lookup.GTRecipeLookup; import com.gregtechceu.gtceu.api.recipe.ui.GTRecipeTypeUI; import com.gregtechceu.gtceu.api.sound.SoundEntry; -import com.gregtechceu.gtceu.core.mixins.RecipeManagerInvoker; import com.gregtechceu.gtceu.data.recipe.builder.GTRecipeBuilder; import com.gregtechceu.gtceu.utils.FormattingUtil; @@ -25,13 +23,9 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Recipe; -import net.minecraft.world.item.crafting.RecipeManager; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.item.crafting.SmeltingRecipe; -import net.minecraft.world.level.ItemLike; -import it.unimi.dsi.fastutil.bytes.Byte2ObjectArrayMap; -import it.unimi.dsi.fastutil.bytes.Byte2ObjectMap; import it.unimi.dsi.fastutil.objects.*; import lombok.Getter; import lombok.Setter; @@ -42,28 +36,23 @@ import java.util.*; import java.util.function.*; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote GTRecipeType - */ @Accessors(chain = true) public class GTRecipeType implements RecipeType { public final ResourceLocation registryName; public final String group; - public final TreeMap, Integer> maxInputs = new TreeMap<>(RecipeCapability.COMPARATOR); - public final TreeMap, Integer> maxOutputs = new TreeMap<>(RecipeCapability.COMPARATOR); + public final Object2IntSortedMap> maxInputs = new Object2IntAVLTreeMap<>( + RecipeCapability.COMPARATOR); + public final Object2IntSortedMap> maxOutputs = new Object2IntAVLTreeMap<>( + RecipeCapability.COMPARATOR); @Setter private GTRecipeBuilder recipeBuilder; @Getter @Setter - private ChanceBoostFunction chanceFunction = ChanceBoostFunction.OVERCLOCK; + private ChanceBoostFunction chanceFunction = ChanceBoostFunction.NONE; @Getter @Setter private GTRecipeTypeUI recipeUI = new GTRecipeTypeUI(this); - @Getter - private final Byte2ObjectMap slotOverlays = new Byte2ObjectArrayMap<>(); @Setter @Getter private GTRecipeType smallRecipeMap; @@ -90,7 +79,6 @@ public class GTRecipeType implements RecipeType { private final GTRecipeCategory category; @Getter private final Map> categoryMap = new Object2ObjectOpenHashMap<>(); - private CompoundTag customUICache; @Getter private final GTRecipeLookup lookup = new GTRecipeLookup(this); @Setter @@ -102,6 +90,8 @@ public class GTRecipeType implements RecipeType { private final Map> researchEntries = new Object2ObjectOpenHashMap<>(); @Getter private final List customRecipeLogicRunners = new ArrayList<>(); + @Getter + private int minRecipeConditions = 0; public GTRecipeType(ResourceLocation registryName, String group, RecipeType... proxyRecipes) { this.registryName = registryName; @@ -184,6 +174,10 @@ public GTRecipeType addDataInfo(Function dataInfo) { return this; } + public void setMinRecipeConditions(int n) { + minRecipeConditions = Math.max(minRecipeConditions, n); + } + /** * * @param recipeLogic A function which is passed the normal findRecipe() result. Returns null if no valid recipe for @@ -199,15 +193,6 @@ public String toString() { return registryName.toString(); } - @Nullable - public GTRecipe getRecipe(RecipeManager recipeManager, ResourceLocation id) { - var recipes = ((RecipeManagerInvoker) recipeManager).getRecipeFromType(this); - if (recipes.get(id) instanceof GTRecipe recipe) { - return recipe; - } - return null; - } - public @NotNull Iterator searchRecipe(IRecipeCapabilityHolder holder, Predicate canHandle) { if (!holder.hasCapabilityProxies()) return Collections.emptyIterator(); var iterator = getLookup().getRecipeIterator(holder, canHandle); @@ -248,32 +233,27 @@ public GTRecipeType prepareBuilder(Consumer onPrepare) { return this; } - public GTRecipeBuilder recipeBuilder(ResourceLocation id, Object... append) { - if (append.length > 0) { - return recipeBuilder.copy(new ResourceLocation(id.getNamespace(), - id.getPath() + Arrays.stream(append).map(Object::toString).map(FormattingUtil::toLowerCaseUnder) - .reduce("", (a, b) -> a + "_" + b))); - } + public GTRecipeBuilder recipeBuilder(ResourceLocation id) { return recipeBuilder.copy(id); } - public GTRecipeBuilder recipeBuilder(String id, Object... append) { - return recipeBuilder(GTCEu.id(id), append); - } - - public GTRecipeBuilder recipeBuilder(MaterialEntry entry, Object... append) { - return recipeBuilder( - GTCEu.id(entry.tagPrefix() + - (entry.material().isNull() ? "" : "_" + entry.material().getName())), - append); + public GTRecipeBuilder recipeBuilder(ResourceLocation id, Object... append) { + if (append.length > 0) { + String toAppend = Arrays.stream(append) + .map(Object::toString) + .map(FormattingUtil::toLowerCaseUnderscore) + .reduce("", (a, b) -> a + "_" + b); + id = id.withSuffix(toAppend); + } + return recipeBuilder(id); } - public GTRecipeBuilder recipeBuilder(Supplier item, Object... append) { - return recipeBuilder(item.get(), append); + public GTRecipeBuilder recipeBuilder(String id) { + return recipeBuilder(GTCEu.id(id)); } - public GTRecipeBuilder recipeBuilder(ItemLike itemLike, Object... append) { - return recipeBuilder(new ResourceLocation(itemLike.asItem().getDescriptionId()), append); + public GTRecipeBuilder recipeBuilder(String id, Object... append) { + return recipeBuilder(GTCEu.id(id), append); } public GTRecipeBuilder copyFrom(GTRecipeBuilder builder) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/OverclockingLogic.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/OverclockingLogic.java index 1129a6eca4f..f65006995d1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/OverclockingLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/OverclockingLogic.java @@ -5,10 +5,14 @@ import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; import com.gregtechceu.gtceu.api.recipe.modifier.ModifierFunction; import com.gregtechceu.gtceu.api.recipe.modifier.ParallelLogic; +import com.gregtechceu.gtceu.utils.GTMath; import com.gregtechceu.gtceu.utils.GTUtil; +import com.google.common.math.IntMath; import org.jetbrains.annotations.NotNull; +import java.math.RoundingMode; + import javax.annotation.ParametersAreNonnullByDefault; /** @@ -63,9 +67,9 @@ static OverclockingLogic create(double durationFactor, double voltageFactor, boo * @param shouldParallel whether the OC Logic should parallel or not * @return A {@link ModifierFunction} describing how the OC application should modify the recipe */ - default @NotNull ModifierFunction getModifier(MetaMachine machine, GTRecipe recipe, - long maxVoltage, boolean shouldParallel) { - long EUt = Math.abs(RecipeHelper.getRealEUt(recipe)); + default @NotNull ModifierFunction getModifier(MetaMachine machine, GTRecipe recipe, long maxVoltage, + boolean shouldParallel) { + long EUt = RecipeHelper.getRealEUt(recipe).getTotalEU(); if (EUt == 0) return ModifierFunction.IDENTITY; int recipeTier = GTUtil.getTierByVoltage(EUt); @@ -77,10 +81,19 @@ static OverclockingLogic create(double durationFactor, double voltageFactor, boo int maxParallels; if (!shouldParallel || this == PERFECT_OVERCLOCK || this == NON_PERFECT_OVERCLOCK) { // don't parallel maxParallels = 1; - } else if ((Math.pow(PERFECT_DURATION_FACTOR, OCs) * recipe.duration) > 1) { - maxParallels = 512; // if duration probably won't go below 1, give default overhead to save time } else { - maxParallels = ParallelLogic.getParallelAmount(machine, recipe, Integer.MAX_VALUE); + // lg = floor(log_4(duration)), which is how many OCs it takes to get duration < 4 with perfect duration + // factor + // If OCs <= lg, duration probably won't go below 4 + // If OCs > lg, then we could have 4^(OCs - lg) parallels + // Note that 4^x = (2^2)^x = 2^(2x) = 1 << 2x + int lg = IntMath.log2(recipe.duration, RoundingMode.FLOOR) / 2; + if (lg > OCs) { + maxParallels = 16; + } else { + int p = GTMath.saturatedCast((1L << (2 * (OCs - lg))) + 1); + maxParallels = ParallelLogic.getParallelAmount(machine, recipe, p); + } } OCParams params = new OCParams(EUt, recipe.duration, OCs, maxParallels); @@ -88,8 +101,7 @@ static OverclockingLogic create(double durationFactor, double voltageFactor, boo return result.toModifier(); } - default @NotNull ModifierFunction getModifier(MetaMachine machine, GTRecipe recipe, - long maxVoltage) { + default @NotNull ModifierFunction getModifier(MetaMachine machine, GTRecipe recipe, long maxVoltage) { return getModifier(machine, recipe, maxVoltage, true); } @@ -109,8 +121,7 @@ static OverclockingLogic create(double durationFactor, double voltageFactor, boo * @param voltageFactor the factor to multiply voltage by * @return the result of the overclock */ - static OCResult standardOC(OCParams params, long maxVoltage, double durationFactor, - double voltageFactor) { + static OCResult standardOC(OCParams params, long maxVoltage, double durationFactor, double voltageFactor) { double duration = params.duration; double eut = params.eut; int ocAmount = params.ocAmount; @@ -202,8 +213,7 @@ static OCResult subTickNonParallelOC(OCParams params, long maxVoltage, double du * @param voltageFactor the factor to multiply voltage by * @return the result of the overclock */ - static OCResult subTickParallelOC(OCParams params, long maxVoltage, double durationFactor, - double voltageFactor) { + static OCResult subTickParallelOC(OCParams params, long maxVoltage, double durationFactor, double voltageFactor) { double duration = params.duration; double eut = params.eut; int ocAmount = params.ocAmount; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeCondition.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeCondition.java index 2baeb80ad9c..576a635f457 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeCondition.java @@ -20,11 +20,6 @@ import lombok.experimental.Accessors; import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2022/05/27 - * @implNote RecipeCondition, global conditions - */ @Accessors(chain = true) public abstract class RecipeCondition { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java index 55e7c93604e..07f086d3680 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java @@ -2,9 +2,16 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.capability.recipe.*; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroup; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroupColor; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroupDistinctness; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.recipe.condition.RecipeConditionType; import com.gregtechceu.gtceu.api.recipe.content.Content; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; +import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; +import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.data.recipe.builder.GTRecipeBuilder; import com.gregtechceu.gtceu.utils.GTUtil; @@ -18,49 +25,41 @@ import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.stream.Collectors; -/** - * @author KilaBash - * @date 2023/2/26 - * @implNote RecipeHelper - */ public class RecipeHelper { - public static long getInputEUt(GTRecipe recipe) { - return recipe.getTickInputContents(EURecipeCapability.CAP).stream() - .map(Content::getContent) - .mapToLong(EURecipeCapability.CAP::of) - .sum(); + public static EnergyStack getRealEUt(@NotNull GTRecipe recipe) { + EnergyStack stack = recipe.getInputEUt(); + if (!stack.isEmpty()) return stack; + return recipe.getOutputEUt(); } - public static long getOutputEUt(GTRecipe recipe) { - return recipe.getTickOutputContents(EURecipeCapability.CAP).stream() - .map(Content::getContent) - .mapToLong(EURecipeCapability.CAP::of) - .sum(); - } - - public static long getRealEUt(@NotNull GTRecipe recipe) { - long EUt = getInputEUt(recipe); - if (EUt > 0) return EUt; - return -getOutputEUt(recipe); + /** + * Get a pair of the absolute EU/t value this recipe inputs or outputs and if it's input or output + * + * @param recipe + * @return A pair of {@code (EnergyStack, isInput)} + */ + public static EnergyStack.WithIO getRealEUtWithIO(@NotNull GTRecipe recipe) { + EnergyStack stack = recipe.getInputEUt(); + if (!stack.isEmpty()) return new EnergyStack.WithIO(stack, IO.IN); + return new EnergyStack.WithIO(recipe.getOutputEUt(), IO.OUT); } public static int getRecipeEUtTier(GTRecipe recipe) { - long EUt = getInputEUt(recipe); - if (EUt == 0) { - EUt = getOutputEUt(recipe); - } + EnergyStack stack = getRealEUt(recipe); + long EUt = stack.voltage(); if (recipe.parallels > 1) EUt /= recipe.parallels; return GTUtil.getTierByVoltage(EUt); } public static int getPreOCRecipeEuTier(GTRecipe recipe) { - long EUt = getInputEUt(recipe); - if (EUt == 0) EUt = getOutputEUt(recipe); + EnergyStack stack = getRealEUt(recipe); + long EUt = stack.getTotalEU(); if (recipe.parallels > 1) EUt /= recipe.parallels; EUt >>= (recipe.ocLevel * 2); return GTUtil.getTierByVoltage(EUt); @@ -222,15 +221,15 @@ public static ActionResult handleRecipe(IRecipeCapabilityHolder holder, GTRecipe RecipeRunner runner = new RecipeRunner(recipe, io, isTick, holder, chanceCaches, simulated); var result = runner.handle(contents); - if (result.isSuccess() || result.capability() == null) return result.result(); + if (result.isSuccess() || result.capability() == null) return result; - if (!simulated) { + if (!simulated && ConfigHolder.INSTANCE.dev.debug) { GTCEu.LOGGER.warn("IO {} Error while handling recipe {} outputs for {}", Component.translatable(io.tooltip).getString(), recipe, holder); } String key = "gtceu.recipe_logic.insufficient_" + (io == IO.IN ? "in" : "out"); return ActionResult.fail(Component.translatable(key) - .append(": ").append(result.capability().getName())); + .append(": ").append(result.capability().getName()), result.capability(), io); } public static ActionResult matchContents(IRecipeCapabilityHolder holder, GTRecipe recipe) { @@ -240,38 +239,6 @@ public static ActionResult matchContents(IRecipeCapabilityHolder holder, GTRecip return matchTickRecipe(holder, recipe); } - public static void preWorking(IRecipeCapabilityHolder holder, GTRecipe recipe) { - handlePre(holder, recipe, IO.IN); - handlePre(holder, recipe, IO.OUT); - } - - public static void postWorking(IRecipeCapabilityHolder holder, GTRecipe recipe) { - handlePost(holder, recipe, IO.IN); - handlePost(holder, recipe, IO.OUT); - } - - public static void handlePre(IRecipeCapabilityHolder holder, GTRecipe recipe, IO io) { - var map = io == IO.IN ? recipe.inputs : recipe.outputs; - for (var cap : map.keySet()) { - var handlers = holder.getCapabilitiesFlat(io, cap); - if (handlers.isEmpty()) handlers = holder.getCapabilitiesFlat(IO.BOTH, cap); - for (var handler : handlers) { - handler.preWorking(holder, io, recipe); - } - } - } - - public static void handlePost(IRecipeCapabilityHolder holder, GTRecipe recipe, IO io) { - var map = io == IO.IN ? recipe.inputs : recipe.outputs; - for (var cap : map.keySet()) { - var handlers = holder.getCapabilitiesFlat(io, cap); - if (handlers.isEmpty()) handlers = holder.getCapabilitiesFlat(IO.BOTH, cap); - for (var handler : handlers) { - handler.postWorking(holder, io, recipe); - } - } - } - /** * Check whether all conditions of a recipe are valid * @@ -288,7 +255,7 @@ public static ActionResult checkConditions(GTRecipe recipe, @NotNull RecipeLogic } else if (!condition.check(recipe, recipeLogic)) { return ActionResult.fail(Component.translatable("gtceu.recipe_logic.condition_fails") .append(": ") - .append(condition.getTooltips())); + .append(condition.getTooltips()), null, null); } } @@ -303,7 +270,7 @@ public static ActionResult checkConditions(GTRecipe recipe, @NotNull RecipeLogic } if (!passed) { - return ActionResult.fail(component); + return ActionResult.fail(component, null, null); } } return ActionResult.SUCCESS; @@ -378,4 +345,54 @@ public static Map, List> doTrim(Map> map) { + // If they should bypass this system, add them to the BYPASS_DISTINCT group. + if (handler.doesCapabilityBypassDistinct()) { + map.computeIfAbsent(RecipeHandlerGroupDistinctness.BYPASS_DISTINCT, $ -> new ArrayList<>()).add(handler); + return; + } + // Add undyed RHL's to every group that's not distinct, bypass, and also the undyed group itself. + if (key.equals(RecipeHandlerGroupColor.UNDYED)) { + for (var entry : map.entrySet()) { + if (entry.getKey().equals(RecipeHandlerGroupDistinctness.BUS_DISTINCT) || + entry.getKey().equals(RecipeHandlerGroupDistinctness.BYPASS_DISTINCT) || + entry.getKey().equals(RecipeHandlerGroupColor.UNDYED)) { + continue; + } + entry.getValue().add(handler); + } + } + // Add other RHL's to their own group, or create it (using the undyed group as base) if it does not exist. + List undyed = map.getOrDefault(RecipeHandlerGroupColor.UNDYED, Collections.emptyList()); + + map.computeIfAbsent(key, $ -> new ArrayList<>(undyed)).add(handler); + } + + public static int getRatioForDistillery(FluidIngredient fluidInput, FluidIngredient fluidOutput, + @Nullable ItemStack output) { + int[] divisors = new int[] { 2, 5, 10, 25, 50 }; + int ratio = -1; + + for (int divisor : divisors) { + + if (!isFluidStackDivisibleForDistillery(fluidInput, divisor)) + continue; + + if (!isFluidStackDivisibleForDistillery(fluidOutput, divisor)) + continue; + + if (output != null && output.getCount() % divisor != 0) + continue; + + ratio = divisor; + } + + return Math.max(1, ratio); + } + + public static boolean isFluidStackDivisibleForDistillery(FluidIngredient fluidStack, int divisor) { + return fluidStack.getAmount() % divisor == 0 && fluidStack.getAmount() / divisor >= 25; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java index 3ddedef79a2..c7ff956ba56 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.IRecipeCapabilityHolder; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroup; import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; import com.gregtechceu.gtceu.api.recipe.chance.boost.ChanceBoostFunction; import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; @@ -11,25 +12,18 @@ import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; -/** - * Used to handle recipes, only valid for a single RecipeCapability's entries - */ -class RecipeRunner { +import static com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroupDistinctness.BUS_DISTINCT; +import static com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroupDistinctness.BYPASS_DISTINCT; +import static com.gregtechceu.gtceu.api.recipe.RecipeHelper.addToRecipeHandlerMap; - record RecipeHandlingResult(ActionResult result, @Nullable RecipeCapability capability) { - - public static RecipeHandlingResult SUCCESS = new RecipeHandlingResult(ActionResult.SUCCESS, null); - - public boolean isSuccess() { - return result.isSuccess(); - } - } +public class RecipeRunner { private final GTRecipe recipe; private final IO io; @@ -54,11 +48,11 @@ public RecipeRunner(GTRecipe recipe, IO io, boolean isTick, } @NotNull - public RecipeHandlingResult handle(Map, List> entries) { + public ActionResult handle(Map, List> entries) { fillContentMatchList(entries); if (searchRecipeContents.isEmpty()) { - return new RecipeHandlingResult(ActionResult.PASS_NO_CONTENTS, null); + return ActionResult.PASS_NO_CONTENTS; } return this.handleContents(); @@ -100,7 +94,7 @@ private void fillContentMatchList(Map, List> entrie if (!chancedContents.isEmpty()) { var cache = this.chanceCaches.get(cap); chancedContents = logic.roll(chancedContents, function, recipeTier, chanceTier, cache, - recipe.parallels); + recipe.parallels * recipe.batchParallels); for (Content cont : chancedContents) { contentList.add(cont.content); @@ -111,63 +105,108 @@ private void fillContentMatchList(Map, List> entrie } } - private RecipeHandlingResult handleContents() { - var result = handleContentsInternal(io); - if (result.isSuccess()) return result; - return handleContentsInternal(IO.BOTH); - } - - private RecipeHandlingResult handleContentsInternal(IO capIO) { - if (recipeContents.isEmpty()) return RecipeHandlingResult.SUCCESS; - if (!capabilityProxies.containsKey(capIO)) { - return new RecipeHandlingResult(ActionResult.FAIL_NO_CAPABILITIES, null); + private ActionResult handleContents() { + if (recipeContents.isEmpty()) return ActionResult.SUCCESS; + if (!capabilityProxies.containsKey(io)) { + return ActionResult.FAIL_NO_CAPABILITIES; } - var handlers = capabilityProxies.get(capIO); + List handlers = capabilityProxies.getOrDefault(io, Collections.emptyList()); // Only sort for non-tick outputs - if (!isTick && capIO == IO.OUT) { + if (!isTick && io.support(IO.OUT)) { handlers.sort(RecipeHandlerList.COMPARATOR.reversed()); } - List distinct = new ArrayList<>(); - List indistinct = new ArrayList<>(); + + Map> handlerGroups = new HashMap<>(); for (var handler : handlers) { - if (handler.isDistinct()) distinct.add(handler); - else indistinct.add(handler); + addToRecipeHandlerMap(handler.getGroup(), handler, handlerGroups); } - - // handle distinct first - for (var handler : distinct) { + // Specifically check distinct handlers first + for (RecipeHandlerList handler : handlerGroups.getOrDefault(BUS_DISTINCT, Collections.emptyList())) { + // Handle the contents of this handler and also all the bypassed handlers var res = handler.handleRecipe(io, recipe, searchRecipeContents, true); + if (!res.isEmpty()) { + for (RecipeHandlerList bypassHandler : handlerGroups.getOrDefault(BYPASS_DISTINCT, + Collections.emptyList())) { + res = bypassHandler.handleRecipe(io, recipe, res, true); + if (res.isEmpty()) break; + } + } if (res.isEmpty()) { if (!simulated) { - handler.handleRecipe(io, recipe, recipeContents, false); + // Actually consume the contents of this handler and also all the bypassed handlers + recipeContents = handler.handleRecipe(io, recipe, recipeContents, false); + for (RecipeHandlerList bypassHandler : handlerGroups.getOrDefault(BYPASS_DISTINCT, + Collections.emptyList())) { + recipeContents = bypassHandler.handleRecipe(io, recipe, recipeContents, false); + } } recipeContents.clear(); - return RecipeHandlingResult.SUCCESS; + return ActionResult.SUCCESS; } } - for (var handler : indistinct) { - recipeContents = handler.handleRecipe(io, recipe, recipeContents, simulated); - if (recipeContents.isEmpty()) { - return RecipeHandlingResult.SUCCESS; + // Check the other groups. For every group, try consuming the ingredients, + // see if it succeeds. + for (Map.Entry> handlerListEntry : handlerGroups.entrySet()) { + if (handlerListEntry.getKey().equals(BUS_DISTINCT)) continue; + + // List to keep track of the remaining items for this RecipeHandlerGroup + Map, List> copiedRecipeContents = searchRecipeContents; + boolean found = false; + + for (RecipeHandlerList handler : handlerListEntry.getValue()) { + copiedRecipeContents = handler.handleRecipe(io, recipe, copiedRecipeContents, true); + if (copiedRecipeContents.isEmpty()) { + found = true; + break; + } + } + // If we're already in the bypass_distinct group, don't check it twice. + if (!handlerListEntry.getKey().equals(BYPASS_DISTINCT)) { + for (RecipeHandlerList bypassHandler : handlerGroups.getOrDefault(BYPASS_DISTINCT, + Collections.emptyList())) { + copiedRecipeContents = bypassHandler.handleRecipe(io, recipe, copiedRecipeContents, true); + if (copiedRecipeContents.isEmpty()) { + found = true; + break; + } + } } - } - for (var handler : distinct) { - var res = handler.handleRecipe(io, recipe, recipeContents, simulated); - if (res.isEmpty()) { - recipeContents.clear(); - return RecipeHandlingResult.SUCCESS; + if (!found) continue; + if (simulated) return ActionResult.SUCCESS; + // Start actually removing items. + // Keep track of the remaining items for this RecipeHandlerGroup + copiedRecipeContents = recipeContents; + // First go through the handlers of the group + for (RecipeHandlerList handler : handlerListEntry.getValue()) { + copiedRecipeContents = handler.handleRecipe(io, recipe, copiedRecipeContents, false); + if (copiedRecipeContents.isEmpty()) { + recipeContents.clear(); + return ActionResult.SUCCESS; + } + } + // Then go through the handlers that bypass the distinctness system and empty those + // If we're already in the bypass_distinct group, don't check it twice. + if (!handlerListEntry.getKey().equals(BYPASS_DISTINCT)) { + for (RecipeHandlerList bypassHandler : handlerGroups.getOrDefault(BYPASS_DISTINCT, + Collections.emptyList())) { + copiedRecipeContents = bypassHandler.handleRecipe(io, recipe, copiedRecipeContents, false); + if (copiedRecipeContents.isEmpty()) { + recipeContents.clear(); + return ActionResult.SUCCESS; + } + } } } for (var entry : recipeContents.entrySet()) { if (entry.getValue() != null && !entry.getValue().isEmpty()) { - return new RecipeHandlingResult(ActionResult.FAIL_NO_REASON, entry.getKey()); + return ActionResult.fail(null, entry.getKey(), io); } } - return new RecipeHandlingResult(ActionResult.FAIL_NO_REASON, null); + return ActionResult.FAIL_NO_REASON; } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ResearchRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ResearchRecipeBuilder.java index 4062abf3362..6a4a772f3e4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ResearchRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ResearchRecipeBuilder.java @@ -4,25 +4,35 @@ import com.gregtechceu.gtceu.api.item.IComponentItem; import com.gregtechceu.gtceu.api.item.component.IDataItem; import com.gregtechceu.gtceu.api.item.component.IItemComponent; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.data.recipe.builder.GTRecipeBuilder; import com.gregtechceu.gtceu.utils.GTStringUtils; import com.gregtechceu.gtceu.utils.ResearchManager; import net.minecraft.world.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; import lombok.NoArgsConstructor; import org.jetbrains.annotations.NotNull; public abstract class ResearchRecipeBuilder> { - protected ItemStack researchStack; + protected ItemStack itemResearchStack = ItemStack.EMPTY; + protected FluidStack fluidResearchStack = FluidStack.EMPTY; protected ItemStack dataStack; protected String researchId; - protected int eut; + protected EnergyStack eut; public T researchStack(@NotNull ItemStack researchStack) { if (!researchStack.isEmpty()) { - this.researchStack = researchStack; + this.itemResearchStack = researchStack; + } + return (T) this; + } + + public T researchFluidStack(@NotNull FluidStack researchStack) { + if (!researchStack.isEmpty()) { + this.fluidResearchStack = researchStack; } return (T) this; } @@ -39,18 +49,23 @@ public T researchId(String researchId) { return (T) this; } - public T EUt(int eut) { - this.eut = eut; + public T EUt(long eut) { + return EUt(eut, 1); + } + + public T EUt(long eut, long amperage) { + this.eut = new EnergyStack(eut, amperage); return (T) this; } protected void validateResearchItem() { - if (researchStack == null) { - throw new IllegalArgumentException("Research stack cannot be null or empty!"); + if (itemResearchStack.isEmpty() && fluidResearchStack.isEmpty()) { + throw new IllegalArgumentException("Research recipe must have an item or fluid stack!"); } if (researchId == null) { - researchId = GTStringUtils.itemStackToString(researchStack); + if (!itemResearchStack.isEmpty()) researchId = GTStringUtils.itemStackToString(itemResearchStack); + else researchId = GTStringUtils.fluidStackToString(fluidResearchStack); } if (dataStack == null) { @@ -99,8 +114,9 @@ public ItemStack getDefaultDataItem() { public GTRecipeBuilder.ResearchRecipeEntry build() { validateResearchItem(); if (duration <= 0) duration = DEFAULT_SCANNER_DURATION; - if (eut <= 0) eut = DEFAULT_SCANNER_EUT; - return new GTRecipeBuilder.ResearchRecipeEntry(researchId, researchStack, dataStack, duration, eut, 0); + if (eut == null || eut.voltage() <= 0) eut = new EnergyStack(DEFAULT_SCANNER_EUT, 1); + return new GTRecipeBuilder.ResearchRecipeEntry(researchId, itemResearchStack, fluidResearchStack, dataStack, + duration, eut, 0); } } @@ -145,9 +161,10 @@ public GTRecipeBuilder.ResearchRecipeEntry build() { // "duration" is the total CWU/t. // Not called duration in API because logic does not treat it like normal duration. int duration = totalCWU; - if (eut <= 0) eut = DEFAULT_STATION_EUT; + if (eut == null || eut.voltage() <= 0) eut = new EnergyStack(DEFAULT_STATION_EUT, 1); - return new GTRecipeBuilder.ResearchRecipeEntry(researchId, researchStack, dataStack, duration, eut, cwut); + return new GTRecipeBuilder.ResearchRecipeEntry(researchId, itemResearchStack, fluidResearchStack, dataStack, + duration, eut, cwut); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ShapedEnergyTransferRecipe.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ShapedEnergyTransferRecipe.java index 951d2e8ae95..9308ae0107c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ShapedEnergyTransferRecipe.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ShapedEnergyTransferRecipe.java @@ -23,11 +23,6 @@ import java.util.Map; -/** - * @author Irgendwer01 - * @date 2023/11/4 - * @implNote ShapedEnergyTransferRecipe - */ @MethodsReturnNonnullByDefault @FieldsAreNonnullByDefault public class ShapedEnergyTransferRecipe extends ShapedRecipe { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ShapedFluidContainerRecipe.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ShapedFluidContainerRecipe.java index 6ebeac15700..11ff4738084 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ShapedFluidContainerRecipe.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ShapedFluidContainerRecipe.java @@ -15,7 +15,7 @@ import net.minecraft.world.item.crafting.ShapedRecipe; import com.google.gson.JsonObject; -import com.mojang.datafixers.util.Pair; +import it.unimi.dsi.fastutil.ints.IntObjectPair; import org.jetbrains.annotations.NotNull; import java.util.Map; @@ -48,16 +48,16 @@ public ShapedFluidContainerRecipe(ResourceLocation id, String group, CraftingBoo for (int x = 0; x <= inv.getWidth() - this.getWidth(); ++x) { for (int y = 0; y <= inv.getHeight() - this.getHeight(); ++y) { var stack = this.findFluidReplacement(inv, x, y, false); - if (stack.getFirst() != -1) { - items.set(stack.getFirst(), stack.getSecond()); - replacedSlot = stack.getFirst(); + if (stack.firstInt() != -1) { + items.set(stack.firstInt(), stack.second()); + replacedSlot = stack.firstInt(); break OUTER_LOOP; } stack = this.findFluidReplacement(inv, x, y, true); - if (stack.getFirst() != -1) { - items.set(stack.getFirst(), stack.getSecond()); - replacedSlot = stack.getFirst(); + if (stack.firstInt() != -1) { + items.set(stack.firstInt(), stack.second()); + replacedSlot = stack.firstInt(); break OUTER_LOOP; } } @@ -79,7 +79,7 @@ public ShapedFluidContainerRecipe(ResourceLocation id, String group, CraftingBoo /** * Checks if the region of a crafting inventory is match for the recipe. */ - private Pair findFluidReplacement(CraftingContainer inv, int width, int height, + private IntObjectPair findFluidReplacement(CraftingContainer inv, int width, int height, boolean mirrored) { for (int x = 0; x < inv.getWidth(); ++x) { for (int y = 0; y < inv.getHeight(); ++y) { @@ -99,13 +99,13 @@ private Pair findFluidReplacement(CraftingContainer inv, int int slot = x + y * inv.getWidth(); ItemStack stack = inv.getItem(slot); if (fluidContainerIngredient.test(stack)) { - return Pair.of(slot, fluidContainerIngredient.getExtractedStack(stack)); + return IntObjectPair.of(slot, fluidContainerIngredient.getExtractedStack(stack)); } } } } - return Pair.of(-1, ItemStack.EMPTY); + return IntObjectPair.of(-1, ItemStack.EMPTY); } public static class Serializer implements RecipeSerializer { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/StrictShapedRecipe.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/StrictShapedRecipe.java index 84168104b50..529e54e4fce 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/StrictShapedRecipe.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/StrictShapedRecipe.java @@ -22,11 +22,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/7/24 - * @implNote StrictShapedRecipe - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class StrictShapedRecipe extends ShapedRecipe { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/chance/logic/ChanceLogic.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/chance/logic/ChanceLogic.java index 064645a7155..1a1d653ca48 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/chance/logic/ChanceLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/chance/logic/ChanceLogic.java @@ -10,12 +10,15 @@ import net.minecraftforge.fml.ModLoader; import com.google.common.collect.ImmutableList; +import it.unimi.dsi.fastutil.ints.IntArrayList; +import it.unimi.dsi.fastutil.ints.IntList; import it.unimi.dsi.fastutil.objects.Object2IntMap; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Unmodifiable; +import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -115,7 +118,7 @@ public String toString() { /** * Chanced Output Logic where only the first ingredient succeeding its roll will be produced */ - public static final ChanceLogic XOR = new ChanceLogic("xor") { + public static final ChanceLogic FIRST = new ChanceLogic("first") { @Override public @Unmodifiable List<@NotNull Content> roll(@NotNull @Unmodifiable List<@NotNull Content> chancedEntries, @@ -141,6 +144,88 @@ public String toString() { return builder.build(); } + @Override + public @NotNull Component getTranslation() { + return Component.translatable("gtceu.chance_logic.first"); + } + + @Override + public String toString() { + return "ChanceLogic{FIRST}"; + } + }; + + /** + * Chanced Output Logic where only one of the ingredients will be output, in a manner weighted to the input chances + */ + public static final ChanceLogic XOR = new ChanceLogic("xor") { + + @Override + public @Unmodifiable List<@NotNull Content> roll(@NotNull @Unmodifiable List<@NotNull Content> chancedEntries, + @NotNull ChanceBoostFunction boostFunction, + int recipeTier, int chanceTier, + @Nullable Object2IntMap cache, int times) { + // Have to set up a system where all chances are set to be out of 10000 + IntList chancesOutOfTenThousand = new IntArrayList(); + + for (Content orig : chancedEntries) { + if (orig.maxChance == getMaxChancedValue()) { + chancesOutOfTenThousand.add(orig.chance); + } else { + chancesOutOfTenThousand.add((int) ((orig.chance / (float) orig.maxChance) * getMaxChancedValue())); + } + } + + int chanceTotal = 0; + for (int chance : chancesOutOfTenThousand) { + chanceTotal += chance; + } + + // Here, if the newly calculated chances don't add up to 10000, they're renormalized + if (chanceTotal != getMaxChancedValue()) { + int chanceTotalDecremented = getMaxChancedValue(); + for (int i = 0; i < chancesOutOfTenThousand.size(); i++) { + int newChance = (int) (chancesOutOfTenThousand.getInt(i) * + ((float) getMaxChancedValue() / (float) chanceTotal)); + // last chance ends up being set to the remainder in case things don't line up + if (i == chancesOutOfTenThousand.size() - 1) { + chancesOutOfTenThousand.set(i, chanceTotalDecremented); + } else { + chancesOutOfTenThousand.set(i, newChance); + } + chanceTotalDecremented -= newChance; + } + } + + // Finally, generate a new Content list with the changes + List normalizedEntries = new ArrayList<>(); + for (int i = 0; i < chancesOutOfTenThousand.size(); i++) { + normalizedEntries.add(new Content(chancedEntries.get(i).content, chancesOutOfTenThousand.getInt(i), + getMaxChancedValue(), chancedEntries.get(i).tierChanceBoost)); + } + + // Use the new, normalized list for the logic + ImmutableList.Builder builder = ImmutableList.builder(); + for (int i = 0; i < times; ++i) { + Content selected = null; + int maxChance = getMaxChancedValue(); + for (Content entry : normalizedEntries) { + int newChance = getChance(entry, boostFunction, recipeTier, chanceTier); + int cached = getCachedChance(entry, cache); + int chance = newChance + cached; + if (passesChance(chance, maxChance)) { + selected = entry; + newChance -= maxChance; + } + updateCachedChance(entry.content, cache, newChance / 2 + cached); + if (selected != null) break; + maxChance -= newChance; + } + if (selected != null) builder.add(selected); + } + return builder.build(); + } + @Override public @NotNull Component getTranslation() { return Component.translatable("gtceu.chance_logic.xor"); diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/Content.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/Content.java index 74f4fe17526..c45fb8bbd01 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/Content.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/Content.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.recipe.chance.boost.ChanceBoostFunction; import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; +import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderFluidIngredient; import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderIngredient; import com.gregtechceu.gtceu.utils.FormattingUtil; import com.gregtechceu.gtceu.utils.GradientUtil; @@ -11,6 +12,7 @@ import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; import com.lowdragmc.lowdraglib.utils.LocalizationUtils; +import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.GuiGraphics; @@ -116,7 +118,7 @@ public void drawRangeAmount(GuiGraphics graphics, float x, float y, int width, i // 5 == max num of characters that fit in a slot at 0.5x render size if (s.length() > 5) { s = "X-Y"; - color = 0xEE0000; + color = ChatFormatting.GOLD.getColor(); // Orange? } graphics.drawString(fontRenderer, s, (int) ((x + (width / 3f)) * 2 - fontRenderer.width(s) + 21), (int) ((y + (height / 3f) + 6) * 2), color, true); @@ -130,15 +132,24 @@ public void drawFluidAmount(GuiGraphics graphics, float x, float y, int width, i graphics.pose().pushPose(); graphics.pose().translate(0, 0, 400); graphics.pose().scale(0.5f, 0.5f, 1); - int amount = ingredient.getAmount(); Font fontRenderer = Minecraft.getInstance().font; - String s = FormattingUtil.formatBuckets(amount); - if (fontRenderer.width(s) > 32) - s = FormattingUtil.formatNumberReadable(amount, true, FormattingUtil.DECIMAL_FORMAT_1F, "B"); - if (fontRenderer.width(s) > 32) - s = FormattingUtil.formatNumberReadable(amount, true, FormattingUtil.DECIMAL_FORMAT_0F, "B"); + int color; + String s; + if (content instanceof IntProviderFluidIngredient) { + // with only 5 characters worth of space, that's not enough for a fluid range + color = ChatFormatting.GOLD.getColor(); + s = "X-Y"; + } else { + int amount = ingredient.getAmount(); + color = 0xFFFFFF; + s = FormattingUtil.formatBuckets(amount); + if (fontRenderer.width(s) > 32) + s = FormattingUtil.formatNumberReadable(amount, true, FormattingUtil.DECIMAL_FORMAT_1F, "B"); + if (fontRenderer.width(s) > 32) + s = FormattingUtil.formatNumberReadable(amount, true, FormattingUtil.DECIMAL_FORMAT_0F, "B"); + } graphics.drawString(fontRenderer, s, (int) ((x + (width / 3f)) * 2 - fontRenderer.width(s) + 22), - (int) ((y + (height / 3f) + 6) * 2), 0xFFFFFF, true); + (int) ((y + (height / 3f) + 6) * 2), color, true); graphics.pose().popPose(); } } @@ -150,7 +161,7 @@ public void drawChance(GuiGraphics graphics, float x, float y, int width, int he graphics.pose().pushPose(); graphics.pose().translate(0, 0, 400); graphics.pose().scale(0.5f, 0.5f, 1); - var func = function == null ? ChanceBoostFunction.OVERCLOCK : function; + var func = function == null ? ChanceBoostFunction.NONE : function; int chance = func.getBoostedChance(this, recipeTier, chanceTier); float chanceFloat = 1f * chance / this.maxChance; String percent = FormattingUtil.formatNumber2Places(100 * chanceFloat); diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/ContentModifier.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/ContentModifier.java index 68829368c9b..3ec1fb025fe 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/ContentModifier.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/ContentModifier.java @@ -12,11 +12,11 @@ public record ContentModifier(double multiplier, double addition) { public static final ContentModifier IDENTITY = new ContentModifier(1, 0); public static ContentModifier multiplier(double multiplier) { - return new ContentModifier(multiplier, 0); + return multiplier == 1 ? IDENTITY : new ContentModifier(multiplier, 0); } public static ContentModifier addition(double addition) { - return new ContentModifier(1, addition); + return addition == 0 ? IDENTITY : new ContentModifier(1, addition); } public int apply(int number) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/IContentSerializer.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/IContentSerializer.java index 91068735ff1..2186fb6d4ad 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/IContentSerializer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/IContentSerializer.java @@ -2,15 +2,10 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; -import com.gregtechceu.gtceu.api.registry.GTRegistries; -import com.lowdragmc.lowdraglib.LDLib; - -import net.minecraft.core.HolderLookup; import net.minecraft.nbt.NbtOps; import net.minecraft.nbt.Tag; import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.RegistryOps; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -20,19 +15,20 @@ public interface IContentSerializer { default void toNetwork(FriendlyByteBuf buf, T content) { - RegistryOps ops = RegistryOps.create(JsonOps.INSTANCE, GTRegistries.builtinRegistry()); - buf.writeUtf(codec().encodeStart(ops, content).getOrThrow(false, GTCEu.LOGGER::error).toString()); + buf.writeJsonWithCodec(codec(), content); } default T fromNetwork(FriendlyByteBuf buf) { - RegistryOps ops = RegistryOps.create(JsonOps.INSTANCE, GTRegistries.builtinRegistry()); - return codec().parse(ops, LDLib.GSON.fromJson(buf.readUtf(), JsonElement.class)).getOrThrow(false, - GTCEu.LOGGER::error); + return buf.readJsonWithCodec(codec()); } - T fromJson(JsonElement json); + default T fromJson(JsonElement json) { + return codec().parse(JsonOps.INSTANCE, json).getOrThrow(false, GTCEu.LOGGER::error); + } - JsonElement toJson(T content); + default JsonElement toJson(T content) { + return codec().encodeStart(JsonOps.INSTANCE, content).getOrThrow(false, GTCEu.LOGGER::error); + } T of(Object o); @@ -55,17 +51,9 @@ default Content fromNetworkContent(FriendlyByteBuf buf) { return new Content(inner, chance, maxChance, tierChanceBoost); } - Codec codec(); - - default T fromJson(JsonElement json, HolderLookup.Provider provider) { - RegistryOps ops = RegistryOps.create(JsonOps.INSTANCE, provider); - return codec().parse(ops, json).getOrThrow(false, GTCEu.LOGGER::error); - } + Class contentClass(); - default JsonElement toJson(T content, HolderLookup.Provider provider) { - RegistryOps ops = RegistryOps.create(JsonOps.INSTANCE, provider); - return codec().encodeStart(ops, content).getOrThrow(false, GTCEu.LOGGER::error); - } + Codec codec(); @SuppressWarnings("unchecked") default JsonElement toJsonContent(Content content) { @@ -88,15 +76,10 @@ default Content fromJsonContent(JsonElement json) { } default Tag toNbt(T content) { - return JsonOps.INSTANCE.convertTo(NbtOps.INSTANCE, this.toJson(content)); - } - - default Tag toNbtGeneric(Object content) { - return toNbt((T) content); + return codec().encodeStart(NbtOps.INSTANCE, content).getOrThrow(false, GTCEu.LOGGER::error); } default T fromNbt(Tag tag) { - var json = NbtOps.INSTANCE.convertTo(JsonOps.INSTANCE, tag); - return fromJson(json); + return codec().parse(NbtOps.INSTANCE, tag).getOrThrow(false, GTCEu.LOGGER::error); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBigInteger.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBigInteger.java index acda029381c..1b31dc94ec8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBigInteger.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBigInteger.java @@ -10,11 +10,6 @@ import java.math.BigInteger; -/** - * @author KilaBash - * @date 2022/06/22 - * @implNote SerializerBigInteger - */ public class SerializerBigInteger implements IContentSerializer { public static final Codec CODEC = Codec.STRING.comapFlatMap(str -> { @@ -51,14 +46,15 @@ public JsonElement toJson(BigInteger content) { @Override public BigInteger of(Object o) { - if (o instanceof BigInteger) { - return (BigInteger) o; - } else if (o instanceof Number) { - return BigInteger.valueOf(((Number) o).longValue()); + if (o instanceof BigInteger b) { + return b; + } else if (o instanceof Number n) { + return BigInteger.valueOf(n.longValue()); } else if (o instanceof CharSequence) { return new BigInteger(o.toString()); + } else { + return BigInteger.ZERO; } - return BigInteger.ZERO; } @Override @@ -66,6 +62,11 @@ public BigInteger defaultValue() { return BigInteger.ZERO; } + @Override + public Class contentClass() { + return BigInteger.class; + } + @Override public Codec codec() { return CODEC; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBlockState.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBlockState.java index 6ca7efee8f6..800591f2bf8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBlockState.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBlockState.java @@ -2,23 +2,16 @@ import com.gregtechceu.gtceu.GTCEu; -import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.level.block.state.StateHolder; -import net.minecraft.world.level.block.state.properties.Property; -import com.google.common.collect.ImmutableMap; import com.google.gson.JsonElement; import com.google.gson.JsonNull; import com.mojang.serialization.Codec; import com.mojang.serialization.JsonOps; -import java.util.Map; -import java.util.Optional; import java.util.function.Function; public class SerializerBlockState implements IContentSerializer { @@ -27,41 +20,16 @@ public class SerializerBlockState implements IContentSerializer { private SerializerBlockState() {} + @SuppressWarnings("deprecation") @Override public void toNetwork(FriendlyByteBuf buf, BlockState content) { - buf.writeVarInt(BuiltInRegistries.BLOCK.getId(content.getBlock())); - ImmutableMap, Comparable> values = content.getValues(); - if (!values.isEmpty()) { - buf.writeBoolean(true); - - for (Map.Entry, Comparable> entry : values.entrySet()) { - buf.writeUtf(entry.getKey().getName()); - buf.writeUtf(((Property) entry.getKey()).getName(entry.getValue())); - } - } else { - buf.writeBoolean(false); - } + buf.writeId(Block.BLOCK_STATE_REGISTRY, content); } + @SuppressWarnings("deprecation") @Override public BlockState fromNetwork(FriendlyByteBuf buf) { - Block block = BuiltInRegistries.BLOCK.byId(buf.readVarInt()); - BlockState blockState = block.defaultBlockState(); - if (buf.readBoolean()) { - StateDefinition stateDefinition = block.getStateDefinition(); - ImmutableMap, Comparable> values = blockState.getValues(); - - for (int i = 0; i < values.size(); ++i) { - String propertyName = buf.readUtf(); - String propertyValueName = buf.readUtf(); - Property property = stateDefinition.getProperty(propertyName); - if (property != null) { - Optional> value = property.getValue(propertyValueName); - value.ifPresent(comparable -> ((StateHolder) blockState).setValue(property, comparable)); - } - } - } - return blockState; + return buf.readById(Block.BLOCK_STATE_REGISTRY); } @Override @@ -88,6 +56,11 @@ public BlockState defaultValue() { return Blocks.AIR.defaultBlockState(); } + @Override + public Class contentClass() { + return BlockState.class; + } + @Override public Codec codec() { return BlockState.CODEC; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerDouble.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerDouble.java index 9b71b5c4407..2f3deb81a31 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerDouble.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerDouble.java @@ -50,6 +50,11 @@ public Double defaultValue() { return 0d; } + @Override + public Class contentClass() { + return Double.class; + } + @Override public Codec codec() { return Codec.DOUBLE; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerEnergyStack.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerEnergyStack.java new file mode 100644 index 00000000000..b71480ebb89 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerEnergyStack.java @@ -0,0 +1,53 @@ +package com.gregtechceu.gtceu.api.recipe.content; + +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; + +import net.minecraft.network.FriendlyByteBuf; + +import com.mojang.serialization.Codec; +import org.apache.commons.lang3.math.NumberUtils; + +public class SerializerEnergyStack implements IContentSerializer { + + public static SerializerEnergyStack INSTANCE = new SerializerEnergyStack(); + + private SerializerEnergyStack() {} + + @Override + public void toNetwork(FriendlyByteBuf buf, EnergyStack content) { + content.toNetwork(buf); + } + + @Override + public EnergyStack fromNetwork(FriendlyByteBuf buf) { + return EnergyStack.fromNetwork(buf); + } + + @Override + public EnergyStack of(Object o) { + if (o instanceof EnergyStack stack) { + return stack; + } else if (o instanceof Number n) { + return new EnergyStack(n.longValue()); + } else if (o instanceof CharSequence) { + return new EnergyStack(NumberUtils.toLong(o.toString())); + } else { + return EnergyStack.EMPTY; + } + } + + @Override + public EnergyStack defaultValue() { + return EnergyStack.EMPTY; + } + + @Override + public Class contentClass() { + return EnergyStack.class; + } + + @Override + public Codec codec() { + return EnergyStack.CODEC; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerFloat.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerFloat.java index 2399ad10146..df40a3a2911 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerFloat.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerFloat.java @@ -50,6 +50,11 @@ public Float defaultValue() { return 0f; } + @Override + public Class contentClass() { + return Float.class; + } + @Override public Codec codec() { return Codec.FLOAT; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerFluidIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerFluidIngredient.java index 5a2b5379fa0..aa4a78ad032 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerFluidIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerFluidIngredient.java @@ -50,6 +50,11 @@ public FluidIngredient defaultValue() { return FluidIngredient.EMPTY; } + @Override + public Class contentClass() { + return FluidIngredient.class; + } + @Override public Codec codec() { return FluidIngredient.CODEC; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerIngredient.java index 5a876ed9f9e..ea3af97e391 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerIngredient.java @@ -4,20 +4,17 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.tags.TagKey; +import net.minecraft.util.ExtraCodecs; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.ItemLike; import com.google.gson.JsonElement; import com.mojang.serialization.Codec; -import com.mojang.serialization.Dynamic; -import com.mojang.serialization.JsonOps; public class SerializerIngredient implements IContentSerializer { - public static final Codec CODEC = Codec.PASSTHROUGH.xmap( - dynamic -> Ingredient.fromJson(dynamic.convert(JsonOps.INSTANCE).getValue()), - ingredient -> new Dynamic<>(JsonOps.INSTANCE, ingredient.toJson())); + public static final Codec CODEC = ExtraCodecs.JSON.xmap(Ingredient::fromJson, Ingredient::toJson); public static SerializerIngredient INSTANCE = new SerializerIngredient(); @@ -63,6 +60,11 @@ public Ingredient defaultValue() { return Ingredient.EMPTY; } + @Override + public Class contentClass() { + return Ingredient.class; + } + @Override public Codec codec() { return CODEC; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerInteger.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerInteger.java index ebab0c336bf..c9057ff68ff 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerInteger.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerInteger.java @@ -50,6 +50,11 @@ public Integer defaultValue() { return 0; } + @Override + public Class contentClass() { + return Integer.class; + } + @Override public Codec codec() { return Codec.INT; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerLong.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerLong.java index 3336e22a7e5..376c127017a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerLong.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerLong.java @@ -7,11 +7,6 @@ import com.mojang.serialization.Codec; import org.apache.commons.lang3.math.NumberUtils; -/** - * @author KilaBash - * @date 2022/06/22 - * @implNote SerializerLong - */ public class SerializerLong implements IContentSerializer { public static SerializerLong INSTANCE = new SerializerLong(); @@ -55,6 +50,11 @@ public Long defaultValue() { return 0L; } + @Override + public Class contentClass() { + return Long.class; + } + @Override public Codec codec() { return Codec.LONG; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/EnergyStack.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/EnergyStack.java new file mode 100644 index 00000000000..1c58ff062e1 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/EnergyStack.java @@ -0,0 +1,187 @@ +package com.gregtechceu.gtceu.api.recipe.ingredient; + +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.codec.GTCodecUtils; + +import net.minecraft.network.FriendlyByteBuf; + +import com.google.common.base.Preconditions; +import com.mojang.datafixers.util.Either; +import com.mojang.serialization.Codec; +import com.mojang.serialization.DataResult; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import lombok.With; +import org.jetbrains.annotations.Range; + +import java.util.function.Supplier; + +@With +public record EnergyStack(@Range(from = 0, to = Long.MAX_VALUE) long voltage, + @Range(from = 1, to = Long.MAX_VALUE) long amperage) { + + // spotless:off + private static final Codec FULL_CODEC = RecordCodecBuilder.create(instance -> instance.group( + GTCodecUtils.NON_NEGATIVE_LONG.optionalFieldOf("voltage", 0L).forGetter(EnergyStack::voltage), + GTCodecUtils.POSITIVE_LONG.optionalFieldOf("amperage", 1L).forGetter(EnergyStack::amperage) + ).apply(instance, EnergyStack::new)); + private static final Codec VOLTAGE_ONLY_CODEC = GTCodecUtils.NON_NEGATIVE_LONG.flatComapMap( + EnergyStack::new, s -> { + if (s.amperage() == 1) { + return DataResult.success(s.voltage()); + } else { + Supplier error = () -> "primitive EnergyStacks must have 1A, got " + s.amperage(); + return DataResult.error(error, s.voltage()); + } + }); + + public static final Codec CODEC = Codec.either(VOLTAGE_ONLY_CODEC, FULL_CODEC) + .xmap(GTCodecUtils::unboxEither, stack -> { + if (stack.amperage() == 1) return Either.left(stack); + else return Either.right(stack); + }); + // spotless:on + + public static final EnergyStack EMPTY = new EnergyStack(0, 1); + public static final EnergyStack MAX = new EnergyStack(Long.MAX_VALUE, 1); + + /** + * Voltage-only constructor for 1A uses, e.g. most of them + * + * @param voltage The EU value + */ + public EnergyStack(long voltage) { + this(voltage, 1); + } + + public long getTotalEU() { + return voltage * amperage; + } + + public boolean isEmpty() { + return this == EMPTY || this.voltage <= 0; + } + + public EnergyStack add(long voltage, long amperage) { + Preconditions.checkArgument(this.voltage + voltage >= 0, "Resulting voltage must be >= 0"); + Preconditions.checkArgument(this.amperage + amperage >= 1, "Resulting amperage must be >= 1"); + return new EnergyStack(this.voltage + voltage, this.amperage + amperage); + } + + public EnergyStack addVoltage(long voltage) { + Preconditions.checkArgument(this.voltage + voltage >= 0, "Resulting voltage must be >= 0"); + return withVoltage(this.voltage + voltage); + } + + public EnergyStack multiplyVoltage(long multiplier) { + Preconditions.checkArgument(multiplier >= 0, "Multiplier must be >= 0"); + return withVoltage(this.voltage * multiplier); + } + + public EnergyStack multiplyVoltage(double multiplier) { + Preconditions.checkArgument(multiplier >= 0, "Multiplier must be >= 0"); + return withVoltage((long) (this.voltage * multiplier)); + } + + public EnergyStack addAmperage(long amperage) { + Preconditions.checkArgument(this.amperage + amperage >= 1, "Resulting amperage must be >= 1"); + return withAmperage(this.amperage + amperage); + } + + public EnergyStack multiplyAmperage(long multiplier) { + Preconditions.checkArgument(multiplier > 0, "Multiplier must be > 0"); + return withAmperage(this.amperage * multiplier); + } + + public static EnergyStack sum(EnergyStack a, EnergyStack b) { + return a.add(b.voltage, b.amperage); + } + + public void toNetwork(FriendlyByteBuf buf) { + buf.writeVarLong(this.voltage); + buf.writeVarLong(this.amperage); + } + + public static EnergyStack fromNetwork(FriendlyByteBuf buf) { + return new EnergyStack(buf.readVarLong(), buf.readVarLong()); + } + + @With + public record WithIO(EnergyStack stack, IO io) { + + // spotless:off + private static final Codec FLAT_CODEC = RecordCodecBuilder.create(instance -> instance.group( + Codec.LONG.optionalFieldOf("voltage", 0L).forGetter(WithIO::signedVoltage), + GTCodecUtils.POSITIVE_LONG.optionalFieldOf("amperage", 1L).forGetter(WithIO::amperage) + ).apply(instance, WithIO::fromVA)); + private static final Codec VOLTAGE_ONLY_CODEC = Codec.LONG.flatComapMap( + WithIO::fromVoltage, s -> { + if (s.amperage() == 1) { + return DataResult.success(s.signedVoltage()); + } else { + Supplier error = () -> "primitive EnergyStacks must have 1A, got " + s.amperage(); + return DataResult.error(error, s.signedVoltage()); + } + }); + + public static final Codec CODEC = Codec.either(VOLTAGE_ONLY_CODEC, FLAT_CODEC) + .xmap(GTCodecUtils::unboxEither, s -> { + if (s.amperage() == 1) { + return Either.left(s); + } else { + return Either.right(s); + } + }); + // spotless:on + + public static final WithIO EMPTY = new WithIO(EnergyStack.EMPTY, IO.NONE); + + public WithIO { + Preconditions.checkArgument(io != IO.BOTH, "The I/O direction cannot be IO.BOTH!"); + if (stack.isEmpty()) { + io = IO.NONE; + } + } + + public WithIO(long voltage, long amperage, IO io) { + this(new EnergyStack(voltage, amperage), io); + } + + public static WithIO fromVA(long voltage, long amperage) { + if (voltage == 0) return WithIO.EMPTY; + return new WithIO(Math.abs(voltage), amperage, voltage > 0 ? IO.IN : IO.OUT); + } + + public static WithIO fromVoltage(long voltage) { + return fromVA(voltage, 1); + } + + public boolean isEmpty() { + return io == IO.NONE || stack.isEmpty(); + } + + public boolean isInput() { + return io == IO.IN; + } + + public boolean isOutput() { + return io == IO.OUT; + } + + public @Range(from = 0, to = Long.MAX_VALUE) long voltage() { + return stack.voltage(); + } + + public @Range(from = 1, to = Long.MAX_VALUE) long amperage() { + return stack.amperage(); + } + + public long getTotalEU() { + return stack.getTotalEU(); + } + + public long signedVoltage() { + long multiplier = isInput() ? 1 : -1; + return this.voltage() * multiplier; + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidContainerIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidContainerIngredient.java index f8fc6fcebd3..b074573182f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidContainerIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidContainerIngredient.java @@ -47,7 +47,7 @@ public FluidContainerIngredient(FluidIngredient fluid) { public FluidContainerIngredient(FluidStack fluidStack) { this(FluidIngredient.of(TagUtil.createFluidTag(BuiltInRegistries.FLUID.getKey(fluidStack.getFluid()).getPath()), - fluidStack.getAmount())); + fluidStack.getAmount(), fluidStack.getTag())); } public FluidContainerIngredient(TagKey tag, int amount) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidIngredient.java index 6a84f772582..af66ccedd63 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidIngredient.java @@ -7,56 +7,69 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; +import net.minecraft.util.ExtraCodecs; import net.minecraft.util.GsonHelper; import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.level.material.Fluids; import net.minecraftforge.common.crafting.CraftingHelper; import net.minecraftforge.fluids.FluidStack; import com.google.common.collect.Lists; import com.google.gson.*; import com.mojang.serialization.Codec; -import com.mojang.serialization.Dynamic; -import com.mojang.serialization.JsonOps; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import lombok.Getter; import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.function.Predicate; -import java.util.stream.Stream; -import java.util.stream.StreamSupport; +@SuppressWarnings("deprecation") public class FluidIngredient implements Predicate { - public static final Codec CODEC = Codec.PASSTHROUGH.xmap( - dynamic -> FluidIngredient.fromJson(dynamic.convert(JsonOps.INSTANCE).getValue()), - ingredient -> new Dynamic<>(JsonOps.INSTANCE, ingredient.toJson())); + public static final Codec CODEC = ExtraCodecs.JSON + .xmap(FluidIngredient::fromJson, FluidIngredient::toJson); - public static final FluidIngredient EMPTY = new FluidIngredient(Stream.empty(), 0, null); + public static final FluidIngredient EMPTY = new FluidIngredient(new Value[0], 0, null); + public static final FluidStack[] EMPTY_STACK_ARRAY = new FluidStack[0]; public FluidIngredient.Value[] values; @Nullable public FluidStack[] stacks; @Getter - private int amount; + protected int amount; @Getter - private CompoundTag nbt; - private boolean changed = true; + protected CompoundTag nbt; + protected boolean changed = true; - public FluidIngredient(Stream empty, int amount, @Nullable CompoundTag nbt) { - this.values = empty.toArray(Value[]::new); + protected FluidIngredient(Value[] values, int amount, @Nullable CompoundTag nbt) { + this.values = values; this.amount = amount; this.nbt = nbt; } - public static FluidIngredient fromValues(Stream stream, int amount, - @Nullable CompoundTag nbt) { - FluidIngredient ingredient = new FluidIngredient(stream, amount, nbt); - return ingredient.isEmpty() ? EMPTY : ingredient; + public static FluidIngredient fromValues(Value[] values, int amount, @Nullable CompoundTag nbt) { + if (values.length == 0) return EMPTY; + return new FluidIngredient(values, amount, nbt); + } + + public static FluidIngredient fromValues(List values, + int amount, @Nullable CompoundTag nbt) { + return fromValues(values.toArray(Value[]::new), amount, nbt); + } + + public static FluidIngredient fromValue(FluidIngredient.Value value, int amount, @Nullable CompoundTag nbt) { + return fromValues(new Value[] { value }, amount, nbt); + } + + private List getFluids() { + List fluids = new ArrayList<>(1); + for (Value value : this.values) { + fluids.addAll(value.getFluids()); + } + return fluids; } public void toNetwork(FriendlyByteBuf buffer) { - buffer.writeCollection(Arrays.asList(this.getStacks()), (buf, stack) -> stack.writeToPacket(buf)); + buffer.writeCollection(this.getFluids(), (buf, fluid) -> buf.writeId(BuiltInRegistries.FLUID, fluid)); buffer.writeVarInt(amount); buffer.writeNbt(nbt); } @@ -79,8 +92,7 @@ public JsonElement toJson() { } public FluidIngredient copy() { - return new FluidIngredient(Arrays.stream(this.values).map(Value::copy), this.amount, - this.nbt == null ? null : this.nbt.copy()); + return new FluidIngredient(values, this.amount, this.nbt == null ? null : this.nbt.copy()); } @Override @@ -110,20 +122,26 @@ public boolean equals(Object obj) { if (!Objects.equals(this.nbt, other.nbt)) return false; if (this.values.length != other.values.length) return false; - for (Value value1 : this.values) { - for (Value value2 : other.values) { - if (value1 instanceof TagValue tagValue) { - if (!(value2 instanceof TagValue tagValue1)) { + + Value[] myValues = this.values.clone(); + Value[] otherValues = other.values.clone(); + Arrays.parallelSort(myValues, VALUE_COMPARATOR); + Arrays.parallelSort(otherValues, VALUE_COMPARATOR); + + for (Value value1 : myValues) { + for (Value value2 : otherValues) { + if (value1 instanceof TagValue first) { + if (!(value2 instanceof TagValue second)) { return false; } - if (tagValue.tag != tagValue1.tag) { + if (first.tag != second.tag) { return false; } - } else if (value1 instanceof FluidValue) { - if (!(value2 instanceof FluidValue)) { + } else if (value1 instanceof FluidValue first) { + if (!(value2 instanceof FluidValue second)) { return false; } - if (!value1.getFluids().containsAll(value2.getFluids())) { + if (first.fluid != second.fluid) { return false; } } @@ -180,18 +198,44 @@ public static FluidIngredient of() { return EMPTY; } - public static FluidIngredient of(int amount, Fluid... items) { - return FluidIngredient.of(Arrays.stream(items), amount, null); + public static FluidIngredient of(Fluid fluid, int amount) { + return of(fluid, amount, null); + } + + public static FluidIngredient of(Fluid fluid, int amount, @Nullable CompoundTag nbt) { + return FluidIngredient.fromValue(new FluidValue(fluid), amount, nbt); + } + + public static FluidIngredient of(List fluids, int amount, @Nullable CompoundTag nbt) { + if (fluids.isEmpty()) return FluidIngredient.EMPTY; + if (fluids.size() == 1) return of(fluids.get(0), amount, nbt); + + List values = new ArrayList<>(); + for (Fluid fluid : fluids) { + values.add(new FluidValue(fluid)); + } + return FluidIngredient.fromValues(values, amount, nbt); } - public static FluidIngredient of(FluidStack... stacks) { - return FluidIngredient.of(Arrays.stream(stacks).map(FluidStack::getFluid), - stacks.length == 0 ? 0 : stacks[0].getAmount(), stacks.length == 0 ? null : stacks[0].getTag()); + public static FluidIngredient of(FluidStack stack) { + if (stack.isEmpty()) return FluidIngredient.EMPTY; + return FluidIngredient.fromValue(new FluidValue(stack.getFluid()), stack.getAmount(), stack.getTag()); } - public static FluidIngredient of(Stream stacks, int amount, CompoundTag nbt) { - return FluidIngredient.fromValues( - stacks.filter(stack -> stack != null && !stack.isSame(Fluids.EMPTY)).map(FluidValue::new), amount, nbt); + public static FluidIngredient of(List stacks) { + if (stacks.isEmpty()) return FluidIngredient.EMPTY; + if (stacks.size() == 1) return of(stacks.get(0)); + + List values = new ArrayList<>(); + CompoundTag tag = null; + + for (FluidStack stack : stacks) { + if (!stack.isEmpty()) { + values.add(new FluidValue(stack.getFluid())); + if (tag == null) tag = stack.getTag(); + } + } + return FluidIngredient.fromValues(values, stacks.get(0).getAmount(), tag); } /** @@ -200,50 +244,60 @@ public static FluidIngredient of(Stream stacks, int amount, CompoundTag n * @param tag the tag key */ public static FluidIngredient of(TagKey tag, int amount) { - return FluidIngredient.fromValues(Stream.of(new FluidIngredient.TagValue(tag)), amount, null); + return FluidIngredient.fromValue(new TagValue(tag), amount, null); } - public static FluidIngredient of(TagKey tag, int amount, CompoundTag nbt) { - return FluidIngredient.fromValues(Stream.of(new FluidIngredient.TagValue(tag)), amount, nbt); + public static FluidIngredient of(TagKey tag, int amount, @Nullable CompoundTag nbt) { + return FluidIngredient.fromValue(new TagValue(tag), amount, nbt); } public static FluidIngredient fromNetwork(FriendlyByteBuf buffer) { - return FluidIngredient.fromValues( - buffer.readList(FluidStack::readFromPacket).stream().map(stack -> new FluidValue(stack.getFluid())), - buffer.readVarInt(), buffer.readNbt()); + List fluids = buffer.readList(buf -> buf.readById(BuiltInRegistries.FLUID)); + return FluidIngredient.of(fluids, buffer.readVarInt(), buffer.readNbt()); } public static FluidIngredient fromJson(@Nullable JsonElement json) { return FluidIngredient.fromJson(json, true); } - public static FluidIngredient fromJson(@Nullable JsonElement json, boolean allowAir) { + public static FluidIngredient fromJson(@Nullable JsonElement json, boolean allowEmpty) { if (json == null || json.isJsonNull()) { throw new JsonSyntaxException("Fluid ingredient cannot be null"); } - if (!json.isJsonObject()) { - throw new JsonSyntaxException("Expected fluid ingredient to be object"); - } JsonObject jsonObject = GsonHelper.convertToJsonObject(json, "ingredient"); + if (GsonHelper.isObjectNode(jsonObject, "count_provider")) { + return IntProviderFluidIngredient.fromJson(json); + } + int amount = GsonHelper.getAsInt(jsonObject, "amount", 0); CompoundTag nbt = jsonObject.has("nbt") ? CraftingHelper.getNBT(jsonObject.get("nbt")) : null; + if (GsonHelper.isObjectNode(jsonObject, "value")) { - return FluidIngredient.fromValues( - Stream.of(FluidIngredient.valueFromJson(GsonHelper.getAsJsonObject(jsonObject, "value"))), amount, - nbt); + Value value = FluidIngredient.valueFromJson(GsonHelper.getAsJsonObject(jsonObject, "value")); + return FluidIngredient.fromValue(value, amount, nbt); } else if (GsonHelper.isArrayNode(jsonObject, "value")) { JsonArray jsonArray = GsonHelper.getAsJsonArray(jsonObject, "value"); - if (jsonArray.isEmpty() && !allowAir) { - throw new JsonSyntaxException("Fluid array cannot be empty, at least one item must be defined"); + if (jsonArray.isEmpty() && !allowEmpty) { + throw new JsonSyntaxException("Fluid array cannot be empty, at least one fluid must be defined"); + } + List values = new ArrayList<>(); + for (JsonElement e : jsonArray) { + values.add(FluidIngredient.valueFromJson(GsonHelper.convertToJsonObject(e, "fluid"))); } - return FluidIngredient - .fromValues( - StreamSupport.stream(jsonArray.spliterator(), false) - .map(jsonElement -> FluidIngredient - .valueFromJson(GsonHelper.convertToJsonObject(jsonElement, "fluid"))), - amount, nbt); + return FluidIngredient.fromValues(values, amount, nbt); + } else if (GsonHelper.isStringValue(jsonObject, "value")) { + String value = GsonHelper.getAsString(jsonObject, "value"); + if (value.startsWith("#")) { + ResourceLocation resourceLocation = new ResourceLocation(value.substring(1)); + TagKey tagKey = TagKey.create(Registries.FLUID, resourceLocation); + return FluidIngredient.fromValue(new TagValue(tagKey), amount, nbt); + } else { + Fluid fluid = BuiltInRegistries.FLUID.get(new ResourceLocation(value)); + return FluidIngredient.fromValue(new FluidValue(fluid), amount, nbt); + } + } else { + throw new JsonSyntaxException("expected 'value' to be an object, an array or a string."); } - throw new JsonSyntaxException("expected value to be either object or array."); } private static FluidIngredient.Value valueFromJson(JsonObject json) { @@ -252,33 +306,24 @@ private static FluidIngredient.Value valueFromJson(JsonObject json) { } if (json.has("fluid")) { Fluid fluid = BuiltInRegistries.FLUID.get(new ResourceLocation(GsonHelper.getAsString(json, "fluid"))); - return new FluidIngredient.FluidValue(fluid); + return new FluidValue(fluid); } if (json.has("tag")) { ResourceLocation resourceLocation = new ResourceLocation(GsonHelper.getAsString(json, "tag")); TagKey tagKey = TagKey.create(Registries.FLUID, resourceLocation); - return new FluidIngredient.TagValue(tagKey); + return new TagValue(tagKey); } throw new JsonParseException("A fluid ingredient entry needs either a tag or a fluid"); } - public static interface Value { - - public Collection getFluids(); + public interface Value { - public JsonObject serialize(); + Collection getFluids(); - public Value copy(); + JsonObject serialize(); } - public static class TagValue implements Value { - - @Getter - private final TagKey tag; - - public TagValue(TagKey tag) { - this.tag = tag; - } + public record TagValue(TagKey tag) implements Value { @Override public Collection getFluids() { @@ -295,25 +340,9 @@ public JsonObject serialize() { jsonObject.addProperty("tag", this.tag.location().toString()); return jsonObject; } - - @Override - public Value copy() { - return new TagValue(this.tag); - } - - @Override - public int hashCode() { - return tag.hashCode(); - } } - public static class FluidValue implements Value { - - private final Fluid fluid; - - public FluidValue(Fluid item) { - this.fluid = item; - } + public record FluidValue(Fluid fluid) implements Value { @Override public Collection getFluids() { @@ -326,15 +355,28 @@ public JsonObject serialize() { jsonObject.addProperty("fluid", BuiltInRegistries.FLUID.getKey(this.fluid).toString()); return jsonObject; } + } - @Override - public Value copy() { - return new FluidValue(this.fluid); - } + public static final Comparator FLUID_COMPARATOR = Comparator.comparing(BuiltInRegistries.FLUID::getKey); + + public static final Comparator VALUE_COMPARATOR = new Comparator<>() { @Override - public int hashCode() { - return fluid.hashCode(); + public int compare(FluidIngredient.Value value1, FluidIngredient.Value value2) { + if (value1 instanceof FluidIngredient.TagValue first) { + if (!(value2 instanceof FluidIngredient.TagValue second)) { + return 1; + } + if (first.tag() != second.tag()) { + return 1; + } + } else if (value1 instanceof FluidIngredient.FluidValue first) { + if (!(value2 instanceof FluidIngredient.FluidValue second)) { + return 1; + } + return FLUID_COMPARATOR.compare(first.fluid, second.fluid); + } + return 0; } - } + }; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntCircuitIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntCircuitIngredient.java index 5ce690bc587..619ca461b7e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntCircuitIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntCircuitIngredient.java @@ -3,7 +3,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.common.data.GTItems; import com.gregtechceu.gtceu.common.item.IntCircuitBehaviour; -import com.gregtechceu.gtceu.core.mixins.StrictNBTIngredientAccessor; +import com.gregtechceu.gtceu.core.mixins.forge.StrictNBTIngredientAccessor; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; @@ -26,7 +26,7 @@ public class IntCircuitIngredient extends StrictNBTIngredient { private static final IntCircuitIngredient[] INGREDIENTS = new IntCircuitIngredient[CIRCUIT_MAX + 1]; - public static IntCircuitIngredient circuitInput(int configuration) { + public static IntCircuitIngredient of(int configuration) { if (configuration < CIRCUIT_MIN || configuration > CIRCUIT_MAX) { throw new IndexOutOfBoundsException("Circuit configuration " + configuration + " is out of range"); } @@ -40,7 +40,7 @@ public static IntCircuitIngredient circuitInput(int configuration) { private final int configuration; private ItemStack[] stacks; - protected IntCircuitIngredient(int configuration) { + private IntCircuitIngredient(int configuration) { super(IntCircuitBehaviour.stack(configuration)); this.configuration = configuration; } @@ -53,19 +53,15 @@ public boolean test(@Nullable ItemStack stack) { } @Override - public ItemStack[] getItems() { + public ItemStack @NotNull [] getItems() { if (stacks == null) { stacks = new ItemStack[] { ((StrictNBTIngredientAccessor) this).getStack() }; } return stacks; } - public IntCircuitIngredient copy() { - return new IntCircuitIngredient(this.configuration); - } - @Override - public JsonElement toJson() { + public @NotNull JsonElement toJson() { JsonObject json = new JsonObject(); json.addProperty("type", TYPE.toString()); json.addProperty("configuration", configuration); @@ -87,13 +83,13 @@ public static IntCircuitIngredient fromJson(JsonObject json) { @Override public @NotNull IntCircuitIngredient parse(FriendlyByteBuf buffer) { int configuration = buffer.readVarInt(); - return new IntCircuitIngredient(configuration); + return of(configuration); } @Override public @NotNull IntCircuitIngredient parse(JsonObject json) { int configuration = json.get("configuration").getAsInt(); - return new IntCircuitIngredient(configuration); + return of(configuration); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderFluidIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderFluidIngredient.java new file mode 100644 index 00000000000..e4558ae84d4 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderFluidIngredient.java @@ -0,0 +1,124 @@ +package com.gregtechceu.gtceu.api.recipe.ingredient; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.GTValues; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtOps; +import net.minecraft.util.ExtraCodecs; +import net.minecraft.util.GsonHelper; +import net.minecraft.util.RandomSource; +import net.minecraft.util.valueproviders.IntProvider; +import net.minecraft.util.valueproviders.UniformInt; +import net.minecraftforge.fluids.FluidStack; + +import com.google.gson.*; +import com.mojang.serialization.Codec; +import com.mojang.serialization.JsonOps; +import lombok.Getter; +import lombok.Setter; +import org.jetbrains.annotations.NotNull; + +public class IntProviderFluidIngredient extends FluidIngredient { + + public static final Codec CODEC = ExtraCodecs.JSON + .xmap(IntProviderFluidIngredient::fromJson, IntProviderFluidIngredient::toJson); + + @Getter + private final IntProvider countProvider; + @Setter + protected int sampledCount = -1; + @Getter + private final FluidIngredient inner; + @Setter + protected FluidStack[] fluidStacks = null; + + protected IntProviderFluidIngredient(FluidIngredient inner, IntProvider provider) { + super(inner.values, provider.getMaxValue(), null); + this.inner = inner; + this.countProvider = provider; + } + + @Override + public IntProviderFluidIngredient copy() { + IntProviderFluidIngredient ipfi = new IntProviderFluidIngredient(this.inner, this.countProvider); + ipfi.setSampledCount(this.sampledCount); + return ipfi; + } + + @Override + public int getAmount() { + return -1; + } + + @Override + public FluidStack[] getStacks() { + if (fluidStacks == null) { + int cachedAmount = getSampledCount(GTValues.RNG); + if (cachedAmount == 0) { + return EMPTY_STACK_ARRAY; + } + var innerStacks = inner.getStacks(); + this.fluidStacks = new FluidStack[innerStacks.length]; + for (int i = 0; i < fluidStacks.length; i++) { + fluidStacks[i] = innerStacks[i].copy(); + fluidStacks[i].setAmount(cachedAmount); + } + } + return fluidStacks; + } + + public @NotNull FluidStack getMaxSizeStack() { + FluidStack[] in = inner.getStacks(); + if (in.length == 0) return FluidStack.EMPTY; + return new FluidStack(in[0], countProvider.getMaxValue()); + } + + public int getSampledCount(@NotNull RandomSource random) { + if (sampledCount == -1) { + sampledCount = countProvider.sample(random); + } + return sampledCount; + } + + @Override + public boolean isEmpty() { + return inner.isEmpty(); + } + + public static IntProviderFluidIngredient of(FluidIngredient inner, IntProvider provider) { + return new IntProviderFluidIngredient(inner, provider); + } + + public static IntProviderFluidIngredient of(FluidStack inner, int min, int max) { + return IntProviderFluidIngredient.of(FluidIngredient.of(inner), UniformInt.of(min, max)); + } + + @Override + public @NotNull JsonElement toJson() { + JsonObject json = new JsonObject(); + json.add("count_provider", IntProvider.CODEC.encodeStart(JsonOps.INSTANCE, countProvider) + .getOrThrow(false, GTCEu.LOGGER::error)); + json.add("inner", inner.toJson()); + return json; + } + + public static IntProviderFluidIngredient fromJson(JsonElement json) { + if (json == null || json.isJsonNull()) { + throw new JsonSyntaxException("Fluid ingredient cannot be null"); + } + JsonObject jsonObject = GsonHelper.convertToJsonObject(json, "ingredient"); + IntProvider amount = IntProvider.CODEC.parse(JsonOps.INSTANCE, jsonObject.get("count_provider")) + .getOrThrow(false, GTCEu.LOGGER::error); + FluidIngredient inner = FluidIngredient.fromJson(jsonObject.get("inner")); + return new IntProviderFluidIngredient(inner, amount); + } + + public CompoundTag toNBT() { + return (CompoundTag) JsonOps.INSTANCE.convertTo(NbtOps.INSTANCE, this.toJson()); + } + + public static IntProviderFluidIngredient fromNBT(CompoundTag nbt) { + return IntProviderFluidIngredient.fromJson(NbtOps.INSTANCE.convertTo(JsonOps.INSTANCE, nbt)); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredient.java index 04c68856b10..8f96f24f833 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredient.java @@ -7,14 +7,14 @@ import net.minecraft.nbt.NbtOps; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.TagKey; import net.minecraft.util.RandomSource; import net.minecraft.util.valueproviders.IntProvider; -import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraftforge.common.crafting.IIngredientSerializer; +import net.minecraftforge.common.crafting.StrictNBTIngredient; +import com.google.common.base.Preconditions; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.mojang.serialization.JsonOps; @@ -24,34 +24,37 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.Arrays; import java.util.stream.Stream; public class IntProviderIngredient extends Ingredient { public static final ResourceLocation TYPE = GTCEu.id("int_provider"); + public static final ItemStack[] EMPTY_STACK_ARRAY = new ItemStack[0]; @Getter protected final IntProvider countProvider; @Setter - protected Integer sampledCount = null; + protected int sampledCount = -1; @Getter protected final Ingredient inner; @Setter protected ItemStack[] itemStacks = null; - public IntProviderIngredient(Ingredient inner, IntProvider countProvider) { + protected IntProviderIngredient(Ingredient inner, IntProvider countProvider) { super(Stream.empty()); this.inner = inner; this.countProvider = countProvider; } - public IntProviderIngredient(@NotNull TagKey tag, IntProvider amount) { - this(Ingredient.of(tag), amount); + public static IntProviderIngredient of(Ingredient inner, IntProvider countProvider) { + Preconditions.checkArgument(countProvider.getMinValue() >= 0, + "IntProviderIngredient must have a min value of at least 0."); + return new IntProviderIngredient(inner, countProvider); } - public static IntProviderIngredient create(Ingredient inner, IntProvider countProvider) { - return new IntProviderIngredient(inner, countProvider); + public static IntProviderIngredient of(ItemStack stack, IntProvider countProvider) { + Ingredient inner = stack.hasTag() ? StrictNBTIngredient.of(stack) : Ingredient.of(stack); + return of(inner, countProvider); } @Override @@ -61,15 +64,27 @@ public boolean test(@Nullable ItemStack stack) { @Override public ItemStack @NotNull [] getItems() { - if (itemStacks == null) - itemStacks = Arrays.stream(inner.getItems()) - .map(i -> i.copyWithCount(getSampledCount(GTValues.RNG))) - .toArray(ItemStack[]::new); + if (itemStacks == null) { + int cachedCount = getSampledCount(GTValues.RNG); + if (cachedCount == 0) { + return EMPTY_STACK_ARRAY; + } + var innerStacks = inner.getItems(); + this.itemStacks = new ItemStack[innerStacks.length]; + for (int i = 0; i < itemStacks.length; i++) { + itemStacks[i] = innerStacks[i].copyWithCount(cachedCount); + } + } return itemStacks; } + public @NotNull ItemStack getMaxSizeStack() { + if (inner.getItems().length == 0) return ItemStack.EMPTY; + else return inner.getItems()[0].copyWithCount(countProvider.getMaxValue()); + } + public int getSampledCount(@NotNull RandomSource random) { - if (sampledCount == null) { + if (sampledCount == -1) { sampledCount = countProvider.sample(random); } return sampledCount; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/NBTIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/NBTIngredient.java deleted file mode 100644 index 9ef4b93e2cf..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/NBTIngredient.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.gregtechceu.gtceu.api.recipe.ingredient; - -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraftforge.common.crafting.StrictNBTIngredient; - -/** - * @author KilaBash - * @date 2023/2/21 - * @implNote NBTIngredient - */ -public class NBTIngredient { - - public static Ingredient createNBTIngredient(ItemStack itemStack) { - return StrictNBTIngredient.of(itemStack); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/SizedIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/SizedIngredient.java index 1a032c1bdaf..2fc6b063aa5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/SizedIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/SizedIngredient.java @@ -1,6 +1,9 @@ package com.gregtechceu.gtceu.api.recipe.ingredient; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.core.mixins.IngredientAccessor; +import com.gregtechceu.gtceu.core.mixins.ItemValueAccessor; +import com.gregtechceu.gtceu.core.mixins.TagValueAccessor; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; @@ -9,6 +12,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraftforge.common.crafting.IIngredientSerializer; +import net.minecraftforge.common.crafting.StrictNBTIngredient; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -28,13 +32,26 @@ public class SizedIngredient extends Ingredient { protected int amount; @Getter protected final Ingredient inner; + /** + * This array's elements must be treated as immutable. + */ protected ItemStack[] itemStacks = null; private boolean changed = true; + @Getter + private final boolean isEmpty; + private final Value value; protected SizedIngredient(Ingredient inner, int amount) { super(Stream.empty()); this.amount = amount; this.inner = inner; + this.isEmpty = inner.isEmpty(); + if (isEmpty || inner.getClass() != Ingredient.class) { + this.value = null; + } else { + var values = ((IngredientAccessor) inner).getValues(); + this.value = values.length == 1 ? values[0] : null; + } } protected SizedIngredient(@NotNull TagKey tag, int amount) { @@ -42,8 +59,7 @@ protected SizedIngredient(@NotNull TagKey tag, int amount) { } protected SizedIngredient(ItemStack itemStack) { - this((itemStack.hasTag() || itemStack.getDamageValue() > 0) ? NBTIngredient.createNBTIngredient(itemStack) : - Ingredient.of(itemStack), itemStack.getCount()); + this(itemStack.hasTag() ? StrictNBTIngredient.of(itemStack) : Ingredient.of(itemStack), itemStack.getCount()); } public static SizedIngredient create(ItemStack inner) { @@ -68,21 +84,16 @@ public static Ingredient copy(Ingredient ingredient) { return copy(intProviderIngredient); } - var copied = SizedIngredient.create(sizedIngredient.inner, sizedIngredient.amount); - if (sizedIngredient.itemStacks != null) { - copied.itemStacks = Arrays.stream(sizedIngredient.itemStacks).map(ItemStack::copy) - .toArray(ItemStack[]::new); - } - return copied; + return SizedIngredient.create(sizedIngredient.inner, sizedIngredient.amount); } else if (ingredient instanceof IntCircuitIngredient circuit) { - return circuit.copy(); + return circuit; } else if (ingredient instanceof IntProviderIngredient intProviderIngredient) { - var copied = new IntProviderIngredient(intProviderIngredient.inner, intProviderIngredient.countProvider); + var copied = IntProviderIngredient.of(intProviderIngredient.inner, intProviderIngredient.countProvider); if (intProviderIngredient.itemStacks != null) { copied.itemStacks = Arrays.stream(intProviderIngredient.itemStacks).map(ItemStack::copy) .toArray(ItemStack[]::new); } - if (intProviderIngredient.sampledCount != null) { + if (intProviderIngredient.sampledCount != -1) { copied.sampledCount = intProviderIngredient.sampledCount; } return copied; @@ -111,6 +122,14 @@ public static SizedIngredient fromJson(JsonObject json) { @Override public boolean test(@Nullable ItemStack stack) { + if (stack == null) return false; + if (this.isEmpty) return stack.isEmpty(); + + if (this.value instanceof TagValueAccessor tagValue) { + return stack.is(tagValue.getTag()); + } else if (this.value instanceof ItemValueAccessor itemValue) { + return ItemStack.isSameItem(stack, itemValue.getItem()); + } return inner.test(stack); } @@ -120,11 +139,11 @@ public boolean test(@Nullable ItemStack stack) { return intProviderIngredient.getItems(); } if (changed || itemStacks == null) { - itemStacks = Arrays.stream(inner.getItems()).map(i -> { - ItemStack ic = i.copy(); - ic.setCount(amount); - return ic; - }).toArray(ItemStack[]::new); + var innerStacks = inner.getItems(); + this.itemStacks = new ItemStack[innerStacks.length]; + for (int i = 0; i < itemStacks.length; i++) { + itemStacks[i] = innerStacks[i].copyWithCount(amount); + } changed = false; } return itemStacks; @@ -140,11 +159,6 @@ public void setAmount(int amount) { return inner.getStackingIds(); } - @Override - public boolean isEmpty() { - return inner.isEmpty(); - } - @Override public int hashCode() { int result = amount; @@ -152,6 +166,15 @@ public int hashCode() { return result; } + public static Ingredient getInner(Ingredient ingredient) { + if (ingredient instanceof SizedIngredient sizedIngredient) { + return getInner(sizedIngredient.getInner()); + } else if (ingredient instanceof IntProviderIngredient intProviderIngredient) { + return getInner(intProviderIngredient.getInner()); + } + return ingredient; + } + public static final IIngredientSerializer SERIALIZER = new IIngredientSerializer<>() { @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/Branch.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/Branch.java index df135f60792..e3dfa9df558 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/Branch.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/Branch.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.api.recipe.lookup; import com.gregtechceu.gtceu.api.recipe.GTRecipe; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; import com.mojang.datafixers.util.Either; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/GTRecipeLookup.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/GTRecipeLookup.java index f01ed5a9028..08141abbc6e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/GTRecipeLookup.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/GTRecipeLookup.java @@ -8,6 +8,8 @@ import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.MapIngredientTypeManager; import com.gregtechceu.gtceu.common.data.GTRecipeTypes; import com.gregtechceu.gtceu.common.item.armor.PowerlessJetpack; import com.gregtechceu.gtceu.config.ConfigHolder; @@ -26,6 +28,7 @@ import java.lang.ref.WeakReference; import java.util.*; +import java.util.function.BiConsumer; import java.util.function.Predicate; @RequiredArgsConstructor @@ -172,7 +175,9 @@ public GTRecipe recurseIngredientTreeFindRecipe(@NotNull List> ingredients, @NotNull Branch branchMap, @NotNull Predicate canHandle, - int index, int count, long skip) { + int index, int count, BitSet skip) { // exhausted all the ingredients, and didn't find anything if (count == ingredients.size()) return null; @@ -233,18 +238,20 @@ public GTRecipe recurseIngredientTreeFindRecipe(@NotNull List> ingredients, @NotNull Branch map, @NotNull Predicate canHandle, int currentIndex, int count, - long skip) { + BitSet skip) { // We loop around ingredients.size() if we reach the end. // only end when all ingredients are exhausted, or a recipe is found int i = (currentIndex + 1) % ingredients.size(); while (i != currentIndex) { // Have we already used this ingredient? If so, skip this one. - if (((skip & (1L << i)) == 0)) { + if (!(skip.get(i))) { // Recursive call // Increase the count, so the recursion can terminate if needed (ingredients is exhausted) // Append the current index to the skip list + BitSet copy = (BitSet) skip.clone(); + copy.set(i); GTRecipe found = recurseIngredientTreeFindRecipe(ingredients, map, canHandle, i, count + 1, - skip | (1L << i)); + copy); if (found != null) { return found; } @@ -383,29 +390,24 @@ protected static void retrieveCachedIngredient(@NotNull List> fromRecipe(@NotNull GTRecipe r) { - List> list = new ObjectArrayList<>(r.inputs.values().size()); - r.inputs.forEach((cap, contents) -> { - if (cap.isRecipeSearchFilter() && !contents.isEmpty()) { - List ingredients = new ArrayList<>(); - for (Content content : contents) { - ingredients.add(content.getContent()); - } - ingredients = cap.compressIngredients(ingredients); - for (Object ingredient : ingredients) { - // use the cached ingredient, if possible - retrieveCachedIngredient(list, cap.convertToMapIngredient(ingredient), ingredientRoot); - } - } - }); - r.tickInputs.forEach((cap, contents) -> { + protected List> fromRecipe(@NotNull GTRecipe recipe) { + int initialCapacity = (recipe.inputs.size() + recipe.tickInputs.size()) * 2; + List> list = new ObjectArrayList<>(initialCapacity); + recipe.inputs.forEach(processCapabilityIngredients(list)); + recipe.tickInputs.forEach(processCapabilityIngredients(list)); + return list; + } + + // spotless:off + protected BiConsumer, List> processCapabilityIngredients(List> list) { + return (cap, contents) -> { if (cap.isRecipeSearchFilter() && !contents.isEmpty()) { List ingredients = new ArrayList<>(); for (Content content : contents) { @@ -414,32 +416,35 @@ protected List> fromRecipe(@NotNull GTRecipe r) { ingredients = cap.compressIngredients(ingredients); for (Object ingredient : ingredients) { // use the cached ingredient, if possible - retrieveCachedIngredient(list, cap.convertToMapIngredient(ingredient), ingredientRoot); + retrieveCachedIngredient(list, MapIngredientTypeManager.getFrom(ingredient, cap), ingredientRoot); } } - }); - return list; + }; } + // spotless:on /** - * Converts a GTRecipe's {@link com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability}s into a List of - * {@link AbstractMapIngredient}s + * Converts a Recipe Capability holder's handlers into + * a list of {@link AbstractMapIngredient AbstractMapIngredients} * - * @param r the recipe to use - * @return a list of all the AbstractMapIngredients comprising the recipe + * @param holder the capability holder to query handlers from + * @return a list of all the AbstractMapIngredients in the handlers */ @NotNull - protected List> fromHolder(@NotNull IRecipeCapabilityHolder r) { - var handlerMap = r.getCapabilitiesFlat().getOrDefault(IO.IN, Collections.emptyMap()); - int size = handlerMap.values().size(); - List> list = new ObjectArrayList<>(size); + protected List> fromHolder(@NotNull IRecipeCapabilityHolder holder) { + var handlerMap = holder.getCapabilitiesFlat().getOrDefault(IO.IN, Collections.emptyMap()); + // the initial capacity is a "feel-good" value because it's faster to just grow the list + // than to calculate an accurate value. + List> list = new ObjectArrayList<>(handlerMap.size() * 8); for (var entry : handlerMap.entrySet()) { var cap = entry.getKey(); var handlers = entry.getValue(); if (!cap.isRecipeSearchFilter()) continue; for (var handler : handlers) { var compressed = cap.compressIngredients(handler.getContents()); - list.addAll(cap.convertCompressedIngredients(compressed)); + for (var ingredient : compressed) { + list.add(MapIngredientTypeManager.getFrom(ingredient, cap)); + } } } return list; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapFluidIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapFluidIngredient.java deleted file mode 100644 index 6b1803c6971..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapFluidIngredient.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gregtechceu.gtceu.api.recipe.lookup; - -import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; - -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.fluids.FluidStack; - -import it.unimi.dsi.fastutil.objects.ObjectArrayList; -import org.jetbrains.annotations.NotNull; - -import java.util.List; -import java.util.Objects; - -public class MapFluidIngredient extends AbstractMapIngredient { - - public final Fluid fluid; - public final CompoundTag tag; - - public MapFluidIngredient(FluidStack fluidStack) { - this.fluid = fluidStack.getFluid(); - this.tag = fluidStack.getTag(); - } - - @NotNull - public static List from(@NotNull FluidIngredient r) { - ObjectArrayList list = new ObjectArrayList<>(); - for (FluidStack s : r.getStacks()) { - list.add(new MapFluidIngredient(s)); - } - return list; - } - - @Override - protected int hash() { - // the Fluid registered to the fluidName on game load might not be the same Fluid after loading the world, but - // will still have the same fluidName. - int hash = 31 + BuiltInRegistries.FLUID.getKey(fluid).hashCode(); - if (tag != null) { - return 31 * hash + tag.hashCode(); - } - return hash; - } - - @Override - public boolean equals(Object o) { - if (super.equals(o)) { - MapFluidIngredient other = (MapFluidIngredient) o; - // the Fluid registered to the fluidName on game load might not be the same Fluid after loading the world, - // but will still have the same fluidName. - if (this.fluid.isSame(other.fluid)) { - return Objects.equals(tag, other.tag); - } - } - return false; - } - - @Override - public String toString() { - return "MapFluidIngredient{" + - "{fluid=" + BuiltInRegistries.FLUID.getKey(fluid) + "} {tag=" + tag + "}"; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapFluidTagIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapFluidTagIngredient.java deleted file mode 100644 index c4cc2be36d4..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapFluidTagIngredient.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.gregtechceu.gtceu.api.recipe.lookup; - -import net.minecraft.tags.TagKey; -import net.minecraft.world.level.material.Fluid; - -public class MapFluidTagIngredient extends AbstractMapIngredient { - - TagKey tag; - - public MapFluidTagIngredient(TagKey tag) { - this.tag = tag; - } - - @Override - protected int hash() { - return tag.location().hashCode(); - } - - @SuppressWarnings("deprecation") - @Override - public boolean equals(Object obj) { - if (super.equals(obj)) { - return tag == ((MapFluidTagIngredient) obj).tag; - } - return false; - } - - @Override - public String toString() { - return "MapFluidTagIngredient{" + "tag=" + tag.location() + "}"; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapIntersectionIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapIntersectionIngredient.java deleted file mode 100644 index 635fa14b304..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapIntersectionIngredient.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.gregtechceu.gtceu.api.recipe.lookup; - -import com.gregtechceu.gtceu.core.mixins.IngredientAccessor; -import com.gregtechceu.gtceu.core.mixins.IntersectionIngredientAccessor; -import com.gregtechceu.gtceu.core.mixins.ItemValueAccessor; -import com.gregtechceu.gtceu.core.mixins.TagValueAccessor; -import com.gregtechceu.gtceu.utils.IngredientEquality; - -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraftforge.common.crafting.IntersectionIngredient; - -import java.util.ArrayList; -import java.util.List; - -public class MapIntersectionIngredient extends AbstractMapIngredient { - - protected IntersectionIngredient intersectionIngredient; - protected List ingredients; - - public MapIntersectionIngredient(IntersectionIngredient ingredient) { - this.intersectionIngredient = ingredient; - this.ingredients = new ArrayList<>(((IntersectionIngredientAccessor) ingredient).getChildren()); - this.ingredients.sort(IngredientEquality.INGREDIENT_COMPARATOR); - } - - @Override - protected int hash() { - int hash = 31; - for (Ingredient ingredient : ingredients) { - for (Ingredient.Value value : ((IngredientAccessor) ingredient).getValues()) { - if (value instanceof Ingredient.TagValue tagValue) { - hash *= 31 * ((TagValueAccessor) tagValue).getTag().location().hashCode(); - } else { - hash *= 31 * ((ItemValueAccessor) value).getItem().getItem().hashCode(); - } - } - } - return hash; - } - - @Override - public boolean equals(Object o) { - if (super.equals(o)) { - MapIntersectionIngredient other = (MapIntersectionIngredient) o; - if (this.ingredients != null) { - if (other.ingredients != null) { - if (this.ingredients.size() != other.ingredients.size()) return false; - for (int i = 0; i < this.ingredients.size(); ++i) { - Ingredient ingredient1 = this.ingredients.get(i); - Ingredient ingredient2 = other.ingredients.get(i); - if (!IngredientEquality.ingredientEquals(ingredient1, ingredient2)) { - return false; - } - } - return true; - } - } - } else if (o instanceof MapItemStackIngredient stackIngredient) { - return this.intersectionIngredient.test(stackIngredient.stack); - } - return false; - } - - @Override - public String toString() { - return "MapIntersectionIngredient{" + "ingredient=" + intersectionIngredient + "}"; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemStackIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemStackIngredient.java deleted file mode 100644 index 53a94562604..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemStackIngredient.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.gregtechceu.gtceu.api.recipe.lookup; - -import com.gregtechceu.gtceu.utils.IngredientEquality; - -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.Ingredient; - -public class MapItemStackIngredient extends AbstractMapIngredient { - - protected ItemStack stack; - protected Ingredient ingredient = null; - - public MapItemStackIngredient(ItemStack stack) { - this.stack = stack; - } - - public MapItemStackIngredient(ItemStack stack, Ingredient ingredient) { - this.stack = stack; - this.ingredient = ingredient; - } - - @Override - public boolean equals(Object o) { - if (super.equals(o)) { - MapItemStackIngredient other = (MapItemStackIngredient) o; - if (this.stack.getItem() != other.stack.getItem()) { - return false; - } - if (this.ingredient != null) { - if (other.ingredient != null) { - return IngredientEquality.ingredientEquals(this.ingredient, other.ingredient); - } - } else if (other.ingredient != null) { - return other.ingredient.test(this.stack); - } - } - return false; - } - - @Override - protected int hash() { - return stack.getItem().hashCode() * 31; - } - - @Override - public String toString() { - return "MapItemStackIngredient{" + "item=" + BuiltInRegistries.ITEM.getKey(stack.getItem()) + "}"; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemStackNBTIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemStackNBTIngredient.java deleted file mode 100644 index a24fdc77dc6..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemStackNBTIngredient.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.gregtechceu.gtceu.api.recipe.lookup; - -import com.gregtechceu.gtceu.core.mixins.StrictNBTIngredientAccessor; - -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.world.item.ItemStack; -import net.minecraftforge.common.crafting.StrictNBTIngredient; - -import it.unimi.dsi.fastutil.objects.ObjectArrayList; -import org.jetbrains.annotations.NotNull; - -import java.util.List; - -public class MapItemStackNBTIngredient extends MapItemStackIngredient { - - protected StrictNBTIngredient nbtIngredient; - - public MapItemStackNBTIngredient(ItemStack s, StrictNBTIngredient nbtIngredient) { - super(s); - this.nbtIngredient = nbtIngredient; - } - - @NotNull - public static List from(@NotNull StrictNBTIngredient r) { - ObjectArrayList list = new ObjectArrayList<>(); - for (ItemStack s : r.getItems()) { - list.add(new MapItemStackNBTIngredient(s, r)); - } - return list; - } - - @Override - protected int hash() { - return stack.getItem().hashCode() * 31; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof MapItemStackNBTIngredient other) { - if (this.stack.getItem() != other.stack.getItem()) { - return false; - } - if (this.nbtIngredient != null) { - if (other.nbtIngredient != null) { - return ItemStack.isSameItemSameTags(((StrictNBTIngredientAccessor) nbtIngredient).getStack(), - ((StrictNBTIngredientAccessor) other.nbtIngredient).getStack()); - } - } else if (other.nbtIngredient != null) { - return other.nbtIngredient.test(this.stack); - } - } - return false; - } - - @Override - public String toString() { - return "MapItemStackNBTIngredient{" + "item=" + BuiltInRegistries.ITEM.getKey(stack.getItem()) + "}"; - } - - @Override - public boolean isSpecialIngredient() { - return true; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemStackPartialNBTIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemStackPartialNBTIngredient.java deleted file mode 100644 index 7cc1c5eb343..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemStackPartialNBTIngredient.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.gregtechceu.gtceu.api.recipe.lookup; - -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.world.item.ItemStack; -import net.minecraftforge.common.crafting.PartialNBTIngredient; - -import it.unimi.dsi.fastutil.objects.ObjectArrayList; -import org.jetbrains.annotations.NotNull; - -import java.util.List; - -public class MapItemStackPartialNBTIngredient extends MapItemStackIngredient { - - PartialNBTIngredient nbtIngredient; - - public MapItemStackPartialNBTIngredient(ItemStack stack, PartialNBTIngredient nbtIngredient) { - super(stack, nbtIngredient); - this.nbtIngredient = nbtIngredient; - } - - @NotNull - public static List from(@NotNull PartialNBTIngredient r) { - ObjectArrayList list = new ObjectArrayList<>(); - for (ItemStack s : r.getItems()) { - list.add(new MapItemStackPartialNBTIngredient(s, r)); - } - return list; - } - - @Override - protected int hash() { - return stack.getItem().hashCode() * 31; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj instanceof MapItemStackPartialNBTIngredient other) { - if (this.stack.getItem() != other.stack.getItem()) { - return false; - } - if (this.nbtIngredient != null) { - if (other.nbtIngredient != null) { - if (this.nbtIngredient.getItems().length != other.nbtIngredient.getItems().length) - return false; - for (ItemStack stack : this.nbtIngredient.getItems()) { - if (!other.nbtIngredient.test(stack)) { - return false; - } - } - return true; - } - } else if (other.nbtIngredient != null) { - return other.nbtIngredient.test(this.stack); - } - } - return false; - } - - @Override - public String toString() { - return "MapItemStackPartialNBTIngredient{" + "item=" + BuiltInRegistries.ITEM.getKey(stack.getItem()) + "}"; - } - - @Override - public boolean isSpecialIngredient() { - return true; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemTagIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemTagIngredient.java deleted file mode 100644 index 4dba1943d75..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemTagIngredient.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.gregtechceu.gtceu.api.recipe.lookup; - -import net.minecraft.tags.TagKey; -import net.minecraft.world.item.Item; - -public class MapItemTagIngredient extends AbstractMapIngredient { - - TagKey tag; - - public MapItemTagIngredient(TagKey tag) { - this.tag = tag; - } - - @Override - protected int hash() { - return tag.location().hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (super.equals(obj)) { - return tag == ((MapItemTagIngredient) obj).tag; - } - return false; - } - - @Override - public String toString() { - return "MapItemTagIngredient{" + "tag=" + tag.location() + "}"; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/RecipeIterator.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/RecipeIterator.java index 0f2a81a0965..55515d85f4d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/RecipeIterator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/RecipeIterator.java @@ -2,9 +2,11 @@ import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; import org.jetbrains.annotations.NotNull; +import java.util.BitSet; import java.util.Iterator; import java.util.List; import java.util.function.Predicate; @@ -38,9 +40,11 @@ public GTRecipe next() { // Try each ingredient as a starting point, save current index GTRecipe r = null; while (index < ingredients.size()) { + BitSet skipSet = new BitSet(); + skipSet.set(index); r = recipeMap.getLookup().recurseIngredientTreeFindRecipe(ingredients, recipeMap.getLookup().getLookup(), canHandle, - index, 0, (1L << index)); + index, 0, skipSet); ++index; if (r != null) break; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/AbstractMapIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/AbstractMapIngredient.java similarity index 93% rename from src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/AbstractMapIngredient.java rename to src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/AbstractMapIngredient.java index daec52460d3..235b806595c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/AbstractMapIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/AbstractMapIngredient.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.api.recipe.lookup; +package com.gregtechceu.gtceu.api.recipe.lookup.ingredient; public abstract class AbstractMapIngredient { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/MapIngredientFunction.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/MapIngredientFunction.java new file mode 100644 index 00000000000..b70354a3024 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/MapIngredientFunction.java @@ -0,0 +1,21 @@ +package com.gregtechceu.gtceu.api.recipe.lookup.ingredient; + +import com.gregtechceu.gtceu.common.data.GTRecipeCapabilities; + +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; + +import java.util.List; + +@FunctionalInterface +public interface MapIngredientFunction { + + /** + * Convert the passed object to a list of recipe lookup filters. + * + * @param ingredient The ingredient to convert. + * e.g. {@link Ingredient} or {@link ItemStack} for {@link GTRecipeCapabilities#ITEM} + * @return a list of recipe lookup filters. + */ + List getIngredients(T ingredient); +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/MapIngredientTypeManager.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/MapIngredientTypeManager.java new file mode 100644 index 00000000000..30bb00b3ec9 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/MapIngredientTypeManager.java @@ -0,0 +1,102 @@ +package com.gregtechceu.gtceu.api.recipe.lookup.ingredient; + +import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; + +import net.minecraft.Util; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; + +import com.google.common.base.Preconditions; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; + +/** + * Manager for custom map ingredient types. + *
+ * Addons can register their own map ingredient classes here instead of mixining into GT's initialization logic. + *

+ * A good time to register them is in a {@link FMLCommonSetupEvent Common Setup Event}, + * after any custom ingredient types. + */ +@SuppressWarnings("unchecked") +public final class MapIngredientTypeManager { + + // spotless:off + private static final Map, List>> ingredientFunctions = new ConcurrentHashMap<>(7); + private static final Map, Class> ingredientTypes = new ConcurrentHashMap<>(7); + // spotless:on + + public static void registerMapIngredient(Class ingredientClass, + MapIngredientFunction function) { + ingredientClass = boxClass(ingredientClass); + var list = (List>) ingredientFunctions.computeIfAbsent( + ingredientClass, $ -> new ArrayList<>()); + list.add(function); + ingredientTypes.put(function, ingredientClass); + } + + @NotNull + public static List getFrom(T object, RecipeCapability cap) { + Class objClass = (Class) boxClass(object.getClass()); + Class stopAt = boxClass(cap.serializer.contentClass()); + if (!stopAt.isAssignableFrom(objClass)) { + stopAt = Object.class; + } + var functions = getTypesForClass(objClass, stopAt); + // this is the same as writing `object instanceof stopClass`, but it keeps track of the boxed primitives + if (!objClass.isAssignableFrom(stopAt)) { + var defaults = getDefaultIngredients(object, cap, stopAt, functions); + if (defaults != null) return defaults; + } + + List values = new ArrayList<>(); + for (var function : functions) { + values.addAll(function.getIngredients(object)); + } + return values; + } + + private static List> getTypesForClass(Class objClass, + Class stopAt) { + Preconditions.checkArgument(stopAt.isAssignableFrom(objClass), + "stopAt must be a superclass of %s", objClass); + + var types = ingredientFunctions.get(objClass); + if (types == null && objClass != stopAt) { + Class superclass = objClass.getSuperclass(); + if (superclass == null || superclass == stopAt) return Collections.emptyList(); + return getTypesForClass(superclass, stopAt); + } + return (List>) types; + } + + private static @Nullable List getDefaultIngredients(T object, RecipeCapability cap, + Class stopAt, + List> functions) { + for (var function : functions) { + if (ingredientTypes.get(function) != stopAt) { + return null; + } + } + // if the ingredient is not of the base type, and we didn't find any specific ones for it, return a default + return Objects.requireNonNullElseGet(cap.getDefaultMapIngredient(object), Collections::emptyList); + } + + private static final Map, Class> WRAPPERS = Util.make(new HashMap<>(9), map -> { + map.put(boolean.class, Boolean.class); + map.put(byte.class, Byte.class); + map.put(char.class, Character.class); + map.put(double.class, Double.class); + map.put(float.class, Float.class); + map.put(int.class, Integer.class); + map.put(long.class, Long.class); + map.put(short.class, Short.class); + map.put(void.class, Void.class); + }); + + private static @NotNull Class boxClass(Class clazz) { + return (Class) WRAPPERS.getOrDefault(clazz, clazz); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/fluid/FluidStackMapIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/fluid/FluidStackMapIngredient.java new file mode 100644 index 00000000000..49c18543a8c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/fluid/FluidStackMapIngredient.java @@ -0,0 +1,74 @@ +package com.gregtechceu.gtceu.api.recipe.lookup.ingredient.fluid; + +import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; + +import net.minecraftforge.fluids.FluidStack; + +import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import org.jetbrains.annotations.NotNull; + +import java.util.Collections; +import java.util.List; + +public class FluidStackMapIngredient extends AbstractMapIngredient { + + protected FluidStack stack; + protected FluidIngredient ingredient = null; + + public FluidStackMapIngredient(FluidStack stack) { + this.stack = stack; + } + + public FluidStackMapIngredient(FluidStack stack, FluidIngredient ingredient) { + this.stack = stack; + this.ingredient = ingredient; + } + + @NotNull + public static List from(@NotNull FluidIngredient ingredient) { + List ingredients = new ObjectArrayList<>(); + for (FluidIngredient.Value value : ingredient.values) { + if (value instanceof FluidIngredient.FluidValue fluidValue) { + FluidStack stack = new FluidStack(fluidValue.fluid(), ingredient.getAmount(), ingredient.getNbt()); + ingredients.add(new FluidStackMapIngredient(stack, ingredient)); + } + } + return ingredients; + } + + @NotNull + public static List from(@NotNull FluidStack stack) { + return Collections.singletonList(new FluidStackMapIngredient(stack)); + } + + @Override + protected int hash() { + return stack.hashCode(); + } + + @Override + public boolean equals(Object o) { + if (super.equals(o)) { + FluidStackMapIngredient other = (FluidStackMapIngredient) o; + if (this.stack.getFluid() != other.stack.getFluid()) { + return false; + } + if (this.ingredient != null) { + if (other.ingredient != null) { + return this.ingredient.equals(other.ingredient); + } else { + return this.ingredient.test(other.stack); + } + } else if (other.ingredient != null) { + return other.ingredient.test(this.stack); + } + } + return false; + } + + @Override + public String toString() { + return "FluidStackMapIngredient{fluid=" + stack + "}"; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/fluid/FluidTagMapIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/fluid/FluidTagMapIngredient.java new file mode 100644 index 00000000000..20434811e8b --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/fluid/FluidTagMapIngredient.java @@ -0,0 +1,60 @@ +package com.gregtechceu.gtceu.api.recipe.lookup.ingredient.fluid; + +import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; + +import net.minecraft.tags.TagKey; +import net.minecraft.world.level.material.Fluid; +import net.minecraftforge.fluids.FluidStack; + +import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public class FluidTagMapIngredient extends AbstractMapIngredient { + + protected TagKey tag; + + public FluidTagMapIngredient(TagKey tag) { + this.tag = tag; + } + + @NotNull + public static List from(@NotNull FluidIngredient ingredient) { + List ingredients = new ObjectArrayList<>(); + for (FluidIngredient.Value value : ingredient.values) { + if (value instanceof FluidIngredient.TagValue tagValue) { + ingredients.add(new FluidTagMapIngredient(tagValue.tag())); + } + } + return ingredients; + } + + @SuppressWarnings("deprecation") + @NotNull + public static List from(@NotNull FluidStack stack) { + List ingredients = new ObjectArrayList<>(); + stack.getFluid().builtInRegistryHolder().tags() + .forEach(tag -> ingredients.add(new FluidTagMapIngredient(tag))); + return ingredients; + } + + @Override + protected int hash() { + return tag.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (super.equals(obj)) { + return tag == ((FluidTagMapIngredient) obj).tag; + } + return false; + } + + @Override + public String toString() { + return "FluidTagMapIngredient{" + "tag=" + tag.location() + "}"; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/CustomMapIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/CustomMapIngredient.java new file mode 100644 index 00000000000..5d6cc64e92f --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/CustomMapIngredient.java @@ -0,0 +1,85 @@ +package com.gregtechceu.gtceu.api.recipe.lookup.ingredient.item; + +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; + +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; + +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class CustomMapIngredient extends AbstractMapIngredient { + + protected ItemStack stack; + protected Ingredient ingredient = null; + + public CustomMapIngredient(ItemStack stack) { + this.stack = stack; + } + + public CustomMapIngredient(ItemStack stack, Ingredient ingredient) { + this.stack = stack; + this.ingredient = ingredient; + } + + public static List from(Ingredient ingredient) { + List ingredients = new ArrayList<>(); + ItemStack[] stacks = ingredient.getItems(); + for (ItemStack stack : stacks) { + ingredients.add(new CustomMapIngredient(stack, ingredient)); + } + return ingredients; + } + + @NotNull + public static List from(ItemStack stack) { + return Collections.singletonList(new CustomMapIngredient(stack)); + } + + @Override + public boolean equals(Object o) { + if (super.equals(o)) { + CustomMapIngredient other = (CustomMapIngredient) o; + if (!ItemStack.isSameItem(this.stack, other.stack)) { + return false; + } + if (this.ingredient != null) { + if (other.ingredient != null) { + for (ItemStack stack : other.ingredient.getItems()) { + if (!this.ingredient.test(stack)) return false; + } + for (ItemStack stack : this.ingredient.getItems()) { + if (!other.ingredient.test(stack)) return false; + } + return true; + } else { + return this.ingredient.test(other.stack); + } + } else if (other.ingredient != null) { + return other.ingredient.test(this.stack); + } + } + return false; + } + + @Override + protected int hash() { + return stack.getItem().hashCode() * 31; + } + + @Override + public String toString() { + return "CustomMapIngredient{" + + "item=" + stack + + "ingredient=" + ingredient + + "}"; + } + + @Override + public boolean isSpecialIngredient() { + return true; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/IntersectionMapIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/IntersectionMapIngredient.java new file mode 100644 index 00000000000..ab644883e7c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/IntersectionMapIngredient.java @@ -0,0 +1,110 @@ +package com.gregtechceu.gtceu.api.recipe.lookup.ingredient.item; + +import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; +import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; +import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialEntry; +import com.gregtechceu.gtceu.api.data.tag.TagPrefix; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.MapIngredientTypeManager; +import com.gregtechceu.gtceu.core.mixins.forge.IntersectionIngredientAccessor; + +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraftforge.common.crafting.IntersectionIngredient; + +import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import lombok.Getter; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +public class IntersectionMapIngredient extends AbstractMapIngredient { + + @Getter + protected List children; + + public IntersectionMapIngredient(List children) { + this.children = children; + this.children.sort(Comparator.comparingInt(AbstractMapIngredient::hashCode)); + } + + @NotNull + public static List from(IntersectionIngredient ingredient) { + List originalChildren = ((IntersectionIngredientAccessor) ingredient).getChildren(); + List mapChildren = new ObjectArrayList<>(); + for (var ing : originalChildren) { + mapChildren.addAll(MapIngredientTypeManager.getFrom(ing, ItemRecipeCapability.CAP)); + } + + return Collections.singletonList(new IntersectionMapIngredient(mapChildren)); + } + + @NotNull + public static List from(ItemStack stack) { + MaterialEntry entry = ChemicalHelper.getMaterialEntry(stack.getItem()); + + if (!entry.isEmpty() && TagPrefix.ORES.containsKey(entry.tagPrefix())) { + List children = new ArrayList<>(); + children.add(new ItemTagMapIngredient(entry.tagPrefix().getItemTags(entry.material())[0])); + children.add(new ItemTagMapIngredient(entry.tagPrefix().getItemParentTags()[0])); + + return Collections.singletonList(new IntersectionMapIngredient(children)); + } + return Collections.emptyList(); + } + + @Override + protected int hash() { + int hash = 31; + for (var child : children) { + hash *= 31 * child.hashCode(); + } + return hash; + } + + @Override + public boolean equals(Object o) { + if (super.equals(o)) { + IntersectionMapIngredient other = (IntersectionMapIngredient) o; + if (this.children != null) { + if (other.children != null) { + if (this.children.size() != other.children.size()) return false; + for (int i = 0; i < this.children.size(); ++i) { + var ingredient1 = this.children.get(i); + var ingredient2 = other.children.get(i); + if (!ingredient1.equals(ingredient2)) { + return false; + } + } + return true; + } + } + } else if (o instanceof ItemStackMapIngredient stackIngredient) { + for (var child : this.children) { + if (!child.equals(stackIngredient)) { + return false; + } + } + return true; + } + return false; + } + + @Override + public boolean isSpecialIngredient() { + for (var child : this.children) { + if (child.isSpecialIngredient()) { + return true; + } + } + return false; + } + + @Override + public String toString() { + return "IntersectionMapIngredient{" + "children=" + children + "}"; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/ItemStackMapIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/ItemStackMapIngredient.java new file mode 100644 index 00000000000..ba2ebd9fcc6 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/ItemStackMapIngredient.java @@ -0,0 +1,76 @@ +package com.gregtechceu.gtceu.api.recipe.lookup.ingredient.item; + +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; +import com.gregtechceu.gtceu.core.mixins.IngredientAccessor; +import com.gregtechceu.gtceu.core.mixins.ItemValueAccessor; +import com.gregtechceu.gtceu.utils.IngredientEquality; + +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; + +import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import org.jetbrains.annotations.NotNull; + +import java.util.Collections; +import java.util.List; + +public class ItemStackMapIngredient extends AbstractMapIngredient { + + protected ItemStack stack; + protected Ingredient ingredient = null; + + public ItemStackMapIngredient(ItemStack stack) { + this.stack = stack; + } + + public ItemStackMapIngredient(ItemStack stack, Ingredient ingredient) { + this.stack = stack; + this.ingredient = ingredient; + } + + @NotNull + public static List from(Ingredient ingredient) { + List ingredients = new ObjectArrayList<>(); + for (Ingredient.Value value : ((IngredientAccessor) ingredient).getValues()) { + if (value instanceof ItemValueAccessor itemValue) { + ingredients.add(new ItemStackMapIngredient(itemValue.getItem(), ingredient)); + } + } + return ingredients; + } + + @NotNull + public static List from(ItemStack stack) { + return Collections.singletonList(new ItemStackMapIngredient(stack)); + } + + @Override + public boolean equals(Object o) { + if (super.equals(o)) { + ItemStackMapIngredient other = (ItemStackMapIngredient) o; + if (!ItemStack.isSameItem(this.stack, other.stack)) { + return false; + } + if (this.ingredient != null) { + if (other.ingredient != null) { + return IngredientEquality.ingredientEquals(this.ingredient, other.ingredient); + } else { + return this.ingredient.test(other.stack); + } + } else if (other.ingredient != null) { + return other.ingredient.test(this.stack); + } + } + return false; + } + + @Override + protected int hash() { + return stack.getItem().hashCode() * 31; + } + + @Override + public String toString() { + return "ItemStackMapIngredient{" + "item=" + stack + "}"; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/ItemTagMapIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/ItemTagMapIngredient.java new file mode 100644 index 00000000000..5a5c01e6224 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/ItemTagMapIngredient.java @@ -0,0 +1,60 @@ +package com.gregtechceu.gtceu.api.recipe.lookup.ingredient.item; + +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; +import com.gregtechceu.gtceu.core.mixins.IngredientAccessor; +import com.gregtechceu.gtceu.core.mixins.TagValueAccessor; + +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; + +import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public class ItemTagMapIngredient extends AbstractMapIngredient { + + protected TagKey tag; + + public ItemTagMapIngredient(TagKey tag) { + this.tag = tag; + } + + @NotNull + public static List from(Ingredient ingredient) { + List ingredients = new ObjectArrayList<>(); + for (Ingredient.Value value : ((IngredientAccessor) ingredient).getValues()) { + if (value instanceof TagValueAccessor tagValue) { + ingredients.add(new ItemTagMapIngredient(tagValue.getTag())); + } + } + return ingredients; + } + + @NotNull + public static List from(ItemStack stack) { + List ingredients = new ObjectArrayList<>(); + stack.getTags().forEach(tag -> ingredients.add(new ItemTagMapIngredient(tag))); + return ingredients; + } + + @Override + protected int hash() { + return tag.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (super.equals(obj)) { + return tag == ((ItemTagMapIngredient) obj).tag; + } + return false; + } + + @Override + public String toString() { + return "ItemTagMapIngredient{" + "tag=" + tag.location() + "}"; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/PartialNBTItemStackMapIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/PartialNBTItemStackMapIngredient.java new file mode 100644 index 00000000000..29f6457e39d --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/PartialNBTItemStackMapIngredient.java @@ -0,0 +1,85 @@ +package com.gregtechceu.gtceu.api.recipe.lookup.ingredient.item; + +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; +import com.gregtechceu.gtceu.utils.ItemStackHashStrategy; + +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.common.crafting.PartialNBTIngredient; + +import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import org.jetbrains.annotations.NotNull; + +import java.util.Collections; +import java.util.List; + +public class PartialNBTItemStackMapIngredient extends ItemStackMapIngredient { + + protected PartialNBTIngredient nbtIngredient; + + public PartialNBTItemStackMapIngredient(ItemStack stack, PartialNBTIngredient nbtIngredient) { + super(stack, nbtIngredient); + this.nbtIngredient = nbtIngredient; + } + + @NotNull + public static List from(@NotNull PartialNBTIngredient ingredient) { + ObjectArrayList list = new ObjectArrayList<>(); + for (ItemStack s : ingredient.getItems()) { + list.add(new PartialNBTItemStackMapIngredient(s, ingredient)); + } + return list; + } + + @NotNull + public static List from(@NotNull ItemStack stack) { + if (stack.getShareTag() != null) { + return Collections.singletonList(new PartialNBTItemStackMapIngredient(stack, + PartialNBTIngredient.of(stack.getItem(), stack.getShareTag()))); + } + return Collections.emptyList(); + } + + @Override + protected int hash() { + return ItemStackHashStrategy.comparingAllButCount().hashCode(stack) * 31; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj instanceof PartialNBTItemStackMapIngredient other) { + if (this.stack.getItem() != other.stack.getItem()) { + return false; + } + if (this.nbtIngredient != null) { + if (other.nbtIngredient != null) { + if (this.nbtIngredient.getItems().length != other.nbtIngredient.getItems().length) + return false; + for (ItemStack stack : this.nbtIngredient.getItems()) { + if (!other.nbtIngredient.test(stack)) { + return false; + } + } + return true; + } else { + this.nbtIngredient.test(other.stack); + } + } else if (other.nbtIngredient != null) { + return other.nbtIngredient.test(this.stack); + } + } + return false; + } + + @Override + public String toString() { + return "PartialNBTItemStackMapIngredient{" + "item=" + stack + "}"; + } + + @Override + public boolean isSpecialIngredient() { + return true; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/StrictNBTItemStackMapIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/StrictNBTItemStackMapIngredient.java new file mode 100644 index 00000000000..657f12c8130 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/StrictNBTItemStackMapIngredient.java @@ -0,0 +1,79 @@ +package com.gregtechceu.gtceu.api.recipe.lookup.ingredient.item; + +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; +import com.gregtechceu.gtceu.core.mixins.forge.StrictNBTIngredientAccessor; +import com.gregtechceu.gtceu.utils.ItemStackHashStrategy; + +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.common.crafting.StrictNBTIngredient; + +import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import org.jetbrains.annotations.NotNull; + +import java.util.Collections; +import java.util.List; + +public class StrictNBTItemStackMapIngredient extends ItemStackMapIngredient { + + protected StrictNBTIngredient nbtIngredient; + + public StrictNBTItemStackMapIngredient(ItemStack s, StrictNBTIngredient nbtIngredient) { + super(s); + this.nbtIngredient = nbtIngredient; + } + + @NotNull + public static List from(@NotNull StrictNBTIngredient ingredient) { + ObjectArrayList list = new ObjectArrayList<>(); + for (ItemStack s : ingredient.getItems()) { + list.add(new StrictNBTItemStackMapIngredient(s, ingredient)); + } + return list; + } + + @NotNull + public static List from(@NotNull ItemStack stack) { + if (stack.hasTag()) { + return Collections.singletonList(new StrictNBTItemStackMapIngredient(stack, StrictNBTIngredient.of(stack))); + } + return Collections.emptyList(); + } + + @Override + protected int hash() { + return ItemStackHashStrategy.comparingAllButCount().hashCode(stack) * 31; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj instanceof StrictNBTItemStackMapIngredient other) { + if (this.stack.getItem() != other.stack.getItem()) { + return false; + } + if (this.nbtIngredient != null) { + if (other.nbtIngredient != null) { + return ItemStack.isSameItemSameTags(((StrictNBTIngredientAccessor) nbtIngredient).getStack(), + ((StrictNBTIngredientAccessor) other.nbtIngredient).getStack()); + } else { + this.nbtIngredient.test(other.stack); + } + } else if (other.nbtIngredient != null) { + return other.nbtIngredient.test(this.stack); + } + } + return false; + } + + @Override + public String toString() { + return "StrictNBTItemStackMapIngredient{" + "item=" + stack + "}"; + } + + @Override + public boolean isSpecialIngredient() { + return true; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/ModifierFunction.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/ModifierFunction.java index 53baccee4f9..7400f8727be 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/ModifierFunction.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/ModifierFunction.java @@ -7,6 +7,7 @@ import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import lombok.Setter; import lombok.experimental.Accessors; @@ -98,6 +99,7 @@ static FunctionBuilder builder() { final class FunctionBuilder { private int parallels = 1; + private int batchParallels = 1; private int addOCs = 0; private ContentModifier eutModifier = ContentModifier.IDENTITY; private ContentModifier durationModifier = ContentModifier.IDENTITY; @@ -159,15 +161,16 @@ public ModifierFunction build() { recipe.data, recipe.duration, recipe.recipeCategory); copied.parallels = recipe.parallels * parallels; copied.ocLevel = recipe.ocLevel + addOCs; + copied.batchParallels = recipe.batchParallels * batchParallels; if (recipe.data.getBoolean("duration_is_total_cwu")) { copied.duration = (int) Math.max(1, (recipe.duration * (1f - 0.025f * addOCs))); } else { copied.duration = Math.max(1, durationModifier.apply(recipe.duration)); } if (eutModifier != ContentModifier.IDENTITY) { - long preEUt = RecipeHelper.getRealEUt(recipe); - long eut = Math.max(1, eutModifier.apply(Math.abs(preEUt))); - EURecipeCapability.putEUContent(preEUt > 0 ? copied.tickInputs : copied.tickOutputs, eut); + var preEUt = RecipeHelper.getRealEUtWithIO(recipe); + EnergyStack eut = EURecipeCapability.CAP.copyWithModifier(preEUt.stack(), eutModifier); + EURecipeCapability.putEUContent(preEUt.isInput() ? copied.tickInputs : copied.tickOutputs, eut); } return copied; }; @@ -175,6 +178,7 @@ public ModifierFunction build() { private static Map, List> applyAllButEU(ContentModifier cm, Map, List> contents) { + if (cm == ContentModifier.IDENTITY) return new HashMap<>(contents); Map, List> copyContents = new HashMap<>(); for (var entry : contents.entrySet()) { var cap = entry.getKey(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/ParallelLogic.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/ParallelLogic.java index ecf26e3e50f..b8a65588451 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/ParallelLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/ParallelLogic.java @@ -11,6 +11,8 @@ import org.jetbrains.annotations.NotNull; +import java.util.Collections; +import java.util.List; import java.util.function.Predicate; import javax.annotation.ParametersAreNonnullByDefault; @@ -31,36 +33,39 @@ public static int getParallelAmount(MetaMachine machine, GTRecipe recipe, int pa if (parallelLimit <= 1) return parallelLimit; if (!(machine instanceof IRecipeLogicMachine rlm)) return 1; // First check if we are limited by recipe inputs. This can short circuit a lot of consecutive checking - int maxInputMultiplier = limitByInput(rlm, recipe, parallelLimit); + int maxInputMultiplier = getMaxByInput(rlm, recipe, parallelLimit, Collections.emptyList()); if (maxInputMultiplier == 0) return 0; // Simulate the merging of the maximum amount of recipes that can be run with these items // and limit by the amount we can successfully merge - return limitByOutputMerging(rlm, recipe, maxInputMultiplier, rlm::canVoidRecipeOutputs); + return limitByOutputMerging(rlm, recipe, maxInputMultiplier, rlm::canVoidRecipeOutputs, + Collections.emptyList()); } /** * @param holder The inventories * @param recipe The recipe * @param parallelLimit hard cap on the amount returned + * @param capsToSkip the capabilities to skip parallel testing * @return returns the amount of possible time a recipe can be made from a given input inventory */ - public static int limitByInput(IRecipeCapabilityHolder holder, GTRecipe recipe, int parallelLimit) { + public static int getMaxByInput(IRecipeCapabilityHolder holder, GTRecipe recipe, int parallelLimit, + List> capsToSkip) { int minimum = Integer.MAX_VALUE; // non-tick inputs. for (RecipeCapability cap : recipe.inputs.keySet()) { - if (cap.doMatchInRecipe()) { + if (cap.doMatchInRecipe() && !capsToSkip.contains(cap)) { // Find the maximum number of recipes that can be performed from the contents of the input inventories - minimum = Math.min(minimum, cap.getMaxParallelRatio(holder, recipe, parallelLimit)); + minimum = Math.min(minimum, cap.getMaxParallelByInput(holder, recipe, parallelLimit, false)); } } // tick inputs. for (RecipeCapability cap : recipe.tickInputs.keySet()) { - if (cap.doMatchInRecipe()) { + if (cap.doMatchInRecipe() && !capsToSkip.contains(cap)) { // Find the maximum number of recipes that can be performed from the contents of the input inventories - minimum = Math.min(minimum, cap.getMaxParallelRatio(holder, recipe, parallelLimit)); + minimum = Math.min(minimum, cap.getMaxParallelByInput(holder, recipe, parallelLimit, true)); } } if (minimum == Integer.MAX_VALUE) return 0; @@ -70,42 +75,65 @@ public static int limitByInput(IRecipeCapabilityHolder holder, GTRecipe recipe, /** * @param holder the inventories * @param recipe The recipe - * @param parallelLimit the maximum expected amount + * @param parallelLimit the maximum allowed amount * @param canVoid predicate for what parallel limits should be ignored + * @param capsToSkip the capabilities to skip parallel testing * @return returns the amount of recipes that can be merged successfully into a given output inventory */ public static int limitByOutputMerging(IRecipeCapabilityHolder holder, GTRecipe recipe, int parallelLimit, - Predicate> canVoid) { - int minimum = parallelLimit; + Predicate> canVoid, + List> capsToSkip) { + int max = parallelLimit; for (RecipeCapability cap : recipe.outputs.keySet()) { - if (canVoid.test(cap) || !cap.doMatchInRecipe()) { + if (canVoid.test(cap) || !cap.doMatchInRecipe() || capsToSkip.contains(cap)) { continue; } // Check both normal item outputs and chanced item outputs if (!recipe.getOutputContents(cap).isEmpty()) { - int limit = cap.limitParallel(recipe, holder, parallelLimit); + int limit = cap.limitMaxParallelByOutput(holder, recipe, parallelLimit, false); // If we are not voiding, and cannot fit any items, return 0 if (limit == 0) { return 0; } - minimum = Math.min(minimum, limit); + max = Math.min(max, limit); } } for (RecipeCapability cap : recipe.tickOutputs.keySet()) { - if (canVoid.test(cap) || !cap.doMatchInRecipe()) { + if (canVoid.test(cap) || !cap.doMatchInRecipe() || capsToSkip.contains(cap)) { continue; } // Check both normal item outputs and chanced item outputs if (!recipe.getTickOutputContents(cap).isEmpty()) { - int limit = cap.limitParallel(recipe, holder, parallelLimit); + int limit = cap.limitMaxParallelByOutput(holder, recipe, parallelLimit, true); // If we are not voiding, and cannot fit any items, return 0 if (limit == 0) { return 0; } - minimum = Math.min(minimum, limit); + max = Math.min(max, limit); } } - return minimum; + return max; + } + + /** + * Calculates the maximum parallel amount that can be done for the given machine and recipe, up to the passed limit + * + * @param machine machine to test against + * @param recipe recipe to test with + * @param parallelLimit hard upper limit of parallels that can be done + * @return The number of possible parallels, 0 if the recipe cannot be done + */ + public static int getParallelAmountWithoutEU(MetaMachine machine, GTRecipe recipe, int parallelLimit) { + if (parallelLimit <= 1) return parallelLimit; + if (!(machine instanceof IRecipeLogicMachine rlm)) return 1; + // First check if we are limited by recipe inputs. This can short circuit a lot of consecutive checking + int maxInputMultiplier = getMaxByInput(rlm, recipe, parallelLimit, List.of(EURecipeCapability.CAP)); + if (maxInputMultiplier == 0) return 0; + + // Simulate the merging of the maximum amount of recipes that can be run with these items + // and limit by the amount we can successfully merge + return limitByOutputMerging(rlm, recipe, maxInputMultiplier, rlm::canVoidRecipeOutputs, + List.of(EURecipeCapability.CAP)); } /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/RecipeModifierList.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/RecipeModifierList.java index ae17b17368b..020ce9e4f10 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/RecipeModifierList.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/RecipeModifierList.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.recipe.GTRecipe; +import lombok.Getter; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; @@ -11,6 +12,7 @@ */ public final class RecipeModifierList implements RecipeModifier { + @Getter private final RecipeModifier[] modifiers; public RecipeModifierList(RecipeModifier... modifiers) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ui/GTRecipeTypeUI.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ui/GTRecipeTypeUI.java index 399e0fb3b25..5ba8a0417b2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ui/GTRecipeTypeUI.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ui/GTRecipeTypeUI.java @@ -45,6 +45,8 @@ import dev.emi.emi.api.EmiApi; import it.unimi.dsi.fastutil.bytes.Byte2ObjectArrayMap; import it.unimi.dsi.fastutil.bytes.Byte2ObjectMap; +import it.unimi.dsi.fastutil.objects.Object2IntAVLTreeMap; +import it.unimi.dsi.fastutil.objects.Object2IntSortedMap; import lombok.Getter; import lombok.Setter; import me.shedaniel.rei.api.client.view.ViewSearchBuilder; @@ -55,7 +57,6 @@ import java.io.InputStream; import java.util.ArrayList; import java.util.List; -import java.util.TreeMap; import java.util.function.BiConsumer; import java.util.function.DoubleSupplier; import java.util.stream.Collectors; @@ -289,11 +290,11 @@ public IEditableUI createEditableUITemplate(final boo protected WidgetGroup addInventorySlotGroup(boolean isOutputs, boolean isSteam, boolean isHighPressure) { int maxCount = 0; int totalR = 0; - TreeMap, Integer> map = new TreeMap<>(RecipeCapability.COMPARATOR); + Object2IntSortedMap> map = new Object2IntAVLTreeMap<>(RecipeCapability.COMPARATOR); if (isOutputs) { - for (var value : recipeType.maxOutputs.entrySet()) { + for (var value : recipeType.maxOutputs.object2IntEntrySet()) { if (value.getKey().doRenderSlot) { - int val = value.getValue(); + int val = value.getIntValue(); if (val > maxCount) { maxCount = Math.min(val, 3); } @@ -302,9 +303,9 @@ protected WidgetGroup addInventorySlotGroup(boolean isOutputs, boolean isSteam, } } } else { - for (var value : recipeType.maxInputs.entrySet()) { + for (var value : recipeType.maxInputs.object2IntEntrySet()) { if (value.getKey().doRenderSlot) { - int val = value.getValue(); + int val = value.getIntValue(); if (val > maxCount) { maxCount = Math.min(val, 3); } @@ -315,13 +316,13 @@ protected WidgetGroup addInventorySlotGroup(boolean isOutputs, boolean isSteam, } WidgetGroup group = new WidgetGroup(0, 0, maxCount * 18 + 8, totalR * 18 + 8); int index = 0; - for (var entry : map.entrySet()) { + for (var entry : map.object2IntEntrySet()) { RecipeCapability cap = entry.getKey(); var widgetClass = cap.getWidgetClass(); if (widgetClass == null) { continue; } - int capCount = entry.getValue(); + int capCount = entry.getIntValue(); for (int slotIndex = 0; slotIndex < capCount; slotIndex++) { var slot = cap.createWidget(); slot.setSelfPosition(new Position((index % 3) * 18 + 4, (index / 3) * 18 + 4)); @@ -403,7 +404,7 @@ protected IGuiTexture getOverlaysForSlot(boolean isOutput, RecipeCapability c * @return the height used to determine size of background texture in JEI */ public int getPropertyHeightShift() { - int maxPropertyCount = maxTooltips + recipeType.getDataInfos().size(); + int maxPropertyCount = maxTooltips + recipeType.getDataInfos().size() + recipeType.getMinRecipeConditions(); return maxPropertyCount * 10; // GTRecipeWidget#LINE_HEIGHT } diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java b/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java index e8abf3052eb..705f8ced765 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java @@ -36,11 +36,6 @@ import com.mojang.serialization.Codec; import org.jetbrains.annotations.ApiStatus; -/** - * @author KilaBash - * @date 2023/2/13 - * @implNote ElementRegistry - */ public final class GTRegistries { // GT Registry @@ -115,11 +110,20 @@ public static void updateFrozenRegistry(RegistryAccess registryAccess) { } public static RegistryAccess builtinRegistry() { - if (FROZEN == BLANK && GTCEu.isClientThread()) { + if (GTCEu.isClientThread()) { + return ClientHelpers.getClientRegistries(); + } + return FROZEN; + } + + private static class ClientHelpers { + + private static RegistryAccess getClientRegistries() { if (Minecraft.getInstance().getConnection() != null) { return Minecraft.getInstance().getConnection().registryAccess(); + } else { + return FROZEN; } } - return FROZEN; } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistry.java b/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistry.java index 2b00d1fe954..abb843e8f37 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistry.java @@ -20,11 +20,6 @@ import java.util.*; -/** - * @author KilaBash - * @date 2023/2/13 - * @implNote GTRegistry - */ public abstract class GTRegistry implements Iterable { public static final Map> REGISTERED = new HashMap<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/BuilderBase.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/BuilderBase.java index 019f0679d87..7f771960908 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/BuilderBase.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/BuilderBase.java @@ -5,6 +5,7 @@ import dev.latvian.mods.kubejs.client.LangEventJS; import dev.latvian.mods.kubejs.generator.AssetJsonGenerator; import dev.latvian.mods.kubejs.generator.DataJsonGenerator; +import org.jetbrains.annotations.Nullable; import java.util.function.Supplier; @@ -19,7 +20,7 @@ public BuilderBase(ResourceLocation id) { public void generateDataJsons(DataJsonGenerator generator) {} - public void generateAssetJsons(AssetJsonGenerator generator) {} + public void generateAssetJsons(@Nullable AssetJsonGenerator generator) {} public void generateLang(LangEventJS lang) {} diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTBlockBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTBlockBuilder.java new file mode 100644 index 00000000000..c1ba8744fb0 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTBlockBuilder.java @@ -0,0 +1,127 @@ +package com.gregtechceu.gtceu.api.registry.registrate; + +import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; + +import net.minecraft.client.color.block.BlockColor; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockBehaviour; + +import com.tterrag.registrate.AbstractRegistrate; +import com.tterrag.registrate.builders.BlockBuilder; +import com.tterrag.registrate.builders.BlockEntityBuilder; +import com.tterrag.registrate.builders.BuilderCallback; +import com.tterrag.registrate.providers.*; +import com.tterrag.registrate.providers.loot.RegistrateBlockLootTables; +import com.tterrag.registrate.util.nullness.*; + +import java.util.function.Supplier; + +public class GTBlockBuilder extends BlockBuilder { + + // spotless:off + public static GTBlockBuilder create(AbstractRegistrate owner, P parent, String name, + BuilderCallback callback, + NonNullFunction factory) { + return new GTBlockBuilder<>(owner, parent, name, callback, factory, BlockBehaviour.Properties::of) + .defaultBlockstate().defaultLoot().defaultLang(); + } + + protected GTBlockBuilder(AbstractRegistrate owner, P parent, String name, BuilderCallback callback, + NonNullFunction factory, + NonNullSupplier initialProperties) { + super(owner, parent, name, callback, factory, initialProperties); + } + + public GTBlockBuilder exBlockstate(NonNullBiConsumer, GTBlockstateProvider> cons) { + return setDataGeneric(ProviderType.BLOCKSTATE, (ctx, prov) -> cons.accept(ctx, (GTBlockstateProvider) prov)); + } + + // region default overrides + + @Override + public GTBlockBuilder properties(NonNullUnaryOperator func) { + return (GTBlockBuilder) super.properties(func); + } + + @Override + public GTBlockBuilder initialProperties(NonNullSupplier block) { + return (GTBlockBuilder) super.initialProperties(block); + } + + @SuppressWarnings("removal") + @Override + public GTBlockBuilder addLayer(Supplier> layer) { + return (GTBlockBuilder) super.addLayer(layer); + } + + @Override + public GTBlockBuilder simpleItem() { + return (GTBlockBuilder) super.simpleItem(); + } + + @Override + public GTBlockBuilder simpleBlockEntity(BlockEntityBuilder.BlockEntityFactory factory) { + return (GTBlockBuilder) super.simpleBlockEntity(factory); + } + + @Override + public BlockEntityBuilder> blockEntity(BlockEntityBuilder.BlockEntityFactory factory) { + return super.blockEntity(factory); + } + + @Override + public GTBlockBuilder color(NonNullSupplier> colorHandler) { + return (GTBlockBuilder) super.color(colorHandler); + } + + @Override + public GTBlockBuilder defaultBlockstate() { + return (GTBlockBuilder) super.defaultBlockstate(); + } + + @Override + public GTBlockBuilder blockstate(NonNullBiConsumer, RegistrateBlockstateProvider> cons) { + return (GTBlockBuilder) setData(ProviderType.BLOCKSTATE, cons); + } + + @Override + public GTBlockBuilder defaultLang() { + return (GTBlockBuilder) super.defaultLang(); + } + + @Override + public GTBlockBuilder lang(String name) { + return (GTBlockBuilder) super.lang(name); + } + + @Override + public GTBlockBuilder defaultLoot() { + return (GTBlockBuilder) super.defaultLoot(); + } + + @Override + public GTBlockBuilder loot(NonNullBiConsumer cons) { + return (GTBlockBuilder) super.loot(cons); + } + + @Override + public GTBlockBuilder recipe(NonNullBiConsumer, RegistrateRecipeProvider> cons) { + return (GTBlockBuilder) super.recipe(cons); + } + + // why is it final >:( + // @SafeVarargs + // public final BlockBuilder tag(TagKey... tags) { + // return tag(ProviderType.BLOCK_TAGS, tags); + // } + + public GTBlockBuilder setDataGeneric(ProviderType type, NonNullBiConsumer, D> cons) { + getOwner().setDataGenerator(this, type, prov -> cons.accept(DataGenContext.from(this), prov)); + return this; + } + + // spotless:on + // endregion +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java index 7311642ab79..63c5578809e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.api.registry.registrate; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.IMachineBlock; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; @@ -13,7 +12,7 @@ import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.registry.registrate.forge.GTFluidBuilder; -import com.gregtechceu.gtceu.utils.FormattingUtil; +import com.gregtechceu.gtceu.core.mixins.registrate.AbstractRegistrateAccessor; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; @@ -25,18 +24,23 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.data.event.GatherDataEvent; +import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.minecraftforge.registries.RegisterEvent; import net.minecraftforge.registries.RegistryObject; -import com.tterrag.registrate.Registrate; +import com.tterrag.registrate.AbstractRegistrate; import com.tterrag.registrate.builders.Builder; -import com.tterrag.registrate.builders.ItemBuilder; import com.tterrag.registrate.builders.NoConfigBuilder; import com.tterrag.registrate.providers.ProviderType; +import com.tterrag.registrate.util.OneTimeEventReceiver; import com.tterrag.registrate.util.entry.ItemEntry; import com.tterrag.registrate.util.entry.RegistryEntry; import com.tterrag.registrate.util.nullness.NonNullBiConsumer; @@ -46,27 +50,19 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.Arrays; import java.util.IdentityHashMap; -import java.util.Locale; import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.BiFunction; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Supplier; -import java.util.stream.Stream; import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/14 - * @implNote GTRegistrate - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class GTRegistrate extends Registrate { +public class GTRegistrate extends AbstractRegistrate { private final AtomicBoolean registered = new AtomicBoolean(false); @@ -92,16 +88,30 @@ public void registerRegistrate() { } @Override - public Registrate registerEventListeners(IEventBus bus) { + public GTRegistrate registerEventListeners(IEventBus bus) { if (!registered.getAndSet(true)) { - return super.registerEventListeners(bus); + // recreate the super method so we can register the event listener with LOW priority. + Consumer onRegister = this::onRegister; + Consumer onRegisterLate = this::onRegisterLate; + bus.addListener(EventPriority.LOW, onRegister); + bus.addListener(EventPriority.LOWEST, onRegisterLate); + + // Fired multiple times when ever tabs need contents rebuilt (changing op tab perms for example) + bus.addListener(this::onBuildCreativeModeTabContents); + // Register events fire multiple times, so clean them up on common setup + OneTimeEventReceiver.addModListener(this, FMLCommonSetupEvent.class, $ -> { + OneTimeEventReceiver.unregister(this, onRegister, RegisterEvent.class); + OneTimeEventReceiver.unregister(this, onRegisterLate, RegisterEvent.class); + }); + if (((AbstractRegistrateAccessor) this).getDoDatagen().get()) { + OneTimeEventReceiver.addModListener(this, GatherDataEvent.class, this::onData); + } } return this; } - protected < - P> NoConfigBuilder createCreativeModeTab(P parent, String name, - Consumer config) { + protected

NoConfigBuilder createCreativeModeTab(P parent, String name, + Consumer config) { return this.generic(parent, name, Registries.CREATIVE_MODE_TAB, () -> { var builder = CreativeModeTab.builder() .icon(() -> getAll(Registries.ITEM).stream().findFirst().map(ItemEntry::cast) @@ -122,23 +132,14 @@ public MachineBuilder machine BiFunction blockFactory, BiFunction itemFactory, TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory) { - return MachineBuilder.create(this, name, definitionFactory, metaMachine, blockFactory, itemFactory, - blockEntityFactory); + return new MachineBuilder<>(this, name, definitionFactory, metaMachine, + blockFactory, itemFactory, blockEntityFactory); } public MachineBuilder machine(String name, Function metaMachine) { - return MachineBuilder.create(this, name, MachineDefinition::createDefinition, metaMachine, - MetaMachineBlock::new, MetaMachineItem::new, MetaMachineBlockEntity::createBlockEntity); - } - - public Stream> machine(String name, - BiFunction metaMachine, - int... tiers) { - return Arrays.stream(tiers) - .mapToObj(tier -> MachineBuilder.create(this, name + "." + GTValues.VN[tier].toLowerCase(Locale.ROOT), - MachineDefinition::createDefinition, holder -> metaMachine.apply(holder, tier), - MetaMachineBlock::new, MetaMachineItem::new, MetaMachineBlockEntity::createBlockEntity)); + return new MachineBuilder<>(this, name, MachineDefinition::new, metaMachine, + MetaMachineBlock::new, MetaMachineItem::new, MetaMachineBlockEntity::new); } public MultiblockMachineBuilder multiblock(String name, @@ -146,14 +147,14 @@ public MultiblockMachineBuilder multiblock(String name, BiFunction blockFactory, BiFunction itemFactory, TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory) { - return MultiblockMachineBuilder.createMulti(this, name, metaMachine, blockFactory, itemFactory, - blockEntityFactory); + return new MultiblockMachineBuilder(this, name, metaMachine, + blockFactory, itemFactory, blockEntityFactory); } public MultiblockMachineBuilder multiblock(String name, Function metaMachine) { - return MultiblockMachineBuilder.createMulti(this, name, metaMachine, MetaMachineBlock::new, - MetaMachineItem::new, MetaMachineBlockEntity::createBlockEntity); + return new MultiblockMachineBuilder(this, name, metaMachine, + MetaMachineBlock::new, MetaMachineItem::new, MetaMachineBlockEntity::new); } public SoundEntryBuilder sound(String name) { @@ -164,15 +165,38 @@ public SoundEntryBuilder sound(ResourceLocation name) { return new SoundEntryBuilder(name); } + // Blocks @Override - public @NotNull ItemBuilder item(String name, - NonNullFunction factory) { - return super.item(name, factory).lang(FormattingUtil.toEnglishName(name.replaceAll("\\.", "_"))); + public GTBlockBuilder block(NonNullFunction factory) { + return block(this, factory); + } + + @Override + public GTBlockBuilder block(String name, + NonNullFunction factory) { + return block(this, name, factory); + } + + @Override + public GTBlockBuilder block(P parent, + NonNullFunction factory) { + return block(parent, currentName(), factory); + } + + @Override + public GTBlockBuilder block(P parent, String name, + NonNullFunction factory) { + return (GTBlockBuilder) entry(name, + callback -> GTBlockBuilder.create(this, parent, name, callback, factory)); } private RegistryEntry currentTab; private static final Map, RegistryEntry> TAB_LOOKUP = new IdentityHashMap<>(); + public RegistryEntry creativeModeTab() { + return this.currentTab; + } + public void creativeModeTab(Supplier> currentTab) { this.currentTab = currentTab.get(); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/IGTFluidBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/IGTFluidBuilder.java index 0746cd56143..4e60ac0b0b3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/IGTFluidBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/IGTFluidBuilder.java @@ -9,11 +9,6 @@ import java.util.function.Consumer; import java.util.function.Supplier; -/** - * @author KilaBash - * @date 2023/2/14 - * @implNote GTFluidBuilder - */ public interface IGTFluidBuilder { IGTFluidBuilder temperature(int temperature); diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java index c01bba9774a..ba4a22eb513 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.IMachineBlock; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.gui.editor.EditableMachineUI; @@ -13,17 +12,21 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifier; import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifierList; import com.gregtechceu.gtceu.api.registry.GTRegistries; -import com.gregtechceu.gtceu.client.renderer.GTRendererProvider; -import com.gregtechceu.gtceu.client.renderer.machine.*; +import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; +import com.gregtechceu.gtceu.client.renderer.BlockEntityWithBERModelRenderer; import com.gregtechceu.gtceu.common.data.GTRecipeModifiers; +import com.gregtechceu.gtceu.common.data.GTRecipeTypes; +import com.gregtechceu.gtceu.common.data.models.GTMachineModels; import com.gregtechceu.gtceu.config.ConfigHolder; - -import com.lowdragmc.lowdraglib.client.renderer.IRenderer; +import com.gregtechceu.gtceu.data.model.builder.MachineModelBuilder; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.client.renderer.RenderType; @@ -38,18 +41,25 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.Property; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; +import net.minecraftforge.client.model.generators.BlockModelBuilder; -import com.tterrag.registrate.Registrate; +import com.tterrag.registrate.AbstractRegistrate; import com.tterrag.registrate.builders.BlockBuilder; import com.tterrag.registrate.builders.ItemBuilder; +import com.tterrag.registrate.providers.DataGenContext; import com.tterrag.registrate.providers.ProviderType; 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.NonNullUnaryOperator; +import dev.latvian.mods.kubejs.client.LangEventJS; +import dev.latvian.mods.kubejs.generator.AssetJsonGenerator; import dev.latvian.mods.rhino.util.HideFromJS; +import dev.latvian.mods.rhino.util.RemapPrefixForJS; import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import lombok.Getter; @@ -61,48 +71,51 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Objects; +import java.util.*; import java.util.function.*; import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/18 - * @implNote MachineBuilder - */ +import static com.gregtechceu.gtceu.common.data.models.GTMachineModels.*; +import static com.gregtechceu.gtceu.integration.kjs.GregTechKubeJSPlugin.RUNTIME_BLOCKSTATE_PROVIDER; + +@SuppressWarnings("unused") @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault +@RemapPrefixForJS("kjs$") @Accessors(chain = true, fluent = true) public class MachineBuilder extends BuilderBase { - protected final Registrate registrate; + protected final GTRegistrate registrate; protected final String name; protected final BiFunction blockFactory; protected final BiFunction itemFactory; protected final TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory; - @Setter // non-final for KJS - protected Function definition; - @Setter // non-final for KJS + + protected final Function definition; + @Setter protected Function machine; @Nullable + @Getter + @Setter + private MachineBuilder.ModelInitializer model = null; + @Nullable + @Getter @Setter - private Supplier renderer; + private NonNullBiConsumer, GTBlockstateProvider> blockModel = null; + @Getter + protected final Map, @Nullable Comparable> modelProperties = new IdentityHashMap<>(); @Setter private VoxelShape shape = Shapes.block(); @Setter private RotationState rotationState = RotationState.NON_Y_AXIS; /** * Whether this machine can be rotated or face upwards. - * todo: set to true by default if we manage to rotate the model accordingly */ @Setter private boolean allowExtendedFacing = false; @Setter - private boolean hasTESR; + private boolean hasBER = ConfigHolder.INSTANCE.client.machinesHaveBERsByDefault; @Setter private boolean renderMultiblockWorldPreview = true; @Setter @@ -111,26 +124,29 @@ public class MachineBuilder extends Builde private NonNullUnaryOperator blockProp = p -> p; @Setter private NonNullUnaryOperator itemProp = p -> p; + @Nullable @Setter private Consumer> blockBuilder; + @Nullable @Setter private Consumer> itemBuilder; @Setter - private NonNullConsumer> onBlockEntityRegister = MetaMachineBlockEntity::onBlockEntityRegister; + private NonNullConsumer> onBlockEntityRegister = NonNullConsumer.noop(); @Getter // getter for KJS - private GTRecipeType[] recipeTypes; + private @NotNull GTRecipeType @NotNull [] recipeTypes = new GTRecipeType[0]; @Getter @Setter // getter for KJS private int tier; @Setter private Object2IntMap> recipeOutputLimits = new Object2IntOpenHashMap<>(); @Setter - private int paintingColor = Long.decode(ConfigHolder.INSTANCE.client.defaultPaintingColor).intValue(); + private int paintingColor = ConfigHolder.INSTANCE.client.getDefaultPaintingColor(); @Setter private BiFunction itemColor = ((itemStack, tintIndex) -> tintIndex == 2 ? GTValues.VC[tier] : tintIndex == 1 ? paintingColor : -1); private PartAbility[] abilities = new PartAbility[0]; private final List tooltips = new ArrayList<>(); + @Nullable @Setter private BiConsumer> tooltipBuilder; private RecipeModifier recipeModifier = new RecipeModifierList(GTRecipeModifiers.OC_NON_PERFECT); @@ -156,6 +172,8 @@ public class MachineBuilder extends Builde @Setter private boolean regressWhenWaiting = true; + @Setter + private boolean allowCoverOnFront = false; @Setter private Supplier appearance; @Getter // getter for KJS @@ -164,14 +182,15 @@ public class MachineBuilder extends Builde private EditableMachineUI editableUI; @Getter // getter for KJS @Setter + @Nullable private String langValue = null; - protected MachineBuilder(Registrate registrate, String name, - Function definition, - Function machine, - BiFunction blockFactory, - BiFunction itemFactory, - TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory) { + public MachineBuilder(GTRegistrate registrate, String name, + Function definition, + Function machine, + BiFunction blockFactory, + BiFunction itemFactory, + TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory) { super(new ResourceLocation(registrate.getModid(), name)); this.registrate = registrate; this.name = name; @@ -183,82 +202,157 @@ protected MachineBuilder(Registrate registrate, String name, } public MachineBuilder recipeType(GTRecipeType type) { + // noinspection ConstantValue + if (type == null) { + GTCEu.LOGGER.error( + "Tried to set null recipe type on machine {}. Did you create the recipe type before this machine?", + this.id); + return this; + } this.recipeTypes = ArrayUtils.add(this.recipeTypes, type); + initRecipeMachineModelProperties(type); return this; } @Tolerate public MachineBuilder recipeTypes(GTRecipeType... types) { - for (GTRecipeType type : types) { - this.recipeTypes = ArrayUtils.add(this.recipeTypes, type); + List typeList = new ArrayList<>(); + Collections.addAll(typeList, this.recipeTypes); + + for (int i = 0; i < types.length; i++) { + GTRecipeType type = types[i]; + if (type != null) { + initRecipeMachineModelProperties(type); + typeList.add(type); + } else { + GTCEu.LOGGER.error( + "Tried to set null recipe type on machine {} (index {}). Did you create the recipe type before this machine?", + this.id, i); + } } + this.recipeTypes = typeList.toArray(GTRecipeType[]::new); return this; } - public static < - DEFINITION extends MachineDefinition> MachineBuilder create(Registrate registrate, String name, - Function definitionFactory, - Function metaMachine, - BiFunction blockFactory, - BiFunction itemFactory, - TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory) { - return new MachineBuilder<>(registrate, name, definitionFactory, metaMachine, blockFactory, itemFactory, - blockEntityFactory); + protected void initRecipeMachineModelProperties(GTRecipeType type) { + if (type == GTRecipeTypes.DUMMY_RECIPES) { + return; + } + if (!modelProperties.containsKey(GTMachineModelProperties.RECIPE_LOGIC_STATUS)) { + modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE); + } } - public MachineBuilder modelRenderer(Supplier model) { - this.renderer = () -> new MachineRenderer(model.get()); - return this; + public MachineBuilder simpleModel(ResourceLocation modelName) { + return model(createBasicMachineModel(modelName)); + } + + public MachineBuilder defaultModel() { + return simpleModel(new ResourceLocation(registrate.getModid(), "block/machine/template/" + name)); + } + + public MachineBuilder tieredHullModel(ResourceLocation model) { + return model(createTieredHullMachineModel(model)); + } + + public MachineBuilder overlayTieredHullModel(String name) { + return overlayTieredHullModel(new ResourceLocation(registrate.getModid(), "block/machine/part/" + name)); + } + + public MachineBuilder overlayTieredHullModel(ResourceLocation overlayModel) { + return model(createOverlayTieredHullMachineModel(overlayModel)); } - public MachineBuilder defaultModelRenderer() { - return modelRenderer(() -> new ResourceLocation(registrate.getModid(), "block/" + name)); + public MachineBuilder colorOverlayTieredHullModel(String overlay) { + return colorOverlayTieredHullModel(overlay, null, null); } - public MachineBuilder tieredHullRenderer(ResourceLocation model) { - return renderer(() -> new TieredHullMachineRenderer(tier, model)); + public MachineBuilder colorOverlayTieredHullModel(String overlay, + @Nullable String pipeOverlay, + @Nullable String emissiveOverlay) { + ResourceLocation overlayTex = new ResourceLocation(registrate.getModid(), "block/overlay/machine/" + overlay); + ResourceLocation pipeOverlayTex = pipeOverlay == null ? null : + new ResourceLocation(registrate.getModid(), "block/overlay/machine/" + pipeOverlay); + ResourceLocation emissiveOverlayTex = emissiveOverlay == null ? null : + new ResourceLocation(registrate.getModid(), "block/overlay/machine/" + emissiveOverlay); + return colorOverlayTieredHullModel(overlayTex, pipeOverlayTex, emissiveOverlayTex); } - public MachineBuilder overlayTieredHullRenderer(String name) { - return renderer(() -> new OverlayTieredMachineRenderer(tier, - new ResourceLocation(registrate.getModid(), "block/machine/part/" + name))); + public MachineBuilder colorOverlayTieredHullModel(ResourceLocation overlay) { + return colorOverlayTieredHullModel(overlay, null, null); } - public MachineBuilder overlaySteamHullRenderer(String name) { - return renderer(() -> new OverlaySteamMachineRenderer( - new ResourceLocation(registrate.getModid(), "block/machine/part/" + name))); + public MachineBuilder colorOverlayTieredHullModel(ResourceLocation overlay, + @Nullable ResourceLocation pipeOverlay, + @Nullable ResourceLocation emissiveOverlay) { + modelProperty(GTMachineModelProperties.IS_PAINTED, false); + return model(createColorOverlayTieredHullMachineModel(overlay, pipeOverlay, emissiveOverlay)); } - public MachineBuilder workableTieredHullRenderer(ResourceLocation workableModel) { - return renderer(() -> new WorkableTieredHullMachineRenderer(tier, workableModel)); + public MachineBuilder overlaySteamHullModel(String name) { + return overlaySteamHullModel(new ResourceLocation(registrate.getModid(), "block/machine/part/" + name)); } - public MachineBuilder simpleGeneratorMachineRenderer(ResourceLocation workableModel) { - return renderer(() -> new SimpleGeneratorMachineRenderer(tier, workableModel)); + public MachineBuilder overlaySteamHullModel(ResourceLocation overlayModel) { + modelProperty(GTMachineModelProperties.IS_STEEL_MACHINE, ConfigHolder.INSTANCE.machines.steelSteamMultiblocks); + return model(createOverlaySteamHullMachineModel(overlayModel)); } - public MachineBuilder workableSteamHullRenderer(boolean isHighPressure, - ResourceLocation workableModel) { - return renderer(() -> new WorkableSteamMachineRenderer(isHighPressure, workableModel)); + public MachineBuilder colorOverlaySteamHullModel(String overlay) { + return colorOverlaySteamHullModel(overlay, null, null); } - public MachineBuilder workableCasingRenderer(ResourceLocation baseCasing, - ResourceLocation workableModel) { - return renderer(() -> new WorkableCasingMachineRenderer(baseCasing, workableModel)); + public MachineBuilder colorOverlaySteamHullModel(String overlay, + @Nullable ResourceLocation pipeOverlay, + @Nullable String emissiveOverlay) { + ResourceLocation overlayTex = new ResourceLocation(registrate.getModid(), "block/overlay/machine/" + overlay); + ResourceLocation pipeOverlayTex = pipeOverlay == null ? null : + new ResourceLocation(registrate.getModid(), "block/overlay/machine/" + pipeOverlay); + ResourceLocation emissiveOverlayTex = emissiveOverlay == null ? null : + new ResourceLocation(registrate.getModid(), "block/overlay/machine/" + emissiveOverlay); + return colorOverlaySteamHullModel(overlayTex, pipeOverlayTex, emissiveOverlayTex); } - public MachineBuilder workableCasingRenderer(ResourceLocation baseCasing, - ResourceLocation workableModel, boolean tint) { - return renderer(() -> new WorkableCasingMachineRenderer(baseCasing, workableModel, tint)); + public MachineBuilder colorOverlaySteamHullModel(ResourceLocation overlay) { + return colorOverlaySteamHullModel(overlay, null, null); } - public MachineBuilder sidedWorkableCasingRenderer(String basePath, ResourceLocation overlayModel, - boolean tint) { - return renderer(() -> new WorkableSidedCasingMachineRenderer(basePath, overlayModel, tint)); + public MachineBuilder colorOverlaySteamHullModel(ResourceLocation overlay, + @Nullable ResourceLocation pipeOverlay, + @Nullable ResourceLocation emissiveOverlay) { + modelProperty(GTMachineModelProperties.IS_PAINTED, false); + return model(createColorOverlaySteamHullMachineModel(overlay, pipeOverlay, emissiveOverlay)); } - public MachineBuilder sidedWorkableCasingRenderer(String basePath, ResourceLocation overlayModel) { - return renderer(() -> new WorkableSidedCasingMachineRenderer(basePath, overlayModel)); + public MachineBuilder workableTieredHullModel(ResourceLocation workableModel) { + modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE); + return model(createWorkableTieredHullMachineModel(workableModel)); + } + + public MachineBuilder simpleGeneratorModel(ResourceLocation workableModel) { + modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE); + return model(createSimpleGeneratorModel(workableModel)); + } + + public MachineBuilder workableSteamHullModel(boolean isHighPressure, ResourceLocation workableModel) { + modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE); + return model(createWorkableSteamHullMachineModel(isHighPressure, workableModel)); + } + + public MachineBuilder workableCasingModel(ResourceLocation baseCasing, ResourceLocation workableModel) { + modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE); + return model(createWorkableCasingMachineModel(baseCasing, workableModel)); + } + + public MachineBuilder sidedOverlayCasingModel(ResourceLocation baseCasing, + ResourceLocation workableModel) { + return model(createSidedOverlayCasingMachineModel(baseCasing, workableModel)); + } + + public MachineBuilder sidedWorkableCasingModel(ResourceLocation baseCasing, + ResourceLocation workableModel) { + modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE); + return model(createSidedWorkableCasingMachineModel(baseCasing, workableModel)); } public MachineBuilder appearanceBlock(Supplier block) { @@ -266,13 +360,17 @@ public MachineBuilder appearanceBlock(Supplier bloc return this; } - public MachineBuilder tooltips(Component... components) { - tooltips.addAll(Arrays.stream(components).filter(Objects::nonNull).toList()); + public MachineBuilder tooltips(@Nullable Component... components) { + return tooltips(Arrays.asList(components)); + } + + public MachineBuilder tooltips(List components) { + tooltips.addAll(components.stream().filter(Objects::nonNull).toList()); return this; } - public MachineBuilder conditionalTooltip(Component component, Supplier condition) { - return conditionalTooltip(component, condition.get()); + public MachineBuilder conditionalTooltip(Component component, BooleanSupplier condition) { + return conditionalTooltip(component, condition.getAsBoolean()); } public MachineBuilder conditionalTooltip(Component component, boolean condition) { @@ -286,6 +384,61 @@ public MachineBuilder abilities(PartAbility... abilities) { return this; } + public MachineBuilder modelProperty(Property property) { + return modelProperty(property, null); + } + + public > MachineBuilder modelProperty(Property property, + @Nullable T defaultValue) { + this.modelProperties.put(property, defaultValue); + return this; + } + + // KJS helpers for model property defaults + // These don't need to be copied to the multiblock builder because KJS doesn't care about the return type downgrade + + public MachineBuilder kjs$modelPropertyBool(Property property, boolean defaultValue) { + return modelProperty(property, defaultValue); + } + + public MachineBuilder kjs$modelPropertyInt(Property property, int defaultValue) { + return modelProperty(property, defaultValue); + } + + public & Comparable> MachineBuilder kjs$modelPropertyEnum(Property property, + T defaultValue) { + return modelProperty(property, defaultValue); + } + + @Tolerate + public MachineBuilder modelProperties(Property... properties) { + return this.modelProperties(List.of(properties)); + } + + @Tolerate + public MachineBuilder modelProperties(Collection> properties) { + for (Property prop : properties) { + this.modelProperties.put(prop, null); + } + return this; + } + + @Tolerate + public MachineBuilder modelProperties(Map, ? extends Comparable> properties) { + this.modelProperties.putAll(properties); + return this; + } + + public MachineBuilder removeModelProperty(Property property) { + this.modelProperties.remove(property); + return this; + } + + public MachineBuilder clearModelProperties() { + this.modelProperties.clear(); + return this; + } + public MachineBuilder recipeModifier(RecipeModifier recipeModifier) { this.recipeModifier = recipeModifier instanceof RecipeModifierList list ? list : new RecipeModifierList(recipeModifier); @@ -329,10 +482,46 @@ protected DEFINITION createDefinition() { return definition.apply(new ResourceLocation(registrate.getModid(), name)); } + @Override + public void generateAssetJsons(@Nullable AssetJsonGenerator generator) { + super.generateAssetJsons(generator); + KJSCallWrapper.generateAssetJsons(generator, this, this.value); + } + + @Override + public void generateLang(LangEventJS lang) { + super.generateLang(lang); + if (langValue() != null) { + lang.add(GTCEu.MOD_ID, value.getDescriptionId(), value.getLangValue()); + } + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + protected void setupStateDefinition(MachineDefinition definition) { + StateDefinition.Builder builder = new StateDefinition.Builder<>( + definition); + this.modelProperties.keySet().forEach(builder::add); + definition.setStateDefinition(builder.create(MachineDefinition::defaultRenderState, MachineRenderState::new)); + + MachineRenderState defaultState = definition.getStateDefinition().any(); + for (var entry : this.modelProperties.entrySet()) { + if (entry.getValue() == null) continue; + defaultState = defaultState.setValue((Property) entry.getKey(), (Comparable) entry.getValue()); + } + + definition.registerDefaultState(defaultState); + } + @HideFromJS public DEFINITION register() { + this.registrate.object(name); var definition = createDefinition(); + definition.setRotationState(rotationState); + setupStateDefinition(definition); + if (model == null && blockModel == null) { + simpleModel(new ResourceLocation(registrate.getModid(), "block/machine/template/" + name)); + } var blockBuilder = BlockBuilderWrapper.makeBlockBuilder(this, definition); if (this.langValue != null) { blockBuilder.lang(langValue); @@ -350,11 +539,11 @@ public DEFINITION register() { var item = itemBuilder.register(); var blockEntityBuilder = registrate - .blockEntity(name, (type, pos, state) -> blockEntityFactory.apply(type, pos, state).self()) + .blockEntity((type, pos, state) -> blockEntityFactory.apply(type, pos, state).self()) .onRegister(onBlockEntityRegister) .validBlock(block); - if (hasTESR) { - blockEntityBuilder = blockEntityBuilder.renderer(() -> GTRendererProvider::getOrCreate); + if (hasBER) { + blockEntityBuilder = blockEntityBuilder.renderer(() -> BlockEntityWithBERModelRenderer::new); } var blockEntity = blockEntityBuilder.register(); definition.setRecipeTypes(recipeTypes); @@ -375,15 +564,11 @@ public DEFINITION register() { definition.setOnWaiting(this.onWaiting); definition.setAfterWorking(this.afterWorking); definition.setRegressWhenWaiting(this.regressWhenWaiting); + definition.setAllowCoverOnFront(this.allowCoverOnFront); - if (renderer == null) { - renderer = () -> new MachineRenderer(new ResourceLocation(registrate.getModid(), "block/machine/" + name)); - } - if (recipeTypes != null) { - for (GTRecipeType type : recipeTypes) { - if (type != null && type.getIconSupplier() == null) { - type.setIconSupplier(definition::asStack); - } + for (GTRecipeType type : recipeTypes) { + if (type.getIconSupplier() == null) { + type.setIconSupplier(definition::asStack); } } if (appearance == null) { @@ -394,52 +579,114 @@ public DEFINITION register() { } definition.setAppearance(appearance); definition.setAllowExtendedFacing(allowExtendedFacing); - definition.setRenderer(GTCEu.isClientSide() ? renderer.get() : IRenderer.EMPTY); definition.setShape(shape); definition.setDefaultPaintingColor(paintingColor); definition.setRenderXEIPreview(renderMultiblockXEIPreview); definition.setRenderWorldPreview(renderMultiblockWorldPreview); GTRegistries.MACHINES.register(definition.getId(), definition); - return definition; - } - - static class BlockBuilderWrapper { - - @SuppressWarnings("removal") - public static < - DEFINITION extends MachineDefinition> BlockBuilder makeBlockBuilder(MachineBuilder builder, - DEFINITION definition) { - return builder.registrate.block(builder.name, properties -> { - RotationState.set(builder.rotationState); - MachineDefinition.setBuilt(definition); - var b = builder.blockFactory.apply(properties, definition); - RotationState.clear(); - MachineDefinition.clearBuilt(); - return b.self(); - }) + return value = definition; + } + + @FunctionalInterface + public interface ModelInitializer { + + void configureModel(@NotNull DataGenContext context, + @NotNull GTBlockstateProvider provider, + @NotNull MachineModelBuilder builder); + + default ModelInitializer andThen(ModelInitializer after) { + Objects.requireNonNull(after); + return (ctx, prov, builder) -> { + this.configureModel(ctx, prov, builder); + after.configureModel(ctx, prov, builder); + }; + } + + default ModelInitializer andThen(Consumer> after) { + Objects.requireNonNull(after); + return (ctx, prov, builder) -> { + this.configureModel(ctx, prov, builder); + after.accept(builder); + }; + } + + default ModelInitializer compose(ModelInitializer before) { + Objects.requireNonNull(before); + return (ctx, prov, builder) -> { + before.configureModel(ctx, prov, builder); + this.configureModel(ctx, prov, builder); + }; + } + + default ModelInitializer compose(UnaryOperator> before) { + Objects.requireNonNull(before); + return (ctx, prov, builder) -> { + this.configureModel(ctx, prov, before.apply(builder)); + }; + } + } + + // spotless:off + protected static class BlockBuilderWrapper { + + public static BlockBuilder> makeBlockBuilder(MachineBuilder builder, + DEFINITION definition) { + return builder.registrate.block(properties -> makeBlock(builder, definition, properties)) .color(() -> () -> IMachineBlock::colorTinted) .initialProperties(() -> Blocks.DISPENSER) .properties(BlockBehaviour.Properties::noLootTable) - .addLayer(() -> RenderType::cutoutMipped) - // .tag(GTToolType.WRENCH.harvestTag) - .blockstate(NonNullBiConsumer.noop()) + .addLayer(() -> RenderType::cutout) + .exBlockstate(builder.blockModel != null ? builder.blockModel : createMachineModel(builder.model)) .properties(builder.blockProp) .onRegister(b -> Arrays.stream(builder.abilities).forEach(a -> a.register(builder.tier, b))); } + + private static Block makeBlock(MachineBuilder builder, DEFINITION definition, + BlockBehaviour.Properties properties) { + MachineDefinition.setBuilt(definition); + var b = builder.blockFactory.apply(properties, definition); + MachineDefinition.clearBuilt(); + return b.self(); + } } - static class ItemBuilderWrapper { + protected static class ItemBuilderWrapper { - public static < - DEFINITION extends MachineDefinition> ItemBuilder makeItemBuilder(MachineBuilder builder, - BlockEntry block) { + public static ItemBuilder> makeItemBuilder(MachineBuilder builder, + BlockEntry block) { return builder.registrate - .item(builder.name, - properties -> builder.itemFactory.apply((IMachineBlock) block.get(), properties)) + .item(properties -> builder.itemFactory.apply((IMachineBlock) block.get(), properties)) .setData(ProviderType.LANG, NonNullBiConsumer.noop()) // do not gen any lang keys - .model(NonNullBiConsumer.noop()) + // copied from BlockBuilder#item + .model((ctx, prov) -> { + prov.withExistingParent(ctx.getName(), new ResourceLocation(builder.registrate.getModid(), + "block/machine/" + ctx.getName())); + }) .color(() -> () -> builder.itemColor::apply) .properties(builder.itemProp); } } + // spotless:on + + protected static final class KJSCallWrapper { + + public static void generateAssetJsons(@Nullable AssetJsonGenerator generator, + MachineBuilder builder, D definition) { + if (builder.model() == null && builder.blockModel() == null) return; + + final ResourceLocation id = definition.getId(); + // if generator is null, we're making the block models through GT + if (generator == null) { + // Fake a data provider for the GT model builders + var context = new DataGenContext<>(definition::getBlock, definition.getName(), id); + if (builder.blockModel() != null) { + builder.blockModel().accept(context, RUNTIME_BLOCKSTATE_PROVIDER); + } else { + GTMachineModels.createMachineModel(builder.model()).accept(context, RUNTIME_BLOCKSTATE_PROVIDER); + } + } else { + generator.itemModel(id, gen -> gen.parent(id.withPrefix("block/machine/").toString())); + } + } + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java index 303899229b6..e61b8c62192 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.api.registry.registrate; -import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.block.IMachineBlock; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.data.RotationState; @@ -14,15 +13,15 @@ import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.pattern.BlockPattern; import com.gregtechceu.gtceu.api.pattern.MultiblockShapeInfo; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifier; +import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; import com.gregtechceu.gtceu.utils.memoization.GTMemoizer; -import com.lowdragmc.lowdraglib.client.renderer.IRenderer; - import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -36,19 +35,21 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.Property; import net.minecraft.world.phys.shapes.VoxelShape; -import com.tterrag.registrate.Registrate; import com.tterrag.registrate.builders.BlockBuilder; import com.tterrag.registrate.builders.ItemBuilder; +import com.tterrag.registrate.providers.DataGenContext; +import com.tterrag.registrate.util.nullness.NonNullBiConsumer; import com.tterrag.registrate.util.nullness.NonNullConsumer; import com.tterrag.registrate.util.nullness.NonNullUnaryOperator; -import dev.latvian.mods.kubejs.client.LangEventJS; import dev.latvian.mods.rhino.util.HideFromJS; import it.unimi.dsi.fastutil.objects.Object2IntMap; import lombok.Getter; import lombok.Setter; import lombok.experimental.Accessors; +import lombok.experimental.Tolerate; import org.apache.commons.lang3.function.TriFunction; import org.jetbrains.annotations.Nullable; @@ -57,11 +58,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/18 - * @implNote MachineBuilder - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault @Accessors(chain = true, fluent = true) @@ -79,30 +75,24 @@ public class MultiblockMachineBuilder extends MachineBuilder> recoveryItems = new ArrayList<>(); @Setter - private Comparator partSorter = (a, b) -> 0; + private Function> partSorter = (c) -> (a, b) -> 0; @Setter private TriFunction partAppearance; @Getter @Setter private BiConsumer> additionalDisplay = (m, l) -> {}; - protected MultiblockMachineBuilder(Registrate registrate, String name, - Function metaMachine, - BiFunction blockFactory, - BiFunction itemFactory, - TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory) { - super(registrate, name, MultiblockMachineDefinition::createDefinition, metaMachine::apply, blockFactory, + public MultiblockMachineBuilder(GTRegistrate registrate, String name, + Function metaMachine, + BiFunction blockFactory, + BiFunction itemFactory, + TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory) { + super(registrate, name, MultiblockMachineDefinition::new, metaMachine::apply, blockFactory, itemFactory, blockEntityFactory); allowExtendedFacing(true); - } - - public static MultiblockMachineBuilder createMulti(Registrate registrate, String name, - Function metaMachine, - BiFunction blockFactory, - BiFunction itemFactory, - TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory) { - return new MultiblockMachineBuilder(registrate, name, metaMachine, blockFactory, itemFactory, - blockEntityFactory); + allowCoverOnFront(true); + // always add the formed property to multi controllers + modelProperty(GTMachineModelProperties.IS_FORMED, false); } public MultiblockMachineBuilder shapeInfo(Function shape) { @@ -127,18 +117,18 @@ public MultiblockMachineBuilder recoveryStacks(Supplier stacks) { } @Override - public MultiblockMachineBuilder definition(Function definition) { - return (MultiblockMachineBuilder) super.definition(definition); + public MultiblockMachineBuilder machine(Function metaMachine) { + return (MultiblockMachineBuilder) super.machine(metaMachine); } @Override - public MultiblockMachineBuilder machine(Function machine) { - return (MultiblockMachineBuilder) super.machine(machine); + public MultiblockMachineBuilder model(@Nullable MachineBuilder.ModelInitializer model) { + return (MultiblockMachineBuilder) super.model(model); } @Override - public MultiblockMachineBuilder renderer(@Nullable Supplier renderer) { - return (MultiblockMachineBuilder) super.renderer(renderer); + public MultiblockMachineBuilder blockModel(@Nullable NonNullBiConsumer, GTBlockstateProvider> blockModel) { + return (MultiblockMachineBuilder) super.blockModel(blockModel); } @Override @@ -158,8 +148,8 @@ public MultiblockMachineBuilder rotationState(RotationState rotationState) { } @Override - public MultiblockMachineBuilder hasTESR(boolean hasTESR) { - return (MultiblockMachineBuilder) super.hasTESR(hasTESR); + public MultiblockMachineBuilder hasBER(boolean hasBER) { + return (MultiblockMachineBuilder) super.hasBER(hasBER); } @Override @@ -212,54 +202,83 @@ public MultiblockMachineBuilder itemColor(BiFunction model) { - return (MultiblockMachineBuilder) super.modelRenderer(model); + public MultiblockMachineBuilder simpleModel(ResourceLocation model) { + return (MultiblockMachineBuilder) super.simpleModel(model); + } + + @Override + public MultiblockMachineBuilder defaultModel() { + return (MultiblockMachineBuilder) super.defaultModel(); + } + + @Override + public MultiblockMachineBuilder tieredHullModel(ResourceLocation model) { + return (MultiblockMachineBuilder) super.tieredHullModel(model); + } + + @Override + public MultiblockMachineBuilder overlayTieredHullModel(String name) { + return (MultiblockMachineBuilder) super.overlayTieredHullModel(name); } @Override - public MultiblockMachineBuilder defaultModelRenderer() { - return (MultiblockMachineBuilder) super.defaultModelRenderer(); + public MultiblockMachineBuilder overlayTieredHullModel(ResourceLocation overlayModel) { + return (MultiblockMachineBuilder) super.overlayTieredHullModel(overlayModel); } @Override - public MultiblockMachineBuilder tieredHullRenderer(ResourceLocation model) { - return (MultiblockMachineBuilder) super.tieredHullRenderer(model); + public MultiblockMachineBuilder colorOverlayTieredHullModel(String overlay) { + return (MultiblockMachineBuilder) super.colorOverlayTieredHullModel(overlay); } @Override - public MultiblockMachineBuilder overlayTieredHullRenderer(String name) { - return (MultiblockMachineBuilder) super.overlayTieredHullRenderer(name); + public MultiblockMachineBuilder colorOverlayTieredHullModel(String overlay, + @Nullable String pipeOverlay, + @Nullable String emissiveOverlay) { + return (MultiblockMachineBuilder) super.colorOverlayTieredHullModel(overlay, pipeOverlay, emissiveOverlay); } @Override - public MultiblockMachineBuilder workableTieredHullRenderer(ResourceLocation workableModel) { - return (MultiblockMachineBuilder) super.workableTieredHullRenderer(workableModel); + public MultiblockMachineBuilder colorOverlayTieredHullModel(ResourceLocation overlay) { + return (MultiblockMachineBuilder) super.colorOverlayTieredHullModel(overlay); } @Override - public MultiblockMachineBuilder workableCasingRenderer(ResourceLocation baseCasing, ResourceLocation overlayModel) { - return (MultiblockMachineBuilder) super.workableCasingRenderer(baseCasing, overlayModel); + public MultiblockMachineBuilder colorOverlayTieredHullModel(ResourceLocation overlay, + @Nullable ResourceLocation pipeOverlay, + @Nullable ResourceLocation emissiveOverlay) { + return (MultiblockMachineBuilder) super.colorOverlayTieredHullModel(overlay, pipeOverlay, emissiveOverlay); } @Override - public MultiblockMachineBuilder workableCasingRenderer(ResourceLocation baseCasing, ResourceLocation overlayModel, - boolean tint) { - return (MultiblockMachineBuilder) super.workableCasingRenderer(baseCasing, overlayModel, tint); + public MultiblockMachineBuilder workableTieredHullModel(ResourceLocation workableModel) { + return (MultiblockMachineBuilder) super.workableTieredHullModel(workableModel); } @Override - public MultiblockMachineBuilder sidedWorkableCasingRenderer(String basePath, ResourceLocation overlayModel, - boolean tint) { - return (MultiblockMachineBuilder) super.sidedWorkableCasingRenderer(basePath, overlayModel, tint); + public MultiblockMachineBuilder simpleGeneratorModel(ResourceLocation workableModel) { + return (MultiblockMachineBuilder) super.simpleGeneratorModel(workableModel); } @Override - public MultiblockMachineBuilder sidedWorkableCasingRenderer(String basePath, ResourceLocation overlayModel) { - return (MultiblockMachineBuilder) super.sidedWorkableCasingRenderer(basePath, overlayModel); + public MultiblockMachineBuilder workableCasingModel(ResourceLocation baseCasing, ResourceLocation overlayModel) { + return (MultiblockMachineBuilder) super.workableCasingModel(baseCasing, overlayModel); } @Override - public MultiblockMachineBuilder tooltipBuilder(BiConsumer> tooltipBuilder) { + public MultiblockMachineBuilder sidedOverlayCasingModel(ResourceLocation baseCasing, + ResourceLocation workableModel) { + return (MultiblockMachineBuilder) super.sidedOverlayCasingModel(baseCasing, workableModel); + } + + @Override + public MultiblockMachineBuilder sidedWorkableCasingModel(ResourceLocation baseCasing, + ResourceLocation workableModel) { + return (MultiblockMachineBuilder) super.sidedWorkableCasingModel(baseCasing, workableModel); + } + + @Override + public MultiblockMachineBuilder tooltipBuilder(@Nullable BiConsumer> tooltipBuilder) { return (MultiblockMachineBuilder) super.tooltipBuilder(tooltipBuilder); } @@ -274,34 +293,72 @@ public MultiblockMachineBuilder appearanceBlock(Supplier block) } @Override - public MultiblockMachineBuilder langValue(String langValue) { + public MultiblockMachineBuilder langValue(@Nullable String langValue) { return (MultiblockMachineBuilder) super.langValue(langValue); } @Override - public MultiblockMachineBuilder overlaySteamHullRenderer(String name) { - return (MultiblockMachineBuilder) super.overlaySteamHullRenderer(name); + public MultiblockMachineBuilder overlaySteamHullModel(String name) { + return (MultiblockMachineBuilder) super.overlaySteamHullModel(name); + } + + @Override + public MultiblockMachineBuilder overlaySteamHullModel(ResourceLocation overlayModel) { + return (MultiblockMachineBuilder) super.overlaySteamHullModel(overlayModel); + } + + @Override + public MultiblockMachineBuilder colorOverlaySteamHullModel(String overlay) { + return (MultiblockMachineBuilder) super.colorOverlaySteamHullModel(overlay); } @Override - public MultiblockMachineBuilder workableSteamHullRenderer(boolean isHighPressure, ResourceLocation workableModel) { - return (MultiblockMachineBuilder) super.workableSteamHullRenderer(isHighPressure, workableModel); + public MultiblockMachineBuilder colorOverlaySteamHullModel(String overlay, + @Nullable ResourceLocation pipeOverlay, + @Nullable String emissiveOverlay) { + return (MultiblockMachineBuilder) super.colorOverlaySteamHullModel(overlay, pipeOverlay, emissiveOverlay); } @Override - public MultiblockMachineBuilder tooltips(Component... components) { + public MultiblockMachineBuilder colorOverlaySteamHullModel(ResourceLocation overlay, + @Nullable ResourceLocation pipeOverlay, + @Nullable ResourceLocation emissiveOverlay) { + return (MultiblockMachineBuilder) super.colorOverlaySteamHullModel(overlay, pipeOverlay, emissiveOverlay); + } + + @Override + public MultiblockMachineBuilder colorOverlaySteamHullModel(ResourceLocation overlay) { + return (MultiblockMachineBuilder) super.colorOverlaySteamHullModel(overlay); + } + + @Override + public MultiblockMachineBuilder workableSteamHullModel(boolean isHighPressure, ResourceLocation workableModel) { + return (MultiblockMachineBuilder) super.workableSteamHullModel(isHighPressure, workableModel); + } + + @Override + public MultiblockMachineBuilder tooltips(@Nullable Component... components) { + return (MultiblockMachineBuilder) super.tooltips(components); + } + + @Override + public MultiblockMachineBuilder tooltips(List components) { return (MultiblockMachineBuilder) super.tooltips(components); } @Override - public MultiblockMachineBuilder conditionalTooltip(Component component, Supplier condition) { - return conditionalTooltip(component, condition.get()); + public MultiblockMachineBuilder conditionalTooltip(Component component, BooleanSupplier condition) { + return (MultiblockMachineBuilder) super.conditionalTooltip(component, condition); } @Override public MultiblockMachineBuilder conditionalTooltip(Component component, boolean condition) { - if (condition) - tooltips(component); + return (MultiblockMachineBuilder) super.conditionalTooltip(component, condition); + } + + @Tolerate + public MultiblockMachineBuilder partSorter(Comparator sorter) { + this.partSorter = $ -> sorter; return this; } @@ -310,6 +367,42 @@ public MultiblockMachineBuilder abilities(PartAbility... abilities) { return (MultiblockMachineBuilder) super.abilities(abilities); } + @Override + public MultiblockMachineBuilder modelProperty(Property property) { + return (MultiblockMachineBuilder) super.modelProperty(property); + } + + @Override + public > MultiblockMachineBuilder modelProperty(Property property, + @Nullable T defaultValue) { + return (MultiblockMachineBuilder) super.modelProperty(property, defaultValue); + } + + @Override + public MultiblockMachineBuilder modelProperties(Property... properties) { + return (MultiblockMachineBuilder) super.modelProperties(properties); + } + + @Override + public MultiblockMachineBuilder modelProperties(Collection> properties) { + return (MultiblockMachineBuilder) super.modelProperties(properties); + } + + @Override + public MultiblockMachineBuilder modelProperties(Map, ? extends Comparable> properties) { + return (MultiblockMachineBuilder) super.modelProperties(properties); + } + + @Override + public MultiblockMachineBuilder removeModelProperty(Property property) { + return (MultiblockMachineBuilder) super.removeModelProperty(property); + } + + @Override + public MultiblockMachineBuilder clearModelProperties() { + return (MultiblockMachineBuilder) super.clearModelProperties(); + } + @Override public MultiblockMachineBuilder paintingColor(int paintingColor) { return (MultiblockMachineBuilder) super.paintingColor(paintingColor); @@ -385,17 +478,14 @@ public MultiblockMachineBuilder allowExtendedFacing(boolean allowExtendedFacing) } @Override - public void generateLang(LangEventJS lang) { - super.generateLang(lang); - if (langValue() != null) { - lang.add(GTCEu.MOD_ID, value.getDescriptionId(), value.getLangValue()); - } + public MultiblockMachineBuilder allowCoverOnFront(boolean allowCoverOnFront) { + return (MultiblockMachineBuilder) super.allowCoverOnFront(allowCoverOnFront); } @Override @HideFromJS public MultiblockMachineDefinition register() { - var definition = (MultiblockMachineDefinition) super.register(); + var definition = super.register(); definition.setGenerator(generator); if (pattern == null) { throw new IllegalStateException("missing pattern while creating multiblock " + name); @@ -408,7 +498,7 @@ public MultiblockMachineDefinition register() { definition.setRecoveryItems( () -> recoveryItems.stream().map(Supplier::get).flatMap(Arrays::stream).toArray(ItemStack[]::new)); } - definition.setPartSorter(partSorter); + definition.setPartSorter(GTMemoizer.memoizeFunctionWeakIdent(partSorter)); if (partAppearance == null) { partAppearance = (controller, part, side) -> definition.getAppearance().get(); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/SoundEntryBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/SoundEntryBuilder.java index 7a7f82f4bb8..26cb40fb445 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/SoundEntryBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/SoundEntryBuilder.java @@ -24,11 +24,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/3 - * @implNote SoundEntryBuilder - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class SoundEntryBuilder { diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/forge/GTFluidBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/forge/GTFluidBuilder.java index 3de95d64afd..d9a6c810e70 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/forge/GTFluidBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/forge/GTFluidBuilder.java @@ -13,7 +13,6 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvents; -import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; import net.minecraft.world.item.BucketItem; import net.minecraft.world.item.Items; @@ -57,11 +56,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/14 - * @implNote GTFluidBuilderImpl - */ @Accessors(chain = true, fluent = true) @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault @@ -239,7 +233,6 @@ public ItemBuilder> bucket() { return getOwner().item(this, bucketName, p -> new GTBucketItem(this.source, p, this.material, this.langKey)) .properties(p -> p.craftRemainder(Items.BUCKET).stacksTo(1)) - .tag(ItemTags.create(new ResourceLocation("ae2", "p2p_attunements/fluid_p2p_tunnel"))) .color(() -> () -> GTBucketItem::color) .setData(ProviderType.LANG, NonNullBiConsumer.noop()) .model(NonNullBiConsumer.noop()) diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/package-info.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/package-info.java new file mode 100644 index 00000000000..fc849e250f0 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package com.gregtechceu.gtceu.api.registry.registrate; + +import net.minecraft.MethodsReturnNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/provider/GTBlockstateProvider.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/provider/GTBlockstateProvider.java new file mode 100644 index 00000000000..40bf8542286 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/provider/GTBlockstateProvider.java @@ -0,0 +1,173 @@ +package com.gregtechceu.gtceu.api.registry.registrate.provider; + +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; +import com.gregtechceu.gtceu.api.data.RotationState; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.client.util.ExtendedBlockModelRotation; + +import net.minecraft.core.Direction; +import net.minecraft.data.CachedOutput; +import net.minecraft.data.PackOutput; +import net.minecraft.data.models.blockstates.*; +import net.minecraft.server.packs.PackType; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.client.model.generators.IGeneratedBlockState; +import net.minecraftforge.common.data.ExistingFileHelper; +import net.minecraftforge.common.data.ExistingFileHelper.ResourceType; +import net.minecraftforge.data.event.GatherDataEvent; + +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; +import com.tterrag.registrate.AbstractRegistrate; +import com.tterrag.registrate.providers.ProviderType; +import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.RegistrateProvider; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.CompletableFuture; + +public class GTBlockstateProvider extends RegistrateBlockstateProvider { + + public static final String Z_ROT_PROPERTY_NAME = "gtceu:z"; + private static final VariantProperty X_ROT = VariantProperties.X_ROT; + private static final VariantProperty Y_ROT = VariantProperties.Y_ROT; + private static final VariantProperty Z_ROT = new VariantProperty<>(Z_ROT_PROPERTY_NAME, + r -> new JsonPrimitive(r.ordinal() * 90)); + + public static final ResourceType TEXTURE = new ResourceType(PackType.CLIENT_RESOURCES, ".png", "textures"); + public static final ResourceType MODEL = new ResourceType(PackType.CLIENT_RESOURCES, ".json", "models"); + + public GTBlockstateProvider(AbstractRegistrate parent, GatherDataEvent event, + Map, RegistrateProvider> existing) { + this(parent, event.getGenerator().getPackOutput(), event.getExistingFileHelper()); + // replace the default blockstate provider with this one + existing.put(ProviderType.BLOCKSTATE, this); + } + + public GTBlockstateProvider(AbstractRegistrate parent, PackOutput packOutput, ExistingFileHelper exFileHelper) { + super(parent, packOutput, exFileHelper); + } + + private static GTBlockstateProvider CURRENT_PROVIDER = null; + + public static GTBlockstateProvider getCurrentProvider() { + return CURRENT_PROVIDER; + } + + @Override + public @NotNull CompletableFuture run(CachedOutput cache) { + CURRENT_PROVIDER = this; + var value = super.run(cache); + + CURRENT_PROVIDER = null; + return value; + } + + public ExistingFileHelper getExistingFileHelper() { + return this.models().existingFileHelper; + } + + public MultiVariantGenerator multiVariantGenerator(Block block) { + var multiVariant = MultiVariantGenerator.multiVariant(block); + registeredBlocks.put(block, new BlockStateGeneratorWrapper(multiVariant)); + return multiVariant; + } + + public MultiVariantGenerator multiVariantGenerator(Block block, Variant baseVariant) { + var multiVariant = MultiVariantGenerator.multiVariant(block, baseVariant); + registeredBlocks.put(block, new BlockStateGeneratorWrapper(multiVariant)); + return multiVariant; + } + + public MultiPartGenerator multiPartGenerator(Block block) { + var multiPart = MultiPartGenerator.multiPart(block); + registeredBlocks.put(block, new BlockStateGeneratorWrapper(multiPart)); + return multiPart; + } + + public static @Nullable PropertyDispatch createFacingDispatch(MachineDefinition definition) { + return createFacingDispatch(definition.getRotationState(), definition.isAllowExtendedFacing()); + } + + public static @Nullable PropertyDispatch createFacingDispatch(RotationState rotationState, + boolean allowExtendedFacing) { + // doesn't have a rotation property. + if (rotationState == RotationState.NONE) return null; + + PropertyDispatch dispatch; + if (!allowExtendedFacing) { + var disp = PropertyDispatch.property(rotationState.property); + + dispatch = disp.generate((front) -> { + var orientation = ExtendedBlockModelRotation.get(front, Direction.NORTH); + return applyOrientation(Variant.variant(), orientation); + }); + } else { + var disp = PropertyDispatch.properties(rotationState.property, GTBlockStateProperties.UPWARDS_FACING); + + dispatch = disp.generate((front, up) -> { + var orientation = ExtendedBlockModelRotation.get(front, up); + return applyOrientation(Variant.variant(), orientation); + }); + } + return dispatch; + } + + public static Variant applyOrientation(Variant variant, ExtendedBlockModelRotation orientation) { + return applyRotation(variant, orientation.getAngleX(), orientation.getAngleY(), orientation.getAngleZ()); + } + + public static Variant applyRotation(Variant variant, int angleX, int angleY, int angleZ) { + angleX = normalizeAngle(angleX); + angleY = normalizeAngle(angleY); + angleZ = normalizeAngle(angleZ); + + if (angleX != 0) variant = variant.with(X_ROT, rotationByAngle(angleX)); + if (angleY != 0) variant = variant.with(Y_ROT, rotationByAngle(angleY)); + if (angleZ != 0) variant = variant.with(Z_ROT, rotationByAngle(angleZ)); + return variant; + } + + private static int normalizeAngle(int angle) { + return angle - (angle / 360) * 360; + } + + private static VariantProperties.Rotation rotationByAngle(int angle) { + return switch (angle) { + case 0 -> VariantProperties.Rotation.R0; + case 90 -> VariantProperties.Rotation.R90; + case 180 -> VariantProperties.Rotation.R180; + case 270 -> VariantProperties.Rotation.R270; + default -> throw new IllegalArgumentException("Invalid angle: " + angle); + }; + } + + protected Optional getExistingBlockStateGenerator(Block block) { + return Optional.ofNullable(registeredBlocks.get(block)) + .filter(g -> g instanceof BlockStateGeneratorWrapper) + .map(g -> (BlockStateGeneratorWrapper) g); + } + + public Optional getExistingMultiVariantGenerator(Block block) { + return getExistingBlockStateGenerator(block) + .filter(g -> g.generator() instanceof MultiVariantGenerator) + .map(g -> (MultiVariantGenerator) g.generator()); + } + + public Optional getExistingMultipartGenerator(Block block) { + return getExistingBlockStateGenerator(block) + .filter(g -> g.generator() instanceof MultiPartGenerator) + .map(g -> (MultiPartGenerator) g.generator()); + } + + public record BlockStateGeneratorWrapper(BlockStateGenerator generator) implements IGeneratedBlockState { + + @Override + public JsonObject toJson() { + return generator.get().getAsJsonObject(); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/sound/AutoReleasedSound.java b/src/main/java/com/gregtechceu/gtceu/api/sound/AutoReleasedSound.java index e736953be24..04df39bdd6e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/sound/AutoReleasedSound.java +++ b/src/main/java/com/gregtechceu/gtceu/api/sound/AutoReleasedSound.java @@ -8,11 +8,6 @@ import java.util.function.BooleanSupplier; -/** - * @author KilaBash - * @date 2023/3/22 - * @implNote AutoReleasedSound - */ @OnlyIn(Dist.CLIENT) public class AutoReleasedSound extends AbstractTickableSoundInstance { diff --git a/src/main/java/com/gregtechceu/gtceu/api/sound/ConfiguredSoundEvent.java b/src/main/java/com/gregtechceu/gtceu/api/sound/ConfiguredSoundEvent.java index 3fd3f41febe..f317f20bc82 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/sound/ConfiguredSoundEvent.java +++ b/src/main/java/com/gregtechceu/gtceu/api/sound/ConfiguredSoundEvent.java @@ -4,9 +4,4 @@ import java.util.function.Supplier; -/** - * @author KilaBash - * @date 2023/3/3 - * @implNote ConfiguredSoundEvent - */ public record ConfiguredSoundEvent(Supplier event, float volume, float pitch) {} diff --git a/src/main/java/com/gregtechceu/gtceu/api/sound/CustomSoundEntry.java b/src/main/java/com/gregtechceu/gtceu/api/sound/CustomSoundEntry.java index 4ba6dd6abb9..a20251fe312 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/sound/CustomSoundEntry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/sound/CustomSoundEntry.java @@ -12,11 +12,6 @@ import java.util.List; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/3/3 - * @implNote CustomSoundEntry - */ public class CustomSoundEntry extends SoundEntry { protected List variants; diff --git a/src/main/java/com/gregtechceu/gtceu/api/sound/ExistingSoundEntry.java b/src/main/java/com/gregtechceu/gtceu/api/sound/ExistingSoundEntry.java index 11f57621b5d..922dfbf10d9 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/sound/ExistingSoundEntry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/sound/ExistingSoundEntry.java @@ -11,11 +11,6 @@ import java.util.List; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/3/3 - * @implNote CustomSoundEntry - */ public class ExistingSoundEntry extends SoundEntry { protected List variants; diff --git a/src/main/java/com/gregtechceu/gtceu/api/sound/SoundEntry.java b/src/main/java/com/gregtechceu/gtceu/api/sound/SoundEntry.java index 0a0bf968a18..31a1dcd0fda 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/sound/SoundEntry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/sound/SoundEntry.java @@ -18,11 +18,6 @@ import java.util.function.BooleanSupplier; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/3/3 - * @implNote SoundEntry, copied from create - */ public abstract class SoundEntry { protected ResourceLocation id; diff --git a/src/main/java/com/gregtechceu/gtceu/api/sound/WrappedSoundEntry.java b/src/main/java/com/gregtechceu/gtceu/api/sound/WrappedSoundEntry.java index aec7f708c9a..5a9ac641761 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/sound/WrappedSoundEntry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/sound/WrappedSoundEntry.java @@ -13,11 +13,6 @@ import java.util.List; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/3/3 - * @implNote WrappedSoundEntry - */ public class WrappedSoundEntry extends SoundEntry { private final List wrappedEvents; diff --git a/src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/CustomFluidTank.java b/src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/CustomFluidTank.java index 6077b044a0a..44e92edcce6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/CustomFluidTank.java +++ b/src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/CustomFluidTank.java @@ -9,6 +9,7 @@ import lombok.Getter; import lombok.Setter; +import org.jetbrains.annotations.NotNull; import java.util.function.Predicate; @@ -17,7 +18,7 @@ public class CustomFluidTank extends FluidTank @Getter @Setter - protected Runnable onContentsChanged = () -> {}; + protected @NotNull Runnable onContentsChanged = () -> {}; public CustomFluidTank(int capacity) { super(capacity, e -> true); diff --git a/src/main/java/com/gregtechceu/gtceu/api/transfer/item/CustomItemStackHandler.java b/src/main/java/com/gregtechceu/gtceu/api/transfer/item/CustomItemStackHandler.java index dcd3b448626..2bf028384c8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/transfer/item/CustomItemStackHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/transfer/item/CustomItemStackHandler.java @@ -19,7 +19,7 @@ public class CustomItemStackHandler extends ItemStackHandler @Getter @Setter - protected Runnable onContentsChanged = () -> {}; + protected @NotNull Runnable onContentsChanged = () -> {}; @Getter @Setter protected Predicate filter = stack -> true; diff --git a/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java b/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java index 8ce2dd6d655..75b8029e9cb 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java @@ -8,6 +8,8 @@ import com.gregtechceu.gtceu.api.item.IComponentItem; import com.gregtechceu.gtceu.api.item.IGTTool; import com.gregtechceu.gtceu.api.item.LampBlockItem; +import com.gregtechceu.gtceu.client.model.item.FacadeUnbakedModel; +import com.gregtechceu.gtceu.client.model.machine.MachineModelLoader; import com.gregtechceu.gtceu.client.particle.HazardParticle; import com.gregtechceu.gtceu.client.particle.MufflerParticle; import com.gregtechceu.gtceu.client.renderer.entity.GTBoatRenderer; @@ -15,6 +17,9 @@ import com.gregtechceu.gtceu.client.renderer.item.decorator.GTComponentItemDecorator; import com.gregtechceu.gtceu.client.renderer.item.decorator.GTLampItemOverlayRenderer; import com.gregtechceu.gtceu.client.renderer.item.decorator.GTToolBarRenderer; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderManager; +import com.gregtechceu.gtceu.client.renderer.machine.impl.*; +import com.gregtechceu.gtceu.client.renderer.machine.impl.BoilerMultiPartRender; import com.gregtechceu.gtceu.common.CommonProxy; import com.gregtechceu.gtceu.common.data.GTBlockEntities; import com.gregtechceu.gtceu.common.data.GTEntityTypes; @@ -29,6 +34,7 @@ import com.gregtechceu.gtceu.integration.map.layer.builtin.FluidRenderLayer; import com.gregtechceu.gtceu.integration.map.layer.builtin.OreRenderLayer; import com.gregtechceu.gtceu.utils.input.KeyBind; +import com.gregtechceu.gtceu.utils.input.SyncedKeyMapping; import net.minecraft.client.model.BoatModel; import net.minecraft.client.model.ChestBoatModel; @@ -46,11 +52,6 @@ import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; -/** - * @author KilaBash - * @date 2023/7/30 - * @implNote ClientProxy - */ public class ClientProxy extends CommonProxy { public static final BiMap CLIENT_ORE_VEINS = HashBiMap.create(); @@ -68,6 +69,7 @@ public static void init() { Layers.registerLayer(OreRenderLayer::new, "ore_veins"); Layers.registerLayer(FluidRenderLayer::new, "bedrock_fluids"); } + initializeDynamicRenders(); } @SubscribeEvent @@ -107,6 +109,7 @@ public void onRegisterItemDecorations(RegisterItemDecorationsEvent event) { @SubscribeEvent public void registerKeyBindings(RegisterKeyMappingsEvent event) { KeyBind.onRegisterKeyBinds(event); + SyncedKeyMapping.onRegisterKeyBinds(event); } @SubscribeEvent @@ -128,4 +131,22 @@ public void onClientSetup(FMLClientSetupEvent event) { FTBChunksPlugin.addEventListeners(); } } + + public static void initializeDynamicRenders() { + DynamicRenderManager.register(GTCEu.id("quantum_tank_fluid"), QuantumTankFluidRender.TYPE); + DynamicRenderManager.register(GTCEu.id("quantum_chest_item"), QuantumChestItemRender.TYPE); + + DynamicRenderManager.register(GTCEu.id("fusion_ring"), FusionRingRender.TYPE); + DynamicRenderManager.register(GTCEu.id("boiler_multi_parts"), BoilerMultiPartRender.TYPE); + + DynamicRenderManager.register(GTCEu.id("fluid_area"), FluidAreaRender.TYPE); + + DynamicRenderManager.register(GTCEu.id("central_monitor"), CentralMonitorRender.TYPE); + } + + @SubscribeEvent + public void onRegisterModelLoaders(ModelEvent.RegisterGeometryLoaders event) { + event.register(MachineModelLoader.ID.getPath(), MachineModelLoader.INSTANCE); + event.register("facade", FacadeUnbakedModel.Loader.INSTANCE); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/EnvironmentalHazardClientHandler.java b/src/main/java/com/gregtechceu/gtceu/client/EnvironmentalHazardClientHandler.java index 27e985f52ed..e5cf094b3c3 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/EnvironmentalHazardClientHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/client/EnvironmentalHazardClientHandler.java @@ -3,7 +3,7 @@ import com.gregtechceu.gtceu.common.capability.EnvironmentalHazardSavedData; import com.gregtechceu.gtceu.common.particle.HazardParticleOptions; import com.gregtechceu.gtceu.config.ConfigHolder; -import com.gregtechceu.gtceu.core.mixins.ClientLevelAccessor; +import com.gregtechceu.gtceu.core.mixins.client.ClientLevelAccessor; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/gregtechceu/gtceu/client/TooltipsHandler.java b/src/main/java/com/gregtechceu/gtceu/client/TooltipsHandler.java index afd872b4c5e..4e0931d5585 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/TooltipsHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/client/TooltipsHandler.java @@ -16,7 +16,7 @@ import com.gregtechceu.gtceu.utils.GTUtil; import net.minecraft.ChatFormatting; -import net.minecraft.client.resources.language.I18n; +import net.minecraft.locale.Language; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.tags.FluidTags; @@ -34,11 +34,6 @@ import java.util.List; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/3/11 - * @implNote TooltipsHandler - */ @OnlyIn(Dist.CLIENT) public class TooltipsHandler { @@ -67,7 +62,7 @@ public static void appendTooltips(ItemStack stack, TooltipFlag flag, List multiLang = LangHandler.getMultiLang(tooltipKey); diff --git a/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java b/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java index ca0cc1da457..c4a3043d093 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java @@ -2,28 +2,48 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.cosmetics.CapeRegistry; +import com.gregtechceu.gtceu.api.item.tool.ToolHelper; +import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.client.EnvironmentalHazardClientHandler; import com.gregtechceu.gtceu.client.TooltipsHandler; import com.gregtechceu.gtceu.client.renderer.BlockHighlightRenderer; import com.gregtechceu.gtceu.client.renderer.MultiblockInWorldPreviewRenderer; +import com.gregtechceu.gtceu.client.renderer.cover.FacadeCoverRenderer; import com.gregtechceu.gtceu.client.util.TooltipHelper; import com.gregtechceu.gtceu.common.commands.GTClientCommands; +import com.gregtechceu.gtceu.core.mixins.client.AbstractClientPlayerAccessor; +import com.gregtechceu.gtceu.core.mixins.client.PlayerInfoAccessor; import com.gregtechceu.gtceu.integration.map.ClientCacheManager; +import net.minecraft.ChatFormatting; +import net.minecraft.client.Minecraft; +import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.HitResult; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.event.*; +import net.minecraftforge.client.gui.overlay.ForgeGui; import net.minecraftforge.event.TickEvent; import net.minecraftforge.event.entity.player.ItemTooltipEvent; +import net.minecraftforge.event.level.LevelEvent; import net.minecraftforge.event.server.ServerStoppedEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; -/** - * @author KilaBash - * @date 2022/8/27 - * @implNote ForgeCommonEventListener - */ +import com.mojang.authlib.minecraft.MinecraftProfileTexture; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import org.apache.commons.lang3.mutable.MutableInt; + +import java.util.List; +import java.util.Map; +import java.util.UUID; + @Mod.EventBusSubscriber(modid = GTCEu.MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE, value = Dist.CLIENT) @OnlyIn(Dist.CLIENT) public class ForgeClientEventListener { @@ -38,6 +58,30 @@ public static void onRenderLevelStageEvent(RenderLevelStageEvent event) { } } + private static final Map DEFAULT_CAPES = new Object2ObjectOpenHashMap<>(); + + @SubscribeEvent + public static void onPlayerRender(RenderPlayerEvent.Pre event) { + Player player = event.getEntity(); + AbstractClientPlayerAccessor clientPlayer = (AbstractClientPlayerAccessor) player; + if (clientPlayer.gtceu$getPlayerInfo() != null) { + PlayerInfoAccessor playerInfo = ((PlayerInfoAccessor) clientPlayer.gtceu$getPlayerInfo()); + Map playerTextures = playerInfo.getTextureLocations(); + + UUID uuid = player.getUUID(); + ResourceLocation defaultPlayerCape; + if (!DEFAULT_CAPES.containsKey(uuid)) { + defaultPlayerCape = playerTextures.get(MinecraftProfileTexture.Type.CAPE); + DEFAULT_CAPES.put(uuid, defaultPlayerCape); + } else { + defaultPlayerCape = DEFAULT_CAPES.get(uuid); + } + + ResourceLocation cape = CapeRegistry.getPlayerCapeTexture(uuid); + playerTextures.put(MinecraftProfileTexture.Type.CAPE, cape == null ? defaultPlayerCape : cape); + } + } + @SubscribeEvent public static void onBlockHighlightEvent(RenderHighlightEvent.Block event) { BlockHighlightRenderer.renderBlockHighlight(event.getPoseStack(), event.getCamera(), event.getTarget(), @@ -59,6 +103,62 @@ public static void onClientTickEvent(TickEvent.ClientTickEvent event) { } } + @SubscribeEvent + public static void onLevelUnloadEvent(LevelEvent.Unload event) { + FacadeCoverRenderer.clearItemModelCache(); + } + + private static final String BLOCK_INFO_LINE_START = ChatFormatting.UNDERLINE + "Targeted Block: "; + + @SubscribeEvent + public static void onDebugTextEvent(CustomizeGuiOverlayEvent.DebugText event) { + Minecraft mc = Minecraft.getInstance(); + // don't render machine state information if F3 screen isn't up or reduced debug info is enabled + if (!mc.options.renderDebug || mc.showOnlyReducedInfo()) return; + Entity cameraEntity = mc.getCameraEntity(); + if (cameraEntity == null || mc.level == null) return; + + BlockHitResult hit = ToolHelper.entityPickBlock(cameraEntity, ForgeGui.rayTraceDistance, 0, false); + if (hit.getType() == HitResult.Type.MISS) return; + BlockPos hitPos = hit.getBlockPos(); + BlockEntity blockEntity = mc.level.getBlockEntity(hitPos); + // only try to find the correct location if we have a valid machine + if (!(blockEntity instanceof IMachineBlockEntity machineBE)) return; + + final List rightLines = event.getRight(); + int lineCount = rightLines.size(); + + // look for the empty line after the "Targeted Block" section + // and default to the end if there isn't anything after it + int targetedBlockLine = -1; + int afterBlockSection = lineCount - 1; + for (int i = 0; i < lineCount; i++) { + String line = rightLines.get(i); + // this is formatted like this so we don't need to check targetedBlockLine == -1 twice + if (targetedBlockLine == -1) { + if (line.startsWith(BLOCK_INFO_LINE_START)) { + targetedBlockLine = i; + } + } else { + if (line.isBlank()) { + afterBlockSection = i; + // we can break here because targetedBlockLine must be not -1 for this branch to be reached + break; + } + } + } + if (targetedBlockLine == -1) { + // couldn't find the start of the targeted block info, exit + return; + } + + // actually add the text lines + MutableInt index = new MutableInt(afterBlockSection); + + rightLines.add(index.getAndIncrement(), ""); + machineBE.getMetaMachine().addDebugOverlayText(line -> rightLines.add(index.getAndIncrement(), line)); + } + @SubscribeEvent public static void onClientDisconnect(ClientPlayerNetworkEvent.LoggingOut event) { ClientCacheManager.allowReinit(); diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/BaseBakedModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/BaseBakedModel.java new file mode 100644 index 00000000000..f91a52c0b2a --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/BaseBakedModel.java @@ -0,0 +1,50 @@ +package com.gregtechceu.gtceu.client.model; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.block.model.ItemOverrides; +import net.minecraft.client.renderer.texture.MissingTextureAtlasSprite; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.world.inventory.InventoryMenu; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.IDynamicBakedModel; + +import org.jetbrains.annotations.NotNull; + +public abstract class BaseBakedModel implements IDynamicBakedModel { + + public BaseBakedModel() {} + + @Override + public boolean useAmbientOcclusion() { + return true; + } + + @Override + public boolean isGui3d() { + return true; + } + + @Override + public boolean usesBlockLight() { + return true; + } + + @Override + public boolean isCustomRenderer() { + return false; + } + + @Override + @OnlyIn(Dist.CLIENT) + public @NotNull ItemOverrides getOverrides() { + return ItemOverrides.EMPTY; + } + + @Override + @OnlyIn(Dist.CLIENT) + public @NotNull TextureAtlasSprite getParticleIcon() { + return Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS) + .apply(MissingTextureAtlasSprite.getLocation()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/BasicUnbakedModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/BasicUnbakedModel.java new file mode 100644 index 00000000000..af22e210a5d --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/BasicUnbakedModel.java @@ -0,0 +1,34 @@ +package com.gregtechceu.gtceu.client.model; + +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.*; +import net.minecraft.resources.ResourceLocation; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Collection; +import java.util.Collections; +import java.util.function.Function; + +public class BasicUnbakedModel implements UnbakedModel { + + @Override + public @NotNull Collection getDependencies() { + return Collections.emptyList(); + } + + @Override + public void resolveParents(@NotNull Function function) { + for (ResourceLocation dependency : getDependencies()) { + function.apply(dependency).resolveParents(function); + } + } + + @Override + public @Nullable BakedModel bake(@NotNull ModelBaker baker, + @NotNull Function spriteGetter, + @NotNull ModelState state, @NotNull ResourceLocation location) { + return null; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/IBlockEntityRendererBakedModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/IBlockEntityRendererBakedModel.java new file mode 100644 index 00000000000..6a59d976574 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/IBlockEntityRendererBakedModel.java @@ -0,0 +1,42 @@ +package com.gregtechceu.gtceu.client.model; + +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; +import net.minecraft.core.BlockPos; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.client.model.IDynamicBakedModel; + +import com.mojang.blaze3d.vertex.PoseStack; +import org.jetbrains.annotations.NotNull; + +public interface IBlockEntityRendererBakedModel + extends IDynamicBakedModel, BlockEntityRenderer { + + BlockEntityType getBlockEntityType(); + + void render(@NotNull T blockEntity, float partialTick, + @NotNull PoseStack poseStack, @NotNull MultiBufferSource buffer, + int packedLight, int packedOverlay); + + default void renderByItem(ItemStack stack, ItemDisplayContext displayContext, + PoseStack poseStack, MultiBufferSource buffer, int packedLight, int packedOverlay) {} + + default boolean shouldRender(T blockEntity, @NotNull Vec3 cameraPos) { + return Vec3.atCenterOf(blockEntity.getBlockPos()).closerThan(cameraPos, this.getViewDistance()); + } + + default AABB getRenderBoundingBox(T blockEntity) { + BlockPos pos = blockEntity.getBlockPos(); + return new AABB(pos.offset(-1, 0, -1), pos.offset(2, 2, 2)); + } + + @Override + default boolean isCustomRenderer() { + return true; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/ItemBakedModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/ItemBakedModel.java index 545b3920df4..254706cf370 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/ItemBakedModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/ItemBakedModel.java @@ -10,11 +10,6 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote ItemBakedModel - */ @OnlyIn(Dist.CLIENT) public interface ItemBakedModel extends BakedModel { diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/ModelUtil.java b/src/main/java/com/gregtechceu/gtceu/client/model/ModelUtil.java deleted file mode 100644 index 47c11ec0c0b..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/model/ModelUtil.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gregtechceu.gtceu.client.model; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.util.RandomSource; -import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.model.data.ModelData; - -import java.util.List; - -/** - * @author KilaBash - * @date 2023/3/27 - * @implNote ModelUtil - */ -@OnlyIn(Dist.CLIENT) -public class ModelUtil { - - public static List getBakedModelQuads(BakedModel model, BlockAndTintGetter level, BlockPos pos, - BlockState state, Direction side, RandomSource rand) { - return model.getQuads(state, side, rand, model.getModelData(level, pos, state, ModelData.EMPTY), null); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/PipeModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/PipeModel.java index 986711b5966..efdff6bb28b 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/PipeModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/PipeModel.java @@ -2,21 +2,25 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.blockentity.PipeBlockEntity; +import com.gregtechceu.gtceu.client.util.ModelUtils; +import com.gregtechceu.gtceu.common.data.models.GTModels; import com.gregtechceu.gtceu.utils.GTUtil; import com.gregtechceu.gtceu.utils.memoization.GTMemoizer; import com.gregtechceu.gtceu.utils.memoization.MemoizedSupplier; import com.lowdragmc.lowdraglib.client.bakedpipeline.FaceQuad; -import com.lowdragmc.lowdraglib.client.model.ModelFactory; import com.lowdragmc.lowdraglib.client.renderer.IItemRendererProvider; +import net.minecraft.Util; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.Direction; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.AABB; @@ -38,11 +42,6 @@ import java.util.function.Function; import java.util.function.Supplier; -/** - * @author KilaBash - * @date 2023/3/1 - * @implNote PipeModel - */ public class PipeModel { public static final ResourceLocation PIPE_BLOCKED_OVERLAY = GTCEu.id("block/pipe/blocked/pipe_blocked"); @@ -60,12 +59,10 @@ public class PipeModel { public static final ResourceLocation PIPE_BLOCKED_OVERLAY_DL = GTCEu.id("block/pipe/blocked/pipe_blocked_dl"); public static final ResourceLocation PIPE_BLOCKED_OVERLAY_DR = GTCEu.id("block/pipe/blocked/pipe_blocked_dr"); public static final ResourceLocation PIPE_BLOCKED_OVERLAY_LR = GTCEu.id("block/pipe/blocked/pipe_blocked_lr"); - private static final EnumMap> FACE_BORDER_MAP = new EnumMap<>( - Direction.class); private static final Int2ObjectMap RESTRICTOR_MAP = new Int2ObjectOpenHashMap<>(); private static boolean isRestrictorInitialized; - public static void initializeRestrictor(Function atlas) { + protected static void initializeRestrictor(Function atlas) { addRestrictor(atlas.apply(PIPE_BLOCKED_OVERLAY_UP), Border.TOP); addRestrictor(atlas.apply(PIPE_BLOCKED_OVERLAY_DOWN), Border.BOTTOM); addRestrictor(atlas.apply(PIPE_BLOCKED_OVERLAY_UD), Border.TOP, Border.BOTTOM); @@ -83,20 +80,18 @@ public static void initializeRestrictor(Function> FACE_BORDER_MAP = Util.make(() -> { + EnumMap> map = new EnumMap<>(Direction.class); + + map.put(Direction.DOWN, borderMap(Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)); + map.put(Direction.UP, borderMap(Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)); + map.put(Direction.NORTH, borderMap(Direction.DOWN, Direction.UP, Direction.WEST, Direction.EAST)); + map.put(Direction.SOUTH, borderMap(Direction.DOWN, Direction.UP, Direction.WEST, Direction.EAST)); + map.put(Direction.WEST, borderMap(Direction.DOWN, Direction.UP, Direction.NORTH, Direction.SOUTH)); + map.put(Direction.EAST, borderMap(Direction.DOWN, Direction.UP, Direction.NORTH, Direction.SOUTH)); + + return map; + }); public final static int ITEM_CONNECTIONS = 0b001100; public final float thickness; @@ -105,17 +100,20 @@ public static void initializeRestrictor(Function sideTexture, endTexture; @Nullable - public MemoizedSupplier<@Nullable ResourceLocation> secondarySideTexture, secondaryEndTexture; + public MemoizedSupplier secondarySideTexture, secondaryEndTexture; @Setter - public ResourceLocation sideOverlayTexture, endOverlayTexture; + public @Nullable ResourceLocation sideOverlayTexture, endOverlayTexture; @OnlyIn(Dist.CLIENT) - TextureAtlasSprite sideSprite, endSprite, secondarySideSprite, secondaryEndSprite, sideOverlaySprite, - endOverlaySprite; + private @Nullable TextureAtlasSprite sideSprite, endSprite; + @OnlyIn(Dist.CLIENT) + private @Nullable TextureAtlasSprite secondarySideSprite, secondaryEndSprite; + @OnlyIn(Dist.CLIENT) + private @Nullable TextureAtlasSprite sideOverlaySprite, endOverlaySprite; public PipeModel(float thickness, Supplier sideTexture, Supplier endTexture, - @Nullable Supplier<@Nullable ResourceLocation> secondarySideTexture, - @Nullable Supplier<@Nullable ResourceLocation> secondaryEndTexture) { + @Nullable Supplier secondarySideTexture, + @Nullable Supplier secondaryEndTexture) { this.sideTexture = GTMemoizer.memoize(sideTexture); this.endTexture = GTMemoizer.memoize(endTexture); this.secondarySideTexture = secondarySideTexture != null ? GTMemoizer.memoize(secondarySideTexture) : @@ -136,6 +134,32 @@ public PipeModel(float thickness, Supplier sideTexture, Suppli normal.getY() == 0 ? max : normal.getY() > 0 ? 1 : min, normal.getZ() == 0 ? max : normal.getZ() > 0 ? 1 : min)); } + + if (!isRestrictorInitialized) { + ModelUtils.registerAtlasStitchedEventListener(false, InventoryMenu.BLOCK_ATLAS, event -> { + initializeRestrictor(event.getAtlas()::getSprite); + }); + + isRestrictorInitialized = true; + } + ModelUtils.registerAtlasStitchedEventListener(false, InventoryMenu.BLOCK_ATLAS, event -> { + TextureAtlas atlas = event.getAtlas(); + + sideSprite = atlas.getSprite(sideTexture.get()); + endSprite = atlas.getSprite(endTexture.get()); + if (secondarySideTexture != null) { + secondarySideSprite = atlas.getSprite(secondarySideTexture.get()); + } + if (secondaryEndTexture != null) { + secondaryEndSprite = atlas.getSprite(secondaryEndTexture.get()); + } + if (sideOverlayTexture != null) { + sideOverlaySprite = atlas.getSprite(sideOverlayTexture); + } + if (endOverlayTexture != null) { + endOverlaySprite = atlas.getSprite(endOverlayTexture); + } + }); } public VoxelShape getShapes(int connections) { @@ -151,32 +175,9 @@ public VoxelShape getShapes(int connections) { @OnlyIn(Dist.CLIENT) public List bakeQuads(@Nullable Direction side, int connections, int blockedConnections) { - if (!isRestrictorInitialized) { - initializeRestrictor(ModelFactory::getBlockSprite); - isRestrictorInitialized = true; - } - if (sideSprite == null) { - sideSprite = ModelFactory.getBlockSprite(sideTexture.get()); - } - if (endSprite == null) { - endSprite = ModelFactory.getBlockSprite(endTexture.get()); - } - if (secondarySideTexture != null && secondarySideTexture.get() != null && secondarySideSprite == null) { - secondarySideSprite = ModelFactory.getBlockSprite(secondarySideTexture.get()); - } - if (secondaryEndTexture != null && secondaryEndTexture.get() != null && secondaryEndSprite == null) { - secondaryEndSprite = ModelFactory.getBlockSprite(secondaryEndTexture.get()); - } - if (sideOverlayTexture != null && sideOverlaySprite == null) { - sideOverlaySprite = ModelFactory.getBlockSprite(sideOverlayTexture); - } - if (endOverlayTexture != null && endOverlaySprite == null) { - endOverlaySprite = ModelFactory.getBlockSprite(endOverlayTexture); - } - if (side != null) { if (thickness == 1) { // full block - List quads = new ArrayList<>(); + List quads = new LinkedList<>(); quads.add(FaceQuad.builder(side, sideSprite).cube(coreCube).cubeUV().tintIndex(0).bake()); if (secondarySideSprite != null) { quads.add(FaceQuad.builder(side, secondarySideSprite).cube(coreCube).cubeUV().tintIndex(0).bake()); @@ -185,7 +186,7 @@ public List bakeQuads(@Nullable Direction side, int connections, int } if (PipeBlockEntity.isConnected(connections, side)) { // side connected - List quads = new ArrayList<>(); + List quads = new LinkedList<>(); quads.add(FaceQuad.builder(side, endSprite).cube(sideCubes.get(side).inflate(-0.001)).cubeUV() .tintIndex(1).bake()); if (secondaryEndSprite != null) { @@ -255,12 +256,9 @@ public List bakeQuads(@Nullable Direction side, int connections, int return quads; } - @NotNull + @SuppressWarnings("DataFlowIssue") @OnlyIn(Dist.CLIENT) - public TextureAtlasSprite getParticleTexture() { - if (sideSprite == null) { - sideSprite = ModelFactory.getBlockSprite(sideTexture.get()); - } + public @NotNull TextureAtlasSprite getParticleTexture() { return sideSprite; } @@ -287,13 +285,13 @@ public void registerTextureAtlas(Consumer register) { register.accept(endTexture.get()); if (secondarySideTexture != null) { secondarySideTexture.invalidate(); - if (secondarySideTexture.get() != null) { + if (secondarySideTexture.get() != GTModels.BLANK_TEXTURE) { register.accept(secondarySideTexture.get()); } } if (secondaryEndTexture != null) { secondaryEndTexture.invalidate(); - if (secondaryEndTexture.get() != null) { + if (secondaryEndTexture.get() != GTModels.BLANK_TEXTURE) { register.accept(secondaryEndTexture.get()); } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/SpriteOverrider.java b/src/main/java/com/gregtechceu/gtceu/client/model/SpriteOverrider.java deleted file mode 100644 index 2986d611297..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/model/SpriteOverrider.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.gregtechceu.gtceu.client.model; - -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.Material; -import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import java.util.Map; -import java.util.function.Function; - -/** - * @author KilaBash - * @date 2023/6/26 - * @implNote SpriteOverrider - */ -@OnlyIn(Dist.CLIENT) -public record SpriteOverrider(Map override) - implements Function { - - @Override - public TextureAtlasSprite apply(Material material) { - return material.sprite(); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/TextureOverrideModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/TextureOverrideModel.java new file mode 100644 index 00000000000..652d19bbba8 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/TextureOverrideModel.java @@ -0,0 +1,64 @@ +package com.gregtechceu.gtceu.client.model; + +import com.gregtechceu.gtceu.client.util.GTQuadTransformers; + +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.client.model.BakedModelWrapper; +import net.minecraftforge.client.model.IQuadTransformer; +import net.minecraftforge.client.model.data.ModelData; + +import lombok.Getter; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.*; + +public class TextureOverrideModel extends BakedModelWrapper { + + public static final IQuadTransformer OVERLAY_OFFSET = GTQuadTransformers.offset(0.002f); + + @NotNull + @Getter + protected final Map textureOverrides; + + public TextureOverrideModel(T child, Map textureOverrides) { + super(child); + this.textureOverrides = textureOverrides; + } + + public BakedModel getChild() { + return this.originalModel; + } + + @Override + public @NotNull List getQuads(@Nullable BlockState state, @Nullable Direction side, + @NotNull RandomSource rand, @NotNull ModelData extraData, + @Nullable RenderType renderType) { + return retextureQuads(super.getQuads(state, side, rand, extraData, renderType), textureOverrides); + } + + public static List retextureQuads(List quads, Map overrides) { + List newQuads = new LinkedList<>(); + for (BakedQuad quad : quads) { + String textureKey = quad.gtceu$getTextureKey(); + if (textureKey == null || textureKey.isEmpty()) continue; + if (textureKey.charAt(0) == '#') { + textureKey = textureKey.substring(1); + } + + TextureAtlasSprite replacement = overrides.get(textureKey); + if (replacement != null) { + newQuads.add(GTQuadTransformers.setSprite(quad, replacement)); + } else { + newQuads.add(quad); + } + } + return newQuads; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/WorkableOverlayModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/WorkableOverlayModel.java deleted file mode 100644 index 3832a533b19..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/model/WorkableOverlayModel.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.gregtechceu.gtceu.client.model; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.gregtechceu.gtceu.config.ConfigHolder; -import com.gregtechceu.gtceu.utils.GTUtil; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; -import com.lowdragmc.lowdraglib.client.renderer.IItemRendererProvider; - -import net.minecraft.MethodsReturnNonnullByDefault; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.MissingTextureAtlasSprite; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.BlockModelRotation; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.resources.ResourceManager; -import net.minecraft.world.item.ItemDisplayContext; -import net.minecraft.world.item.ItemStack; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import com.mojang.blaze3d.vertex.PoseStack; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.*; -import java.util.function.Consumer; - -import javax.annotation.ParametersAreNonnullByDefault; - -import static com.gregtechceu.gtceu.utils.GTMatrixUtils.*; - -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote WorkableOverlayModel - */ -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -public class WorkableOverlayModel { - - public enum OverlayFace { - - FRONT, - BACK, - TOP, - BOTTOM, - SIDE; - - public static final OverlayFace[] VALUES = values(); - - public static OverlayFace bySide(Direction side) { - return switch (side) { - case DOWN -> BOTTOM; - case UP -> TOP; - case NORTH -> FRONT; - case SOUTH -> BACK; - case WEST, EAST -> SIDE; - }; - } - } - - protected final ResourceLocation location; - - @OnlyIn(Dist.CLIENT) - public Map sprites; - - @OnlyIn(Dist.CLIENT) - public static class ActivePredicate { - - private final ResourceLocation normalSprite; - private final ResourceLocation activeSprite; - private final ResourceLocation pausedSprite; - - private final ResourceLocation normalSpriteEmissive; - private final ResourceLocation activeSpriteEmissive; - private final ResourceLocation pausedSpriteEmissive; - - public ActivePredicate(@Nullable ResourceLocation normalSprite, - @Nullable ResourceLocation activeSprite, - @Nullable ResourceLocation pausedSprite, - @Nullable ResourceLocation normalSpriteEmissive, - @Nullable ResourceLocation activeSpriteEmissive, - @Nullable ResourceLocation pausedSpriteEmissive) { - this.normalSprite = normalSprite; - this.activeSprite = activeSprite; - this.pausedSprite = pausedSprite; - this.normalSpriteEmissive = normalSpriteEmissive; - this.activeSpriteEmissive = activeSpriteEmissive; - this.pausedSpriteEmissive = pausedSpriteEmissive; - } - - @Nullable - public TextureAtlasSprite getSprite(boolean active, boolean workingEnabled) { - return getTextureAtlasSprite(active, workingEnabled, activeSprite, pausedSprite, normalSprite); - } - - @Nullable - public TextureAtlasSprite getEmissiveSprite(boolean active, boolean workingEnabled) { - return getTextureAtlasSprite(active, workingEnabled, activeSpriteEmissive, pausedSpriteEmissive, - normalSpriteEmissive); - } - - @Nullable - private TextureAtlasSprite getTextureAtlasSprite(boolean active, boolean workingEnabled, - @Nullable ResourceLocation activeSprite, - @Nullable ResourceLocation pausedSprite, - @Nullable ResourceLocation normalSprite) { - if (active) { - if (workingEnabled) { - return activeSprite == null ? null : ModelFactory.getBlockSprite(activeSprite); - } else { - return pausedSprite == null ? null : ModelFactory.getBlockSprite(pausedSprite); - } - } - return normalSprite == null ? null : ModelFactory.getBlockSprite(normalSprite); - } - } - - public WorkableOverlayModel(ResourceLocation location) { - this.location = location; - if (GTCEu.isClientSide()) { - this.sprites = new EnumMap<>(OverlayFace.class); - } - } - - @OnlyIn(Dist.CLIENT) - public List bakeQuads(@Nullable Direction side, ModelState modelState, - boolean isActive, boolean isWorkingEnabled) { - var quads = new ArrayList(); - - for (var renderSide : GTUtil.DIRECTIONS) { - ActivePredicate predicate = sprites.get(OverlayFace.bySide(renderSide)); - if (predicate != null) { - var texture = predicate.getSprite(isActive, isWorkingEnabled); - if (texture != null) { - var quad = StaticFaceBakery.bakeFace(StaticFaceBakery.SLIGHTLY_OVER_BLOCK, renderSide, texture, - modelState, -1, 0, true, true); - if (quad.getDirection() == side) { - quads.add(quad); - } - } - - texture = predicate.getEmissiveSprite(isActive, isWorkingEnabled); - if (texture != null) { - if (ConfigHolder.INSTANCE.client.machinesEmissiveTextures) { - var quad = StaticFaceBakery.bakeFace(StaticFaceBakery.SLIGHTLY_OVER_BLOCK, renderSide, texture, - modelState, -101, 15, true, false); - if (quad.getDirection() == side) { - quads.add(quad); - } - } else { - var quad = StaticFaceBakery.bakeFace(StaticFaceBakery.SLIGHTLY_OVER_BLOCK, renderSide, texture, - modelState, -1, 0, true, true); - if (quad.getDirection() == side) { - quads.add(quad); - } - } - } - } - } - return quads; - } - - @NotNull - @OnlyIn(Dist.CLIENT) - public TextureAtlasSprite getParticleTexture() { - for (ActivePredicate predicate : sprites.values()) { - TextureAtlasSprite sprite = predicate.getSprite(false, false); - if (sprite != null) return sprite; - } - return ModelFactory.getBlockSprite(MissingTextureAtlasSprite.getLocation()); - } - - @OnlyIn(Dist.CLIENT) - public void renderItem(ItemStack stack, ItemDisplayContext transformType, boolean leftHand, PoseStack matrixStack, - MultiBufferSource buffer, int combinedLight, int combinedOverlay, BakedModel model) { - IItemRendererProvider.disabled.set(true); - Minecraft.getInstance().getItemRenderer().render(stack, transformType, leftHand, matrixStack, buffer, - combinedLight, combinedOverlay, - (ItemBakedModel) (state, direction, random) -> bakeQuads(direction, BlockModelRotation.X0_Y0, - false, false)); - IItemRendererProvider.disabled.set(false); - } - - @OnlyIn(Dist.CLIENT) - public void registerTextureAtlas(Consumer register) { - ResourceManager resManager = Minecraft.getInstance().getResourceManager(); - - sprites.clear(); - for (OverlayFace overlayFace : OverlayFace.VALUES) { - final String overlayPath = "/overlay_" + overlayFace.name().toLowerCase(Locale.ROOT); - - var normalSprite = new ResourceLocation(location.getNamespace(), location.getPath() + overlayPath); - var normalSprite1 = getTextureLocation(normalSprite); - if (resManager.getResource(normalSprite1).isEmpty()) continue; - register.accept(normalSprite); - - // normal - final String active = String.format("%s_active", overlayPath); - ResourceLocation activeSprite = new ResourceLocation(location.getNamespace(), location.getPath() + active); - var activeSprite1 = getTextureLocation(activeSprite); - if (resManager.getResource(activeSprite1).isPresent()) register.accept(activeSprite); - else activeSprite = normalSprite; - - final String paused = String.format("%s_paused", overlayPath); - ResourceLocation pausedSprite = new ResourceLocation(location.getNamespace(), location.getPath() + paused); - var pausedSprite1 = getTextureLocation(pausedSprite); - if (resManager.getResource(pausedSprite1).isPresent()) register.accept(pausedSprite); - else pausedSprite = normalSprite; - - // emissive - ResourceLocation normalSpriteEmissive = new ResourceLocation(location.getNamespace(), - location.getPath() + overlayPath + "_emissive"); - var normalSpriteEmissive1 = getTextureLocation(normalSpriteEmissive); - if (resManager.getResource(normalSpriteEmissive1).isPresent()) register.accept(normalSpriteEmissive); - else normalSpriteEmissive = null; - - ResourceLocation activeSpriteEmissive = new ResourceLocation(location.getNamespace(), - location.getPath() + active + "_emissive"); - var activeSpriteEmissive1 = getTextureLocation(activeSpriteEmissive); - if (resManager.getResource(activeSpriteEmissive1).isPresent()) register.accept(activeSpriteEmissive); - else activeSpriteEmissive = null; - - ResourceLocation pausedSpriteEmissive = new ResourceLocation(location.getNamespace(), - location.getPath() + paused + "_emissive"); - var pausedSpriteEmissive1 = getTextureLocation(pausedSpriteEmissive); - if (resManager.getResource(pausedSpriteEmissive1).isPresent()) register.accept(pausedSpriteEmissive); - else pausedSpriteEmissive = null; - - sprites.put(overlayFace, new ActivePredicate(normalSprite, activeSprite, pausedSprite, - normalSpriteEmissive, activeSpriteEmissive, pausedSpriteEmissive)); - } - } - - private ResourceLocation getTextureLocation(ResourceLocation location) { - return new ResourceLocation(location.getNamespace(), "textures/%s.png".formatted(location.getPath())); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/item/FacadeUnbakedModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/item/FacadeUnbakedModel.java new file mode 100644 index 00000000000..c6e6480c272 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/item/FacadeUnbakedModel.java @@ -0,0 +1,54 @@ +package com.gregtechceu.gtceu.client.model.item; + +import com.gregtechceu.gtceu.client.renderer.cover.FacadeCoverRenderer; + +import net.minecraft.client.renderer.block.model.BlockModel; +import net.minecraft.client.renderer.block.model.ItemOverrides; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.*; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.client.model.geometry.IGeometryBakingContext; +import net.minecraftforge.client.model.geometry.IGeometryLoader; +import net.minecraftforge.client.model.geometry.IUnbakedGeometry; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import org.jetbrains.annotations.NotNull; + +import java.util.function.Function; + +public class FacadeUnbakedModel implements IUnbakedGeometry { + + private final @NotNull BlockModel defaultModel; + + private FacadeUnbakedModel(@NotNull BlockModel defaultModel) { + this.defaultModel = defaultModel; + } + + @Override + public BakedModel bake(IGeometryBakingContext context, ModelBaker baker, + Function spriteGetter, ModelState modelState, + ItemOverrides overrides, ResourceLocation modelLocation) { + BakedModel bakedParent = defaultModel.bake(baker, defaultModel, spriteGetter, modelState, modelLocation, true); + return new FacadeCoverRenderer(bakedParent); + } + + @Override + public void resolveParents(Function modelGetter, + IGeometryBakingContext context) { + defaultModel.resolveParents(modelGetter); + } + + public static class Loader implements IGeometryLoader { + + public static final Loader INSTANCE = new Loader(); + + protected Loader() {} + + @Override + public FacadeUnbakedModel read(JsonObject json, JsonDeserializationContext context) throws JsonParseException { + return new FacadeUnbakedModel(context.deserialize(json.get("default_model"), BlockModel.class)); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/IControllerModelRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/IControllerModelRenderer.java new file mode 100644 index 00000000000..df1275c8983 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/IControllerModelRenderer.java @@ -0,0 +1,28 @@ +package com.gregtechceu.gtceu.client.model.machine; + +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; + +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.data.ModelData; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.List; + +public interface IControllerModelRenderer { + + /** + * Render a specific model for given part. + */ + @OnlyIn(Dist.CLIENT) + void renderPartModel(List quads, IMultiController machine, IMultiPart part, + Direction frontFacing, @Nullable Direction side, RandomSource rand, + @NotNull ModelData modelData, @Nullable RenderType renderType); +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java new file mode 100644 index 00000000000..3b95701b5cd --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java @@ -0,0 +1,69 @@ +package com.gregtechceu.gtceu.client.model.machine; + +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.machine.feature.IMachineFeature; + +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.data.ModelData; + +import com.mojang.blaze3d.vertex.PoseStack; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Collections; +import java.util.List; + +public interface IMachineRendererModel { + + MachineDefinition getDefinition(); + + @OnlyIn(Dist.CLIENT) + default @NotNull List getRenderQuads(@Nullable T machine, @Nullable BlockAndTintGetter level, + @Nullable BlockPos pos, @Nullable BlockState blockState, + @Nullable Direction side, RandomSource rand, + @NotNull ModelData modelData, @Nullable RenderType renderType) { + return Collections.emptyList(); + } + + @OnlyIn(Dist.CLIENT) + void render(T machine, float partialTick, PoseStack poseStack, MultiBufferSource buffer, + int packedLight, int packedOverlay); + + @OnlyIn(Dist.CLIENT) + default void renderByItem(ItemStack stack, ItemDisplayContext displayContext, + PoseStack poseStack, MultiBufferSource buffer, int packedLight, int packedOverlay) {} + + default boolean shouldRenderOffScreen(T machine) { + return false; + } + + default boolean shouldRender(T machine, Vec3 cameraPos) { + return Vec3.atCenterOf(machine.self().getPos()).closerThan(cameraPos, this.getViewDistance()); + } + + default int getViewDistance() { + return 64; + } + + default AABB getRenderBoundingBox(T machine) { + BlockPos pos = machine.self().getPos(); + return new AABB(pos.offset(-1, 0, -1), pos.offset(2, 2, 2)); + } + + default boolean isBlockEntityRenderer() { + return false; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java new file mode 100644 index 00000000000..c20eb618e68 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java @@ -0,0 +1,480 @@ +package com.gregtechceu.gtceu.client.model.machine; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputFluid; +import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputItem; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; +import com.gregtechceu.gtceu.client.model.BaseBakedModel; +import com.gregtechceu.gtceu.client.model.IBlockEntityRendererBakedModel; +import com.gregtechceu.gtceu.client.model.TextureOverrideModel; +import com.gregtechceu.gtceu.client.model.machine.multipart.MultiPartBakedModel; +import com.gregtechceu.gtceu.client.renderer.cover.ICoverableRenderer; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRender; +import com.gregtechceu.gtceu.client.util.StaticFaceBakery; +import com.gregtechceu.gtceu.common.data.models.GTModels; + +import com.lowdragmc.lowdraglib.client.model.custommodel.CustomBakedModel; + +import net.minecraft.Util; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.block.model.ItemTransforms; +import net.minecraft.client.renderer.texture.MissingTextureAtlasSprite; +import net.minecraft.client.renderer.texture.TextureAtlas; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.*; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.RandomSource; +import net.minecraft.world.inventory.InventoryMenu; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.client.model.QuadTransformers; +import net.minecraftforge.client.model.data.ModelData; +import net.minecraftforge.client.model.data.ModelProperty; +import net.minecraftforge.client.model.geometry.UnbakedGeometryHelper; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Transformation; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +import static com.gregtechceu.gtceu.api.machine.IMachineBlockEntity.*; + +public final class MachineModel extends BaseBakedModel implements ICoverableRenderer, + IBlockEntityRendererBakedModel { + + public static final ResourceLocation PIPE_OVERLAY = GTCEu.id("block/overlay/machine/overlay_pipe"); + public static final ResourceLocation FLUID_OUTPUT_OVERLAY = GTCEu.id("block/overlay/machine/overlay_fluid_output"); + public static final ResourceLocation ITEM_OUTPUT_OVERLAY = GTCEu.id("block/overlay/machine/overlay_item_output"); + + private static @Nullable TextureAtlasSprite pipeOverlaySprite; + private static @Nullable TextureAtlasSprite fluidOutputOverlaySprite; + private static @Nullable TextureAtlasSprite itemOutputOverlaySprite; + private static @Nullable TextureAtlasSprite blankSprite; + + public static final Map> TEXTURE_REMAPS = Util.make(new HashMap<>(), map -> { + var all = List.of("all"); + + map.put("side", all); + map.put("top", all); + map.put("bottom", all); + map.put("all", List.of("side", "top", "bottom")); + }); + + @Getter + private final MachineDefinition definition; + private final Map modelsByState; + private final @Nullable MultiPartBakedModel multiPart; + @Getter + private final List> dynamicRenders; + + @Getter + private final ItemTransforms transforms; + private final Transformation rootTransform; + private final ModelState modelState; + @Getter + private final boolean isGui3d; + @Accessors(fluent = true) + @Getter + private final boolean usesBlockLight, useAmbientOcclusion; + + @Setter + private TextureAtlasSprite particleIcon = null; + @Setter + private Set replaceableTextures; + @Setter + private Map textureOverrides; + + public MachineModel(MachineDefinition definition, + Map modelsByState, + @Nullable MultiPartBakedModel multiPart, + List> dynamicRenders, + ItemTransforms transforms, Transformation rootTransform, ModelState modelState, + boolean isGui3d, boolean usesBlockLight, boolean useAmbientOcclusion) { + this.definition = definition; + this.modelsByState = modelsByState; + this.multiPart = multiPart; + this.dynamicRenders = dynamicRenders; + + this.transforms = transforms; + this.rootTransform = rootTransform; + this.modelState = modelState; + this.isGui3d = isGui3d; + this.usesBlockLight = usesBlockLight; + this.useAmbientOcclusion = useAmbientOcclusion; + + for (DynamicRender render : this.dynamicRenders) { + render.setParent(this); + } + } + + public static void initSprites(TextureAtlas atlas) { + pipeOverlaySprite = atlas.getSprite(PIPE_OVERLAY); + fluidOutputOverlaySprite = atlas.getSprite(FLUID_OUTPUT_OVERLAY); + itemOutputOverlaySprite = atlas.getSprite(ITEM_OUTPUT_OVERLAY); + blankSprite = atlas.getSprite(GTModels.BLANK_TEXTURE); + } + + @SuppressWarnings("deprecation") + @Override + public @NotNull TextureAtlasSprite getParticleIcon() { + if (particleIcon != null) { + return particleIcon; + } else if (multiPart != null) { + return multiPart.getParticleIcon(); + } else if (!modelsByState.isEmpty()) { + return modelsByState.get(getDefinition().defaultRenderState()).getParticleIcon(); + } else { + return Minecraft.getInstance().getTextureAtlas(TextureAtlas.LOCATION_BLOCKS) + .apply(MissingTextureAtlasSprite.getLocation()); + } + } + + @Override + public TextureAtlasSprite getParticleIcon(@NotNull ModelData modelData) { + BlockAndTintGetter level = modelData.get(MODEL_DATA_LEVEL); + BlockPos pos = modelData.get(MODEL_DATA_POS); + + MetaMachine machine = (level == null || pos == null) ? null : MetaMachine.getMachine(level, pos); + MachineRenderState renderState = machine != null ? machine.getRenderState() : + getDefinition().defaultRenderState(); + + if (multiPart != null) { + return multiPart.getParticleIcon(renderState, modelData); + } else if (modelsByState.containsKey(renderState)) { + return modelsByState.get(renderState).getParticleIcon(modelData); + } else { + return super.getParticleIcon(modelData); + } + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Override + public @NotNull ModelData getModelData(@NotNull BlockAndTintGetter level, @NotNull BlockPos pos, + @NotNull BlockState state, @NotNull ModelData modelData) { + ModelData.Builder builder = modelData.derive() + .with(MODEL_DATA_LEVEL, level) + .with(MODEL_DATA_POS, pos); + MetaMachine machine = MetaMachine.getMachine(level, pos); + MachineRenderState renderState = machine == null ? definition.defaultRenderState() : machine.getRenderState(); + + // add the inner model's model data too + if (multiPart != null) { + multiPart.addMachineModelData(renderState, level, pos, state, modelData, builder); + } + if (modelsByState.containsKey(renderState)) { + ModelData data = modelsByState.get(renderState).getModelData(level, pos, state, modelData); + for (ModelProperty key : data.getProperties()) { + builder.with(key, data.get(key)); + } + } + return builder.build(); + } + + @Override + public @NotNull List getQuads(@Nullable BlockState state, @Nullable Direction side, + @NotNull RandomSource rand, + @NotNull ModelData modelData, @Nullable RenderType renderType) { + // If there is a root transform, undo the ModelState transform, apply it, + // then re-apply the ModelState transform. + // This is necessary because of things like UV locking, which should only respond to the ModelState, + // and as such that is the only transform that should be applied during face bake. + var postTransform = QuadTransformers.empty(); + if (!rootTransform.isIdentity()) { + postTransform = UnbakedGeometryHelper.applyRootTransform(modelState, rootTransform); + } + + List quads; + if (modelData.has(MODEL_DATA_LEVEL) && modelData.has(MODEL_DATA_POS)) { + quads = getMachineQuads(state, side, rand, modelData, renderType); + } else { + // if it doesn't have either of those properties, we're rendering an item. + quads = renderMachine(null, null, null, state, side, rand, modelData, renderType); + } + postTransform.processInPlace(quads); + return quads; + } + + public List getMachineQuads(@Nullable BlockState blockState, @Nullable Direction side, + @NotNull RandomSource rand, @NotNull ModelData modelData, + @Nullable RenderType renderType) { + BlockAndTintGetter level = modelData.get(MODEL_DATA_LEVEL); + BlockPos pos = modelData.get(MODEL_DATA_POS); + + MetaMachine machine = (level == null || pos == null) ? null : MetaMachine.getMachine(level, pos); + // render machine quads + List quads = renderMachine(machine, level, pos, blockState, side, rand, modelData, renderType); + if (machine == null) { + return quads; + } + + // render output overlays + if (machine instanceof IAutoOutputItem autoOutputItem) { + var itemFace = autoOutputItem.getOutputFacingItems(); + if (itemFace != null && side == itemFace) { + quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.OUTPUT_OVERLAY, side, pipeOverlaySprite)); + if (autoOutputItem.isAutoOutputItems()) { + quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.AUTO_OUTPUT_OVERLAY, side, + itemOutputOverlaySprite)); + } + } + } + if (machine instanceof IAutoOutputFluid autoOutputFluid) { + var fluidFace = autoOutputFluid.getOutputFacingFluids(); + if (fluidFace != null && side == fluidFace) { + quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.OUTPUT_OVERLAY, side, pipeOverlaySprite)); + if (autoOutputFluid.isAutoOutputFluids()) { + quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.AUTO_OUTPUT_OVERLAY, side, + fluidOutputOverlaySprite)); + } + } + } + + // render covers + ICoverableRenderer.super.renderCovers(quads, machine.getCoverContainer(), pos, level, + side, rand, modelData, renderType); + return quads; + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + public List renderMachine(@Nullable MetaMachine machine, @Nullable BlockAndTintGetter level, + @Nullable BlockPos pos, @Nullable BlockState blockState, + @Nullable Direction side, RandomSource rand, + @NotNull ModelData modelData, @Nullable RenderType renderType) { + List quads = new LinkedList<>(); + + MachineRenderState renderState = machine != null ? machine.getRenderState() : definition.defaultRenderState(); + renderBaseModel(quads, renderState, blockState, side, rand, modelData, renderType); + + for (DynamicRender render : dynamicRenders) { + quads.addAll(render.getRenderQuads(machine, level, pos, blockState, side, rand, modelData, renderType)); + } + // the instanceof check also ensures it's not null + if (machine instanceof IMultiPart part && part.replacePartModelWhenFormed()) { + quads = replacePartBaseModel(quads, part, machine.getFrontFacing(), side, rand, modelData, renderType); + } + + // we have to recalculate CTM ourselves. + // this is the slowest part by a long shot because the LDLib quad logic isn't very optimized. + if (level != null && pos != null && blockState != null) { + return CustomBakedModel.reBakeCustomQuads(quads, level, pos, blockState, side, 0.0f); + } + return quads; + } + + public void renderBaseModel(List quads, @NotNull MachineRenderState renderState, + @Nullable BlockState blockState, @Nullable Direction side, RandomSource rand, + @NotNull ModelData modelData, @Nullable RenderType renderType) { + if (multiPart != null) { + quads.addAll(multiPart.getMachineQuads(definition, renderState, blockState, + side, rand, modelData, renderType)); + } + if (modelsByState.containsKey(renderState)) { + quads.addAll(modelsByState.get(renderState).getQuads(blockState, side, rand, modelData, renderType)); + } + } + + public List replacePartBaseModel(List originalQuads, IMultiPart part, Direction frontFacing, + @Nullable Direction side, RandomSource rand, + ModelData modelData, @Nullable RenderType renderType) { + var controllers = part.getControllers(); + for (IMultiController controller : controllers) { + var state = controller.self().getBlockState(); + BakedModel model = Minecraft.getInstance().getBlockRenderer().getBlockModel(state); + List newQuads = null; + + // spotless:off + if (model instanceof IControllerModelRenderer controllerRenderer) { + controllerRenderer.renderPartModel(originalQuads, controller, part, frontFacing, side, + rand, modelData, renderType); + } else if (model instanceof MachineModel controllerModel) { + newQuads = renderPartOverrides(controllerModel, controller, originalQuads, part, frontFacing, + side, rand, modelData, renderType); + } + if (newQuads != null) { + return newQuads; + } + // spotless:on + } + return originalQuads; + } + + public List remapReplaceableTextures(String key) { + if (this.replaceableTextures.contains(key)) { + return Collections.singletonList(key); + } else { + List remapped = TEXTURE_REMAPS.get(key); + if (remapped != null) return remapped; + else return Collections.emptyList(); + } + } + + private List renderPartOverrides(MachineModel controllerModel, IMultiController controller, + List quads, IMultiPart part, Direction frontFacing, + @Nullable Direction side, RandomSource rand, + ModelData modelData, @Nullable RenderType renderType) { + var overrides = controllerModel.textureOverrides; + + List renderQuads = new LinkedList<>(); + for (var render : controllerModel.getDynamicRenders()) { + if (render instanceof IControllerModelRenderer controllerRenderer) { + controllerRenderer.renderPartModel(renderQuads, controller, part, frontFacing, side, + rand, modelData, renderType); + if (!renderQuads.isEmpty()) { + // assume the renderer drew the base model, and replace the override textures with empty ones + overrides = new HashMap<>(); + for (String key : this.replaceableTextures) { + overrides.put(key, blankSprite); + } + break; + } + + } + } + if (overrides.isEmpty()) { + quads.addAll(renderQuads); + return quads; + } + + // parse out valid overrides + Map remaps = new IdentityHashMap<>(); + final TextureAtlasSprite missingno = Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS) + .apply(MissingTextureAtlasSprite.getLocation()); + final Map finalOverrides = overrides; + overrides = finalOverrides.keySet().stream() + .flatMap(key -> { + var remapped = remapReplaceableTextures(key); + for (String r : remapped) { + remaps.put(r, key); + } + return remapped.stream(); + }) + .collect(Collectors.toMap(Function.identity(), + key -> finalOverrides.getOrDefault(remaps.get(key), missingno), + (o1, o2) -> o1)); + + // actually process the sprite replacement + quads = TextureOverrideModel.retextureQuads(quads, overrides); + quads.addAll(renderQuads); + return quads; + } + + @Override + public boolean isCustomRenderer() { + return true; + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Override + public void render(@NotNull BlockEntity blockEntity, float partialTick, + @NotNull PoseStack poseStack, @NotNull MultiBufferSource buffer, + int packedLight, int packedOverlay) { + if (!(blockEntity instanceof IMachineBlockEntity machineBE)) return; + if (machineBE.getDefinition() != getDefinition()) return; + ICoverableRenderer.super.renderDynamicCovers(machineBE.getMetaMachine(), partialTick, poseStack, buffer, + packedLight, + packedOverlay); + if (dynamicRenders.isEmpty()) return; + + MetaMachine machine = machineBE.getMetaMachine(); + Vec3 cameraPos = Minecraft.getInstance().gameRenderer.getMainCamera().getPosition(); + for (DynamicRender model : dynamicRenders) { + if (!model.shouldRender(machine, cameraPos)) { + continue; + } + model.render(machine, partialTick, poseStack, buffer, packedLight, packedOverlay); + } + } + + @Override + public void renderByItem(ItemStack stack, ItemDisplayContext displayContext, + PoseStack poseStack, MultiBufferSource buffer, + int packedLight, int packedOverlay) { + if (dynamicRenders.isEmpty()) return; + for (DynamicRender model : dynamicRenders) { + model.renderByItem(stack, displayContext, poseStack, buffer, packedLight, packedOverlay); + } + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Override + public AABB getRenderBoundingBox(BlockEntity blockEntity) { + AABB bounds = IBlockEntityRendererBakedModel.super.getRenderBoundingBox(blockEntity); + + if (!(blockEntity instanceof IMachineBlockEntity machineBE)) return bounds; + if (machineBE.getDefinition() != getDefinition()) return bounds; + if (dynamicRenders.isEmpty()) return bounds; + + MetaMachine machine = machineBE.getMetaMachine(); + for (DynamicRender model : dynamicRenders) { + bounds = bounds.minmax(model.getRenderBoundingBox(machine)); + } + return bounds; + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Override + public boolean shouldRenderOffScreen(BlockEntity blockEntity) { + if (!(blockEntity instanceof IMachineBlockEntity machineBE)) return false; + if (machineBE.getDefinition() != getDefinition()) return false; + if (dynamicRenders.isEmpty()) return false; + + MetaMachine machine = machineBE.getMetaMachine(); + for (DynamicRender render : dynamicRenders) { + if (render.shouldRenderOffScreen(machine)) return true; + } + return false; + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Override + public boolean shouldRender(BlockEntity blockEntity, @NotNull Vec3 cameraPos) { + if (!(blockEntity instanceof IMachineBlockEntity machineBE)) return false; + if (machineBE.getDefinition() != getDefinition()) return false; + if (machineBE.getMetaMachine().getCoverContainer().hasDynamicCovers()) return true; + if (dynamicRenders.isEmpty()) return false; + + MetaMachine machine = machineBE.getMetaMachine(); + for (DynamicRender model : dynamicRenders) { + if (model.shouldRender(machine, Minecraft.getInstance().gameRenderer.getMainCamera().getPosition())) { + return true; + } + } + return false; + } + + @Override + public int getViewDistance() { + int distance = 0; + for (DynamicRender model : dynamicRenders) { + distance = Math.max(distance, model.getViewDistance()); + } + return distance; + } + + @Override + public BlockEntityType getBlockEntityType() { + return getDefinition().getBlockEntityType(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModelLoader.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModelLoader.java new file mode 100644 index 00000000000..562066bc62c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModelLoader.java @@ -0,0 +1,249 @@ +package com.gregtechceu.gtceu.client.model.machine; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.registry.GTRegistries; +import com.gregtechceu.gtceu.client.model.BasicUnbakedModel; +import com.gregtechceu.gtceu.client.model.machine.multipart.MultiPartSelector; +import com.gregtechceu.gtceu.client.model.machine.multipart.MultiPartUnbakedModel; +import com.gregtechceu.gtceu.client.model.machine.variant.MultiVariantModel; +import com.gregtechceu.gtceu.client.model.machine.variant.VariantState; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRender; + +import net.minecraft.client.renderer.block.BlockModelShaper; +import net.minecraft.client.renderer.block.model.*; +import net.minecraft.client.resources.model.ModelBakery; +import net.minecraft.client.resources.model.ModelResourceLocation; +import net.minecraft.client.resources.model.UnbakedModel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.GsonHelper; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.Property; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.client.model.ExtendedBlockModelDeserializer; +import net.minecraftforge.client.model.geometry.IGeometryLoader; +import net.minecraftforge.common.util.TransformationHelper; +import net.minecraftforge.fml.common.Mod; + +import com.google.common.base.Splitter; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Maps; +import com.google.gson.*; +import com.mojang.datafixers.util.Either; +import com.mojang.math.Transformation; +import com.mojang.serialization.JsonOps; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.jetbrains.annotations.Nullable; + +import java.util.*; +import java.util.function.Function; +import java.util.function.Predicate; + +@Mod.EventBusSubscriber(modid = GTCEu.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) +public class MachineModelLoader implements IGeometryLoader { + + public static final MachineModelLoader INSTANCE = new MachineModelLoader(); + public static final ResourceLocation ID = GTCEu.id("machine"); + public static final Gson GSON = new GsonBuilder() + .registerTypeAdapter(BlockModel.class, new ExtendedBlockModelDeserializer()) + .registerTypeAdapter(BlockElement.class, new BlockElement.Deserializer()) + .registerTypeAdapter(BlockElementFace.class, new BlockElementFace.Deserializer()) + .registerTypeAdapter(BlockFaceUV.class, new BlockFaceUV.Deserializer()) + .registerTypeAdapter(ItemTransform.class, new ItemTransform.Deserializer()) + .registerTypeAdapter(ItemTransforms.class, new ItemTransforms.Deserializer()) + .registerTypeAdapter(ItemOverride.class, new ItemOverride.Deserializer()) + .registerTypeAdapter(Transformation.class, new TransformationHelper.Deserializer()) + + .registerTypeAdapter(MultiVariantModel.class, new MultiVariantModel.Deserializer()) + .registerTypeAdapter(VariantState.class, new VariantState.Deserializer()) + .registerTypeAdapter(MultiPartSelector.class, new MultiPartSelector.Deserializer()) + .create(); + private static final Logger LOGGER = LogManager.getLogger("GT MACHINE MODEL LOADER"); + + private static final Splitter COMMA_SPLITTER = Splitter.on(','); + private static final Splitter EQUAL_SPLITTER = Splitter.on('=').limit(2); + private static final UnbakedModel MISSING_MARKER = new BasicUnbakedModel(); + + private MachineModelLoader() {} + + @Override + public @Nullable UnbakedMachineModel read(JsonObject json, + JsonDeserializationContext context) throws JsonParseException { + ResourceLocation machineId = new ResourceLocation(GsonHelper.getAsString(json, "machine")); + MachineDefinition definition = GTRegistries.MACHINES.get(machineId); + if (definition == null) return null; + + // load the inner models + final Map variants = new HashMap<>(); + if (json.has("variants")) { + JsonObject variantsJson = GsonHelper.getAsJsonObject(json, "variants"); + for (Map.Entry entry : variantsJson.entrySet()) { + variants.put(entry.getKey(), GSON.fromJson(entry.getValue(), MultiVariantModel.class)); + } + } + final @Nullable MultiPartUnbakedModel multiPart; + if (json.has("multipart")) { + JsonArray multipartJson = GsonHelper.getAsJsonArray(json, "multipart"); + multiPart = MultiPartUnbakedModel.deserialize(definition, multipartJson); + } else { + multiPart = null; + } + if (variants.isEmpty() && (multiPart == null || multiPart.getModels().isEmpty())) { + throw new JsonParseException("Model for machine %s doesn't have 'variants' or 'multipart' defined" + .formatted(machineId)); + } + + // resolve the state -> variant map + StateDefinition stateDefinition = definition.getStateDefinition(); + ImmutableList possibleStates = stateDefinition.getPossibleStates(); + Map statesToModels = new IdentityHashMap<>(); + if (multiPart != null) { + possibleStates.forEach((state) -> statesToModels.put(state, multiPart)); + } + + Map modelsToStates = new HashMap<>(); + possibleStates.forEach((state) -> { + modelsToStates.put(stateToModelLocation(machineId, state), state); + }); + + try { + variants.forEach((key, curModel) -> { + try { + possibleStates.stream().filter(predicate(stateDefinition, key)).forEach((state) -> { + UnbakedModel prevModel = statesToModels.put(state, curModel); + if (prevModel != null && prevModel != multiPart) { + statesToModels.put(state, MISSING_MARKER); + throw new IllegalStateException( + "Overlapping definition with: " + variants.entrySet().stream() + .filter((entry) -> entry.getValue() == prevModel) + .findFirst() + .map(Map.Entry::getKey) + .orElse("Invalid key? This shouldn't happen")); + } + }); + } catch (Exception e) { + LOGGER.warn("Exception loading model for machine: '{}' for variant: '{}': {}", machineId, key, e); + } + }); + } finally { + modelsToStates.forEach((modelLoc, state) -> { + UnbakedModel unbaked = statesToModels.get(state); + if (unbaked == null) { + LOGGER.warn("Exception loading model for machine: '{}' missing model for variant: '{}'", machineId, + modelLoc); + statesToModels.put(state, MISSING_MARKER); + } + }); + } + + // load dynamic renders + List> dynamicRenders = new ArrayList<>(); + JsonArray array = GsonHelper.getAsJsonArray(json, "dynamic_renders", null); + if (array != null) { + for (JsonElement entry : array) { + var render = DynamicRender.CODEC.parse(JsonOps.INSTANCE, entry) + .getOrThrow(false, LOGGER::error); + dynamicRenders.add(render); + } + } + + // CTM info etc. + Set replaceableTextures = new HashSet<>(); + array = GsonHelper.getAsJsonArray(json, "replaceable_textures", null); + if (array != null) { + for (int i = 0; i < array.size(); i++) { + String entry = GsonHelper.convertToString(array.get(i), "replaceable_textures[%s]".formatted(i)); + replaceableTextures.add(entry); + } + } + Map textureOverrides = new HashMap<>(); + JsonObject overrideJson = GsonHelper.getAsJsonObject(json, "texture_overrides", null); + if (overrideJson != null) { + for (var entry : overrideJson.asMap().entrySet()) { + String value = GsonHelper.convertToString(entry.getValue(), entry.getKey()); + textureOverrides.put(entry.getKey(), new ResourceLocation(value)); + } + } + + return new UnbakedMachineModel(definition, statesToModels, multiPart, dynamicRenders, + replaceableTextures, textureOverrides); + } + + protected static void resolveStateModels(UnbakedMachineModel model, + Function resolver) { + UnbakedModel missingModel = resolver.apply(ModelBakery.MISSING_MODEL_LOCATION); + + final MultiPartUnbakedModel multiPart = model.getMultiPart(); + if (multiPart != null) { + multiPart.resolveParents(resolver); + } + Map modelsCopy = new IdentityHashMap<>(model.getModels()); + modelsCopy.forEach((state, variant) -> { + if (variant == null || variant == MISSING_MARKER) { + // replace null & markers with the actual missing model + model.getModels().put(state, missingModel); + } else { + variant.resolveParents(resolver); + model.getModels().put(state, variant); + } + }); + } + + private static Predicate predicate(StateDefinition container, + String variant) { + Map, Comparable> properties = Maps.newHashMap(); + + for (String propertyEntry : COMMA_SPLITTER.split(variant)) { + Iterator keyValue = EQUAL_SPLITTER.split(propertyEntry).iterator(); + if (keyValue.hasNext()) { + String key = keyValue.next(); + Property property = container.getProperty(key); + if (property != null && keyValue.hasNext()) { + String value = keyValue.next(); + Comparable comparable = getValueHelper(property, value); + if (comparable == null) { + throw new RuntimeException("Unknown value: '" + value + + "' for machine model state property: '" + key + "' " + property.getPossibleValues()); + } + + properties.put(property, comparable); + } else if (!key.isEmpty()) { + throw new RuntimeException("Unknown machine model state property: '" + key + "'"); + } + } + } + + MachineDefinition machine = container.getOwner(); + return (state) -> { + if (state == null || !state.is(machine)) { + return false; + } + for (var entry : properties.entrySet()) { + if (!Objects.equals(state.getValue(entry.getKey()), entry.getValue())) { + return false; + } + } + return true; + }; + } + + @Nullable + static > T getValueHelper(Property property, String value) { + return property.getValue(value).orElse(null); + } + + public static ModelResourceLocation stateToModelLocation(ResourceLocation location, MachineRenderState state) { + return new ModelResourceLocation(location, BlockModelShaper.statePropertiesToString(state.getValues())); + } + + public static Either parseVariant(JsonElement value, + JsonDeserializationContext context) throws JsonParseException { + if (value.isJsonPrimitive() && value.getAsJsonPrimitive().isString()) { + String modelName = value.getAsString(); + return Either.left(new ResourceLocation(modelName)); + } else { + return Either.right(context.deserialize(value, BlockModel.class)); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineRenderState.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineRenderState.java new file mode 100644 index 00000000000..ec43fff974f --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineRenderState.java @@ -0,0 +1,35 @@ +package com.gregtechceu.gtceu.client.model.machine; + +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.registry.GTRegistries; + +import net.minecraft.world.level.block.state.StateHolder; +import net.minecraft.world.level.block.state.properties.Property; + +import com.google.common.collect.ImmutableMap; +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; + +public class MachineRenderState extends StateHolder { + + public static final Codec CODEC = codec(GTRegistries.MACHINES.codec(), + MachineDefinition::defaultRenderState).stable(); + + public MachineRenderState(MachineDefinition owner, ImmutableMap, Comparable> values, + MapCodec propertiesCodec) { + super(owner, values, propertiesCodec); + } + + public MachineDefinition getDefinition() { + return this.owner; + } + + public boolean is(MetaMachine machine) { + return this.is(machine.getDefinition()); + } + + public boolean is(MachineDefinition definition) { + return this.getDefinition() == definition; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/UnbakedMachineModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/UnbakedMachineModel.java new file mode 100644 index 00000000000..d6f806cf60c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/UnbakedMachineModel.java @@ -0,0 +1,84 @@ +package com.gregtechceu.gtceu.client.model.machine; + +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.client.model.machine.multipart.MultiPartBakedModel; +import com.gregtechceu.gtceu.client.model.machine.multipart.MultiPartUnbakedModel; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRender; + +import net.minecraft.client.renderer.block.model.*; +import net.minecraft.client.renderer.texture.TextureAtlas; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.*; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.client.model.geometry.IGeometryBakingContext; +import net.minecraftforge.client.model.geometry.IUnbakedGeometry; + +import lombok.Getter; +import org.jetbrains.annotations.Nullable; + +import java.util.*; +import java.util.function.Function; + +public class UnbakedMachineModel implements IUnbakedGeometry { + + @Getter + private final MachineDefinition definition; + @Getter + private final Map models; + @Nullable + @Getter + private final MultiPartUnbakedModel multiPart; + @Getter + private final List> dynamicRenders; + private final Set replaceableTextures; + private final Map textureOverrides; + + public UnbakedMachineModel(MachineDefinition definition, + Map models, + @Nullable MultiPartUnbakedModel multiPart, + List> dynamicRenders, + + Set replaceableTextures, + Map textureOverrides) { + this.definition = definition; + this.models = models; + this.multiPart = multiPart; + this.dynamicRenders = dynamicRenders; + this.replaceableTextures = replaceableTextures; + this.textureOverrides = textureOverrides; + } + + @Override + public BakedModel bake(IGeometryBakingContext context, ModelBaker baker, + Function spriteGetter, ModelState modelState, + ItemOverrides overrides, ResourceLocation modelLocation) { + Map textureOverrides = new HashMap<>(); + for (var entry : this.textureOverrides.entrySet()) { + Material material = new Material(TextureAtlas.LOCATION_BLOCKS, entry.getValue()); + textureOverrides.put(entry.getKey(), spriteGetter.apply(material)); + } + + Map baseModels = new IdentityHashMap<>(); + models.forEach((machineState, unbaked) -> { + baseModels.put(machineState, unbaked.bake(baker, spriteGetter, modelState, modelLocation)); + }); + MultiPartBakedModel multiPart = this.multiPart == null ? null : + this.multiPart.bake(baker, spriteGetter, modelState, modelLocation); + + MachineModel model = new MachineModel(this.getDefinition(), baseModels, multiPart, this.dynamicRenders, + context.getTransforms(), context.getRootTransform(), modelState, + context.isGui3d(), context.useBlockLight(), context.useAmbientOcclusion()); + + if (context.hasMaterial("particle")) { + model.setParticleIcon(spriteGetter.apply(context.getMaterial("particle"))); + } + model.setReplaceableTextures(this.replaceableTextures); + model.setTextureOverrides(textureOverrides); + return model; + } + + @Override + public void resolveParents(Function resolver, IGeometryBakingContext context) { + MachineModelLoader.resolveStateModels(this, resolver); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/AndPartCondition.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/AndPartCondition.java new file mode 100644 index 00000000000..b2a9f6ddcf7 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/AndPartCondition.java @@ -0,0 +1,28 @@ +package com.gregtechceu.gtceu.client.model.machine.multipart; + +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; + +import net.minecraft.world.level.block.state.StateDefinition; + +import com.google.common.collect.Streams; + +import java.util.List; +import java.util.function.Predicate; + +public class AndPartCondition implements PartCondition { + + public static final String TOKEN = "AND"; + private final Iterable conditions; + + public AndPartCondition(Iterable conditions) { + this.conditions = conditions; + } + + public Predicate getPredicate(StateDefinition def) { + List> predicates = Streams.stream(this.conditions) + .map((condition) -> condition.getPredicate(def)) + .toList(); + return (state) -> predicates.stream().allMatch((p) -> p.test(state)); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/KeyValuePartCondition.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/KeyValuePartCondition.java new file mode 100644 index 00000000000..3c7aa3489fe --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/KeyValuePartCondition.java @@ -0,0 +1,76 @@ +package com.gregtechceu.gtceu.client.model.machine.multipart; + +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; + +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.Property; + +import com.google.common.base.Splitter; + +import java.util.List; +import java.util.Locale; +import java.util.Optional; +import java.util.function.Predicate; + +public class KeyValuePartCondition implements PartCondition { + + private static final Splitter PIPE_SPLITTER = Splitter.on('|').omitEmptyStrings(); + private final String key; + private final String value; + + public KeyValuePartCondition(String key, String value) { + this.key = key; + this.value = value; + } + + public Predicate getPredicate(StateDefinition def) { + Property property = def.getProperty(this.key); + if (property == null) { + throw new RuntimeException( + String.format(Locale.ROOT, "Unknown property '%s' on machine '%s'", this.key, def.getOwner())); + } else { + String value = this.value; + boolean invert = !value.isEmpty() && value.charAt(0) == '!'; + if (invert) { + value = value.substring(1); + } + + List unparsedPredicates = PIPE_SPLITTER.splitToList(value); + if (unparsedPredicates.isEmpty()) { + throw new RuntimeException( + String.format(Locale.ROOT, "Empty value '%s' for property '%s' on machine '%s'", + this.value, this.key, def.getOwner())); + } else { + Predicate predicate; + if (unparsedPredicates.size() == 1) { + predicate = this.getStatePredicate(def, property, value); + } else { + List> parsed = unparsedPredicates.stream() + .map((string) -> this.getStatePredicate(def, property, string)) + .toList(); + predicate = (state) -> parsed.stream().anyMatch((p) -> p.test(state)); + } + + return invert ? predicate.negate() : predicate; + } + } + } + + private Predicate getStatePredicate(StateDefinition def, + Property property, String value) { + Optional optional = property.getValue(value); + if (optional.isEmpty()) { + throw new RuntimeException( + String.format(Locale.ROOT, "Unknown value '%s' for property '%s' on '%s' in '%s'", + value, this.key, def.getOwner(), this.value)); + } else { + return (state) -> state.getValue(property).equals(optional.get()); + } + } + + @Override + public String toString() { + return "KeyValueCondition{" + "key='" + key + "', value='" + value + "'}"; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartBakedModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartBakedModel.java new file mode 100644 index 00000000000..2835f96414f --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartBakedModel.java @@ -0,0 +1,225 @@ +package com.gregtechceu.gtceu.client.model.machine.multipart; + +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; + +import net.minecraft.Util; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.block.model.ItemOverrides; +import net.minecraft.client.renderer.block.model.ItemTransforms; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.client.ChunkRenderTypeSet; +import net.minecraftforge.client.model.IDynamicBakedModel; +import net.minecraftforge.client.model.data.ModelData; +import net.minecraftforge.client.model.data.MultipartModelData; + +import com.mojang.blaze3d.vertex.PoseStack; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenCustomHashMap; +import lombok.Getter; +import lombok.experimental.Accessors; +import org.apache.commons.lang3.tuple.Pair; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.*; +import java.util.function.Predicate; + +import static com.gregtechceu.gtceu.api.machine.IMachineBlockEntity.*; + +public class MultiPartBakedModel implements IDynamicBakedModel { + + private final List, BakedModel>> selectors; + protected final boolean hasAmbientOcclusion; + @Getter + protected final boolean isGui3d; + @Accessors(fluent = true) + @Getter + protected final boolean usesBlockLight; + @Getter + protected final TextureAtlasSprite particleIcon; + @Getter + protected final ItemTransforms transforms; + @Getter + protected final ItemOverrides overrides; + private final Map selectorCache = new Object2ObjectOpenCustomHashMap<>( + Util.identityStrategy()); + private final BakedModel defaultModel; + + @SuppressWarnings("deprecation") + public MultiPartBakedModel(List, BakedModel>> selectors) { + this.selectors = selectors; + BakedModel defaultModel = selectors.iterator().next().getRight(); + this.defaultModel = defaultModel; + this.hasAmbientOcclusion = defaultModel.useAmbientOcclusion(); + this.isGui3d = defaultModel.isGui3d(); + this.usesBlockLight = defaultModel.usesBlockLight(); + this.particleIcon = defaultModel.getParticleIcon(); + this.transforms = defaultModel.getTransforms(); + this.overrides = defaultModel.getOverrides(); + } + + public BitSet getSelectors(@Nullable MachineRenderState state) { + BitSet bitset = this.selectorCache.get(state); + if (bitset == null) { + bitset = new BitSet(); + + for (int i = 0; i < this.selectors.size(); ++i) { + Pair, BakedModel> pair = this.selectors.get(i); + if (pair.getLeft().test(state)) { + bitset.set(i); + } + } + + this.selectorCache.put(state, bitset); + } + return bitset; + } + + @Override + public List getQuads(@Nullable BlockState state, @Nullable Direction side, + RandomSource rand, ModelData modelData, @Nullable RenderType renderType) { + return defaultModel.getQuads(state, side, rand, modelData, renderType); + } + + public List getMachineQuads(MachineDefinition definition, MachineRenderState renderState, + @Nullable BlockState blockState, @Nullable Direction direction, + RandomSource random, ModelData modelData, @Nullable RenderType renderType) { + if (blockState == null) blockState = definition.defaultBlockState(); + + BitSet bitset = getSelectors(renderState); + List quads = new LinkedList<>(); + long k = random.nextLong(); + + for (int j = 0; j < bitset.length(); ++j) { + if (bitset.get(j)) { + var model = this.selectors.get(j).getRight(); + + ModelData partData = MultipartModelData.resolve(modelData, model); + if (renderType == null || model.getRenderTypes(blockState, random, partData).contains(renderType)) { + quads.addAll(model.getQuads(blockState, direction, RandomSource.create(k), partData, renderType)); + } + } + } + + return quads; + } + + @Override + public ChunkRenderTypeSet getRenderTypes(BlockState state, RandomSource rand, ModelData modelData) { + BlockAndTintGetter level = modelData.get(MODEL_DATA_LEVEL); + BlockPos pos = modelData.get(MODEL_DATA_POS); + + var machine = (level == null || pos == null) ? null : MetaMachine.getMachine(level, pos); + if (machine == null) return IDynamicBakedModel.super.getRenderTypes(state, rand, modelData); + + var renderTypeSets = new LinkedList(); + var selectors = getSelectors(machine.getRenderState()); + for (int i = 0; i < selectors.length(); i++) { + if (selectors.get(i)) { + BakedModel model = this.selectors.get(i).getRight(); + + ModelData partData = MultipartModelData.resolve(modelData, model); + renderTypeSets.add(model.getRenderTypes(state, rand, partData)); + } + } + return ChunkRenderTypeSet.union(renderTypeSets); + } + + @Override + public ModelData getModelData(BlockAndTintGetter level, BlockPos pos, BlockState state, ModelData modelData) { + ModelData.Builder builder = modelData.derive() + .with(MODEL_DATA_LEVEL, level) + .with(MODEL_DATA_POS, pos); + + var machine = MetaMachine.getMachine(level, pos); + if (machine == null) return builder.build(); + + addMachineModelData(machine.getRenderState(), level, pos, state, modelData, builder); + return builder.build(); + } + + public void addMachineModelData(MachineRenderState renderState, BlockAndTintGetter level, BlockPos pos, + BlockState state, ModelData baseData, ModelData.Builder builder) { + MultipartModelData.Builder multiPartData = MultipartModelData.builder(); + + var selectors = getSelectors(renderState); + for (int i = 0; i < selectors.length(); i++) { + if (selectors.get(i)) { + BakedModel model = this.selectors.get(i).getRight(); + multiPartData.with(model, model.getModelData(level, pos, state, baseData)); + } + } + builder.with(MultipartModelData.PROPERTY, multiPartData.build()); + } + + @Override + public boolean useAmbientOcclusion() { + return this.hasAmbientOcclusion; + } + + @Override + public boolean useAmbientOcclusion(BlockState state) { + return this.defaultModel.useAmbientOcclusion(state); + } + + @Override + public boolean useAmbientOcclusion(BlockState state, net.minecraft.client.renderer.RenderType renderType) { + return this.defaultModel.useAmbientOcclusion(state, renderType); + } + + @Override + public boolean isCustomRenderer() { + return false; + } + + @Override + public TextureAtlasSprite getParticleIcon(ModelData modelData) { + BlockAndTintGetter level = modelData.get(MODEL_DATA_LEVEL); + BlockPos pos = modelData.get(MODEL_DATA_POS); + + var machine = (level == null || pos == null) ? null : MetaMachine.getMachine(level, pos); + if (machine != null) return getParticleIcon(machine.getRenderState(), modelData); + else return this.defaultModel.getParticleIcon(modelData); + } + + public TextureAtlasSprite getParticleIcon(@NotNull MachineRenderState renderState, ModelData modelData) { + var selectors = getSelectors(renderState); + for (int i = 0; i < selectors.length(); i++) { + if (selectors.get(i)) { + BakedModel model = this.selectors.get(i).getRight(); + ModelData partData = MultipartModelData.resolve(modelData, model); + + return model.getParticleIcon(partData); + } + } + return this.defaultModel.getParticleIcon(modelData); + } + + @Override + public BakedModel applyTransform(ItemDisplayContext transformType, PoseStack poseStack, + boolean applyLeftHandTransform) { + return this.defaultModel.applyTransform(transformType, poseStack, applyLeftHandTransform); + } + + public static class Builder { + + private final List, BakedModel>> selectors = new ArrayList<>(); + + public void add(Predicate predicate, BakedModel model) { + this.selectors.add(Pair.of(predicate, model)); + } + + public MultiPartBakedModel build() { + return new MultiPartBakedModel(this.selectors); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartSelector.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartSelector.java new file mode 100644 index 00000000000..955f29e579e --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartSelector.java @@ -0,0 +1,88 @@ +package com.gregtechceu.gtceu.client.model.machine.multipart; + +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; +import com.gregtechceu.gtceu.client.model.machine.variant.MultiVariantModel; + +import net.minecraft.client.resources.model.ModelState; +import net.minecraft.util.GsonHelper; +import net.minecraft.world.level.block.state.StateDefinition; + +import com.google.common.collect.Streams; +import com.google.gson.*; +import lombok.Getter; + +import java.lang.reflect.Type; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.function.Predicate; +import java.util.stream.Collectors; + +public class MultiPartSelector implements ModelState { + + private final PartCondition condition; + @Getter + private final MultiVariantModel variant; + + public MultiPartSelector(PartCondition condition, MultiVariantModel variant) { + this.condition = condition; + this.variant = variant; + } + + public Predicate getPredicate(StateDefinition definition) { + return this.condition.getPredicate(definition); + } + + public static class Deserializer implements JsonDeserializer { + + public MultiPartSelector deserialize(JsonElement json, + Type type, JsonDeserializationContext context) throws JsonParseException { + return fromJson(json, context); + } + + public static MultiPartSelector fromJson(JsonElement json, + JsonDeserializationContext context) throws JsonParseException { + JsonObject jsonobject = json.getAsJsonObject(); + return new MultiPartSelector(getSelector(jsonobject), + context.deserialize(jsonobject.get("apply"), MultiVariantModel.class)); + } + + private static PartCondition getSelector(JsonObject json) { + return json.has("when") ? + getCondition(GsonHelper.getAsJsonObject(json, "when")) : + PartCondition.TRUE; + } + + private static PartCondition getCondition(JsonObject json) { + Set> entries = json.entrySet(); + if (entries.isEmpty()) { + throw new JsonParseException("No elements found in selector"); + } else if (entries.size() == 1) { + if (json.has(OrPartCondition.TOKEN)) { + List conditions = Streams + .stream(GsonHelper.getAsJsonArray(json, OrPartCondition.TOKEN)) + .map((e) -> getCondition(e.getAsJsonObject())) + .toList(); + return new OrPartCondition(conditions); + } else if (json.has(AndPartCondition.TOKEN)) { + List conditions = Streams + .stream(GsonHelper.getAsJsonArray(json, AndPartCondition.TOKEN)) + .map((e) -> getCondition(e.getAsJsonObject())) + .toList(); + return new AndPartCondition(conditions); + } else { + return getKeyValueCondition(entries.iterator().next()); + } + } else { + return new AndPartCondition(entries.stream() + .map(MultiPartSelector.Deserializer::getKeyValueCondition) + .collect(Collectors.toList())); + } + } + + private static PartCondition getKeyValueCondition(Map.Entry entry) { + return new KeyValuePartCondition(entry.getKey(), entry.getValue().getAsString()); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartUnbakedModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartUnbakedModel.java new file mode 100644 index 00000000000..ad409961090 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartUnbakedModel.java @@ -0,0 +1,70 @@ +package com.gregtechceu.gtceu.client.model.machine.multipart; + +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.client.model.machine.MachineModelLoader; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; +import com.gregtechceu.gtceu.client.model.machine.variant.MultiVariantModel; + +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.*; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.state.StateDefinition; + +import com.google.gson.*; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +public record MultiPartUnbakedModel(StateDefinition definition, + List selectors) + implements UnbakedModel { + + public Set getModels() { + Set set = new HashSet<>(); + + for (MultiPartSelector selector : this.selectors()) { + set.add(selector.getVariant()); + } + return set; + } + + @Override + public Collection getDependencies() { + return this.selectors().stream() + .flatMap((selector) -> selector.getVariant().getDependencies().stream()) + .collect(Collectors.toSet()); + } + + @Override + public void resolveParents(Function resolver) { + this.selectors().forEach((selector) -> selector.getVariant().resolveParents(resolver)); + } + + @Override + public MultiPartBakedModel bake(ModelBaker baker, Function spriteGetter, + ModelState state, ResourceLocation location) { + MultiPartBakedModel.Builder builder = new MultiPartBakedModel.Builder(); + + for (MultiPartSelector selector : this.selectors()) { + BakedModel bakedmodel = selector.getVariant().bake(baker, spriteGetter, state, location); + if (bakedmodel != null) { + builder.add(selector.getPredicate(this.definition), bakedmodel); + } + } + return builder.build(); + } + + public static MultiPartUnbakedModel deserialize(MachineDefinition definition, JsonArray elements) { + return new MultiPartUnbakedModel(definition.getStateDefinition(), getSelectors(elements)); + } + + private static List getSelectors(JsonArray elements) { + List list = new ArrayList<>(); + + for (JsonElement e : elements) { + list.add(MachineModelLoader.GSON.fromJson(e, MultiPartSelector.class)); + } + return list; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/OrPartCondition.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/OrPartCondition.java new file mode 100644 index 00000000000..cf124314c79 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/OrPartCondition.java @@ -0,0 +1,28 @@ +package com.gregtechceu.gtceu.client.model.machine.multipart; + +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; + +import net.minecraft.world.level.block.state.StateDefinition; + +import com.google.common.collect.Streams; + +import java.util.List; +import java.util.function.Predicate; + +public class OrPartCondition implements PartCondition { + + public static final String TOKEN = "OR"; + private final Iterable conditions; + + public OrPartCondition(Iterable conditions) { + this.conditions = conditions; + } + + public Predicate getPredicate(StateDefinition def) { + List> predicates = Streams.stream(this.conditions) + .map((condition) -> condition.getPredicate(def)) + .toList(); + return (state) -> predicates.stream().anyMatch((p) -> p.test(state)); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/PartCondition.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/PartCondition.java new file mode 100644 index 00000000000..0c6fc180b49 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/PartCondition.java @@ -0,0 +1,17 @@ +package com.gregtechceu.gtceu.client.model.machine.multipart; + +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; + +import net.minecraft.world.level.block.state.StateDefinition; + +import java.util.function.Predicate; + +@FunctionalInterface +public interface PartCondition { + + PartCondition TRUE = (definition) -> state -> true; + PartCondition FALSE = (definition) -> state -> false; + + Predicate getPredicate(StateDefinition def); +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/package-info.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/package-info.java new file mode 100644 index 00000000000..a12c8c38e52 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package com.gregtechceu.gtceu.client.model.machine.multipart; + +import net.minecraft.MethodsReturnNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/EnergyIOOverlay.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/EnergyIOOverlay.java new file mode 100644 index 00000000000..22f87c63a89 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/EnergyIOOverlay.java @@ -0,0 +1,86 @@ +package com.gregtechceu.gtceu.client.model.machine.overlays; + +import com.gregtechceu.gtceu.GTCEu; + +import net.minecraft.Util; +import net.minecraft.resources.ResourceLocation; + +import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import lombok.Getter; + +public class EnergyIOOverlay { + + public static final EnergyIOOverlay ENERGY_IN_1A = new EnergyIOOverlay( + "block/overlay/machine/overlay_energy_1a_tinted", "block/overlay/machine/overlay_energy_1a_in", + "block/overlay/machine/overlay_energy_1a_in_emissive"); + public static final EnergyIOOverlay ENERGY_IN_2A = new EnergyIOOverlay( + "block/overlay/machine/overlay_energy_2a_tinted", "block/overlay/machine/overlay_energy_2a_in", + "block/overlay/machine/overlay_energy_2a_in_emissive"); + public static final EnergyIOOverlay ENERGY_IN_4A = new EnergyIOOverlay( + "block/overlay/machine/overlay_energy_4a_tinted", "block/overlay/machine/overlay_energy_4a_in", + "block/overlay/machine/overlay_energy_4a_in_emissive"); + public static final EnergyIOOverlay ENERGY_IN_8A = new EnergyIOOverlay( + "block/overlay/machine/overlay_energy_8a_tinted", "block/overlay/machine/overlay_energy_8a_in", + "block/overlay/machine/overlay_energy_8a_in_emissive"); + public static final EnergyIOOverlay ENERGY_IN_16A = new EnergyIOOverlay( + "block/overlay/machine/overlay_energy_16a_tinted", "block/overlay/machine/overlay_energy_16a_in", + "block/overlay/machine/overlay_energy_16a_in_emissive"); + public static final EnergyIOOverlay ENERGY_IN_64A = new EnergyIOOverlay( + "block/overlay/machine/overlay_energy_64a_tinted", "block/overlay/machine/overlay_energy_64a_in", + "block/overlay/machine/overlay_energy_64a_in_emissive"); + + public static final EnergyIOOverlay ENERGY_OUT_1A = new EnergyIOOverlay( + "block/overlay/machine/overlay_energy_1a_tinted", "block/overlay/machine/overlay_energy_1a_out", + "block/overlay/machine/overlay_energy_1a_out_emissive"); + public static final EnergyIOOverlay ENERGY_OUT_2A = new EnergyIOOverlay( + "block/overlay/machine/overlay_energy_2a_tinted", "block/overlay/machine/overlay_energy_2a_out", + "block/overlay/machine/overlay_energy_2a_out_emissive"); + public static final EnergyIOOverlay ENERGY_OUT_4A = new EnergyIOOverlay( + "block/overlay/machine/overlay_energy_4a_tinted", "block/overlay/machine/overlay_energy_4a_out", + "block/overlay/machine/overlay_energy_4a_out_emissive"); + public static final EnergyIOOverlay ENERGY_OUT_8A = new EnergyIOOverlay( + "block/overlay/machine/overlay_energy_8a_tinted", "block/overlay/machine/overlay_energy_8a_out", + "block/overlay/machine/overlay_energy_8a_out_emissive"); + public static final EnergyIOOverlay ENERGY_OUT_16A = new EnergyIOOverlay( + "block/overlay/machine/overlay_energy_16a_tinted", "block/overlay/machine/overlay_energy_16a_out", + "block/overlay/machine/overlay_energy_16a_out_emissive"); + public static final EnergyIOOverlay ENERGY_OUT_64A = new EnergyIOOverlay( + "block/overlay/machine/overlay_energy_64a_tinted", "block/overlay/machine/overlay_energy_64a_out", + "block/overlay/machine/overlay_energy_64a_out_emissive"); + + public static final Int2ObjectMap IN_OVERLAYS_FOR_AMP = Util.make(new Int2ObjectArrayMap<>(6), + map -> { + map.put(1, ENERGY_IN_1A); + map.put(2, ENERGY_IN_2A); + map.put(4, ENERGY_IN_4A); + map.put(8, ENERGY_IN_8A); + map.put(16, ENERGY_IN_16A); + map.put(64, ENERGY_IN_64A); + map.defaultReturnValue(ENERGY_IN_1A); + }); + + public static final Int2ObjectMap OUT_OVERLAYS_FOR_AMP = Util.make(new Int2ObjectArrayMap<>(6), + map -> { + map.put(1, ENERGY_OUT_1A); + map.put(2, ENERGY_OUT_2A); + map.put(4, ENERGY_OUT_4A); + map.put(8, ENERGY_OUT_8A); + map.put(16, ENERGY_OUT_16A); + map.put(64, ENERGY_OUT_64A); + map.defaultReturnValue(ENERGY_OUT_1A); + }); + + @Getter + private final ResourceLocation tintedPart; + @Getter + private final ResourceLocation ioPart; + @Getter + private final ResourceLocation ioPartEmissive; + + public EnergyIOOverlay(String tintedPart, String ioPart, String ioPartEmissive) { + this.tintedPart = GTCEu.id(tintedPart); + this.ioPart = GTCEu.id(ioPart); + this.ioPartEmissive = GTCEu.id(ioPartEmissive); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/HPCAOverlay.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/HPCAOverlay.java new file mode 100644 index 00000000000..3ea09f9003c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/HPCAOverlay.java @@ -0,0 +1,97 @@ +package com.gregtechceu.gtceu.client.model.machine.overlays; + +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic.Status; +import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; +import com.gregtechceu.gtceu.common.data.models.GTModels; + +import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.common.data.ExistingFileHelper; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.EnumMap; +import java.util.Map; + +import javax.annotation.ParametersAreNonnullByDefault; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +public class HPCAOverlay { + + // spotless:off + public static HPCAOverlay get(ResourceLocation normalSprite, ResourceLocation damagedSprite, + ExistingFileHelper fileHelper) { + // normal + if (!fileHelper.exists(normalSprite, GTBlockstateProvider.TEXTURE)) { + return HPCAOverlay.EMPTY; + } + ResourceLocation activeSprite = normalSprite.withSuffix("_active"); + if (!fileHelper.exists(activeSprite, GTBlockstateProvider.TEXTURE)) activeSprite = normalSprite; + + ResourceLocation damagedActiveSprite = damagedSprite.withSuffix("_active"); + if (!fileHelper.exists(damagedActiveSprite, GTBlockstateProvider.TEXTURE)) damagedActiveSprite = damagedSprite; + + // emissive + ResourceLocation normalSpriteEmissive = normalSprite.withSuffix("_emissive"); + if (!fileHelper.exists(normalSpriteEmissive, GTBlockstateProvider.TEXTURE)) normalSpriteEmissive = null; + + ResourceLocation activeSpriteEmissive = activeSprite.withSuffix("_emissive"); + if (!fileHelper.exists(activeSpriteEmissive, GTBlockstateProvider.TEXTURE)) activeSpriteEmissive = null; + + ResourceLocation damagedSpriteEmissive = damagedSprite.withSuffix("_emissive"); + if (!fileHelper.exists(damagedSpriteEmissive, GTBlockstateProvider.TEXTURE)) damagedSpriteEmissive = null; + + ResourceLocation damagedActiveSpriteEmissive = damagedActiveSprite.withSuffix("_emissive"); + if (!fileHelper.exists(damagedActiveSpriteEmissive, GTBlockstateProvider.TEXTURE)) damagedActiveSpriteEmissive = null; + + return new HPCAOverlay(normalSprite, activeSprite, damagedSprite, damagedActiveSprite, + normalSpriteEmissive, activeSpriteEmissive, damagedSpriteEmissive, damagedActiveSpriteEmissive); + } + // spotless:on + + public static final HPCAOverlay EMPTY = new HPCAOverlay(); + + private final Map textures = new EnumMap<>(Status.class); + private final Map emissiveTextures = new EnumMap<>(Status.class); + + public HPCAOverlay(@Nullable ResourceLocation normalSprite, + @Nullable ResourceLocation activeSprite, + @Nullable ResourceLocation damagedSprite, + @Nullable ResourceLocation damagedActiveSprite, + @Nullable ResourceLocation normalSpriteEmissive, + @Nullable ResourceLocation activeSpriteEmissive, + @Nullable ResourceLocation damagedSpriteEmissive, + @Nullable ResourceLocation damagedActiveSpriteEmissive) { + textures.put(Status.IDLE, normalSprite); + emissiveTextures.put(Status.IDLE, normalSpriteEmissive); + + textures.put(Status.WORKING, activeSprite); + emissiveTextures.put(Status.WORKING, activeSpriteEmissive); + + textures.put(Status.WAITING, damagedActiveSprite); + emissiveTextures.put(Status.WAITING, damagedActiveSpriteEmissive); + textures.put(Status.SUSPEND, damagedSprite); + emissiveTextures.put(Status.SUSPEND, damagedSpriteEmissive); + } + + private HPCAOverlay() {} + + private static Status getStatus(boolean active, boolean damaged) { + if (damaged && active) return Status.WAITING; + else if (damaged) return Status.SUSPEND; + else if (active) return Status.WORKING; + else return Status.IDLE; + } + + public @NotNull ResourceLocation getTexture(boolean active, boolean damaged) { + ResourceLocation value = textures.get(getStatus(active, damaged)); + return value != null ? value : GTModels.BLANK_TEXTURE; + } + + public @NotNull ResourceLocation getEmissiveTexture(boolean active, boolean damaged) { + ResourceLocation value = emissiveTextures.get(getStatus(active, damaged)); + return value != null ? value : GTModels.BLANK_TEXTURE; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/WorkableOverlays.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/WorkableOverlays.java new file mode 100644 index 00000000000..bf09a89f026 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/WorkableOverlays.java @@ -0,0 +1,134 @@ +package com.gregtechceu.gtceu.client.model.machine.overlays; + +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic.Status; +import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; +import com.gregtechceu.gtceu.common.data.models.GTMachineModels; +import com.gregtechceu.gtceu.common.data.models.GTModels; + +import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.common.data.ExistingFileHelper; + +import lombok.Getter; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.*; + +import javax.annotation.ParametersAreNonnullByDefault; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +public class WorkableOverlays { + + public static WorkableOverlays get(ResourceLocation textureDir, ExistingFileHelper fileHelper) { + WorkableOverlays model = new WorkableOverlays(textureDir); + + for (OverlayFace overlayFace : OverlayFace.VALUES) { + final String overlayPath = "/" + GTMachineModels.OVERLAY_PREFIX + overlayFace.getName(); + + // normal + var normalSprite = textureDir.withSuffix(overlayPath); + if (!fileHelper.exists(normalSprite, GTBlockstateProvider.TEXTURE)) { + model.textures.put(overlayFace, StatusTextures.EMPTY); + continue; + } + ResourceLocation activeSprite = normalSprite.withSuffix("_active"); + if (!fileHelper.exists(activeSprite, GTBlockstateProvider.TEXTURE)) activeSprite = normalSprite; + + ResourceLocation pausedSprite = normalSprite.withSuffix("_paused"); + if (!fileHelper.exists(pausedSprite, GTBlockstateProvider.TEXTURE)) pausedSprite = normalSprite; + + // emissive + ResourceLocation normalSpriteEmissive = normalSprite.withSuffix("_emissive"); + if (!fileHelper.exists(normalSpriteEmissive, GTBlockstateProvider.TEXTURE)) normalSpriteEmissive = null; + + ResourceLocation activeSpriteEmissive = activeSprite.withSuffix("_emissive"); + if (!fileHelper.exists(activeSpriteEmissive, GTBlockstateProvider.TEXTURE)) activeSpriteEmissive = null; + + ResourceLocation pausedSpriteEmissive = pausedSprite.withSuffix("_emissive"); + if (!fileHelper.exists(pausedSpriteEmissive, GTBlockstateProvider.TEXTURE)) pausedSpriteEmissive = null; + + model.textures.put(overlayFace, new StatusTextures(normalSprite, activeSprite, pausedSprite, + normalSpriteEmissive, activeSpriteEmissive, pausedSpriteEmissive)); + } + return model; + } + + @Getter + private final ResourceLocation location; + + @Getter + private final Map textures = new EnumMap<>(OverlayFace.class); + + public WorkableOverlays(ResourceLocation location) { + this.location = location; + } + + public enum OverlayFace { + + FRONT, + BACK, + TOP, + BOTTOM, + SIDE; + + public static final OverlayFace[] VALUES = values(); + + public static OverlayFace bySide(Direction side) { + return switch (side) { + case DOWN -> BOTTOM; + case UP -> TOP; + case NORTH -> FRONT; + case SOUTH -> BACK; + case WEST, EAST -> SIDE; + }; + } + + public String getName() { + return this.name().toLowerCase(Locale.ROOT); + } + } + + @OnlyIn(Dist.CLIENT) + public static class StatusTextures { + + public static final StatusTextures EMPTY = new StatusTextures(); + + private final Map textures = new EnumMap<>(Status.class); + private final Map emissiveTextures = new EnumMap<>(Status.class); + + public StatusTextures(@Nullable ResourceLocation normalSprite, + @Nullable ResourceLocation activeSprite, + @Nullable ResourceLocation pausedSprite, + @Nullable ResourceLocation normalSpriteEmissive, + @Nullable ResourceLocation activeSpriteEmissive, + @Nullable ResourceLocation pausedSpriteEmissive) { + textures.put(Status.IDLE, normalSprite); + emissiveTextures.put(Status.IDLE, normalSpriteEmissive); + + textures.put(Status.WORKING, activeSprite); + emissiveTextures.put(Status.WORKING, activeSpriteEmissive); + textures.put(Status.WAITING, activeSprite); + emissiveTextures.put(Status.WAITING, activeSpriteEmissive); + + textures.put(Status.SUSPEND, pausedSprite); + emissiveTextures.put(Status.SUSPEND, pausedSpriteEmissive); + } + + private StatusTextures() {} + + public @NotNull ResourceLocation getTexture(@NotNull Status status) { + ResourceLocation value = textures.get(status); + return value != null ? value : GTModels.BLANK_TEXTURE; + } + + public @NotNull ResourceLocation getEmissiveTexture(@NotNull Status status) { + ResourceLocation value = emissiveTextures.get(status); + return value != null ? value : GTModels.BLANK_TEXTURE; + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/package-info.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/package-info.java new file mode 100644 index 00000000000..b33bc67f7be --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package com.gregtechceu.gtceu.client.model.machine; + +import net.minecraft.MethodsReturnNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/variant/MultiVariantModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/variant/MultiVariantModel.java new file mode 100644 index 00000000000..ef54f56a960 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/variant/MultiVariantModel.java @@ -0,0 +1,91 @@ +package com.gregtechceu.gtceu.client.model.machine.variant; + +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.*; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.SimpleModelState; + +import com.google.gson.*; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public record MultiVariantModel(List variants) implements UnbakedModel { + + public boolean equals(Object other) { + if (this == other) { + return true; + } else if (other instanceof MultiVariantModel model) { + return this.variants.equals(model.variants); + } else { + return false; + } + } + + public @NotNull Collection getDependencies() { + return this.variants.stream() + .map(VariantState::getModel) + .flatMap(either -> either.map(Stream::of, model -> model.getDependencies().stream())) + .collect(Collectors.toSet()); + } + + public void resolveParents(@NotNull Function resolver) { + this.variants.forEach((variant) -> { + UnbakedModel model = variant.getModel().map(resolver, Function.identity()); + variant.setResolvedModel(model); + model.resolveParents(resolver); + }); + } + + public @Nullable BakedModel bake(@NotNull ModelBaker baker, + @NotNull Function spriteGetter, + @NotNull ModelState state, @NotNull ResourceLocation location) { + if (this.variants.isEmpty()) { + return null; + } else { + WeightedBakedModel.Builder weightedBuilder = new WeightedBakedModel.Builder(); + + for (VariantState variant : this.variants) { + // rotate the transform by both the variant and the original blockstate rotation + var actualRotation = state.getRotation().compose(variant.getRotation()); + var actualState = new SimpleModelState(actualRotation, variant.isUvLocked()); + + BakedModel baked = variant.getResolvedModel().bake(baker, spriteGetter, actualState, location); + weightedBuilder.add(baked, variant.getWeight()); + } + return weightedBuilder.build(); + } + } + + @OnlyIn(Dist.CLIENT) + public static class Deserializer implements JsonDeserializer { + + public MultiVariantModel deserialize(JsonElement json, Type type, JsonDeserializationContext context) + throws JsonParseException { + List variants = new ArrayList<>(); + if (json.isJsonArray()) { + JsonArray array = json.getAsJsonArray(); + if (array.isEmpty()) { + throw new JsonParseException("Empty variant array"); + } + + for (JsonElement v : array) { + variants.add(context.deserialize(v, VariantState.class)); + } + } else { + variants.add(context.deserialize(json, VariantState.class)); + } + + return new MultiVariantModel(variants); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/variant/VariantState.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/variant/VariantState.java new file mode 100644 index 00000000000..3de267472fd --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/variant/VariantState.java @@ -0,0 +1,93 @@ +package com.gregtechceu.gtceu.client.model.machine.variant; + +import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; +import com.gregtechceu.gtceu.client.model.machine.MachineModelLoader; +import com.gregtechceu.gtceu.client.util.VariantRotationHelpers; + +import net.minecraft.client.resources.model.ModelState; +import net.minecraft.client.resources.model.UnbakedModel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.GsonHelper; + +import com.google.gson.*; +import com.mojang.datafixers.util.Either; +import com.mojang.math.Transformation; +import lombok.Getter; +import lombok.Setter; + +import java.lang.reflect.Type; +import java.util.Objects; + +public class VariantState implements ModelState { + + @Getter + private final Either model; + @Getter + private final Transformation rotation; + @Getter + private final boolean uvLocked; + @Getter + private final int weight; + @Getter + @Setter + private UnbakedModel resolvedModel; + + public VariantState(Either model, + Transformation rotation, boolean uvLocked, int weight) { + this.model = model; + this.rotation = rotation; + this.uvLocked = uvLocked; + this.weight = weight; + } + + public boolean equals(Object other) { + if (this == other) { + return true; + } else if (!(other instanceof VariantState variantState)) { + return false; + } else { + return this.model.equals(variantState.model) && + Objects.equals(this.rotation, variantState.rotation) && + this.uvLocked == variantState.uvLocked && + this.weight == variantState.weight; + } + } + + public int hashCode() { + int i = this.model.hashCode(); + i = 31 * i + this.rotation.hashCode(); + i = 31 * i + Boolean.valueOf(this.uvLocked).hashCode(); + return 31 * i + this.weight; + } + + public static class Deserializer implements JsonDeserializer { + + public VariantState deserialize(JsonElement json, Type type, JsonDeserializationContext context) + throws JsonParseException { + JsonObject obj = json.getAsJsonObject(); + var model = MachineModelLoader.parseVariant(obj.get("model"), context); + var rot = this.getBlockRotation(obj); + boolean isUvLock = GsonHelper.getAsBoolean(obj, "uvlock", false); + int weight = this.getWeight(obj); + return new VariantState(model, rot, isUvLock, weight); + } + + protected Transformation getBlockRotation(JsonObject json) { + int x = GsonHelper.getAsInt(json, "x", 0); + int y = GsonHelper.getAsInt(json, "y", 0); + int z = GsonHelper.getAsInt(json, GTBlockstateProvider.Z_ROT_PROPERTY_NAME, 0); + Transformation rotation = VariantRotationHelpers.getRotationTransform(x, y, z); + if (rotation != null) return rotation; + else throw new JsonParseException("Invalid ExtendedBlockModelRotation x: " + x + ", y: " + y + ", z: " + z); + } + + protected int getWeight(JsonObject json) { + int i = GsonHelper.getAsInt(json, "weight", 1); + if (i < 1) { + throw new JsonParseException("Invalid weight " + i + " found, expected integer >= 1"); + } else { + return i; + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/package-info.java b/src/main/java/com/gregtechceu/gtceu/client/model/package-info.java new file mode 100644 index 00000000000..756fd4d977e --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package com.gregtechceu.gtceu.client.model; + +import net.minecraft.MethodsReturnNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockEntityWithBERModelRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockEntityWithBERModelRenderer.java new file mode 100644 index 00000000000..f64a719b510 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockEntityWithBERModelRenderer.java @@ -0,0 +1,99 @@ +package com.gregtechceu.gtceu.client.renderer; + +import com.gregtechceu.gtceu.client.model.IBlockEntityRendererBakedModel; + +import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.block.BlockRenderDispatcher; +import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; +import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.core.BlockPos; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.data.ModelData; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; + +import javax.annotation.ParametersAreNonnullByDefault; + +@SuppressWarnings("unchecked") +@OnlyIn(Dist.CLIENT) +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +public class BlockEntityWithBERModelRenderer implements BlockEntityRenderer { + + private final BlockRenderDispatcher blockRenderDispatcher; + + public BlockEntityWithBERModelRenderer(BlockEntityRendererProvider.Context context) { + this.blockRenderDispatcher = context.getBlockRenderDispatcher(); + } + + @Override + public void render(T blockEntity, float partialTick, + PoseStack poseStack, MultiBufferSource buffer, + int packedLight, int packedOverlay) { + BlockState blockState = blockEntity.getBlockState(); + BakedModel model = blockRenderDispatcher.getBlockModel(blockState); + + if (model instanceof IBlockEntityRendererBakedModel berModel) { + if (berModel.getBlockEntityType() != blockEntity.getType()) return; + + ((IBlockEntityRendererBakedModel) berModel).render(blockEntity, partialTick, + poseStack, buffer, packedLight, packedOverlay); + } else { + Level level = blockEntity.getLevel(); + BlockPos pos = blockEntity.getBlockPos(); + + // noinspection DataFlowIssue,UnstableApiUsage + ModelData modelData = level.getModelDataManager().getAt(pos); + if (modelData == null) modelData = ModelData.EMPTY; + + long randomSeed = blockState.getSeed(pos); + RandomSource random = RandomSource.create(); + random.setSeed(randomSeed); + + for (RenderType renderType : model.getRenderTypes(blockState, random, modelData)) { + VertexConsumer consumer = buffer.getBuffer(renderType); + blockRenderDispatcher.getModelRenderer() + .tesselateBlock(level, model, blockState, pos, + poseStack, consumer, true, random, randomSeed, + OverlayTexture.NO_OVERLAY, modelData, renderType); + } + } + } + + @Override + public boolean shouldRenderOffScreen(T blockEntity) { + BlockState blockState = blockEntity.getBlockState(); + BakedModel model = blockRenderDispatcher.getBlockModel(blockState); + + if (model instanceof IBlockEntityRendererBakedModel berModel) { + if (berModel.getBlockEntityType() == blockEntity.getType()) { + return ((IBlockEntityRendererBakedModel) berModel).shouldRenderOffScreen(blockEntity); + } + } + return BlockEntityRenderer.super.shouldRenderOffScreen(blockEntity); + } + + @Override + public boolean shouldRender(T blockEntity, Vec3 cameraPos) { + BlockState blockState = blockEntity.getBlockState(); + BakedModel model = blockRenderDispatcher.getBlockModel(blockState); + + if (model instanceof IBlockEntityRendererBakedModel berModel) { + if (berModel.getBlockEntityType() == blockEntity.getType()) { + return ((IBlockEntityRendererBakedModel) berModel).shouldRender(blockEntity, cameraPos); + } + } + return BlockEntityRenderer.super.shouldRender(blockEntity, cameraPos); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockHighlightRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockHighlightRenderer.java index 52acef82540..305f9e91f0f 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockHighlightRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockHighlightRenderer.java @@ -8,16 +8,18 @@ import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.item.tool.IToolGridHighlight; import com.gregtechceu.gtceu.api.item.tool.ToolHelper; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.api.pipenet.IPipeType; +import com.gregtechceu.gtceu.client.util.PoseStackExtensions; +import com.gregtechceu.gtceu.client.util.RenderUtil; import com.gregtechceu.gtceu.common.item.CoverPlaceBehavior; import com.gregtechceu.gtceu.common.item.tool.rotation.CustomBlockRotations; -import com.gregtechceu.gtceu.core.mixins.GuiGraphicsAccessor; -import com.lowdragmc.lowdraglib.client.utils.RenderUtils; import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; import net.minecraft.client.Camera; import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.LightTexture; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.core.BlockPos; @@ -33,22 +35,20 @@ import net.minecraftforge.api.distmarker.OnlyIn; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.Tesselator; -import com.mojang.blaze3d.vertex.VertexConsumer; -import org.joml.Matrix4f; -import org.joml.Quaternionf; +import com.mojang.blaze3d.vertex.*; +import lombok.experimental.ExtensionMethod; +import org.jetbrains.annotations.Nullable; +import org.joml.Quaternionfc; import org.joml.Vector3f; +import org.joml.Vector3fc; import java.util.Set; import java.util.function.Function; -/** - * @author KilaBash - * @date 2023/2/24 - * @implNote BlockHighlightRenderer - */ +import static com.gregtechceu.gtceu.utils.GTMatrixUtils.*; + @OnlyIn(Dist.CLIENT) +@ExtensionMethod(PoseStackExtensions.class) public class BlockHighlightRenderer { public static void renderBlockHighlight(PoseStack poseStack, Camera camera, BlockHitResult target, @@ -59,10 +59,12 @@ public static void renderBlockHighlight(PoseStack poseStack, Camera camera, Bloc if (level != null && player != null) { ItemStack held = player.getMainHandItem(); BlockPos blockPos = target.getBlockPos(); + Vector3fc blockCenter = blockPos.getCenter().toVector3f(); Set toolType = ToolHelper.getToolTypes(held); BlockEntity blockEntity = level.getBlockEntity(blockPos); + Vec3 cameraPos = camera.getPosition(); // draw tool grid highlight if ((!toolType.isEmpty()) || (held.isEmpty() && player.isShiftKeyDown())) { IToolGridHighlight gridHighlight = null; @@ -76,8 +78,8 @@ public static void renderBlockHighlight(PoseStack poseStack, Camera camera, Bloc gridHighlight = new IToolGridHighlight() { @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, - Set toolTypes, Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, + Set toolTypes, Direction side) { return behavior.showSideTip(state, side) ? GuiTextures.TOOL_FRONT_FACING_ROTATION : null; } @@ -87,37 +89,36 @@ public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, if (gridHighlight == null) { return; } - var state = level.getBlockState(blockPos); - Vec3 pos = camera.getPosition(); + BlockState state = level.getBlockState(blockPos); poseStack.pushPose(); - poseStack.translate(-pos.x, -pos.y, -pos.z); if (gridHighlight.shouldRenderGrid(player, blockPos, state, held, toolType)) { - var buffer = multiBufferSource.getBuffer(RenderType.lines()); - RenderSystem.lineWidth(3); final IToolGridHighlight finalGridHighlight = gridHighlight; - drawGridOverlays(poseStack, buffer, target, + drawGridOverlays(poseStack, multiBufferSource, cameraPos, target, side -> finalGridHighlight.sideTips(player, blockPos, state, toolType, side)); } else { - var facing = target.getDirection(); + Direction facing = target.getDirection(); var texture = gridHighlight.sideTips(player, blockPos, state, toolType, facing); if (texture != null) { RenderSystem.disableDepthTest(); RenderSystem.enableBlend(); RenderSystem.defaultBlendFunc(); - poseStack.translate(facing.getStepX() * 0.01, facing.getStepY() * 0.01, - facing.getStepZ() * 0.01); - RenderUtils.moveToFace(poseStack, blockPos.getX(), blockPos.getY(), blockPos.getZ(), facing); + + poseStack.translate(facing.getStepX() * 0.01f, facing.getStepY() * 0.01f, + facing.getStepZ() * 0.01f); + poseStack.translate(-cameraPos.x(), -cameraPos.y(), -cameraPos.z()); + + RenderUtil.moveToFace(poseStack, blockCenter, facing); if (facing.getAxis() == Direction.Axis.Y) { - RenderUtils.rotateToFace(poseStack, facing, Direction.SOUTH); + RenderUtil.rotateToFace(poseStack, facing, Direction.SOUTH); } else { - RenderUtils.rotateToFace(poseStack, facing, null); + RenderUtil.rotateToFace(poseStack, facing, Direction.NORTH); } poseStack.scale(1f / 16, 1f / 16, 0); poseStack.translate(-8, -8, 0); - texture.copy() - .draw(GuiGraphicsAccessor.create(Minecraft.getInstance(), poseStack, - MultiBufferSource.immediate(Tesselator.getInstance().getBuilder())), 0, 0, 4, 4, - 8, 8); + + drawResourceTexture(poseStack, multiBufferSource, texture, 0xffffffff, + 4, 4, 8, 8); + RenderSystem.disableBlend(); RenderSystem.enableDepthTest(); } @@ -130,13 +131,9 @@ public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, ICoverable coverable = GTCapabilityHelper.getCoverable(level, blockPos, target.getDirection()); if (coverable != null && CoverPlaceBehavior.isCoverBehaviorItem(held, coverable::hasAnyCover, coverDef -> ICoverable.canPlaceCover(coverDef, coverable))) { - Vec3 pos = camera.getPosition(); poseStack.pushPose(); - poseStack.translate(-pos.x, -pos.y, -pos.z); - var buffer = multiBufferSource.getBuffer(RenderType.lines()); - RenderSystem.lineWidth(3); - drawGridOverlays(poseStack, buffer, target, + drawGridOverlays(poseStack, multiBufferSource, cameraPos, target, side -> coverable.hasCover(side) ? null : GuiTextures.TOOL_ATTACH_COVER); poseStack.popPose(); @@ -147,14 +144,11 @@ public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, null; if (pipeType instanceof IPipeType type && blockEntity instanceof PipeBlockEntity pipeBlockEntity && pipeBlockEntity.getPipeType().type().equals(type.type())) { - Vec3 pos = camera.getPosition(); poseStack.pushPose(); - poseStack.translate(-pos.x, -pos.y, -pos.z); - var buffer = multiBufferSource.getBuffer(RenderType.lines()); - RenderSystem.lineWidth(3); - drawGridOverlays(poseStack, buffer, target, side -> level.isEmptyBlock(blockPos.relative(side)) ? - pipeBlockEntity.getPipeTexture(true) : null); + drawGridOverlays(poseStack, multiBufferSource, cameraPos, target, + side -> level.isEmptyBlock(blockPos.relative(side)) ? + pipeBlockEntity.getPipeTexture(true) : null); poseStack.popPose(); } @@ -165,214 +159,143 @@ public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, private static float gColour; private static float bColour; - private static void drawGridOverlays(PoseStack poseStack, VertexConsumer buffer, BlockHitResult blockHitResult, - Function test) { + private static void drawGridOverlays(PoseStack poseStack, MultiBufferSource bufferSource, Vec3 cameraPos, + BlockHitResult blockHitResult, Function texture) { rColour = gColour = 0.2F + (float) Math.sin((System.currentTimeMillis() % (Mth.PI * 800)) / 800) / 2; bColour = 1f; - var blockPos = blockHitResult.getBlockPos(); - var facing = blockHitResult.getDirection(); - float maxX = blockPos.getX() + 1; + BlockPos blockPos = blockHitResult.getBlockPos(); float minX = blockPos.getX(); - float maxY = blockPos.getY() + 1; + float maxX = blockPos.getX() + 1; float minY = blockPos.getY(); + float maxY = blockPos.getY() + 1; float maxZ = blockPos.getZ() + 1.01f; - var attachSide = ICoverable.traceCoverSide(blockHitResult); - var topRight = new Vector3f(maxX, maxY, maxZ); - var bottomRight = new Vector3f(maxX, minY, maxZ); - var bottomLeft = new Vector3f(minX, minY, maxZ); - var topLeft = new Vector3f(minX, maxY, maxZ); - var shift = new Vector3f(0.25f, 0, 0); - var shiftVert = new Vector3f(0, 0.25f, 0); + Direction attachSide = ICoverable.traceCoverSide(blockHitResult); + Vector3f topRight = new Vector3f(maxX, maxY, maxZ); + Vector3f bottomRight = new Vector3f(maxX, minY, maxZ); + Vector3f bottomLeft = new Vector3f(minX, minY, maxZ); + Vector3f topLeft = new Vector3f(minX, maxY, maxZ); + Vector3f shiftX = new Vector3f(0.25f, 0, 0); + Vector3f shiftY = new Vector3f(0, 0.25f, 0); - var cubeCenter = blockPos.getCenter().toVector3f(); + Vector3f cubeCenter = blockPos.getCenter().toVector3f(); topRight.sub(cubeCenter); bottomRight.sub(cubeCenter); bottomLeft.sub(cubeCenter); topLeft.sub(cubeCenter); - ResourceTexture leftBlocked; - ResourceTexture topBlocked; - ResourceTexture rightBlocked; - ResourceTexture bottomBlocked; - ResourceTexture frontBlocked = test.apply(facing); - ResourceTexture backBlocked = test.apply(facing.getOpposite()); - boolean hoverLeft, hoverTop, hoverRight, hoverBottom, hoverFront, hoverBack; - hoverFront = attachSide == facing; - hoverBack = attachSide == facing.getOpposite(); - final Vector3f down = new Vector3f(0, -1, 0); - - switch (facing) { - case WEST -> { - topRight.rotate(new Quaternionf().rotateAxis(Mth.HALF_PI, down)); - bottomRight.rotate(new Quaternionf().rotateAxis(Mth.HALF_PI, down)); - bottomLeft.rotate(new Quaternionf().rotateAxis(Mth.HALF_PI, down)); - topLeft.rotate(new Quaternionf().rotateAxis(Mth.HALF_PI, down)); - shift.rotate(new Quaternionf().rotateAxis(Mth.HALF_PI, down)); - shiftVert.rotate(new Quaternionf().rotateAxis(Mth.HALF_PI, down)); - - leftBlocked = test.apply(Direction.NORTH); - topBlocked = test.apply(Direction.UP); - rightBlocked = test.apply(Direction.SOUTH); - bottomBlocked = test.apply(Direction.DOWN); - hoverLeft = attachSide == Direction.NORTH; - hoverTop = attachSide == Direction.UP; - hoverRight = attachSide == Direction.SOUTH; - hoverBottom = attachSide == Direction.DOWN; - } - case EAST -> { - topRight.rotate(new Quaternionf().rotateAxis(-Mth.HALF_PI, down)); - bottomRight.rotate(new Quaternionf().rotateAxis(-Mth.HALF_PI, down)); - bottomLeft.rotate(new Quaternionf().rotateAxis(-Mth.HALF_PI, down)); - topLeft.rotate(new Quaternionf().rotateAxis(-Mth.HALF_PI, down)); - shift.rotate(new Quaternionf().rotateAxis(-Mth.HALF_PI, down)); - shiftVert.rotate(new Quaternionf().rotateAxis(-Mth.HALF_PI, down)); - - leftBlocked = test.apply(Direction.SOUTH); - topBlocked = test.apply(Direction.UP); - rightBlocked = test.apply(Direction.NORTH); - bottomBlocked = test.apply(Direction.DOWN); - hoverLeft = attachSide == Direction.SOUTH; - hoverTop = attachSide == Direction.UP; - hoverRight = attachSide == Direction.NORTH; - hoverBottom = attachSide == Direction.DOWN; - } - case NORTH -> { - topRight.rotate(new Quaternionf().rotateAxis(Mth.PI, down)); - bottomRight.rotate(new Quaternionf().rotateAxis(Mth.PI, down)); - bottomLeft.rotate(new Quaternionf().rotateAxis(Mth.PI, down)); - topLeft.rotate(new Quaternionf().rotateAxis(Mth.PI, down)); - shift.rotate(new Quaternionf().rotateAxis(Mth.PI, down)); - shiftVert.rotate(new Quaternionf().rotateAxis(Mth.PI, down)); - - leftBlocked = test.apply(Direction.EAST); - topBlocked = test.apply(Direction.UP); - rightBlocked = test.apply(Direction.WEST); - bottomBlocked = test.apply(Direction.DOWN); - hoverLeft = attachSide == Direction.EAST; - hoverTop = attachSide == Direction.UP; - hoverRight = attachSide == Direction.WEST; - hoverBottom = attachSide == Direction.DOWN; - } - case UP -> { - Vector3f side = new Vector3f(1, 0, 0); - topRight.rotate(new Quaternionf().rotateAxis(-Mth.HALF_PI, side)); - bottomRight.rotate(new Quaternionf().rotateAxis(-Mth.HALF_PI, side)); - bottomLeft.rotate(new Quaternionf().rotateAxis(-Mth.HALF_PI, side)); - topLeft.rotate(new Quaternionf().rotateAxis(-Mth.HALF_PI, side)); - shift.rotate(new Quaternionf().rotateAxis(-Mth.HALF_PI, side)); - shiftVert.rotate(new Quaternionf().rotateAxis(-Mth.HALF_PI, side)); - - leftBlocked = test.apply(Direction.EAST); - topBlocked = test.apply(Direction.SOUTH); - rightBlocked = test.apply(Direction.WEST); - bottomBlocked = test.apply(Direction.NORTH); - hoverLeft = attachSide == Direction.EAST; - hoverTop = attachSide == Direction.SOUTH; - hoverRight = attachSide == Direction.WEST; - hoverBottom = attachSide == Direction.NORTH; - } - case DOWN -> { - Vector3f side = new Vector3f(1, 0, 0); - topRight.rotate(new Quaternionf().rotateAxis(Mth.HALF_PI, side)); - bottomRight.rotate(new Quaternionf().rotateAxis(Mth.HALF_PI, side)); - bottomLeft.rotate(new Quaternionf().rotateAxis(Mth.HALF_PI, side)); - topLeft.rotate(new Quaternionf().rotateAxis(Mth.HALF_PI, side)); - shift.rotate(new Quaternionf().rotateAxis(Mth.HALF_PI, side)); - shiftVert.rotate(new Quaternionf().rotateAxis(Mth.HALF_PI, side)); - - leftBlocked = test.apply(Direction.WEST); - topBlocked = test.apply(Direction.SOUTH); - rightBlocked = test.apply(Direction.EAST); - bottomBlocked = test.apply(Direction.NORTH); - hoverLeft = attachSide == Direction.WEST; - hoverTop = attachSide == Direction.SOUTH; - hoverRight = attachSide == Direction.EAST; - hoverBottom = attachSide == Direction.NORTH; - } - default -> { - leftBlocked = test.apply(Direction.WEST); - topBlocked = test.apply(Direction.UP); - rightBlocked = test.apply(Direction.EAST); - bottomBlocked = test.apply(Direction.DOWN); - hoverLeft = attachSide == Direction.WEST; - hoverTop = attachSide == Direction.UP; - hoverRight = attachSide == Direction.EAST; - hoverBottom = attachSide == Direction.DOWN; - } - } + Direction front = blockHitResult.getDirection(); + Direction back = front.getOpposite(); + Direction left = RelativeDirection.LEFT.getActualDirection(front); + Direction right = RelativeDirection.RIGHT.getActualDirection(front); + Direction top = RelativeDirection.UP.getActualDirection(front); + Direction bottom = RelativeDirection.DOWN.getActualDirection(front); + + Quaternionfc rotation = getRotation(Direction.SOUTH, front); + topRight.rotate(rotation); + bottomRight.rotate(rotation); + bottomLeft.rotate(rotation); + topLeft.rotate(rotation); + shiftX.rotate(rotation); + shiftY.rotate(rotation); + + ResourceTexture leftBlocked = texture.apply(left); + ResourceTexture rightBlocked = texture.apply(right); + ResourceTexture topBlocked = texture.apply(top); + ResourceTexture bottomBlocked = texture.apply(bottom); + ResourceTexture frontBlocked = texture.apply(front); + ResourceTexture backBlocked = texture.apply(back); topRight.add(cubeCenter); bottomRight.add(cubeCenter); bottomLeft.add(cubeCenter); topLeft.add(cubeCenter); - var mat = poseStack.last().pose(); - // straight top bottom lines - drawLine(mat, buffer, new Vector3f(topRight).add(new Vector3f(shift).mul(-1)), - new Vector3f(bottomRight).add(new Vector3f(shift).mul(-1))); - - drawLine(mat, buffer, new Vector3f(bottomLeft).add(shift), new Vector3f(topLeft).add(shift)); + poseStack.pushPose(); + poseStack.translate(-cameraPos.x(), -cameraPos.y(), -cameraPos.z()); + VertexConsumer buffer = bufferSource.getBuffer(RenderType.lines()); + RenderSystem.lineWidth(3); + PoseStack.Pose pose = poseStack.last(); + // straight top bottom lines + drawLine(pose, buffer, new Vector3f(topRight).sub(shiftX), new Vector3f(bottomRight).sub(shiftX)); + drawLine(pose, buffer, new Vector3f(bottomLeft).add(shiftX), new Vector3f(topLeft).add(shiftX)); // straight side to side lines - drawLine(mat, buffer, new Vector3f(topLeft).add(new Vector3f(shiftVert).mul(-1)), - new Vector3f(topRight).add(new Vector3f(shiftVert).mul(-1))); - - drawLine(mat, buffer, new Vector3f(bottomLeft).add(shiftVert), - new Vector3f(bottomRight).add(shiftVert)); + drawLine(pose, buffer, new Vector3f(topLeft).sub(shiftY), new Vector3f(topRight).sub(shiftY)); + drawLine(pose, buffer, new Vector3f(bottomLeft).add(shiftY), new Vector3f(bottomRight).add(shiftY)); - poseStack.pushPose(); RenderSystem.disableDepthTest(); RenderSystem.enableBlend(); RenderSystem.defaultBlendFunc(); - poseStack.translate(facing.getStepX() * 0.01, facing.getStepY() * 0.01, facing.getStepZ() * 0.01); - RenderUtils.moveToFace(poseStack, blockPos.getX(), blockPos.getY(), blockPos.getZ(), facing); - if (facing.getAxis() == Direction.Axis.Y) { - RenderUtils.rotateToFace(poseStack, facing, Direction.SOUTH); - } else { - RenderUtils.rotateToFace(poseStack, facing, null); - } + + poseStack.pushPose(); + poseStack.translate(front.getStepX() * 0.01f, front.getStepY() * 0.01f, front.getStepZ() * 0.01f); + + RenderUtil.moveToFace(poseStack, cubeCenter, front); + RenderUtil.rotateToFace(poseStack, front, Direction.SOUTH); poseStack.scale(1f / 16, 1f / 16, 0); poseStack.translate(-8, -8, 0); + poseStack.scale(0.9f, 0.9f, 1); - var graphics = GuiGraphicsAccessor.create(Minecraft.getInstance(), poseStack, - MultiBufferSource.immediate(Tesselator.getInstance().getBuilder())); if (leftBlocked != null) { - leftBlocked.copy().scale(0.9f).setColor(hoverLeft ? -1 : 0x44ffffff).draw(graphics, 0, 0, 0, 6, 4, 4); + int color = attachSide == left ? 0xffffffff : 0x44ffffff; + drawResourceTexture(poseStack, bufferSource, leftBlocked, color, 0, 6, 4, 4); } if (topBlocked != null) { - topBlocked.copy().scale(0.9f).setColor(hoverTop ? -1 : 0x44ffffff).draw(graphics, 0, 0, 6, 0, 4, 4); + int color = attachSide == top ? 0xffffffff : 0x44ffffff; + drawResourceTexture(poseStack, bufferSource, topBlocked, color, 6, 12, 4, 4); } if (rightBlocked != null) { - rightBlocked.copy().scale(0.9f).setColor(hoverRight ? -1 : 0x44ffffff).draw(graphics, 0, 0, 12, 6, 4, 4); + int color = attachSide == right ? 0xffffffff : 0x44ffffff; + drawResourceTexture(poseStack, bufferSource, rightBlocked, color, 12, 6, 4, 4); } if (bottomBlocked != null) { - bottomBlocked.copy().scale(0.9f).setColor(hoverBottom ? -1 : 0x44ffffff).draw(graphics, 0, 0, 6, 12, 4, 4); + int color = attachSide == bottom ? 0xffffffff : 0x44ffffff; + drawResourceTexture(poseStack, bufferSource, bottomBlocked, color, 6, 0, 4, 4); } if (frontBlocked != null) { - frontBlocked.copy().scale(0.9f).setColor(hoverFront ? -1 : 0x44ffffff).draw(graphics, 0, 0, 6, 6, 4, 4); + int color = attachSide == front ? 0xffffffff : 0x44ffffff; + drawResourceTexture(poseStack, bufferSource, frontBlocked, color, 6, 6, 4, 4); } if (backBlocked != null) { - backBlocked.copy().scale(0.9f).setColor(hoverBack ? -1 : 0x44ffffff).draw(graphics, 0, 0, 0, 0, 4, 4); - backBlocked.copy().scale(0.9f).setColor(hoverBack ? -1 : 0x44ffffff).draw(graphics, 0, 0, 12, 0, 4, 4); - backBlocked.copy().scale(0.9f).setColor(hoverBack ? -1 : 0x44ffffff).draw(graphics, 0, 0, 0, 12, 4, 4); - backBlocked.copy().scale(0.9f).setColor(hoverBack ? -1 : 0x44ffffff).draw(graphics, 0, 0, 12, 12, 4, 4); + int color = attachSide == back ? 0xffffffff : 0x44ffffff; + drawResourceTexture(poseStack, bufferSource, backBlocked, color, 0, 0, 4, 4); + drawResourceTexture(poseStack, bufferSource, backBlocked, color, 12, 0, 4, 4); + drawResourceTexture(poseStack, bufferSource, backBlocked, color, 0, 12, 4, 4); + drawResourceTexture(poseStack, bufferSource, backBlocked, color, 12, 12, 4, 4); } RenderSystem.disableBlend(); RenderSystem.enableDepthTest(); + + poseStack.popPose(); poseStack.popPose(); } - private static void drawLine(Matrix4f mat, VertexConsumer buffer, Vector3f from, Vector3f to) { - var normal = new Vector3f(from).sub(to); + private static void drawLine(PoseStack.Pose pose, VertexConsumer buffer, Vector3fc from, Vector3fc to) { + Vector3f normal = from.sub(to, new Vector3f()); - buffer.vertex(mat, from.x, from.y, from.z) + buffer.vertex(pose.pose(), from.x(), from.y(), from.z()) .color(rColour, gColour, bColour, 1f) - .normal(normal.x, normal.y, normal.z) + .normal(pose.normal(), normal.x(), normal.y(), normal.z()) .endVertex(); - buffer.vertex(mat, to.x, to.y, to.z) + buffer.vertex(pose.pose(), to.x(), to.y(), to.z()) .color(rColour, gColour, bColour, 1f) - .normal(normal.x, normal.y, normal.z) + .normal(pose.normal(), normal.x(), normal.y(), normal.z()) .endVertex(); } + + private static void drawResourceTexture(PoseStack poseStack, MultiBufferSource bufferSource, + ResourceTexture texture, int color, + float x, float y, float w, float h) { + VertexConsumer consumer = bufferSource.getBuffer(RenderType.text(texture.imageLocation)); + var pose = poseStack.last().pose(); + float u0 = texture.offsetX, v0 = texture.offsetY; + float u1 = texture.imageWidth, v1 = texture.imageHeight; + // spotless:off + consumer.vertex(pose, x, y + h, 0).color(color).uv(u0, v0 + v1).uv2(LightTexture.FULL_BRIGHT).endVertex(); + consumer.vertex(pose, x + w, y + h, 0).color(color).uv(u0 + u1, v0 + v1).uv2(LightTexture.FULL_BRIGHT).endVertex(); + consumer.vertex(pose, x + w, y, 0).color(color).uv(u0 + u1, v0).uv2(LightTexture.FULL_BRIGHT).endVertex(); + consumer.vertex(pose, x, y, 0).color(color).uv(u0, v0).uv2(LightTexture.FULL_BRIGHT).endVertex(); + // spotless:on + } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockStateModelRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockStateModelRenderer.java deleted file mode 100644 index 314af058a88..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockStateModelRenderer.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer; - -import com.lowdragmc.lowdraglib.client.renderer.IRenderer; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.util.RandomSource; -import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.function.Function; - -/** - * @author KilaBash - * @date 2023/3/24 - * @implNote BlockStateModelRenderer - */ -public class BlockStateModelRenderer implements IRenderer { - - private final Map models; - - public BlockStateModelRenderer(Block block, Function predicate) { - this.models = new HashMap<>(); - for (BlockState state : block.getStateDefinition().getPossibleStates()) { - models.put(state, predicate.apply(state)); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public boolean useAO() { - return true; - } - - @Override - @OnlyIn(Dist.CLIENT) - public List renderModel(BlockAndTintGetter level, BlockPos pos, BlockState state, Direction side, - RandomSource rand) { - if (models.containsKey(state)) { - return models.get(state).renderModel(level, pos, state, side, rand); - } - return Collections.emptyList(); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/GTRenderTypes.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/GTRenderTypes.java index 7e0fcbd09aa..c36a41a91e6 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/GTRenderTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/GTRenderTypes.java @@ -1,13 +1,17 @@ package com.gregtechceu.gtceu.client.renderer; +import net.minecraft.Util; import net.minecraft.client.renderer.RenderStateShard; import net.minecraft.client.renderer.RenderType; +import net.minecraft.resources.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import com.mojang.blaze3d.vertex.DefaultVertexFormat; import com.mojang.blaze3d.vertex.VertexFormat; +import java.util.function.Function; + @OnlyIn(Dist.CLIENT) public class GTRenderTypes extends RenderType { @@ -18,6 +22,16 @@ public class GTRenderTypes extends RenderType { .setShaderState(RenderStateShard.POSITION_COLOR_SHADER) .setTransparencyState(RenderStateShard.TRANSLUCENT_TRANSPARENCY) .createCompositeState(false)); + private static final Function GUI_TEXTURE = Util.memoize((texture) -> { + return create("gui_texture", DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP, VertexFormat.Mode.QUADS, + RenderType.TRANSIENT_BUFFER_SIZE, false, true, + RenderType.CompositeState.builder() + .setShaderState(RENDERTYPE_TEXT_SHADER) + .setTextureState(new RenderStateShard.TextureStateShard(texture, false, false)) + .setTransparencyState(TRANSLUCENT_TRANSPARENCY) + .setLightmapState(LIGHTMAP) + .createCompositeState(false)); + }); private GTRenderTypes(String name, VertexFormat format, VertexFormat.Mode mode, int bufferSize, boolean affectsCrumbling, boolean sortOnUpload, Runnable setupState, Runnable clearState) { @@ -27,4 +41,8 @@ private GTRenderTypes(String name, VertexFormat format, VertexFormat.Mode mode, public static RenderType getLightRing() { return LIGHT_RING; } + + public static RenderType guiTexture(ResourceLocation texture) { + return GUI_TEXTURE.apply(texture); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/GTRendererProvider.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/GTRendererProvider.java deleted file mode 100644 index c70126ff93c..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/GTRendererProvider.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer; - -import com.lowdragmc.lowdraglib.client.renderer.ATESRRendererProvider; - -import net.minecraft.MethodsReturnNonnullByDefault; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import javax.annotation.ParametersAreNonnullByDefault; - -/** - * @author KilaBash - * @date 2022/11/3 - * @implNote TCRendererProvider - */ -@OnlyIn(Dist.CLIENT) -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -public class GTRendererProvider extends ATESRRendererProvider { - - private static GTRendererProvider INSTANCE; - - private GTRendererProvider(BlockEntityRendererProvider.Context context) { - // ModelBellows.INSTANCE = new ModelBellows(context); - // ModelHungryChest.INSTANCE = new ModelHungryChest(context); - } - - public static GTRendererProvider getOrCreate(BlockEntityRendererProvider.Context context) { - if (INSTANCE == null) { - INSTANCE = new GTRendererProvider(context); - } - return INSTANCE; - } - - @Nullable - public static GTRendererProvider getInstance() { - return INSTANCE; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/ItemWithBERModelRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/ItemWithBERModelRenderer.java new file mode 100644 index 00000000000..6a62552f879 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/ItemWithBERModelRenderer.java @@ -0,0 +1,70 @@ +package com.gregtechceu.gtceu.client.renderer; + +import com.gregtechceu.gtceu.client.model.IBlockEntityRendererBakedModel; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.HalfTransparentBlock; +import net.minecraft.world.level.block.StainedGlassPaneBlock; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import org.jetbrains.annotations.NotNull; + +public class ItemWithBERModelRenderer extends BlockEntityWithoutLevelRenderer { + + public static final ItemWithBERModelRenderer INSTANCE = new ItemWithBERModelRenderer(); + + protected final ItemRenderer itemRenderer; + + protected ItemWithBERModelRenderer() { + super(Minecraft.getInstance().getBlockEntityRenderDispatcher(), + Minecraft.getInstance().getEntityModels()); + this.itemRenderer = Minecraft.getInstance().getItemRenderer(); + } + + @Override + public void renderByItem(@NotNull ItemStack stack, @NotNull ItemDisplayContext displayContext, + @NotNull PoseStack poseStack, @NotNull MultiBufferSource buffer, + int packedLight, int packedOverlay) { + Level level = Minecraft.getInstance().level; + Player player = Minecraft.getInstance().player; + BakedModel model = itemRenderer.getModel(stack, level, player, 0); + + if (model instanceof IBlockEntityRendererBakedModel berModel) { + berModel.renderByItem(stack, displayContext, poseStack, buffer, packedLight, packedOverlay); + } else { + super.renderByItem(stack, displayContext, poseStack, buffer, packedLight, packedOverlay); + } + // also render the normal model here + // because MC skips it if the model is a custom renderer + boolean fabulous = true; + if (displayContext != ItemDisplayContext.GUI && !displayContext.firstPerson() && + stack.getItem() instanceof BlockItem blockItem) { + Block block = blockItem.getBlock(); + fabulous = !(block instanceof HalfTransparentBlock) && !(block instanceof StainedGlassPaneBlock); + } + + for (var renderPass : model.getRenderPasses(stack, fabulous)) { + for (var renderType : renderPass.getRenderTypes(stack, fabulous)) { + VertexConsumer consumer; + if (fabulous) { + consumer = ItemRenderer.getFoilBufferDirect(buffer, renderType, true, stack.hasFoil()); + } else { + consumer = ItemRenderer.getFoilBuffer(buffer, renderType, true, stack.hasFoil()); + } + + itemRenderer.renderModelLists(renderPass, stack, packedLight, packedOverlay, poseStack, consumer); + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java index f5bc73abffa..d9c4c3ca16b 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java @@ -285,7 +285,7 @@ public static void renderInWorldPreview(PoseStack poseStack, Camera camera, floa .getBlockEntityRenderDispatcher().getRenderer(tile); if (ber != null) { if (tile.hasLevel() && tile.getType().isValid(tile.getBlockState())) { - ber.render(tile, partialTicks, poseStack, buffers, 0xF000F0, + ber.render(tile, partialTicks, poseStack, buffers, LightTexture.FULL_BRIGHT, OverlayTexture.NO_OVERLAY); } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/CTMModelRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/CTMModelRenderer.java deleted file mode 100644 index f0cf324225d..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/CTMModelRenderer.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.block; - -import com.lowdragmc.lowdraglib.client.renderer.impl.IModelRenderer; - -import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -/** - * @author KilaBash - * @date 2019/12/7 - * @implNote CTMModelRenderer - */ -public class CTMModelRenderer extends IModelRenderer { - - public CTMModelRenderer(ResourceLocation modelLocation) { - super(modelLocation); - } - - @Override - @OnlyIn(Dist.CLIENT) - public boolean reBakeCustomQuads() { - return true; - } - - @Override - public float reBakeCustomQuadsOffset() { - return 0.000f; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/FluidBlockRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/FluidBlockRenderer.java index 31e7bd58312..e8a9e820e37 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/FluidBlockRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/FluidBlockRenderer.java @@ -2,26 +2,33 @@ import com.gregtechceu.gtceu.client.util.RenderUtil; +import net.minecraft.client.renderer.LightTexture; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.world.level.lighting.LightEngine; import net.minecraft.world.level.material.Fluid; import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; import lombok.Data; import lombok.Getter; import org.joml.Matrix4f; import org.joml.Vector3f; +import org.joml.Vector3fc; -import java.util.Collection; -import java.util.Map; -import java.util.Set; +import java.util.*; import static com.gregtechceu.gtceu.client.util.RenderUtil.*; import static net.minecraft.util.FastColor.ARGB32.*; public class FluidBlockRenderer { + public static final MapCodec CODEC = Properties.CODEC + .xmap(FluidBlockRenderer::new, FluidBlockRenderer::getProperties); + @Getter private final Properties properties; @@ -29,19 +36,19 @@ protected FluidBlockRenderer(Properties properties) { this.properties = properties; } - public Vector3f[] transformVertices(Vector3f[] vertices, Direction face) { - var newVertices = new Vector3f[4]; + public Vector3f[] transformVertices(Vector3fc[] vertices, Direction face) { float offsetX = properties.offsetX, offsetY = properties.offsetY, offsetZ = properties.offsetZ; - switch (face) { - case DOWN, UP -> offsetY += properties.offsetFace; - case NORTH, SOUTH -> offsetZ += properties.offsetFace; - case WEST, EAST -> offsetX += properties.offsetFace; + switch (face.getAxis()) { + case X -> offsetX += properties.offsetFace; + case Y -> offsetY += properties.offsetFace; + case Z -> offsetZ += properties.offsetFace; } - for (int i = 0; i < 4; i++) + var newVertices = new Vector3f[4]; + for (int i = 0; i < 4; i++) { newVertices[i] = RenderUtil.transformVertex(vertices[i], face, offsetX, offsetY, offsetZ); - + } return newVertices; } @@ -131,39 +138,52 @@ public void drawFace(Direction face, Matrix4f pose, VertexConsumer consumer, Flu drawFace(pose, consumer, vertices, normal, u0, u1, v0, v1, r, g, b, a, combinedOverlay, combinedLight); } - public void drawFace(Matrix4f pose, VertexConsumer consumer, Vector3f[] vertices, Vector3f normal, float u0, - float u1, float v0, float v1, int r, int g, int b, int a, int combinedOverlay, - int combinedLight) { + public void drawFace(Matrix4f pose, VertexConsumer consumer, Vector3f[] vertices, Vector3fc normal, + float u0, float u1, float v0, float v1, + int r, int g, int b, int a, + int combinedOverlay, int combinedLight) { if (properties.isOverwriteLight()) combinedLight = properties.getLight(); var vert = vertices[0]; RenderUtil.vertex(pose, consumer, vert.x, vert.y, vert.z, r, g, b, a, u0, v1, - combinedOverlay, combinedLight, normal.x, normal.y, normal.z); + combinedOverlay, combinedLight, normal.x(), normal.y(), normal.z()); vert = vertices[1]; RenderUtil.vertex(pose, consumer, vert.x, vert.y, vert.z, r, g, b, a, u0, v0, - combinedOverlay, combinedLight, normal.x, normal.y, normal.z); + combinedOverlay, combinedLight, normal.x(), normal.y(), normal.z()); vert = vertices[2]; RenderUtil.vertex(pose, consumer, vert.x, vert.y, vert.z, r, g, b, a, u1, v0, - combinedOverlay, combinedLight, normal.x, normal.y, normal.z); + combinedOverlay, combinedLight, normal.x(), normal.y(), normal.z()); vert = vertices[3]; RenderUtil.vertex(pose, consumer, vert.x, vert.y, vert.z, r, g, b, a, u1, v1, - combinedOverlay, combinedLight, normal.x, normal.y, normal.z); + combinedOverlay, combinedLight, normal.x(), normal.y(), normal.z()); } @Data public static class Properties { + // spotless:off + public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( + Codec.FLOAT.optionalFieldOf("offset_x", 0.0f).forGetter(Properties::getOffsetX), + Codec.FLOAT.optionalFieldOf("offset_y", 0.0f).forGetter(Properties::getOffsetY), + Codec.FLOAT.optionalFieldOf("offset_z", 0.0f).forGetter(Properties::getOffsetZ), + Codec.FLOAT.optionalFieldOf("offset_face", 0.0f).forGetter(Properties::getOffsetFace), + Codec.BOOL.optionalFieldOf("overwrite_light", false).forGetter(Properties::isOverwriteLight), + Codec.intRange(0, LightEngine.MAX_LEVEL).optionalFieldOf("block_light", 0).forGetter(Properties::getBlockLight), + Codec.intRange(0, LightEngine.MAX_LEVEL).optionalFieldOf("sky_light", 0).forGetter(Properties::getSkyLight) + ).apply(instance, Properties::of)); + // spotless:on + private float offsetX = 0; private float offsetY = 0; private float offsetZ = 0; @@ -171,9 +191,32 @@ public static class Properties { private boolean overwriteLight = false; private int light = 0; - private Direction[] drawFaces = Direction.values(); - public Properties() {} + + public static Properties of(float offsetX, float offsetY, float offsetZ, float offsetFace, + boolean overwriteLight, int light) { + Properties p = new Properties(); + p.setOffsetX(offsetX); + p.setOffsetY(offsetY); + p.setOffsetZ(offsetZ); + p.setOffsetFace(offsetFace); + p.setOverwriteLight(overwriteLight); + p.setLight(light); + return p; + } + + private int getBlockLight() { + return LightTexture.block(this.light); + } + + private int getSkyLight() { + return LightTexture.sky(this.light); + } + + private static Properties of(float offsetX, float offsetY, float offsetZ, float offsetFace, + boolean overwriteLight, int blockLight, int skyLight) { + return of(offsetX, offsetY, offsetZ, offsetFace, overwriteLight, LightTexture.pack(blockLight, skyLight)); + } } public static class Builder { @@ -210,6 +253,12 @@ public Builder setForcedLight(int light) { return this; } + public Builder setForcedLight(int block, int sky) { + properties.setLight(LightTexture.pack(block, sky)); + properties.setOverwriteLight(true); + return this; + } + public FluidBlockRenderer getRenderer() { return new FluidBlockRenderer(properties); } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/MaterialBlockRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/MaterialBlockRenderer.java index 49504dcea63..193c889179f 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/MaterialBlockRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/MaterialBlockRenderer.java @@ -13,11 +13,6 @@ import java.util.HashSet; import java.util.Set; -/** - * @author KilaBash - * @date 2023/2/27 - * @implNote MaterialBlockRenderer - */ public class MaterialBlockRenderer { public static final String LAYER_2_SUFFIX = "_layer2"; @@ -31,7 +26,7 @@ public static void reinitModels() { for (MaterialBlockRenderer model : MODELS) { ResourceLocation blockId = BuiltInRegistries.BLOCK.getKey(model.block); ResourceLocation modelId = blockId.withPrefix("block/"); - GTDynamicResourcePack.addBlockModel(modelId, + GTDynamicResourcePack.addBlockModel(blockId, new DelegatedModel(model.type.getBlockModelPath(model.iconSet, true))); GTDynamicResourcePack.addBlockState(blockId, BlockModelGenerators.createSimpleBlock(model.block, modelId)); GTDynamicResourcePack.addItemModel(BuiltInRegistries.ITEM.getKey(model.block.asItem()), diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/OreBlockRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/OreBlockRenderer.java index bb552ee6c00..563f1bc6682 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/OreBlockRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/OreBlockRenderer.java @@ -24,11 +24,6 @@ import java.util.HashSet; import java.util.Set; -/** - * @author KilaBash - * @date 2023/2/27 - * @implNote OreBlockRenderer - */ @MethodsReturnNonnullByDefault public class OreBlockRenderer { @@ -48,7 +43,7 @@ public static void reinitModels() { for (OreBlockRenderer model : MODELS) { ResourceLocation blockId = BuiltInRegistries.BLOCK.getKey(model.block); ResourceLocation modelId = blockId.withPrefix("block/"); - OreBlockRenderer.cloneBlockModel(modelId, model.block.tagPrefix, model.block.material); + OreBlockRenderer.cloneBlockModel(blockId, model.block.tagPrefix, model.block.material); GTDynamicResourcePack.addBlockState(blockId, BlockModelGenerators.createSimpleBlock(model.block, modelId)); GTDynamicResourcePack.addItemModel(BuiltInRegistries.ITEM.getKey(model.block.asItem()), new DelegatedModel(ModelLocationUtils.getModelLocation(model.block))); diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/PipeBlockRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/PipeBlockRenderer.java index f7f50f15bd5..b06ac84c7ce 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/PipeBlockRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/PipeBlockRenderer.java @@ -1,18 +1,20 @@ package com.gregtechceu.gtceu.client.renderer.block; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconType; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.pipenet.IPipeNode; import com.gregtechceu.gtceu.client.model.PipeModel; import com.gregtechceu.gtceu.client.renderer.cover.ICoverableRenderer; +import com.gregtechceu.gtceu.client.util.GTQuadTransformers; import com.gregtechceu.gtceu.common.data.GTMaterialBlocks; +import com.gregtechceu.gtceu.utils.GTUtil; -import com.lowdragmc.lowdraglib.client.model.ModelFactory; import com.lowdragmc.lowdraglib.client.renderer.IRenderer; import net.minecraft.client.Minecraft; +import net.minecraft.client.color.block.BlockColors; import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlasSprite; @@ -27,21 +29,18 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.data.ModelData; import com.mojang.blaze3d.vertex.PoseStack; import lombok.Getter; import org.jetbrains.annotations.NotNull; -import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/3/1 - * @implNote PipeBlockRenderer - */ +import static com.lowdragmc.lowdraglib.client.model.forge.LDLRendererModel.RendererBakedModel.*; + public class PipeBlockRenderer implements IRenderer, ICoverableRenderer { @Getter @@ -82,39 +81,55 @@ public List renderModel(BlockAndTintGetter level, BlockPos pos, Block RandomSource rand) { if (level == null) { return pipeModel.bakeQuads(side, PipeModel.ITEM_CONNECTIONS, 0); - } else if (level.getBlockEntity(pos) instanceof IPipeNode pipeNode) { - var quads = new LinkedList<>( - pipeModel.bakeQuads(side, pipeNode.getVisualConnections(), pipeNode.getBlockedConnections())); - var modelState = ModelFactory.getRotation(pipeNode.getCoverContainer().getFrontFacing()); - var modelFacing = side == null ? null : - ModelFactory.modelFacing(side, pipeNode.getCoverContainer().getFrontFacing()); - ICoverableRenderer.super.renderCovers(quads, side, rand, pipeNode.getCoverContainer(), modelFacing, pos, - level, modelState); - if (!pipeNode.getFrameMaterial().isNull()) { - ResourceLocation rl = MaterialIconType.frameGt - .getBlockTexturePath(pipeNode.getFrameMaterial().getMaterialIconSet(), true); - BlockState blockState = GTMaterialBlocks.MATERIAL_BLOCKS - .get(TagPrefix.frameGt, pipeNode.getFrameMaterial()) - .getDefaultState(); - var frameModel = Minecraft.getInstance().getBlockRenderer().getBlockModel(blockState); - for (Direction face : Direction.values()) { - if ((pipeNode.getConnections() & 1 << (12 + face.get3DDataValue())) == 0) { - var frameTintedFaces = frameModel.getQuads(state, face, rand) - .stream() - .map(quad -> new BakedQuad(quad.getVertices(), - quad.getTintIndex() + (quad.isTinted() ? 3 : 0), - quad.getDirection(), - quad.getSprite(), - quad.isShade(), - quad.hasAmbientOcclusion())) - .toList(); - quads.addAll(frameTintedFaces); - } + } + if (!(level.getBlockEntity(pos) instanceof IPipeNode pipeNode)) { + return pipeModel.bakeQuads(side, 0, 0); + } + RenderType renderType = CURRENT_RENDER_TYPE.get(); + ModelData modelData = CURRENT_MODEL_DATA.get().get(MODEL_DATA); + if (modelData == null) modelData = ModelData.EMPTY; + + List quads = new LinkedList<>(); + + if (renderType == null || renderType == RenderType.cutoutMipped()) { + quads.addAll(pipeModel.bakeQuads(side, pipeNode.getVisualConnections(), pipeNode.getBlockedConnections())); + } + ICoverableRenderer.super.renderCovers(quads, pipeNode.getCoverContainer(), pos, level, side, rand, + modelData, renderType); + + if (pipeNode.getFrameMaterial().isNull() || (renderType != null && renderType != RenderType.translucent())) { + return quads; + } + + BlockState frameState = GTMaterialBlocks.MATERIAL_BLOCKS.get(TagPrefix.frameGt, pipeNode.getFrameMaterial()) + .getDefaultState(); + BakedModel frameModel = Minecraft.getInstance().getBlockRenderer().getBlockModel(frameState); + + modelData = frameModel.getModelData(level, pos, frameState, modelData); + + List frameQuads = new LinkedList<>(); + if (side == null || pipeNode.getCoverContainer().getCoverAtSide(side) == null) { + frameQuads.addAll(frameModel.getQuads(state, side, rand, modelData, renderType)); + } + if (side == null) { + for (Direction face : GTUtil.DIRECTIONS) { + if (pipeNode.getCoverContainer().getCoverAtSide(face) != null) { + continue; } + frameQuads.addAll(frameModel.getQuads(state, face, rand, modelData, renderType)); } - return quads; } - return Collections.emptyList(); + + // bake all the quads' tint colors into the vertices + BlockColors blockColors = Minecraft.getInstance().getBlockColors(); + for (BakedQuad frameQuad : frameQuads) { + if (frameQuad.isTinted()) { + int color = blockColors.getColor(frameState, level, pos, frameQuad.getTintIndex()); + frameQuad = GTQuadTransformers.setColor(frameQuad, color, true); + } + quads.add(frameQuad); + } + return quads; } @NotNull diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/SurfaceRockRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/SurfaceRockRenderer.java index c77cba559f7..4469c766f4e 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/SurfaceRockRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/SurfaceRockRenderer.java @@ -35,7 +35,7 @@ public static void reinitModels() { ResourceLocation blockId = BuiltInRegistries.BLOCK.getKey(model.block); ResourceLocation modelId = blockId.withPrefix("block/"); - GTDynamicResourcePack.addBlockModel(modelId, new DelegatedModel(GTCEu.id("block/surface_rock"))); + GTDynamicResourcePack.addBlockModel(blockId, new DelegatedModel(GTCEu.id("block/surface_rock"))); GTDynamicResourcePack.addBlockState(blockId, MultiVariantGenerator .multiVariant(model.block, Variant.variant().with(VariantProperties.MODEL, modelId)) .with(PropertyDispatch.property(BlockStateProperties.FACING) diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/TextureOverrideRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/TextureOverrideRenderer.java deleted file mode 100644 index fe15c649ef5..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/TextureOverrideRenderer.java +++ /dev/null @@ -1,141 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.block; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.client.model.SpriteOverrider; - -import com.lowdragmc.lowdraglib.LDLib; -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.BlockModelRotation; -import net.minecraft.client.resources.model.ModelBakery; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import lombok.Getter; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.Collections; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.function.Consumer; -import java.util.function.Supplier; - -@Getter -public class TextureOverrideRenderer extends CTMModelRenderer { - - @NotNull - protected Map override; - @Nullable - protected Supplier> overrideSupplier; - @OnlyIn(Dist.CLIENT) - protected Map bakedModelCache; - - public TextureOverrideRenderer(ResourceLocation model, @NotNull Map override) { - super(model); - this.override = override; - if (GTCEu.isClientSide()) { - registerEvent(); - } - } - - public TextureOverrideRenderer(ResourceLocation model, - @NotNull Supplier> overrideSupplier) { - super(model); - this.override = Collections.emptyMap(); - this.overrideSupplier = overrideSupplier; - if (GTCEu.isClientSide()) { - registerEvent(); - } - } - - public TextureOverrideRenderer(ResourceLocation model) { - super(model); - this.override = Collections.emptyMap(); - if (GTCEu.isClientSide()) { - registerEvent(); - } - } - - @Override - public void initRenderer() { - if (GTCEu.isClientSide()) { - this.bakedModelCache = new ConcurrentHashMap<>(); - } - super.initRenderer(); - } - - public void setTextureOverride(Map override) { - this.override = override; - } - - @Nullable - @OnlyIn(Dist.CLIENT) - protected BakedModel getItemBakedModel() { - if (itemModel == null) { - var model = getModel(); - if (model instanceof BlockModel blockModel && blockModel.getRootModel() == ModelBakery.GENERATION_MARKER) { - // fabric doesn't help us to fix vanilla bakery, so we have to do it ourselves - model = ModelFactory.ITEM_MODEL_GENERATOR.generateBlockModel(new SpriteOverrider(override), blockModel); - } - itemModel = model.bake( - ModelFactory.getModeBaker(), - new SpriteOverrider(override), - BlockModelRotation.X0_Y0, - modelLocation); - } - return itemModel; - } - - @SuppressWarnings("removal") - @Override - @OnlyIn(Dist.CLIENT) - public BakedModel getRotatedModel(Direction frontFacing) { - return blockModels.computeIfAbsent(frontFacing, facing -> getModel().bake( - ModelFactory.getModeBaker(), - new SpriteOverrider(override), - ModelFactory.getRotation(facing), - modelLocation)); - } - - @OnlyIn(Dist.CLIENT) - public BakedModel getRotatedModel(ModelState modelState) { - return bakedModelCache.computeIfAbsent(modelState, state -> getModel().bake( - ModelFactory.getModeBaker(), - new SpriteOverrider(override), - modelState, - modelLocation)); - } - - @SuppressWarnings("deprecation") - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { // prepare for override. - if (bakedModelCache != null) { - bakedModelCache.clear(); - } - if (overrideSupplier != null) override = overrideSupplier.get(); - for (ResourceLocation value : override.values()) { - register.accept(value); - } - } - } - - @Override - public void updateModelWithoutReloadingResource(ResourceLocation modelLocation) { - super.updateModelWithoutReloadingResource(modelLocation); - if (LDLib.isClient()) { - if (bakedModelCache != null) { - bakedModelCache.clear(); - } - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ConveyorCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ConveyorCoverRenderer.java deleted file mode 100644 index 611d268076c..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ConveyorCoverRenderer.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.cover; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.cover.CoverBehavior; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.gregtechceu.gtceu.common.cover.ConveyorCover; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.function.Consumer; - -/** - * @author KilaBash - * @date 2023/3/12 - * @implNote ConveyorCoverRenderer - */ -public class ConveyorCoverRenderer implements ICoverRenderer { - - public final static ConveyorCoverRenderer INSTANCE = new ConveyorCoverRenderer(); - public final static ResourceLocation CONVEYOR_OVERLAY = GTCEu.id("block/cover/overlay_conveyor"); - public final static ResourceLocation CONVEYOR_OVERLAY_OUT = GTCEu.id("block/cover/overlay_conveyor_emissive"); - public final static ResourceLocation CONVEYOR_OVERLAY_IN = GTCEu - .id("block/cover/overlay_conveyor_inverted_emissive"); - - protected ConveyorCoverRenderer() { - if (GTCEu.isClientSide()) { - registerEvent(); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderCover(List quads, @Nullable Direction side, RandomSource rand, - @NotNull CoverBehavior coverBehavior, @Nullable Direction modelFacing, BlockPos pos, - BlockAndTintGetter level, ModelState modelState) { - if (side == coverBehavior.attachedSide && coverBehavior instanceof ConveyorCover conveyor && - modelFacing != null) { - quads.add( - StaticFaceBakery.bakeFace(modelFacing, ModelFactory.getBlockSprite(CONVEYOR_OVERLAY), modelState)); - quads.add(StaticFaceBakery.bakeFace(modelFacing, - ModelFactory - .getBlockSprite(conveyor.getIo() == IO.OUT ? CONVEYOR_OVERLAY_OUT : CONVEYOR_OVERLAY_IN), - modelState, -101, 15)); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - register.accept(CONVEYOR_OVERLAY); - register.accept(CONVEYOR_OVERLAY_IN); - register.accept(CONVEYOR_OVERLAY_OUT); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/CoverTextRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/CoverTextRenderer.java new file mode 100644 index 00000000000..95efa90be76 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/CoverTextRenderer.java @@ -0,0 +1,56 @@ +package com.gregtechceu.gtceu.client.renderer.cover; + +import com.gregtechceu.gtceu.api.machine.MetaMachine; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; +import net.minecraft.client.renderer.LightTexture; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.core.Direction; +import net.minecraft.network.chat.Component; +import net.minecraft.util.FormattedCharSequence; + +import com.mojang.blaze3d.vertex.PoseStack; +import lombok.Setter; + +import java.util.List; +import java.util.function.Supplier; + +public class CoverTextRenderer implements IDynamicCoverRenderer { + + private static final float TEXT_SCALE = 1 / 144f; + + @Setter + private Supplier> text; + + public CoverTextRenderer(Supplier> text) { + this.text = text; + } + + @Override + public void render(MetaMachine machine, Direction face, float partialTick, PoseStack poseStack, + MultiBufferSource buffer, int packedLight, int packedOverlay) { + poseStack.translate(3 / 16f, 3 / 16f, 0); + poseStack.scale(TEXT_SCALE, TEXT_SCALE, TEXT_SCALE); + int y = 0; + for (Component s : text.get()) { + boolean didAnything = false; + for (FormattedCharSequence line : Minecraft.getInstance().font.split(s, 90)) { + if (y >= 90) return; + Minecraft.getInstance().font.drawInBatch( + line, + 0, y, + 0x72e500, + false, + poseStack.last().pose(), + buffer, + Font.DisplayMode.NORMAL, + 0, + LightTexture.FULL_BRIGHT); + y += Minecraft.getInstance().font.lineHeight; + didAnything = true; + } + if (!didAnything) y += Minecraft.getInstance().font.lineHeight; + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FacadeCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FacadeCoverRenderer.java index 71ac14e596e..bec9ee74e7e 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FacadeCoverRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FacadeCoverRenderer.java @@ -1,27 +1,30 @@ package com.gregtechceu.gtceu.client.renderer.cover; -import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.cover.CoverBehavior; -import com.gregtechceu.gtceu.client.model.ModelUtil; +import com.gregtechceu.gtceu.api.item.ComponentItem; +import com.gregtechceu.gtceu.client.model.BaseBakedModel; +import com.gregtechceu.gtceu.client.model.ItemBakedModel; +import com.gregtechceu.gtceu.client.model.TextureOverrideModel; +import com.gregtechceu.gtceu.client.util.FacadeBlockAndTintGetter; +import com.gregtechceu.gtceu.client.util.GTQuadTransformers; +import com.gregtechceu.gtceu.client.util.StaticFaceBakery; import com.gregtechceu.gtceu.common.cover.FacadeCover; import com.gregtechceu.gtceu.common.item.FacadeItemBehaviour; import com.gregtechceu.gtceu.utils.GTUtil; -import com.lowdragmc.lowdraglib.client.bakedpipeline.FaceQuad; -import com.lowdragmc.lowdraglib.client.model.ModelFactory; -import com.lowdragmc.lowdraglib.utils.FacadeBlockAndTintGetter; - +import net.minecraft.Util; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.color.block.BlockColors; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.BlockRenderDispatcher; import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.block.model.ItemOverrides; +import net.minecraft.client.renderer.block.model.ItemTransforms; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.ModelState; +import net.minecraft.client.resources.model.BlockModelRotation; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; -import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockAndTintGetter; @@ -30,115 +33,235 @@ import net.minecraft.world.phys.AABB; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.data.ModelData; import com.mojang.blaze3d.vertex.PoseStack; +import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import org.jetbrains.annotations.NotNull; -import org.joml.AxisAngle4d; -import org.joml.Quaternionf; +import org.jetbrains.annotations.Nullable; -import java.util.LinkedList; -import java.util.List; +import java.util.*; /** - * @author KilaBash - * @date 2023/2/24 - * @implNote FacadeRenderer - * It can only be used for item. - * call it in other renderer to render a facade cover. + * It can only be used for item. + * call it in other renderer to render a facade cover. */ -public class FacadeCoverRenderer implements ICoverRenderer { +public class FacadeCoverRenderer extends BaseBakedModel implements ICoverRenderer { + + private static final AABB FACADE_PLANE = new AABB(0.01, 0.01, 0.01, 0.99, 0.99, 1 / 16f); + private static final EnumSet FACADE_EDGE_FACES = EnumSet.of(Direction.DOWN, Direction.UP, + Direction.SOUTH, Direction.WEST, Direction.EAST); + private static final Map COVER_BACK_CUBES = Util.make(new EnumMap<>(Direction.class), map -> { + for (Direction dir : GTUtil.DIRECTIONS) { + var normal = dir.getNormal(); + var cube = new AABB( + normal.getX() > 0 ? 1.01 : -0.01, + normal.getY() > 0 ? 1.01 : -0.01, + normal.getZ() > 0 ? 1.01 : -0.01, + normal.getX() >= 0 ? 1.01 : -0.01, + normal.getY() >= 0 ? 1.01 : -0.01, + normal.getZ() >= 0 ? 1.01 : -0.01); + map.put(dir, cube); + } + }); + + public static final FacadeCoverRenderer INSTANCE = new FacadeCoverRenderer(); + private static final Int2ObjectMap CACHE = new Int2ObjectArrayMap<>(); - public final static FacadeCoverRenderer INSTANCE = new FacadeCoverRenderer(); + @OnlyIn(Dist.CLIENT) + private @Nullable BakedModel defaultItemModel; + + private FacadeCoverRenderer() {} + + @OnlyIn(Dist.CLIENT) + public FacadeCoverRenderer(@Nullable BakedModel defaultItemModel) { + this.defaultItemModel = defaultItemModel; + } - protected FacadeCoverRenderer() {} + public static void clearItemModelCache() { + CACHE.clear(); + } @Override @OnlyIn(Dist.CLIENT) - public boolean useBlockLight(ItemStack stack) { - return true; + public @NotNull List getQuads(@Nullable BlockState state, @Nullable Direction side, + @NotNull RandomSource rand, @NotNull ModelData extraData, + @Nullable RenderType renderType) { + if (defaultItemModel != null) { + return defaultItemModel.getQuads(state, side, rand, extraData, renderType); + } + return Collections.emptyList(); } @Override @OnlyIn(Dist.CLIENT) - public void renderItem(ItemStack stack, ItemDisplayContext transformType, boolean leftHand, PoseStack matrixStack, - MultiBufferSource buffer, int combinedLight, int combinedOverlay, BakedModel model) { + public @NotNull List getRenderPasses(ItemStack stack, boolean fabulous) { + if (!(stack.getItem() instanceof ComponentItem)) { + return Collections.singletonList(this); + } var mc = Minecraft.getInstance(); - var renderItem = FacadeItemBehaviour.getFacadeStack(stack); - BlockState blockState = null; - if (renderItem.getItem() instanceof BlockItem blockItem) { - blockState = blockItem.getBlock().defaultBlockState(); - } - if (blockState != null && mc.level != null) { - model = mc.getBlockRenderer().getBlockModel(blockState); - if (!model.isCustomRenderer()) { - matrixStack.pushPose(); - ModelFactory.MODEL_TRANSFORM_BLOCK.getTransform(transformType).apply(leftHand, matrixStack); - matrixStack.translate(0, -0.1D, -0.5D); - if (transformType == ItemDisplayContext.FIRST_PERSON_LEFT_HAND || - transformType == ItemDisplayContext.FIRST_PERSON_RIGHT_HAND) { - matrixStack.translate(0.5, 0.5, 0.5); - - matrixStack.mulPose(new Quaternionf(new AxisAngle4d().set(90, 0, 1, 0))); - matrixStack.translate(-0.5, -0.5, -0.5); - } - var pose = matrixStack.last(); + if (mc.level == null) { + return Collections.singletonList(this); + } + BlockState facadeState = FacadeItemBehaviour.getFacadeStateNullable(stack); + if (facadeState == null) { + return Collections.singletonList(this); + } - var level = new FacadeBlockAndTintGetter(mc.level, BlockPos.ZERO, blockState, null); - var quads = new LinkedList<>(ModelUtil.getBakedModelQuads(model, level, BlockPos.ZERO, blockState, - Direction.NORTH, mc.level.random)); + int hash = facadeState.hashCode(); + ItemBakedModel model = CACHE.computeIfAbsent(hash, $ -> new ItemBakedModel() { - var cube = new AABB(0.01, 0.01, 0.01, 0.99, 0.99, 1 / 16f); + private final FacadeBlockAndTintGetter level = new FacadeBlockAndTintGetter(mc.level, + BlockPos.ZERO, facadeState, null); - for (Direction side : GTUtil.DIRECTIONS) { - if (side != Direction.NORTH) { - quads.add(FaceQuad.builder(side, ModelFactory.getBlockSprite(GTCEu.id("block/cable/wire"))) - .cube(cube).cubeUV().tintIndex(-1).bake()); - quads.add(FaceQuad.builder(side, ModelFactory.getBlockSprite(GTCEu.id("block/cable/wire"))) - .cube(cube).cubeUV().tintIndex(-1).bake()); - } - } + @Override + public @NotNull List getQuads(@Nullable BlockState state, @Nullable Direction side, + @NotNull RandomSource rand) { + return getQuads(state, side, rand, ModelData.EMPTY, null); + } + + @Override + public @NotNull List getQuads(@Nullable BlockState state, @Nullable Direction side, + @NotNull RandomSource rand, @NotNull ModelData extraData, + @Nullable RenderType renderType) { + return getFacadeQuads(facadeState, level, rand, extraData, renderType); + } + }); + return Collections.singletonList(model); + } + + @OnlyIn(Dist.CLIENT) + public List getFacadeQuads(BlockState state, BlockAndTintGetter level, @NotNull RandomSource rand, + @NotNull ModelData extraData, @Nullable RenderType renderType) { + var mc = Minecraft.getInstance(); + if (mc.level == null) { + return Collections.emptyList(); + } - for (BakedQuad bakedQuad : quads) { - buffer.getBuffer(RenderType.cutout()).putBulkData(pose, bakedQuad, 1, 1, 1, combinedLight, - combinedOverlay); + List quads = new LinkedList<>(); + BakedModel model = mc.getBlockRenderer().getBlockModel(state); + + if (!model.isCustomRenderer()) { + extraData = model.getModelData(level, BlockPos.ZERO, state, extraData); + + List facadeQuads = new LinkedList<>(); + facadeQuads.addAll(model.getQuads(state, null, rand, extraData, renderType)); + facadeQuads.addAll(model.getQuads(state, Direction.NORTH, rand, extraData, renderType)); + + // offset all the cover quads by a small value and bake their tint color into the vertices + BlockColors blockColors = Minecraft.getInstance().getBlockColors(); + for (BakedQuad quad : facadeQuads) { + if (quad.isTinted()) { + // if the quad has a tint index set, bake the tint into the vertex + int color = blockColors.getColor(state, level, BlockPos.ZERO, quad.getTintIndex()); + quad = GTQuadTransformers.setColor(quad, color, true); + } else { + // otherwise just copy the quad so we don't mutate the original model with the overlay offset + quad = GTQuadTransformers.copy(quad); } + TextureOverrideModel.OVERLAY_OFFSET.processInPlace(quad); - matrixStack.popPose(); + quads.add(quad); + } + + for (Direction modelSide : FACADE_EDGE_FACES) { + quads.add(StaticFaceBakery.bakeFace(FACADE_PLANE, modelSide, ICoverableRenderer.COVER_BACK_PLATE[0])); } } + return quads; } @Override @OnlyIn(Dist.CLIENT) public void renderCover(List quads, Direction side, RandomSource rand, - @NotNull CoverBehavior coverBehavior, Direction modelFacing, BlockPos pos, - BlockAndTintGetter level, ModelState modelState) { - if (coverBehavior instanceof FacadeCover facadeCover) { - var state = facadeCover.getFacadeState(); - if (state.getRenderShape() == RenderShape.MODEL) { - BlockRenderDispatcher brd = Minecraft.getInstance().getBlockRenderer(); - BakedModel model = brd.getBlockModel(state); - if (side == coverBehavior.attachedSide) { - quads.addAll(ModelUtil.getBakedModelQuads(model, level, pos, state, side, rand)); - } else if (side == null && coverBehavior.coverHolder.shouldRenderBackSide()) { - var normal = coverBehavior.attachedSide.getNormal(); - var cube = new AABB( - normal.getX() == 0 ? 0 : normal.getX() > 0 ? 1 : 0, - normal.getY() == 0 ? 0 : normal.getY() > 0 ? 1 : 0, - normal.getZ() == 0 ? 0 : normal.getZ() > 0 ? 1 : 0, - normal.getX() == 0 ? 1 : normal.getX() > 0 ? 1 : 0, - normal.getY() == 0 ? 1 : normal.getY() > 0 ? 1 : 0, - normal.getZ() == 0 ? 1 : normal.getZ() > 0 ? 1 : 0); - for (BakedQuad quad : ModelUtil.getBakedModelQuads(model, level, pos, state, - coverBehavior.attachedSide, rand)) { - quads.add(FaceQuad.builder(coverBehavior.attachedSide.getOpposite(), quad.getSprite()) - .cube(cube) - .shade(quad.isShade()) - .tintIndex(quad.getTintIndex()) - .bake()); - } - } + @NotNull CoverBehavior coverBehavior, BlockPos pos, BlockAndTintGetter level, + @NotNull ModelData modelData, @Nullable RenderType renderType) { + if (!(coverBehavior instanceof FacadeCover facadeCover)) { + return; + } + BlockState state = facadeCover.getFacadeState(); + if (state.getRenderShape() != RenderShape.MODEL) { + return; + } + + Direction attachedSide = coverBehavior.attachedSide; + + BakedModel model = Minecraft.getInstance().getBlockRenderer().getBlockModel(state); + ModelData extraData = model.getModelData(level, pos, state, modelData); + + List facadeQuads = model.getQuads(state, attachedSide, rand, extraData, renderType); + facadeQuads = new LinkedList<>(facadeQuads); + + List coverQuads = new ArrayList<>(); + if (side == attachedSide) { + coverQuads.addAll(facadeQuads); + } else if (side == null && coverBehavior.coverHolder.shouldRenderBackSide()) { + AABB cube = COVER_BACK_CUBES.get(attachedSide); + + for (BakedQuad quad : facadeQuads) { + coverQuads.add(StaticFaceBakery.bakeFace(cube, attachedSide.getOpposite(), + quad.getSprite(), BlockModelRotation.X0_Y0, + quad.getTintIndex(), 0, false, quad.isShade())); } } + + // offset all the cover quads by a small value and bake their tint color into the vertices + BlockColors blockColors = Minecraft.getInstance().getBlockColors(); + for (BakedQuad quad : coverQuads) { + if (quad.isTinted()) { + // if the quad has a tint index set, bake the tint into the vertex + int color = blockColors.getColor(state, level, pos, quad.getTintIndex()); + quad = GTQuadTransformers.setColor(quad, color, true); + } else { + // otherwise just copy the quad so we don't mutate the original model with the overlay offset + quad = GTQuadTransformers.copy(quad); + } + TextureOverrideModel.OVERLAY_OFFSET.processInPlace(quad); + + quads.add(quad); + } + } + + @Override + public boolean useAmbientOcclusion() { + if (defaultItemModel != null) { + return defaultItemModel.useAmbientOcclusion(); + } + return super.useAmbientOcclusion(); + } + + @Override + public @NotNull TextureAtlasSprite getParticleIcon(@NotNull ModelData modelData) { + if (defaultItemModel != null) { + return defaultItemModel.getParticleIcon(modelData); + } + return super.getParticleIcon(); + } + + @Override + public @NotNull BakedModel applyTransform(@NotNull ItemDisplayContext transformType, + @NotNull PoseStack poseStack, boolean leftHand) { + if (defaultItemModel != null) { + defaultItemModel.applyTransform(transformType, poseStack, leftHand); + } + return this; + } + + @SuppressWarnings("deprecation") + @Override + public @NotNull ItemTransforms getTransforms() { + if (defaultItemModel != null) { + return defaultItemModel.getTransforms(); + } + return super.getTransforms(); + } + + @Override + public @NotNull ItemOverrides getOverrides() { + if (defaultItemModel != null) { + return defaultItemModel.getOverrides(); + } + return super.getOverrides(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FluidRegulatorCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FluidRegulatorCoverRenderer.java deleted file mode 100644 index 9ca4807998f..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FluidRegulatorCoverRenderer.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.cover; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.cover.CoverBehavior; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.gregtechceu.gtceu.common.cover.PumpCover; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.NotNull; - -import java.util.List; -import java.util.function.Consumer; - -/** - * @author KilaBash - * @date 2023/3/12 - * @implNote ConveyorCoverRenderer - */ -public class FluidRegulatorCoverRenderer implements ICoverRenderer { - - public final static FluidRegulatorCoverRenderer INSTANCE = new FluidRegulatorCoverRenderer(); - public final static ResourceLocation PUMP_OVERLAY_OUT = GTCEu.id("block/cover/overlay_pump"); - public final static ResourceLocation PUMP_OVERLAY_IN = GTCEu.id("block/cover/overlay_pump_inverted"); - - protected FluidRegulatorCoverRenderer() { - if (GTCEu.isClientSide()) { - registerEvent(); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderCover(List quads, Direction side, RandomSource rand, - @NotNull CoverBehavior coverBehavior, Direction modelFacing, BlockPos pos, - BlockAndTintGetter level, ModelState modelState) { - if (side == coverBehavior.attachedSide && coverBehavior instanceof PumpCover pump && modelFacing != null) { - quads.add(StaticFaceBakery.bakeFace(modelFacing, - ModelFactory.getBlockSprite(pump.getIo() == IO.OUT ? PUMP_OVERLAY_OUT : PUMP_OVERLAY_IN), - modelState)); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - register.accept(PUMP_OVERLAY_IN); - register.accept(PUMP_OVERLAY_OUT); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverRenderer.java index bf67108162c..25f36ae3e3b 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverRenderer.java @@ -2,46 +2,25 @@ import com.gregtechceu.gtceu.api.cover.CoverBehavior; -import com.lowdragmc.lowdraglib.client.renderer.IRenderer; - +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.data.ModelData; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; -/** - * @author KilaBash - * @date 2023/2/24 - * @implNote ICoverRenderer - * Do not use it as a block renderer alone. It should be called from {@link ICoverableRenderer} - */ -public interface ICoverRenderer extends IRenderer { - - /** - * Use - * {@link #renderCover(List, Direction, RandomSource, CoverBehavior, Direction, BlockPos, BlockAndTintGetter, ModelState)} - * instead - */ - @Override - @Deprecated - @OnlyIn(Dist.CLIENT) - default List renderModel(BlockAndTintGetter level, BlockPos pos, BlockState state, Direction side, - RandomSource rand) { - return IRenderer.super.renderModel(level, pos, state, side, rand); - } +public interface ICoverRenderer { @OnlyIn(Dist.CLIENT) void renderCover(List quads, @Nullable Direction side, RandomSource rand, - @NotNull CoverBehavior coverBehavior, @Nullable Direction modelFacing, BlockPos pos, - BlockAndTintGetter level, ModelState modelState); + @NotNull CoverBehavior coverBehavior, BlockPos pos, BlockAndTintGetter level, + @NotNull ModelData modelData, @Nullable RenderType renderType); } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java index f2986b5d81e..041ae027db0 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java @@ -1,88 +1,93 @@ package com.gregtechceu.gtceu.client.renderer.cover; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.ICoverable; +import com.gregtechceu.gtceu.api.cover.CoverBehavior; +import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.client.util.RenderUtil; import com.gregtechceu.gtceu.utils.GTUtil; import com.lowdragmc.lowdraglib.client.bakedpipeline.FaceQuad; -import com.lowdragmc.lowdraglib.client.model.ModelFactory; -import com.lowdragmc.lowdraglib.client.renderer.IRenderer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; +import net.minecraft.client.renderer.texture.TextureAtlas; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.data.ModelData; +import com.mojang.blaze3d.vertex.PoseStack; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.LinkedList; import java.util.List; -/** - * @author KilaBash - * @date 2023/2/24 - * @implNote IMachineRenderer - */ -public interface ICoverableRenderer extends IRenderer { +public interface ICoverableRenderer { - @Override @OnlyIn(Dist.CLIENT) - default List renderModel(BlockAndTintGetter level, BlockPos pos, BlockState state, Direction side, - RandomSource rand) { - var blockEntity = level == null ? null : level.getBlockEntity(pos); - if (blockEntity != null) { - var coverable = GTCapabilityHelper.getCoverable(blockEntity.getLevel(), blockEntity.getBlockPos(), null); - if (coverable != null) { - var quads = new LinkedList(); - var modelState = ModelFactory.getRotation(coverable.getFrontFacing()); - var modelFacing = side == null ? null : ModelFactory.modelFacing(side, coverable.getFrontFacing()); - renderCovers(quads, side, rand, coverable, modelFacing, pos, level, modelState); - return quads; - } - } - return IRenderer.super.renderModel(level, pos, state, side, rand); + TextureAtlasSprite[] COVER_BACK_PLATE = new TextureAtlasSprite[1]; + + @OnlyIn(Dist.CLIENT) + static void initSprites(TextureAtlas atlas) { + COVER_BACK_PLATE[0] = atlas.getSprite(GTCEu.id("block/material_sets/dull/wire_side")); } @OnlyIn(Dist.CLIENT) - default void renderCovers(List quads, @Nullable Direction side, RandomSource rand, - @NotNull ICoverable coverable, @Nullable Direction modelFacing, BlockPos pos, - BlockAndTintGetter level, ModelState modelState) { + default void renderCovers(List quads, @NotNull ICoverable coverable, + BlockPos pos, BlockAndTintGetter level, @Nullable Direction side, + RandomSource rand, @NotNull ModelData modelData, @Nullable RenderType renderType) { var thickness = coverable.getCoverPlateThickness(); for (Direction face : GTUtil.DIRECTIONS) { var cover = coverable.getCoverAtSide(face); if (cover != null) { if (thickness > 0 && cover.shouldRenderPlate()) { - double min = thickness; - double max = 1d - thickness; + double min = thickness + 0.01; + double max = 0.99 - thickness; var normal = face.getNormal(); var cube = new AABB( - normal.getX() == 0 ? 0.001 : normal.getX() > 0 ? max : 0.001, - normal.getY() == 0 ? 0.001 : normal.getY() > 0 ? max : 0.001, - normal.getZ() == 0 ? 0.001 : normal.getZ() > 0 ? max : 0.001, - normal.getX() == 0 ? 0.999 : normal.getX() > 0 ? 0.999 : min, - normal.getY() == 0 ? 0.999 : normal.getY() > 0 ? 0.999 : min, - normal.getZ() == 0 ? 0.999 : normal.getZ() > 0 ? 0.999 : min); + normal.getX() > 0 ? max : 0.01, + normal.getY() > 0 ? max : 0.01, + normal.getZ() > 0 ? max : 0.01, + normal.getX() >= 0 ? 0.99 : min, + normal.getY() >= 0 ? 0.99 : min, + normal.getZ() >= 0 ? 0.99 : min); if (side == null) { // render back - quads.add(FaceQuad - .builder(face.getOpposite(), - ModelFactory.getBlockSprite(GTCEu.id("block/material_sets/dull/wire_side"))) - .cube(cube).cubeUV().tintIndex(-1).bake()); + quads.add(FaceQuad.builder(face.getOpposite(), COVER_BACK_PLATE[0]) + .cube(cube).cubeUV().bake()); } else if (side != face.getOpposite()) { // render sides - quads.add(FaceQuad - .builder(side, - ModelFactory.getBlockSprite(GTCEu.id("block/material_sets/dull/wire_side"))) - .cube(cube).cubeUV().tintIndex(-1).bake()); + quads.add(FaceQuad.builder(side, COVER_BACK_PLATE[0]) + .cube(cube).cubeUV().bake()); } } - cover.getCoverRenderer().renderCover(quads, side, rand, cover, modelFacing, pos, level, modelState); + // it won't ever be null on the client + // noinspection DataFlowIssue + cover.getCoverRenderer().get() + .renderCover(quads, side, rand, cover, pos, level, modelData, renderType); + } + } + } + + @OnlyIn(Dist.CLIENT) + default void renderDynamicCovers(MetaMachine machine, float partialTick, PoseStack poseStack, + MultiBufferSource buffer, int packedLight, int packedOverlay) { + ICoverable coverable = machine.getCoverContainer(); + for (Direction face : GTUtil.DIRECTIONS) { + CoverBehavior cover = coverable.getCoverAtSide(face); + IDynamicCoverRenderer renderer = cover != null ? cover.getDynamicRenderer().get() : null; + if (renderer != null) { + poseStack.pushPose(); + RenderUtil.moveToFace(poseStack, .5f, .5f, .5f, face); + RenderUtil.rotateToFace(poseStack, face, Direction.NORTH); + poseStack.translate(-.5f, -.5f, .01f); + renderer.render(machine, face, partialTick, poseStack, buffer, packedLight, packedOverlay); + poseStack.popPose(); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/IDynamicCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/IDynamicCoverRenderer.java new file mode 100644 index 00000000000..87e3b07670b --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/IDynamicCoverRenderer.java @@ -0,0 +1,14 @@ +package com.gregtechceu.gtceu.client.renderer.cover; + +import com.gregtechceu.gtceu.api.machine.MetaMachine; + +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.core.Direction; + +import com.mojang.blaze3d.vertex.PoseStack; + +public interface IDynamicCoverRenderer { + + void render(MetaMachine machine, Direction face, float partialTick, PoseStack poseStack, MultiBufferSource buffer, + int packedLight, int packedOverlay); +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/IOCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/IOCoverRenderer.java new file mode 100644 index 00000000000..28f0c8d5cc9 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/IOCoverRenderer.java @@ -0,0 +1,91 @@ +package com.gregtechceu.gtceu.client.renderer.cover; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.cover.CoverBehavior; +import com.gregtechceu.gtceu.api.cover.IIOCover; +import com.gregtechceu.gtceu.client.util.ModelUtils; +import com.gregtechceu.gtceu.client.util.StaticFaceBakery; + +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.BlockModelRotation; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.RandomSource; +import net.minecraft.world.inventory.InventoryMenu; +import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.data.ModelData; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.List; + +public class IOCoverRenderer implements ICoverRenderer { + + public static final IOCoverRenderer PUMP_LIKE_COVER_RENDERER = new IOCoverRenderer( + GTCEu.id("block/cover/pump"), + GTCEu.id("block/cover/pump_inverted"), + null, null); + + @OnlyIn(Dist.CLIENT) + protected TextureAtlasSprite overlaySprite = null; + @OnlyIn(Dist.CLIENT) + protected TextureAtlasSprite invertedOverlaySprite = null; + @OnlyIn(Dist.CLIENT) + protected TextureAtlasSprite emissiveOverlaySprite = null; + @OnlyIn(Dist.CLIENT) + protected TextureAtlasSprite invertedEmissiveOverlaySprite = null; + + public IOCoverRenderer(@Nullable ResourceLocation overlay, + @Nullable ResourceLocation invertedOverlay, + @Nullable ResourceLocation emissiveOverlay, + @Nullable ResourceLocation invertedEmissiveOverlay) { + ModelUtils.registerAtlasStitchedEventListener(false, InventoryMenu.BLOCK_ATLAS, event -> { + var atlas = event.getAtlas(); + + if (overlay != null) { + overlaySprite = atlas.getSprite(overlay); + } + if (invertedOverlay != null) { + invertedOverlaySprite = atlas.getSprite(invertedOverlay); + } + if (emissiveOverlay != null) { + emissiveOverlaySprite = atlas.getSprite(emissiveOverlay); + } + if (invertedEmissiveOverlay != null) { + invertedEmissiveOverlaySprite = atlas.getSprite(invertedEmissiveOverlay); + } + }); + } + + @Override + @OnlyIn(Dist.CLIENT) + public void renderCover(List quads, @Nullable Direction side, RandomSource rand, + @NotNull CoverBehavior coverBehavior, BlockPos pos, BlockAndTintGetter level, + @NotNull ModelData modelData, @Nullable RenderType renderType) { + if ((side == null || side == coverBehavior.attachedSide) && coverBehavior instanceof IIOCover ioCover) { + boolean isInverted = ioCover.getIo() != IO.OUT; + + if (isInverted && invertedOverlaySprite != null) { + quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.COVER_OVERLAY, coverBehavior.attachedSide, + invertedOverlaySprite)); + } else if (overlaySprite != null) { + quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.COVER_OVERLAY, coverBehavior.attachedSide, + overlaySprite)); + } + if (isInverted && invertedEmissiveOverlaySprite != null) { + quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.COVER_OVERLAY, coverBehavior.attachedSide, + invertedEmissiveOverlaySprite, BlockModelRotation.X0_Y0, -101, 15, true, false)); + } else if (emissiveOverlaySprite != null) { + quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.COVER_OVERLAY, coverBehavior.attachedSide, + emissiveOverlaySprite, BlockModelRotation.X0_Y0, -101, 15, true, false)); + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/PumpCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/PumpCoverRenderer.java deleted file mode 100644 index 30b92cff692..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/PumpCoverRenderer.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.cover; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.cover.CoverBehavior; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.gregtechceu.gtceu.common.cover.PumpCover; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.NotNull; - -import java.util.List; -import java.util.function.Consumer; - -/** - * @author KilaBash - * @date 2023/3/12 - * @implNote ConveyorCoverRenderer - */ -public class PumpCoverRenderer implements ICoverRenderer { - - public final static PumpCoverRenderer INSTANCE = new PumpCoverRenderer(); - public final static ResourceLocation PUMP_OVERLAY_OUT = GTCEu.id("block/cover/overlay_pump"); - public final static ResourceLocation PUMP_OVERLAY_IN = GTCEu.id("block/cover/overlay_pump_inverted"); - - protected PumpCoverRenderer() { - if (GTCEu.isClientSide()) { - registerEvent(); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderCover(List quads, Direction side, RandomSource rand, - @NotNull CoverBehavior coverBehavior, Direction modelFacing, BlockPos pos, - BlockAndTintGetter level, ModelState modelState) { - if (side == coverBehavior.attachedSide && coverBehavior instanceof PumpCover pump && modelFacing != null) { - quads.add(StaticFaceBakery.bakeFace(modelFacing, - ModelFactory.getBlockSprite(pump.getIo() == IO.OUT ? PUMP_OVERLAY_OUT : PUMP_OVERLAY_IN), - modelState)); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - register.accept(PUMP_OVERLAY_IN); - register.accept(PUMP_OVERLAY_OUT); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/RobotArmCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/RobotArmCoverRenderer.java deleted file mode 100644 index 3eae8fa24bf..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/RobotArmCoverRenderer.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.cover; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.cover.CoverBehavior; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.gregtechceu.gtceu.common.cover.RobotArmCover; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.function.Consumer; - -public class RobotArmCoverRenderer implements ICoverRenderer { - - public final static RobotArmCoverRenderer INSTANCE = new RobotArmCoverRenderer(); - public final static ResourceLocation ARM_OVERLAY = GTCEu.id("block/cover/overlay_arm"); - public final static ResourceLocation ARM_OVERLAY_OUT = GTCEu.id("block/cover/overlay_arm_emissive"); - public final static ResourceLocation AR_OVERLAY_IN = GTCEu.id("block/cover/overlay_arm_inverted_emissive"); - - protected RobotArmCoverRenderer() { - if (GTCEu.isClientSide()) { - registerEvent(); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderCover(List quads, @Nullable Direction side, RandomSource rand, - @NotNull CoverBehavior coverBehavior, @Nullable Direction modelFacing, BlockPos pos, - BlockAndTintGetter level, ModelState modelState) { - if (side == coverBehavior.attachedSide && coverBehavior instanceof RobotArmCover robotArm && - modelFacing != null) { - quads.add(StaticFaceBakery.bakeFace(modelFacing, ModelFactory.getBlockSprite(ARM_OVERLAY), modelState)); - quads.add(StaticFaceBakery.bakeFace(modelFacing, - ModelFactory.getBlockSprite(robotArm.getIo() == IO.OUT ? ARM_OVERLAY_OUT : AR_OVERLAY_IN), - modelState, -101, 15)); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - register.accept(ARM_OVERLAY); - register.accept(AR_OVERLAY_IN); - register.accept(ARM_OVERLAY_OUT); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/SimpleCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/SimpleCoverRenderer.java index b761f531ac5..472597cafcd 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/SimpleCoverRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/SimpleCoverRenderer.java @@ -1,65 +1,63 @@ package com.gregtechceu.gtceu.client.renderer.cover; -import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.cover.CoverBehavior; +import com.gregtechceu.gtceu.client.util.ModelUtils; import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.lowdragmc.lowdraglib.client.model.ModelFactory; -import com.lowdragmc.lowdraglib.utils.ResourceHelper; - +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.RandomSource; +import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.level.BlockAndTintGetter; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.data.ModelData; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/2/24 - * @implNote SimpleCoverRenderer - */ public class SimpleCoverRenderer implements ICoverRenderer { - ResourceLocation texture; - ResourceLocation emissiveTexture; + @OnlyIn(Dist.CLIENT) + protected TextureAtlasSprite sprite = null; + @OnlyIn(Dist.CLIENT) + protected TextureAtlasSprite emissiveSprite = null; public SimpleCoverRenderer(ResourceLocation texture) { - this.texture = texture; - if (GTCEu.isClientSide()) { - registerEvent(); - } + this(texture, null); } - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - register.accept(texture); - emissiveTexture = new ResourceLocation(texture.getNamespace(), texture.getPath() + "_emissive"); - if (ResourceHelper.isTextureExist(emissiveTexture)) register.accept(emissiveTexture); - else emissiveTexture = null; - } + public SimpleCoverRenderer(ResourceLocation texture, ResourceLocation emissiveTexture) { + ModelUtils.registerAtlasStitchedEventListener(false, InventoryMenu.BLOCK_ATLAS, event -> { + var atlas = event.getAtlas(); + + sprite = atlas.getSprite(texture); + if (emissiveTexture != null) { + emissiveSprite = atlas.getSprite(emissiveTexture); + } else { + ResourceLocation emissiveTex = texture.withSuffix("_emissive"); + if (atlas.getTextureLocations().contains(emissiveTex)) { + emissiveSprite = atlas.getSprite(emissiveTex); + } + } + }); } @OnlyIn(Dist.CLIENT) public void renderCover(List quads, Direction side, RandomSource rand, - @NotNull CoverBehavior coverBehavior, Direction modelFacing, BlockPos pos, - BlockAndTintGetter level, ModelState modelState) { - if (side == coverBehavior.attachedSide && modelFacing != null) { - quads.add(StaticFaceBakery.bakeFace(modelFacing, ModelFactory.getBlockSprite(texture), modelState)); - if (emissiveTexture != null) { - quads.add(StaticFaceBakery.bakeFace(modelFacing, ModelFactory.getBlockSprite(emissiveTexture), - modelState)); + @NotNull CoverBehavior coverBehavior, BlockPos pos, BlockAndTintGetter level, + @NotNull ModelData modelData, @Nullable RenderType renderType) { + if (side == null || side == coverBehavior.attachedSide) { + quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.COVER_OVERLAY, coverBehavior.attachedSide, sprite)); + if (emissiveSprite != null) { + quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.COVER_OVERLAY, coverBehavior.attachedSide, + emissiveSprite)); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ArmorItemRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ArmorItemRenderer.java new file mode 100644 index 00000000000..aff929e7ac2 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ArmorItemRenderer.java @@ -0,0 +1,49 @@ +package com.gregtechceu.gtceu.client.renderer.item; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.data.pack.GTDynamicResourcePack; + +import net.minecraft.client.Minecraft; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.util.GsonHelper; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.Item; + +import com.google.gson.JsonObject; + +import java.io.BufferedReader; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; + +public class ArmorItemRenderer { + + private static final Set MODELS = new HashSet<>(); + + public static void reinitModels() { + for (ArmorItemRenderer model : MODELS) { + // read the base armor model JSON + JsonObject original; + try (BufferedReader reader = Minecraft.getInstance().getResourceManager() + .openAsReader(GTCEu.id("models/item/armor/%s.json".formatted(model.armorType.getName())))) { + original = GsonHelper.parse(reader, true); + } catch (IOException e) { + throw new RuntimeException(e); + } + + GTDynamicResourcePack.addItemModel(BuiltInRegistries.ITEM.getKey(model.item), original); + } + } + + private final Item item; + private final ArmorItem.Type armorType; + + protected ArmorItemRenderer(Item item, ArmorItem.Type armorType) { + this.item = item; + this.armorType = armorType; + } + + public static void create(Item item, ArmorItem.Type armorType) { + MODELS.add(new ArmorItemRenderer(item, armorType)); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/item/TagPrefixItemRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/item/TagPrefixItemRenderer.java index 701b5a17f94..0537d125a26 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/item/TagPrefixItemRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/item/TagPrefixItemRenderer.java @@ -12,11 +12,6 @@ import java.util.HashSet; import java.util.Set; -/** - * @author KilaBash - * @date 2023/2/16 - * @implNote TagPrefixItemRenderer - */ public class TagPrefixItemRenderer { private static final Set MODELS = new HashSet<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ToolChargeBarRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ToolChargeBarRenderer.java index fd935ef4043..04e16962445 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ToolChargeBarRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ToolChargeBarRenderer.java @@ -11,7 +11,7 @@ import net.minecraft.util.FastColor; import net.minecraft.world.item.ItemStack; -import org.apache.commons.lang3.tuple.Pair; +import it.unimi.dsi.fastutil.ints.IntIntPair; public final class ToolChargeBarRenderer { @@ -72,10 +72,10 @@ public static boolean renderDurabilityBar(GuiGraphics graphics, ItemStack stack, float level = manager.getDurabilityForDisplay(stack); if (level == 0.0 && !manager.showEmptyBar(stack)) return false; if (level == 1.0 && !manager.showFullBar(stack)) return false; - Pair colors = manager.getDurabilityColorsForDisplay(stack); + IntIntPair colors = manager.getDurabilityColorsForDisplay(stack); boolean doDepletedColor = manager.doDamagedStateColors(stack); - int left = colors != null ? colors.getLeft() : colorBarLeftDurability; - int right = colors != null ? colors.getRight() : colorBarRightDurability; + int left = colors != null ? colors.leftInt() : colorBarLeftDurability; + int right = colors != null ? colors.rightInt() : colorBarRightDurability; render(graphics, manager.getBarWidth(stack), xPosition, yPosition, 0, true, left, right, doDepletedColor); return true; } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ToolItemRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ToolItemRenderer.java index 4fd47be00ff..9858c4daad9 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ToolItemRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ToolItemRenderer.java @@ -10,11 +10,6 @@ import java.util.HashSet; import java.util.Set; -/** - * @author KilaBash - * @date 2023/2/16 - * @implNote TagPrefixItemRenderer - */ public class ToolItemRenderer { private static final Set MODELS = new HashSet<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/BatteryBufferRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/BatteryBufferRenderer.java deleted file mode 100644 index afb24303135..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/BatteryBufferRenderer.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -import static com.gregtechceu.gtceu.client.renderer.machine.OverlayEnergyIORenderer.*; - -/** - * @author KilaBash - * @date 2023/3/10 - * @implNote TransformerRenderer - */ -public class BatteryBufferRenderer extends TieredHullMachineRenderer { - - private final int inventorySize; - - public BatteryBufferRenderer(int tier, int inventorySize) { - super(tier, GTCEu.id("block/machine/hull_machine")); - this.inventorySize = inventorySize; - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (side == frontFacing && modelFacing != null) { - var texture = inventorySize <= 4 ? ENERGY_OUT_4A : - inventorySize <= 8 ? ENERGY_OUT_8A : - ENERGY_OUT_16A; - texture.renderOverlay(quads, modelFacing, modelState, 2); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/ChargerRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/ChargerRenderer.java deleted file mode 100644 index ba250064981..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/ChargerRenderer.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.gregtechceu.gtceu.common.machine.electric.ChargerMachine; -import com.gregtechceu.gtceu.config.ConfigHolder; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.*; -import java.util.function.Consumer; - -public class ChargerRenderer extends TieredHullMachineRenderer { - - public final static ResourceLocation CHARGER_IDLE = GTCEu.id("block/machines/charger/overlay_charger_idle"); - public final static ResourceLocation CHARGER_RUNNING = GTCEu.id("block/machines/charger/overlay_charger_running"); - public final static ResourceLocation CHARGER_RUNNING_EMISSIVE = GTCEu - .id("block/machines/charger/overlay_charger_running_emissive"); - public final static ResourceLocation CHARGER_FINISHED = GTCEu.id("block/machines/charger/overlay_charger_finished"); - public final static ResourceLocation CHARGER_FINISHED_EMISSIVE = GTCEu - .id("block/machines/charger/overlay_charger_finished_emissive"); - - public ChargerRenderer(int tier) { - super(tier, GTCEu.id("block/machine/hull_machine")); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - var state = ChargerMachine.State.IDLE; - if (machine instanceof ChargerMachine charger) { - state = charger.getState(); - } - - if (side != frontFacing || modelFacing == null) { - return; - } - switch (state) { - case IDLE -> quads.add(StaticFaceBakery.bakeFace(modelFacing, ModelFactory.getBlockSprite(CHARGER_IDLE), - modelState, -1, 0, false, true)); - case RUNNING -> { - quads.add(StaticFaceBakery.bakeFace(modelFacing, - ModelFactory.getBlockSprite(CHARGER_RUNNING), - modelState, -1, 0, true, true)); - if (ConfigHolder.INSTANCE.client.machinesEmissiveTextures) { - quads.add(StaticFaceBakery.bakeFace(modelFacing, - ModelFactory.getBlockSprite(CHARGER_RUNNING_EMISSIVE), - modelState, -101, 15, true, false)); - } - } - case FINISHED -> { - quads.add(StaticFaceBakery.bakeFace(modelFacing, ModelFactory.getBlockSprite(CHARGER_FINISHED), - modelState, -1, 0, true, true)); - if (ConfigHolder.INSTANCE.client.machinesEmissiveTextures) { - quads.add(StaticFaceBakery.bakeFace(modelFacing, - ModelFactory.getBlockSprite(CHARGER_FINISHED_EMISSIVE), - modelState, -101, 15, true, false)); - } - } - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - register.accept(CHARGER_IDLE); - register.accept(CHARGER_RUNNING); - register.accept(CHARGER_RUNNING_EMISSIVE); - register.accept(CHARGER_FINISHED); - register.accept(CHARGER_FINISHED_EMISSIVE); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/ConverterRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/ConverterRenderer.java deleted file mode 100644 index dc14480b155..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/ConverterRenderer.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.gregtechceu.gtceu.common.machine.electric.ConverterMachine; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.function.Consumer; - -import static com.gregtechceu.gtceu.client.renderer.machine.OverlayEnergyIORenderer.*; - -public class ConverterRenderer extends TieredHullMachineRenderer { - - private static final ResourceLocation CONVERTER_FE_IN = GTCEu.id("block/overlay/converter/converter_native_in"); - private static final ResourceLocation CONVERTER_FE_OUT = GTCEu.id("block/overlay/converter/converter_native_out"); - private final OverlayEnergyIORenderer ENERGY_IN; - private final OverlayEnergyIORenderer ENERGY_OUT; - - public ConverterRenderer(int tier, int baseAmp) { - super(tier, GTCEu.id("block/machine/hull_machine")); - switch (baseAmp) { - case 4: - ENERGY_IN = ENERGY_IN_4A; - ENERGY_OUT = ENERGY_OUT_4A; - break; - case 8: - ENERGY_IN = ENERGY_IN_8A; - ENERGY_OUT = ENERGY_OUT_8A; - break; - case 16: - ENERGY_IN = ENERGY_IN_16A; - ENERGY_OUT = ENERGY_OUT_16A; - break; - default: - ENERGY_IN = ENERGY_IN_1A; - ENERGY_OUT = ENERGY_OUT_1A; - break; - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - var isFeToEu = false; - if (machine instanceof ConverterMachine converter) { - isFeToEu = converter.isFeToEu(); - } - if (side == frontFacing && modelFacing != null) { - if (isFeToEu) { - ENERGY_OUT.renderOverlay(quads, modelFacing, modelState, 2); - } else { - quads.add(StaticFaceBakery.bakeFace(modelFacing, ModelFactory.getBlockSprite(CONVERTER_FE_OUT), - modelState, -1)); - } - } else if (side != null && modelFacing != null) { - if (isFeToEu) { - quads.add(StaticFaceBakery.bakeFace(modelFacing, ModelFactory.getBlockSprite(CONVERTER_FE_IN), - modelState, -1)); - } else { - ENERGY_IN.renderOverlay(quads, modelFacing, modelState, 2); - } - } - } - - @Override - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - register.accept(CONVERTER_FE_IN); - register.accept(CONVERTER_FE_OUT); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/CrateRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/CrateRenderer.java deleted file mode 100644 index 55468bc5915..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/CrateRenderer.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.gregtechceu.gtceu.common.machine.storage.CrateMachine; -import com.gregtechceu.gtceu.utils.GTUtil; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -public class CrateRenderer extends MachineRenderer { - - private static final ResourceLocation MAINTENANCE_OVERLAY_TAPED = GTCEu - .id("block/overlay/machine/overlay_crate_taped"); - - public CrateRenderer(ResourceLocation modelLocation) { - super(modelLocation); - } - - @Override - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, - @Nullable Direction modelFacing, ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (machine instanceof CrateMachine crate && crate.isTaped()) { - for (var direction : GTUtil.DIRECTIONS) { - quads.add(StaticFaceBakery.bakeFace( - StaticFaceBakery.SLIGHTLY_OVER_BLOCK, direction, - ModelFactory.getBlockSprite(MAINTENANCE_OVERLAY_TAPED), modelState, -1, 0, true, true)); - } - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DiodeRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DiodeRenderer.java deleted file mode 100644 index 9a532aa4812..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DiodeRenderer.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.common.machine.multiblock.part.DiodePartMachine; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -import static com.gregtechceu.gtceu.client.renderer.machine.OverlayEnergyIORenderer.*; - -public class DiodeRenderer extends TieredHullMachineRenderer { - - public DiodeRenderer(int tier) { - super(tier, GTCEu.id("block/machine/hull_machine")); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - OverlayEnergyIORenderer energyIn = ENERGY_IN_1A; - OverlayEnergyIORenderer energyOut = ENERGY_OUT_1A; - var amps = 1; - if (machine instanceof DiodePartMachine diode) { - amps = diode.getAmps(); - } - switch (amps) { - case 2 -> { - energyIn = ENERGY_IN_2A; - energyOut = ENERGY_OUT_2A; - } - case 4 -> { - energyIn = ENERGY_IN_4A; - energyOut = ENERGY_OUT_4A; - } - case 8 -> { - energyIn = ENERGY_IN_8A; - energyOut = ENERGY_OUT_8A; - } - case 16 -> { - energyIn = ENERGY_IN_16A; - energyOut = ENERGY_OUT_16A; - } - } - - if (side == frontFacing && modelFacing != null) { - energyOut.renderOverlay(quads, modelFacing, modelState, 2); - } else if (side != null && modelFacing != null) { - energyIn.renderOverlay(quads, modelFacing, modelState, 2); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRender.java new file mode 100644 index 00000000000..1b667158a47 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRender.java @@ -0,0 +1,41 @@ +package com.gregtechceu.gtceu.client.renderer.machine; + +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.machine.feature.IMachineFeature; +import com.gregtechceu.gtceu.client.model.machine.IMachineRendererModel; +import com.gregtechceu.gtceu.client.model.machine.MachineModel; + +import com.mojang.serialization.Codec; +import lombok.Getter; +import lombok.Setter; +import org.jetbrains.annotations.NotNull; + +public abstract class DynamicRender> + implements Comparable>, IMachineRendererModel { + + public static final Codec> CODEC = DynamicRenderManager.TYPE_CODEC + .dispatchStable(DynamicRender::getType, DynamicRenderType::codec); + + @Getter + @Setter + protected MachineModel parent; + + public DynamicRender() {} + + public abstract DynamicRenderType getType(); + + @Override + public MachineDefinition getDefinition() { + return parent.getDefinition(); + } + + @Override + public int compareTo(@NotNull DynamicRender o) { + return this.getType().compareTo(o.getType()); + } + + @Override + public boolean isBlockEntityRenderer() { + return true; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRenderHelper.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRenderHelper.java new file mode 100644 index 00000000000..c6cd2f5c598 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRenderHelper.java @@ -0,0 +1,60 @@ +package com.gregtechceu.gtceu.client.renderer.machine; + +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; +import com.gregtechceu.gtceu.client.renderer.block.FluidBlockRenderer; +import com.gregtechceu.gtceu.client.renderer.machine.impl.*; +import com.gregtechceu.gtceu.common.block.BoilerFireboxType; + +import net.minecraft.client.renderer.LightTexture; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.material.Fluids; + +import java.util.List; +import java.util.Optional; +import java.util.function.Supplier; + +public class DynamicRenderHelper { + + public static DynamicRender makeBoilerPartRender(BoilerFireboxType fireboxType, + Supplier casingBlock) { + return new BoilerMultiPartRender(fireboxType, casingBlock); + } + + @SuppressWarnings("OptionalUsedAsFieldOrParameterType") + public static DynamicRender makeFluidAreaRender(FluidBlockRenderer fluidBlockRenderer, + Optional fixedFluid, + List drawFaces) { + return new FluidAreaRender(fluidBlockRenderer, fixedFluid, drawFaces); + } + + public static DynamicRender makeRecipeFluidAreaRender() { + return makeFluidAreaRender(FluidBlockRenderer.Builder.create() + .setFaceOffset(-0.125f) + .setForcedLight(LightTexture.FULL_BRIGHT) + .getRenderer(), Optional.empty(), FluidAreaRender.DEFAULT_FACES); + } + + public static DynamicRender createPBFLavaRender() { + return makeFluidAreaRender(FluidBlockRenderer.Builder.create() + .setFaceOffset(-0.125f) + .setForcedLight(LightTexture.FULL_BRIGHT) + .getRenderer(), Optional.of(Fluids.LAVA.getSource()), FluidAreaRender.DEFAULT_FACES); + } + + public static DynamicRender createFusionRingRender() { + return new FusionRingRender(); + } + + public static DynamicRender createQuantumChestRender() { + return new QuantumChestItemRender(); + } + + public static DynamicRender createQuantumTankRender() { + return new QuantumTankFluidRender(); + } + + public static DynamicRender createCentralMonitorRender() { + return new CentralMonitorRender(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRenderManager.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRenderManager.java new file mode 100644 index 00000000000..d33373db729 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRenderManager.java @@ -0,0 +1,59 @@ +package com.gregtechceu.gtceu.client.renderer.machine; + +import com.gregtechceu.gtceu.api.machine.feature.IMachineFeature; + +import net.minecraft.resources.ResourceLocation; + +import com.google.common.collect.BiMap; +import com.google.common.collect.HashBiMap; +import com.mojang.serialization.Codec; +import com.mojang.serialization.DataResult; +import org.jetbrains.annotations.Nullable; + +import java.util.function.BinaryOperator; + +public final class DynamicRenderManager { + + public static final BinaryOperator MODEL_ID_FORMATTER = "/block/machine/%s/dynamic_render/%s"::formatted; + + public static final Codec> TYPE_CODEC = ResourceLocation.CODEC.flatXmap( + id -> { + var type = DynamicRenderManager.getType(id); + if (type != null) { + return DataResult.success(type); + } else { + return DataResult.error(() -> "Dynamic render type with ID " + id + " does not exist"); + } + }, type -> { + ResourceLocation id = getId(type); + if (id != null) { + return DataResult.success(id); + } else { + return DataResult.error(() -> "Dynamic render type " + type + " is not registered"); + } + }); + + private static final BiMap> DYNAMIC_RENDERER_TYPES = HashBiMap.create(5); + + // spotless:off + public static > DynamicRenderType register(ResourceLocation id, + DynamicRenderType type) { + if (DYNAMIC_RENDERER_TYPES.containsKey(id)) { + throw new IllegalArgumentException("Cannot register multiple dynamic render types with the same id! Tried " + id); + } + DYNAMIC_RENDERER_TYPES.put(id, type); + return type; + } + + @SuppressWarnings("unchecked") + public static > @Nullable DynamicRenderType getType(ResourceLocation id) { + return (DynamicRenderType) DYNAMIC_RENDERER_TYPES.get(id); + } + + public static @Nullable ResourceLocation getId(DynamicRenderType type) { + return DYNAMIC_RENDERER_TYPES.inverse().get(type); + } + // spotless:on + + private DynamicRenderManager() {} +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRenderType.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRenderType.java new file mode 100644 index 00000000000..db237eb19cc --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRenderType.java @@ -0,0 +1,21 @@ +package com.gregtechceu.gtceu.client.renderer.machine; + +import com.gregtechceu.gtceu.api.machine.feature.IMachineFeature; + +import net.minecraft.resources.ResourceLocation; + +import com.mojang.serialization.Codec; +import org.jetbrains.annotations.NotNull; + +public record DynamicRenderType>(Codec codec) + implements Comparable> { + + public ResourceLocation getId() { + return DynamicRenderManager.getId(this); + } + + @Override + public int compareTo(@NotNull DynamicRenderType o) { + return this.getId().compareTo(o.getId()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/FusionReactorRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/FusionReactorRenderer.java deleted file mode 100644 index 559e9b69bf9..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/FusionReactorRenderer.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; -import com.gregtechceu.gtceu.client.renderer.GTRenderTypes; -import com.gregtechceu.gtceu.client.util.BloomUtils; -import com.gregtechceu.gtceu.client.util.RenderBufferHelper; -import com.gregtechceu.gtceu.common.machine.multiblock.electric.FusionReactorMachine; - -import com.lowdragmc.shimmer.client.shader.RenderUtils; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.Mth; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import com.mojang.blaze3d.vertex.PoseStack; - -import static net.minecraft.util.FastColor.ARGB32.*; - -public class FusionReactorRenderer extends WorkableCasingMachineRenderer { - - public static final float FADEOUT = 60; - - protected float delta = 0; - protected int lastColor = -1; - - public FusionReactorRenderer(ResourceLocation baseCasing, ResourceLocation workableModel) { - super(baseCasing, workableModel); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void render(BlockEntity blockEntity, float partialTicks, PoseStack stack, MultiBufferSource buffer, - int combinedLight, int combinedOverlay) { - if (blockEntity instanceof IMachineBlockEntity machineBlockEntity && - machineBlockEntity.getMetaMachine() instanceof FusionReactorMachine machine) { - if (!machine.recipeLogic.isWorking() && delta <= 0) { - return; - } - if (GTCEu.Mods.isShimmerLoaded()) { - PoseStack finalStack = RenderUtils.copyPoseStack(stack); - BloomUtils.entityBloom(source -> renderLightRing(machine, partialTicks, finalStack, source)); - } else { - renderLightRing(machine, partialTicks, stack, buffer); - } - } - } - - @OnlyIn(Dist.CLIENT) - private void renderLightRing(FusionReactorMachine machine, float partialTicks, PoseStack stack, - MultiBufferSource buffer) { - var color = machine.getColor(); - var alpha = 1f; - if (machine.recipeLogic.isWorking()) { - lastColor = color; - delta = FADEOUT; - } else { - alpha = delta / FADEOUT; - lastColor = color(Mth.floor(alpha * 255), red(lastColor), green(lastColor), blue(lastColor)); - delta -= Minecraft.getInstance().getDeltaFrameTime(); - } - - final var lerpFactor = Math.abs((Math.abs(machine.getOffsetTimer() % 50) + partialTicks) - 25) / 25; - var front = machine.getFrontFacing(); - var upwards = machine.getUpwardsFacing(); - var flipped = machine.isFlipped(); - var back = RelativeDirection.BACK.getRelativeFacing(front, upwards, flipped); - var axis = RelativeDirection.UP.getRelativeFacing(front, upwards, flipped).getAxis(); - var r = Mth.lerp(lerpFactor, red(lastColor), 255) / 255f; - var g = Mth.lerp(lerpFactor, green(lastColor), 255) / 255f; - var b = Mth.lerp(lerpFactor, blue(lastColor), 255) / 255f; - RenderBufferHelper.renderRing(stack, buffer.getBuffer(GTRenderTypes.getLightRing()), - back.getStepX() * 7 + 0.5F, - back.getStepY() * 7 + 0.5F, - back.getStepZ() * 7 + 0.5F, - 6, 0.2F, 10, 20, - r, g, b, alpha, axis); - } - - @Override - @OnlyIn(Dist.CLIENT) - public boolean hasTESR(BlockEntity blockEntity) { - return true; - } - - @Override - @OnlyIn(Dist.CLIENT) - public boolean isGlobalRenderer(BlockEntity blockEntity) { - return true; - } - - @Override - @OnlyIn(Dist.CLIENT) - public int getViewDistance() { - return 32; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/HPCAPartRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/HPCAPartRenderer.java deleted file mode 100644 index 0f52c6298b4..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/HPCAPartRenderer.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.capability.IWorkable; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.gregtechceu.gtceu.common.machine.multiblock.electric.research.HPCAMachine; -import com.gregtechceu.gtceu.common.machine.multiblock.part.hpca.HPCAComponentPartMachine; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.MethodsReturnNonnullByDefault; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -import javax.annotation.ParametersAreNonnullByDefault; - -@MethodsReturnNonnullByDefault -@ParametersAreNonnullByDefault -public class HPCAPartRenderer extends TieredHullMachineRenderer { - - private final ResourceLocation texture, activeTexture, activeEmissiveTexture, damagedTexture, damagedActiveTexture, - damagedActiveEmissiveTexture; - - public HPCAPartRenderer(boolean isAdvanced, ResourceLocation texture, ResourceLocation damagedTexture) { - super(GTValues.ZPM, - isAdvanced ? GTCEu.id("block/computer_casing") : GTCEu.id("block/advanced_computer_casing")); - this.texture = texture; - this.activeTexture = texture.withSuffix("_active"); - this.activeEmissiveTexture = this.activeTexture.withSuffix("_emissive"); - this.damagedTexture = damagedTexture; - this.damagedActiveTexture = damagedTexture.withSuffix("_active"); - this.damagedActiveEmissiveTexture = this.damagedActiveTexture.withSuffix("_emissive"); - } - - public HPCAPartRenderer(boolean isAdvanced, - ResourceLocation texture, - @Nullable ResourceLocation activeTexture, - @Nullable ResourceLocation activeEmissiveTexture, - @Nullable ResourceLocation damagedTexture, - @Nullable ResourceLocation damagedActiveTexture, - @Nullable ResourceLocation damagedActiveEmissiveTexture) { - super(GTValues.ZPM, - isAdvanced ? GTCEu.id("block/computer_casing") : GTCEu.id("block/advanced_computer_casing")); - this.texture = texture; - this.activeTexture = activeTexture; - this.activeEmissiveTexture = activeEmissiveTexture; - this.damagedTexture = damagedTexture; - this.damagedActiveTexture = damagedActiveTexture; - this.damagedActiveEmissiveTexture = damagedActiveEmissiveTexture; - } - - @Override - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, - @Nullable Direction modelFacing, ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (machine instanceof HPCAComponentPartMachine hpcaComponent) { - ResourceLocation texture, emissiveTexture = null; - var controller = hpcaComponent.isFormed() ? hpcaComponent.getControllers().first() : null; - if (controller != null && (controller instanceof IWorkable workable && workable.isActive())) { - if (hpcaComponent.isDamaged()) { - texture = this.damagedActiveTexture; - emissiveTexture = this.damagedActiveEmissiveTexture; - } else { - texture = this.activeTexture; - emissiveTexture = this.activeEmissiveTexture; - } - } else { - if (hpcaComponent.isDamaged()) { - texture = this.damagedTexture; - } else { - texture = this.texture; - } - } - if (texture == null) { - texture = this.texture; - } - if (texture != null) { - Direction facing = frontFacing; - // Always render this outwards in the HPCA, in case it is not placed outwards in structure. - // Check for HPCA specifically since these components could potentially be used in other multiblocks. - if (controller instanceof HPCAMachine hpca) { - facing = RelativeDirection.RIGHT.getRelativeFacing(hpca.getFrontFacing(), hpca.getUpwardsFacing(), - hpca.isFlipped()); - } - facing = ModelFactory.modelFacing(frontFacing, facing); - quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.SLIGHTLY_OVER_BLOCK, facing, - ModelFactory.getBlockSprite(texture), modelState, -1, 0, true, true)); - if (emissiveTexture != null) { - quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.SLIGHTLY_OVER_BLOCK, facing, - ModelFactory.getBlockSprite(emissiveTexture), - modelState, -101, 15, true, false)); - } - } - } else { - ResourceLocation texture = this.texture; - if (texture != null) { - quads.add(StaticFaceBakery.bakeFace( - StaticFaceBakery.SLIGHTLY_OVER_BLOCK, Direction.NORTH, - ModelFactory.getBlockSprite(texture), modelState, -1, 0, true, true)); - } - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/IControllerRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/IControllerRenderer.java deleted file mode 100644 index b8d2c4b0c64..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/IControllerRenderer.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -/** - * @author KilaBash - * @date 2023/3/16 - * @implNote IControllerRenderer - */ -public interface IControllerRenderer { - - /** - * Render a specific model for given part. - */ - @OnlyIn(Dist.CLIENT) - void renderPartModel(List quads, IMultiController machine, IMultiPart part, Direction frontFacing, - @Nullable Direction side, RandomSource rand, Direction modelFacing, ModelState modelState); -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/IPartRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/IPartRenderer.java deleted file mode 100644 index 6b75cd3f0f4..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/IPartRenderer.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.api.block.MetaMachineBlock; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -/** - * @author KilaBash - * @date 2023/3/16 - * @implNote IPartRenderer - */ -public interface IPartRenderer { - - /** - * Render part according to its controllers. - * - * @return whether its model has been replaced with controller's model - */ - @OnlyIn(Dist.CLIENT) - default boolean renderReplacedPartMachine(List quads, IMultiPart part, Direction frontFacing, - @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - var controllers = part.getControllers(); - for (IMultiController controller : controllers) { - var state = controller.self().getBlockState(); - if (state.getBlock() instanceof MetaMachineBlock block) { - var renderer = block.definition.getRenderer(); - if (renderer instanceof IControllerRenderer controllerRenderer) { - controllerRenderer.renderPartModel(quads, controller, part, frontFacing, side, rand, modelFacing, - modelState); - return true; - } else if (renderer instanceof MachineRenderer machineRenderer) { - machineRenderer.renderBaseModel(quads, block.definition, controller.self(), modelState, side, rand); - return true; - } - } - } - return false; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/LargeBoilerRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/LargeBoilerRenderer.java deleted file mode 100644 index 9663f72fe69..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/LargeBoilerRenderer.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; -import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.gregtechceu.gtceu.common.block.BoilerFireboxType; -import com.gregtechceu.gtceu.utils.GTMatrixUtils; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -public class LargeBoilerRenderer extends WorkableCasingMachineRenderer implements IControllerRenderer { - - public static final ResourceLocation BLOOM_OVERLAY = GTCEu.id("block/casings/firebox/machine_casing_firebox_bloom"); - public final BoilerFireboxType firebox; - - public LargeBoilerRenderer(ResourceLocation texture, BoilerFireboxType firebox, ResourceLocation workableModel) { - super(texture, workableModel); - this.firebox = firebox; - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderPartModel(List quads, IMultiController machine, IMultiPart part, Direction frontFacing, - @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - if (side == null) { - return; - } - - var multiFront = MetaMachine.getFrontFacing(machine.self()); - var multiUpward = MetaMachine.getUpwardFacing(machine.self()); - var multiState = GTMatrixUtils.createRotationState(multiFront, Direction.NORTH); - var multiFacing = ModelFactory.modelFacing(side, multiFront); - var flipped = machine.self().isFlipped(); - var relativeDown = RelativeDirection.DOWN.getRelativeFacing(multiFront, multiUpward, flipped); - // the rest of the owl - if (machine.self().getPos().relative(relativeDown).get(relativeDown.getAxis()) != - part.self().getPos().get(relativeDown.getAxis())) { - quads.add(StaticFaceBakery.bakeFace(multiFacing, ModelFactory.getBlockSprite(baseCasing), multiState)); - return; - } - // firebox - if (side == relativeDown) { - quads.add( - StaticFaceBakery.bakeFace(multiFacing, ModelFactory.getBlockSprite(firebox.bottom()), multiState)); - } else if (side == RelativeDirection.UP.getRelativeFacing(multiFacing, multiUpward, flipped)) { - quads.add(StaticFaceBakery.bakeFace(multiFacing, ModelFactory.getBlockSprite(firebox.top()), multiState)); - } else { - quads.add(StaticFaceBakery.bakeFace(multiFacing, ModelFactory.getBlockSprite(firebox.side()), multiState)); - if (machine instanceof IRecipeLogicMachine recipeLogicMachine && - recipeLogicMachine.getRecipeLogic().isWorking()) { - quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.SLIGHTLY_OVER_BLOCK, multiFacing, - ModelFactory.getBlockSprite(BLOOM_OVERLAY), multiState, -101, 15, true, false)); - } - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/LargeMinerRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/LargeMinerRenderer.java deleted file mode 100644 index 2a08ab8f283..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/LargeMinerRenderer.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraft.world.phys.AABB; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -public class LargeMinerRenderer extends WorkableCasingMachineRenderer { - - public static final AABB BEHIND_BLOCK = new AABB(0, -0.005, 1, 1, 1, 2); - - public LargeMinerRenderer(ResourceLocation baseCasing, ResourceLocation workableModel) { - super(baseCasing, workableModel); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, - @Nullable Direction modelFacing, ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (machine instanceof IMultiController controller && controller.isFormed() && side == Direction.DOWN && - modelFacing != null) { - quads.add(StaticFaceBakery.bakeFace(BEHIND_BLOCK, modelFacing, - ModelFactory.getBlockSprite(MinerRenderer.PIPE_IN_OVERLAY), modelState, -101, 15, true, true)); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/MachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/MachineRenderer.java deleted file mode 100644 index 2aa9b3e28e8..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/MachineRenderer.java +++ /dev/null @@ -1,210 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.block.MetaMachineBlock; -import com.gregtechceu.gtceu.api.item.MetaMachineItem; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputFluid; -import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputItem; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; -import com.gregtechceu.gtceu.client.model.ItemBakedModel; -import com.gregtechceu.gtceu.client.renderer.block.TextureOverrideRenderer; -import com.gregtechceu.gtceu.client.renderer.cover.ICoverableRenderer; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.gregtechceu.gtceu.utils.GTMatrixUtils; - -import com.lowdragmc.lowdraglib.client.bakedpipeline.Quad; -import com.lowdragmc.lowdraglib.client.model.ModelFactory; -import com.lowdragmc.lowdraglib.client.model.custommodel.ICTMPredicate; -import com.lowdragmc.lowdraglib.client.renderer.IItemRendererProvider; -import com.lowdragmc.lowdraglib.utils.FacadeBlockAndTintGetter; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.BlockModelRotation; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraft.world.item.ItemDisplayContext; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import com.mojang.blaze3d.vertex.PoseStack; -import org.jetbrains.annotations.Nullable; - -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; -import java.util.function.Consumer; - -public class MachineRenderer extends TextureOverrideRenderer - implements ICoverableRenderer, IPartRenderer, ICTMPredicate { - - public static final ResourceLocation PIPE_OVERLAY = GTCEu.id("block/overlay/machine/overlay_pipe"); - public static final ResourceLocation FLUID_OUTPUT_OVERLAY = GTCEu.id("block/overlay/machine/overlay_fluid_output"); - public static final ResourceLocation ITEM_OUTPUT_OVERLAY = GTCEu.id("block/overlay/machine/overlay_item_output"); - - public MachineRenderer(ResourceLocation modelLocation) { - super(modelLocation); - } - - @Override - @OnlyIn(Dist.CLIENT) - public boolean useBlockLight(ItemStack stack) { - return true; - } - - @Override - @OnlyIn(Dist.CLIENT) - public boolean useAO() { - return true; - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderItem(ItemStack stack, ItemDisplayContext transformType, boolean leftHand, PoseStack matrixStack, - MultiBufferSource buffer, int combinedLight, int combinedOverlay, BakedModel model) { - if (stack.getItem() instanceof MetaMachineItem machineItem) { - IItemRendererProvider.disabled.set(true); - Minecraft.getInstance().getItemRenderer().render(stack, transformType, leftHand, matrixStack, buffer, - combinedLight, combinedOverlay, - new ItemBakedModel() { - - @Override - @OnlyIn(Dist.CLIENT) - public List getQuads(@Nullable BlockState state, @Nullable Direction direction, - RandomSource random) { - List quads = new LinkedList<>(); - renderMachine(quads, machineItem.getDefinition(), null, Direction.NORTH, direction, random, - direction, BlockModelRotation.X0_Y0); - return quads; - } - }); - IItemRendererProvider.disabled.set(false); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public final List renderModel(@Nullable BlockAndTintGetter level, @Nullable BlockPos pos, - @Nullable BlockState state, @Nullable Direction side, RandomSource rand) { - if (state != null && state.getBlock() instanceof MetaMachineBlock machineBlock) { - var frontFacing = machineBlock.getFrontFacing(state); - var machine = (level == null || pos == null) ? null : machineBlock.getMachine(level, pos); - if (machine != null) { - var definition = machine.getDefinition(); - var machineModelState = GTMatrixUtils.createRotationState(frontFacing, - MetaMachine.getUpwardFacing(machine)); - var blockModelState = ModelFactory.getRotation(frontFacing); - var modelFacing = side == null ? null : ModelFactory.modelFacing(side, frontFacing); - var quads = new LinkedList(); - // render machine additional quads - renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, machineModelState); - - // render auto IO - if (machine instanceof IAutoOutputItem autoOutputItem) { - var itemFace = autoOutputItem.getOutputFacingItems(); - if (itemFace != null && side == itemFace) { - quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.OUTPUT_OVERLAY, - modelFacing, ModelFactory.getBlockSprite(PIPE_OVERLAY), blockModelState, - -1, 0, true, true)); - if (autoOutputItem.isAutoOutputItems()) { - quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.AUTO_OUTPUT_OVERLAY, - modelFacing, ModelFactory.getBlockSprite(ITEM_OUTPUT_OVERLAY), blockModelState, - -101, 15, true, true)); - } - } - } - if (machine instanceof IAutoOutputFluid autoOutputFluid) { - var fluidFace = autoOutputFluid.getOutputFacingFluids(); - if (fluidFace != null && side == fluidFace) { - quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.OUTPUT_OVERLAY, - modelFacing, ModelFactory.getBlockSprite(PIPE_OVERLAY), blockModelState, - -1, 0, true, true)); - if (autoOutputFluid.isAutoOutputFluids()) { - quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.AUTO_OUTPUT_OVERLAY, - modelFacing, ModelFactory.getBlockSprite(FLUID_OUTPUT_OVERLAY), blockModelState, - -101, 15, true, true)); - } - } - } - - // render covers - int start = quads.size(); - ICoverableRenderer.super.renderCovers(quads, side, rand, machine.getCoverContainer(), modelFacing, pos, - level, blockModelState); - var iterator = quads.listIterator(start); - while (iterator.hasNext()) { - iterator.set(Quad.from(iterator.next(), coverOverlayOffset()).rebake()); - } - return quads; - } - } - return Collections.emptyList(); - } - - @OnlyIn(Dist.CLIENT) - public void renderBaseModel(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - ModelState modelState, @Nullable Direction side, RandomSource rand) { - quads.addAll(getRotatedModel(MetaMachine.getFrontFacing(machine)) - .getQuads(definition.defaultBlockState(), side, rand)); - } - - /** - * Render machine block / item - * - * @param quads quads pipeline - * @param definition machine definition - * @param machine if null, rendering item - * @param frontFacing front facing - * @param side quad side - * @param rand random - * @param modelFacing model facing before rotation - * @param modelState uvLocked rotation according to the front facing - */ - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, - @Nullable Direction modelFacing, ModelState modelState) { - if (!(machine instanceof IMultiPart part) || !part.replacePartModelWhenFormed() || - !renderReplacedPartMachine(quads, part, frontFacing, side, rand, modelFacing, modelState)) { - renderBaseModel(quads, definition, machine, modelState, side, rand); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - register.accept(PIPE_OVERLAY); - register.accept(FLUID_OUTPUT_OVERLAY); - register.accept(ITEM_OUTPUT_OVERLAY); - } - } - - ////////////////////////////////////// - // ********** CTM ***********// - ////////////////////////////////////// - @Override - public boolean isConnected(BlockAndTintGetter level, BlockState state, BlockPos pos, BlockState sourceState, - BlockPos sourcePos, Direction side) { - var stateAppearance = FacadeBlockAndTintGetter.getAppearance(state, level, pos, side, sourceState, sourcePos); - var sourceStateAppearance = FacadeBlockAndTintGetter.getAppearance(sourceState, level, sourcePos, side, state, - pos); - return stateAppearance == sourceStateAppearance; - } - - public float coverOverlayOffset() { - return .008f; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/MaintenanceHatchPartRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/MaintenanceHatchPartRenderer.java deleted file mode 100644 index b8d428660c4..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/MaintenanceHatchPartRenderer.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.function.Consumer; - -public class MaintenanceHatchPartRenderer extends OverlayTieredMachineRenderer { - - private static final ResourceLocation MAINTENANCE_OVERLAY_TAPED = GTCEu - .id("block/overlay/machine/overlay_maintenance_taped"); - - public MaintenanceHatchPartRenderer(int tier, ResourceLocation overlayModel) { - super(tier, overlayModel); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, - @Nullable Direction modelFacing, ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (side == frontFacing && modelFacing != null && machine instanceof IMaintenanceMachine maintenanceHatch && - maintenanceHatch.isTaped()) { - quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.AUTO_OUTPUT_OVERLAY, modelFacing, - ModelFactory.getBlockSprite(MAINTENANCE_OVERLAY_TAPED), modelState, -1, 0, true, true)); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - register.accept(MAINTENANCE_OVERLAY_TAPED); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/MinerRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/MinerRenderer.java deleted file mode 100644 index dcd1abaa041..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/MinerRenderer.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.data.chemical.material.Material; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.gregtechceu.gtceu.common.data.GTMaterials; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import com.google.common.collect.ImmutableMap; -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.function.Consumer; - -public class MinerRenderer extends WorkableTieredHullMachineRenderer { - - public static final ResourceLocation PIPE_IN_OVERLAY = GTCEu.id("block/overlay/machine/overlay_pipe_in"); - public static final ImmutableMap MATERIALS_TO_CASING_MODELS; - - static { - ImmutableMap.Builder builder = ImmutableMap.builder(); - builder.put(GTMaterials.Bronze, GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks")); - builder.put(GTMaterials.Invar, GTCEu.id("block/casings/solid/machine_casing_heatproof")); - builder.put(GTMaterials.Aluminium, GTCEu.id("block/casings/solid/machine_casing_frost_proof")); - builder.put(GTMaterials.Steel, GTCEu.id("block/casings/solid/machine_casing_solid_steel")); - builder.put(GTMaterials.StainlessSteel, GTCEu.id("block/casings/solid/machine_casing_clean_stainless_steel")); - builder.put(GTMaterials.Titanium, GTCEu.id("block/casings/solid/machine_casing_stable_titanium")); - builder.put(GTMaterials.TungstenSteel, GTCEu.id("block/casings/solid/machine_casing_robust_tungstensteel")); - builder.put(GTMaterials.Polytetrafluoroethylene, GTCEu.id("block/casings/solid/machine_casing_inert_ptfe")); - builder.put(GTMaterials.HSSE, GTCEu.id("block/casings/solid/machine_casing_sturdy_hsse")); - - MATERIALS_TO_CASING_MODELS = builder.build(); - } - - public MinerRenderer(int tier, ResourceLocation modelLocation) { - super(tier, modelLocation); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, - @Nullable Direction modelFacing, ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (side == Direction.DOWN) quads.add( - StaticFaceBakery.bakeFace(modelFacing, ModelFactory.getBlockSprite(MinerRenderer.PIPE_IN_OVERLAY), - modelState)); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - register.accept(PIPE_IN_OVERLAY); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlayEnergyIORenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlayEnergyIORenderer.java deleted file mode 100644 index 61623a29adf..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlayEnergyIORenderer.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; - -import java.util.List; - -public class OverlayEnergyIORenderer { - - public static final OverlayEnergyIORenderer ENERGY_IN_1A = new OverlayEnergyIORenderer( - "block/overlay/machine/overlay_energy_1a_tinted", "block/overlay/machine/overlay_energy_1a_in"); - public static final OverlayEnergyIORenderer ENERGY_IN_2A = new OverlayEnergyIORenderer( - "block/overlay/machine/overlay_energy_2a_tinted", "block/overlay/machine/overlay_energy_2a_in"); - public static final OverlayEnergyIORenderer ENERGY_IN_4A = new OverlayEnergyIORenderer( - "block/overlay/machine/overlay_energy_4a_tinted", "block/overlay/machine/overlay_energy_4a_in"); - public static final OverlayEnergyIORenderer ENERGY_IN_8A = new OverlayEnergyIORenderer( - "block/overlay/machine/overlay_energy_8a_tinted", "block/overlay/machine/overlay_energy_8a_in"); - public static final OverlayEnergyIORenderer ENERGY_IN_16A = new OverlayEnergyIORenderer( - "block/overlay/machine/overlay_energy_16a_tinted", "block/overlay/machine/overlay_energy_16a_in"); - public static final OverlayEnergyIORenderer ENERGY_IN_64A = new OverlayEnergyIORenderer( - "block/overlay/machine/overlay_energy_64a_tinted", "block/overlay/machine/overlay_energy_64a_in"); - - public static final OverlayEnergyIORenderer ENERGY_OUT_1A = new OverlayEnergyIORenderer( - "block/overlay/machine/overlay_energy_1a_tinted", "block/overlay/machine/overlay_energy_1a_out"); - public static final OverlayEnergyIORenderer ENERGY_OUT_2A = new OverlayEnergyIORenderer( - "block/overlay/machine/overlay_energy_2a_tinted", "block/overlay/machine/overlay_energy_2a_out"); - public static final OverlayEnergyIORenderer ENERGY_OUT_4A = new OverlayEnergyIORenderer( - "block/overlay/machine/overlay_energy_4a_tinted", "block/overlay/machine/overlay_energy_4a_out"); - public static final OverlayEnergyIORenderer ENERGY_OUT_8A = new OverlayEnergyIORenderer( - "block/overlay/machine/overlay_energy_8a_tinted", "block/overlay/machine/overlay_energy_8a_out"); - public static final OverlayEnergyIORenderer ENERGY_OUT_16A = new OverlayEnergyIORenderer( - "block/overlay/machine/overlay_energy_16a_tinted", "block/overlay/machine/overlay_energy_16a_out"); - public static final OverlayEnergyIORenderer ENERGY_OUT_64A = new OverlayEnergyIORenderer( - "block/overlay/machine/overlay_energy_64a_tinted", "block/overlay/machine/overlay_energy_64a_out"); - - private final ResourceLocation tintedPart; - private final ResourceLocation ioPart; - - public OverlayEnergyIORenderer(String tintedPart, String ioPart) { - this.tintedPart = GTCEu.id(tintedPart); - this.ioPart = GTCEu.id(ioPart); - } - - public void renderOverlay(List quads, Direction modelFacing, ModelState modelState, int tintIndex) { - quads.add(StaticFaceBakery.bakeFace( - StaticFaceBakery.SLIGHTLY_OVER_BLOCK, modelFacing, - ModelFactory.getBlockSprite(tintedPart), modelState, tintIndex, 0, true, true)); - quads.add(StaticFaceBakery.bakeFace( - StaticFaceBakery.SLIGHTLY_OVER_BLOCK, modelFacing, - ModelFactory.getBlockSprite(ioPart), modelState, -1, 0, true, true)); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlaySteamMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlaySteamMachineRenderer.java deleted file mode 100644 index 986127bce73..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlaySteamMachineRenderer.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.config.ConfigHolder; - -import com.lowdragmc.lowdraglib.client.renderer.impl.IModelRenderer; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -/** - * @author KilaBash - * @date 2023/3/16 - * @implNote PartSteamMachineRenderer - */ -@SuppressWarnings("removal") -public class OverlaySteamMachineRenderer extends SteamHullMachineRenderer implements IPartRenderer { - - protected IModelRenderer overlayModel; - - public OverlaySteamMachineRenderer(ResourceLocation overlayModel) { - super(ConfigHolder.INSTANCE.machines.steelSteamMultiblocks ? "steel" : "bronze", - GTCEu.id("block/machine/hull_machine")); - this.overlayModel = new IModelRenderer(overlayModel); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - quads.addAll(overlayModel.getRotatedModel(frontFacing).getQuads(definition.defaultBlockState(), side, rand)); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlayTieredActiveMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlayTieredActiveMachineRenderer.java deleted file mode 100644 index 434a8828dfd..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlayTieredActiveMachineRenderer.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; - -import com.lowdragmc.lowdraglib.client.renderer.impl.IModelRenderer; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -@SuppressWarnings("removal") -public class OverlayTieredActiveMachineRenderer extends TieredHullMachineRenderer { - - protected IModelRenderer activeOverlayModel; - protected IModelRenderer overlayModel; - - public OverlayTieredActiveMachineRenderer(int tier, ResourceLocation overlayModel, - ResourceLocation activeOverlayModel) { - super(tier, GTCEu.id("block/machine/hull_machine")); - this.overlayModel = new IModelRenderer(overlayModel); - this.activeOverlayModel = new IModelRenderer(activeOverlayModel); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (machine instanceof IRecipeLogicMachine rlm) { - if (rlm.isActive()) { - quads.addAll(activeOverlayModel.getRotatedModel(frontFacing).getQuads(definition.defaultBlockState(), - side, rand)); - return; - } - } else if (machine instanceof IMultiPart part) { - if (part.getControllers().stream() - .anyMatch(controller -> controller instanceof IRecipeLogicMachine rlm && rlm.isActive())) { - quads.addAll(activeOverlayModel.getRotatedModel(frontFacing).getQuads(definition.defaultBlockState(), - side, rand)); - return; - } - } - quads.addAll(overlayModel.getRotatedModel(frontFacing).getQuads(definition.defaultBlockState(), side, rand)); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlayTieredMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlayTieredMachineRenderer.java deleted file mode 100644 index f2dd91eba7d..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlayTieredMachineRenderer.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; - -import com.lowdragmc.lowdraglib.client.bakedpipeline.Quad; -import com.lowdragmc.lowdraglib.client.renderer.impl.IModelRenderer; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -@SuppressWarnings("removal") -public class OverlayTieredMachineRenderer extends TieredHullMachineRenderer implements IPartRenderer { - - protected IModelRenderer overlayModel; - - public OverlayTieredMachineRenderer(int tier, ResourceLocation overlayModel) { - super(tier, GTCEu.id("block/machine/hull_machine")); - this.overlayModel = new IModelRenderer(overlayModel); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - // expand the overlay quads ever so slightly to combat z-fighting. - overlayModel.getRotatedModel(frontFacing).getQuads(definition.defaultBlockState(), side, rand) - .forEach(quad -> quads.add(Quad.from(quad, overlayQuadsOffset()).rebake())); - } - - public float overlayQuadsOffset() { - return 0.004f; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/PrimitiveBlastFurnaceRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/PrimitiveBlastFurnaceRenderer.java deleted file mode 100644 index 0878029582e..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/PrimitiveBlastFurnaceRenderer.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; -import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; -import com.gregtechceu.gtceu.client.renderer.block.FluidBlockRenderer; -import com.gregtechceu.gtceu.client.util.RenderUtil; -import com.gregtechceu.gtceu.common.machine.multiblock.primitive.PrimitiveBlastFurnaceMachine; -import com.gregtechceu.gtceu.config.ConfigHolder; - -import net.minecraft.client.renderer.ItemBlockRenderTypes; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.material.Fluids; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.RenderTypeHelper; - -import com.mojang.blaze3d.vertex.PoseStack; - -public class PrimitiveBlastFurnaceRenderer extends WorkableCasingMachineRenderer { - - private final FluidBlockRenderer fluidBlockRenderer; - - public PrimitiveBlastFurnaceRenderer(ResourceLocation base, ResourceLocation overlay) { - super(base, overlay); - fluidBlockRenderer = FluidBlockRenderer.Builder.create() - .setFaceOffset(-.125f) - .setForcedLight(LightTexture.FULL_BRIGHT) - .getRenderer(); - } - - @Override - public boolean hasTESR(BlockEntity blockEntity) { - return true; - } - - @Override - @OnlyIn(Dist.CLIENT) - public void render(BlockEntity blockEntity, float partialTicks, PoseStack stack, MultiBufferSource buffer, - int combinedLight, int combinedOverlay) { - super.render(blockEntity, partialTicks, stack, buffer, combinedLight, combinedOverlay); - - if (!ConfigHolder.INSTANCE.client.renderer.renderFluids) return; - if (blockEntity instanceof MetaMachineBlockEntity mm) { - if (mm.metaMachine instanceof PrimitiveBlastFurnaceMachine pbf && pbf.isFormed()) { - Direction opposite = pbf.getFrontFacing().getOpposite(); - RenderType lavaRenderType = ItemBlockRenderTypes.getRenderLayer(Fluids.LAVA.defaultFluidState()); - - stack.pushPose(); - var pose = stack.last().pose(); - pose.translate(opposite.getStepX(), opposite.getStepY(), opposite.getStepZ()); - - var consumer = buffer.getBuffer(RenderTypeHelper.getEntityRenderType(lavaRenderType, true)); - var up = RelativeDirection.UP.getRelativeFacing(pbf.getFrontFacing(), pbf.getUpwardsFacing(), - pbf.isFlipped()); - if (up != Direction.UP && up != Direction.DOWN) up = up.getOpposite(); - - fluidBlockRenderer.drawFace(up, pose, consumer, Fluids.LAVA.getSource(), - RenderUtil.FluidTextureType.STILL, combinedOverlay, combinedLight); - - stack.popPose(); - } - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/PumpHatchPartRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/PumpHatchPartRenderer.java deleted file mode 100644 index 8abbf7fdbdc..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/PumpHatchPartRenderer.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.block.MetaMachineBlock; -import com.gregtechceu.gtceu.client.renderer.block.CTMModelRenderer; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.BlockModelRotation; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.Consumer; - -/** - * @author KilaBash - * @date 2023/5/25 - * @implNote PumpHatchPartRenderer - */ -public class PumpHatchPartRenderer extends CTMModelRenderer { - - public static final ResourceLocation PIPE_OUT = GTCEu.id("block/overlay/machine/overlay_pipe_out"); - public static final ResourceLocation FLUID_HATCH = GTCEu.id("block/overlay/machine/overlay_fluid_hatch"); - - public PumpHatchPartRenderer() { - super(GTCEu.id("block/machine/part/pump_hatch")); - } - - @Override - @OnlyIn(Dist.CLIENT) - public List renderModel(BlockAndTintGetter level, BlockPos pos, BlockState state, Direction side, - RandomSource rand) { - if (state.getBlock() instanceof MetaMachineBlock machineBlock && side == machineBlock.getFrontFacing(state)) { - var quads = new ArrayList<>(super.renderModel(level, pos, state, side, rand)); - quads.add(StaticFaceBakery.bakeFace(side, ModelFactory.getBlockSprite(PIPE_OUT))); - quads.add(StaticFaceBakery.bakeFace( - side, ModelFactory.getBlockSprite(FLUID_HATCH), - BlockModelRotation.X0_Y0, -101, 15)); - return quads; - } - return super.renderModel(level, pos, state, side, rand); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - register.accept(PIPE_OUT); - register.accept(FLUID_HATCH); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumChestRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumChestRenderer.java deleted file mode 100644 index b2b47d7ddbb..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumChestRenderer.java +++ /dev/null @@ -1,174 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.common.data.GTMachines; -import com.gregtechceu.gtceu.common.machine.storage.CreativeChestMachine; -import com.gregtechceu.gtceu.common.machine.storage.QuantumChestMachine; -import com.gregtechceu.gtceu.core.mixins.GuiGraphicsAccessor; -import com.gregtechceu.gtceu.utils.FormattingUtil; - -import com.lowdragmc.lowdraglib.client.utils.RenderUtils; -import com.lowdragmc.lowdraglib.gui.texture.TextTexture; -import com.lowdragmc.lowdraglib.gui.texture.TransformTexture; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.Mth; -import net.minecraft.util.RandomSource; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemDisplayContext; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.Tesselator; -import org.jetbrains.annotations.Nullable; -import org.joml.Quaternionf; - -import java.util.List; - -import static com.gregtechceu.gtceu.utils.GTMatrixUtils.*; - -/** - * @author KilaBash - * @date 2023/3/2 - * @implNote QuantumChestRenderer - */ -public class QuantumChestRenderer extends TieredHullMachineRenderer { - - private static Item CREATIVE_CHEST_ITEM = null; - - public QuantumChestRenderer(int tier) { - super(tier, GTCEu.id("block/machine/quantum_chest")); - } - - public QuantumChestRenderer(int tier, ResourceLocation modelLocation) { - super(tier, modelLocation); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderBaseModel(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - ModelState modelState, @Nullable Direction side, RandomSource rand) { - quads.addAll(getRotatedModel(modelState).getQuads(definition.defaultBlockState(), side, rand)); - } - - @Override - @OnlyIn(Dist.CLIENT) - public boolean hasTESR(BlockEntity blockEntity) { - return true; - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderItem(ItemStack stack, ItemDisplayContext transformType, boolean leftHand, PoseStack poseStack, - MultiBufferSource buffer, int combinedLight, int combinedOverlay, BakedModel model) { - if (CREATIVE_CHEST_ITEM == null) CREATIVE_CHEST_ITEM = GTMachines.CREATIVE_ITEM.getItem(); - model = getItemBakedModel(); - if (model != null && stack.hasTag()) { - poseStack.pushPose(); - model.getTransforms().getTransform(transformType).apply(leftHand, poseStack); - poseStack.translate(-0.5D, -0.5D, -0.5D); - - ItemStack itemStack = ItemStack.of(stack.getOrCreateTagElement("stored")); - long storedAmount = stack.getOrCreateTag().getLong("storedAmount"); - float tick = Minecraft.getInstance().level.getGameTime() + Minecraft.getInstance().getFrameTime(); - // Don't need to handle locked items here since they don't get saved to the item - renderChest(poseStack, buffer, Direction.NORTH, itemStack, storedAmount, tick, - ItemStack.EMPTY, - stack.is(CREATIVE_CHEST_ITEM)); - - poseStack.popPose(); - } - super.renderItem(stack, transformType, leftHand, poseStack, buffer, combinedLight, combinedOverlay, model); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void render(BlockEntity blockEntity, float partialTicks, PoseStack poseStack, MultiBufferSource buffer, - int combinedLight, int combinedOverlay) { - if (blockEntity instanceof IMachineBlockEntity machineBlockEntity && - machineBlockEntity.getMetaMachine() instanceof QuantumChestMachine machine) { - poseStack.pushPose(); - var level = machine.getLevel(); - var frontFacing = machine.getFrontFacing(); - var upwardFacing = machine.getUpwardsFacing(); - var tick = level.getGameTime() + partialTicks; - poseStack.translate(.5, .5, .5); - rotateMatrix(poseStack.last().pose(), - upwardFacingAngle(upwardFacing) + (upwardFacing.getAxis() == Direction.Axis.X ? Mth.PI : 0), - frontFacing.getStepX(), frontFacing.getStepY(), frontFacing.getStepZ()); - poseStack.translate(-.5, -.5, -.5); - renderChest(poseStack, buffer, frontFacing, machine.getStored(), machine.getStoredAmount(), - tick, machine.getLockedItem(), machine instanceof CreativeChestMachine); - poseStack.popPose(); - } - } - - @OnlyIn(Dist.CLIENT) - public void renderChest(PoseStack poseStack, MultiBufferSource buffer, Direction frontFacing, ItemStack stored, - long storedAmount, float tick, ItemStack locked, boolean isCreative) { - ItemStack itemStack = !stored.isEmpty() ? stored : locked; - if (itemStack.isEmpty()) return; - - var itemRenderer = Minecraft.getInstance().getItemRenderer(); - poseStack.pushPose(); - poseStack.translate(0.5D, 0.5d, 0.5D); - if (frontFacing.getAxis() == Direction.Axis.Y) { - var north = Direction.NORTH.step(); - var front = frontFacing.step(); - var rotationAngle = getRotationAngle(north, front); - poseStack.mulPose(new Quaternionf().fromAxisAngleRad(getRotationAxis(north, front), rotationAngle)); - } - poseStack.mulPose(new Quaternionf().rotateAxis(tick * Mth.TWO_PI / 80, 0, 1, 0)); - poseStack.scale(0.6f, 0.6f, 0.6f); - itemRenderer.renderStatic(itemStack, ItemDisplayContext.FIXED, 0xf000f0, OverlayTexture.NO_OVERLAY, - poseStack, buffer, Minecraft.getInstance().level, - Item.getId(itemStack.getItem()) + itemStack.getDamageValue()); - poseStack.popPose(); - - poseStack.pushPose(); - RenderSystem.disableDepthTest(); - poseStack.translate(frontFacing.getStepX() * -1 / 16f, frontFacing.getStepY() * -1 / 16f, - frontFacing.getStepZ() * -1 / 16f); - RenderUtils.moveToFace(poseStack, 0, 0, 0, frontFacing); - if (frontFacing.getAxis() == Direction.Axis.Y) { - RenderUtils.rotateToFace(poseStack, frontFacing, - frontFacing == Direction.UP ? Direction.SOUTH : Direction.NORTH); - } else { - RenderUtils.rotateToFace(poseStack, frontFacing, null); - } - poseStack.scale(1f / 64, 1f / 64, 0); - poseStack.translate(-32, -32, 0); - - TransformTexture text; - if (isCreative) { - text = new TextTexture("∞").setDropShadow(false).scale(3.0f); - } else { - var amount = stored.isEmpty() ? "*" : FormattingUtil.formatNumberReadable(storedAmount, false); - text = new TextTexture(amount).setDropShadow(false); - } - text.draw(GuiGraphicsAccessor.create(Minecraft.getInstance(), poseStack, - MultiBufferSource.immediate(Tesselator.getInstance().getBuilder())), - 0, 0, 0, 24, 64, 28); - RenderSystem.enableDepthTest(); - poseStack.popPose(); - } - - @OnlyIn(Dist.CLIENT) - public float reBakeCustomQuadsOffset() { - return 0f; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumTankRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumTankRenderer.java deleted file mode 100644 index 5f83620fc81..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumTankRenderer.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.common.data.GTMachines; -import com.gregtechceu.gtceu.common.machine.storage.CreativeTankMachine; -import com.gregtechceu.gtceu.common.machine.storage.QuantumTankMachine; -import com.gregtechceu.gtceu.core.mixins.GuiGraphicsAccessor; -import com.gregtechceu.gtceu.utils.FormattingUtil; - -import com.lowdragmc.lowdraglib.client.utils.RenderBufferUtils; -import com.lowdragmc.lowdraglib.client.utils.RenderUtils; -import com.lowdragmc.lowdraglib.gui.texture.TextTexture; -import com.lowdragmc.lowdraglib.gui.texture.TransformTexture; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.Sheets; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.Mth; -import net.minecraft.util.RandomSource; -import net.minecraft.world.inventory.InventoryMenu; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemDisplayContext; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; -import net.minecraftforge.fluids.FluidStack; - -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.Tesselator; -import com.mojang.blaze3d.vertex.VertexConsumer; -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -import static com.gregtechceu.gtceu.utils.GTMatrixUtils.*; - -/** - * @author KilaBash - * @date 2023/3/2 - * @implNote QuantumChestRenderer - */ -public class QuantumTankRenderer extends TieredHullMachineRenderer { - - private static final float MIN = 0.16f; - private static final float MAX = 0.84f; - - private static Item CREATIVE_FLUID_ITEM = null; - - public QuantumTankRenderer(int tier) { - super(tier, GTCEu.id("block/machine/quantum_tank")); - } - - public QuantumTankRenderer(int tier, ResourceLocation modelLocation) { - super(tier, modelLocation); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderBaseModel(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - ModelState modelState, @Nullable Direction side, RandomSource rand) { - quads.addAll(getRotatedModel(modelState).getQuads(definition.defaultBlockState(), side, rand)); - } - - @Override - @OnlyIn(Dist.CLIENT) - public boolean hasTESR(BlockEntity blockEntity) { - return true; - } - - @Override - public void renderItem(ItemStack stack, ItemDisplayContext transformType, boolean leftHand, PoseStack poseStack, - MultiBufferSource buffer, int combinedLight, int combinedOverlay, BakedModel model) { - if (CREATIVE_FLUID_ITEM == null) CREATIVE_FLUID_ITEM = GTMachines.CREATIVE_FLUID.getItem(); - model = getItemBakedModel(); - if (model != null && stack.hasTag()) { - poseStack.pushPose(); - model.getTransforms().getTransform(transformType).apply(leftHand, poseStack); - poseStack.translate(-0.5D, -0.5D, -0.5D); - - FluidStack stored = FluidStack.loadFluidStackFromNBT(stack.getOrCreateTagElement("stored")); - long storedAmount = stack.getOrCreateTag().getLong("storedAmount"); - if (storedAmount == 0 && !stored.isEmpty()) storedAmount = stored.getAmount(); - long maxAmount = stack.getOrCreateTag().getLong("maxAmount"); - // Don't need to handle locked fluids here since they don't get saved to the item - renderTank(poseStack, buffer, Direction.NORTH, stored, storedAmount, maxAmount, FluidStack.EMPTY, - stack.is(CREATIVE_FLUID_ITEM)); - - poseStack.popPose(); - } - super.renderItem(stack, transformType, leftHand, poseStack, buffer, combinedLight, combinedOverlay, model); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void render(BlockEntity blockEntity, float partialTicks, PoseStack poseStack, MultiBufferSource buffer, - int combinedLight, int combinedOverlay) { - if (blockEntity instanceof IMachineBlockEntity machineBlockEntity && - machineBlockEntity.getMetaMachine() instanceof QuantumTankMachine machine) { - poseStack.pushPose(); - var frontFacing = machine.getFrontFacing(); - var upwardFacing = machine.getUpwardsFacing(); - poseStack.translate(.5, .5, .5); - rotateMatrix(poseStack.last().pose(), - upwardFacingAngle(upwardFacing) + (upwardFacing.getAxis() == Direction.Axis.X ? Mth.PI : 0), - frontFacing.getStepX(), frontFacing.getStepY(), frontFacing.getStepZ()); - poseStack.translate(-.5, -.5, -.5); - renderTank(poseStack, buffer, frontFacing, machine.getStored(), machine.getStoredAmount(), - machine.getMaxAmount(), machine.getLockedFluid(), machine instanceof CreativeTankMachine); - poseStack.popPose(); - } - } - - @OnlyIn(Dist.CLIENT) - public void renderTank(PoseStack poseStack, MultiBufferSource buffer, Direction frontFacing, FluidStack stored, - long storedAmount, long maxAmount, FluidStack locked, boolean isCreative) { - FluidStack fluid = !stored.isEmpty() ? stored : locked; - if (fluid.isEmpty()) return; - - var ext = IClientFluidTypeExtensions.of(fluid.getFluid()); - var texture = ext.getStillTexture(); - var fluidTexture = Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS).apply(texture); - - poseStack.pushPose(); - VertexConsumer builder = buffer.getBuffer(Sheets.translucentCullBlockSheet()); - var gas = fluid.getFluid().getFluidType().isLighterThanAir(); - var percentFull = isCreative || maxAmount <= storedAmount ? 1f : (float) storedAmount / maxAmount; - var facingYAxis = frontFacing.getAxis() == Direction.Axis.Y; - var maxTop = gas ? MAX : MIN + percentFull * (MAX - MIN); - var minBot = gas ? MIN + (1 - percentFull) * (MAX - MIN) : MIN; - float minY, maxY, minZ, maxZ; - if (facingYAxis) { - minY = MIN; - maxY = MAX; - if (frontFacing == Direction.UP) { - minZ = minBot; - maxZ = maxTop; - } else { - // -z is top - minZ = 1 - maxTop; - maxZ = 1 - minBot; - } - } else { - minY = minBot; - maxY = maxTop; - minZ = MIN; - maxZ = MAX; - } - RenderBufferUtils.renderCubeFace(poseStack, builder, MIN, minY, minZ, MAX, maxY, maxZ, - ext.getTintColor() | 0xff000000, 0xf000f0, fluidTexture); - poseStack.popPose(); - - poseStack.pushPose(); - RenderSystem.disableDepthTest(); - poseStack.translate(frontFacing.getStepX() * -1 / 16f, frontFacing.getStepY() * -1 / 16f, - frontFacing.getStepZ() * -1 / 16f); - RenderUtils.moveToFace(poseStack, 0, 0, 0, frontFacing); - if (facingYAxis) { - RenderUtils.rotateToFace(poseStack, frontFacing, - frontFacing == Direction.UP ? Direction.SOUTH : Direction.NORTH); - } else { - RenderUtils.rotateToFace(poseStack, frontFacing, null); - } - poseStack.scale(1f / 64, 1f / 64, 0); - poseStack.translate(-32, -32, 0); - TransformTexture text; - if (isCreative) { - text = new TextTexture("∞").setDropShadow(false).scale(3.0f); - } else { - var amount = stored.isEmpty() ? "*" : FormattingUtil.formatNumberReadable(storedAmount, true); - text = new TextTexture(amount).setDropShadow(false); - } - text.draw(GuiGraphicsAccessor.create(Minecraft.getInstance(), poseStack, - MultiBufferSource.immediate(Tesselator.getInstance().getBuilder())), - 0, 0, 0, 24, 64, 28); - RenderSystem.enableDepthTest(); - poseStack.popPose(); - } - - @OnlyIn(Dist.CLIENT) - public float reBakeCustomQuadsOffset() { - return 0f; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/RotorHolderMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/RotorHolderMachineRenderer.java deleted file mode 100644 index 9234dd99a0e..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/RotorHolderMachineRenderer.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IRotorHolderMachine; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraft.world.phys.AABB; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.function.Consumer; - -public class RotorHolderMachineRenderer extends TieredHullMachineRenderer { - - public static final AABB ROTOR_TEXTURE_SHAPE = new AABB(-1, -1, -0.01, 2, 2, 1.01); - public static final ResourceLocation ROTOR_HOLDER_OVERLAY = GTCEu.id("block/overlay/machine/overlay_rotor_holder"); - public static final ResourceLocation BASE_RING = GTCEu.id("block/multiblock/large_turbine/base_ring"); - public static final ResourceLocation BASE_BG = GTCEu.id("block/multiblock/large_turbine/base_bg"); - public static final ResourceLocation IDLE = GTCEu.id("block/multiblock/large_turbine/rotor_idle"); - public static final ResourceLocation SPINNING = GTCEu.id("block/multiblock/large_turbine/rotor_spinning"); - - public RotorHolderMachineRenderer(int tier) { - super(tier, GTCEu.id("block/machine/hull_machine")); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, - @Nullable Direction modelFacing, ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (side != frontFacing || modelFacing == null) { - return; - } - quads.add( - StaticFaceBakery.bakeFace(modelFacing, ModelFactory.getBlockSprite(ROTOR_HOLDER_OVERLAY), modelState)); - if (machine instanceof IRotorHolderMachine rotorHolderMachine && rotorHolderMachine.isFormed()) { - quads.add(StaticFaceBakery.bakeFace(ROTOR_TEXTURE_SHAPE, modelFacing, - ModelFactory.getBlockSprite(BASE_RING), modelState, -101, 0, true, false)); - quads.add(StaticFaceBakery.bakeFace(ROTOR_TEXTURE_SHAPE, modelFacing, ModelFactory.getBlockSprite(BASE_BG), - modelState, -101, 0, true, false)); - var material = rotorHolderMachine.getRotorMaterial(); - if (material.isNull()) { - return; - } - quads.add(StaticFaceBakery.bakeFace(ROTOR_TEXTURE_SHAPE, modelFacing, - ModelFactory.getBlockSprite(rotorHolderMachine.isRotorSpinning() ? SPINNING : IDLE), - modelState, 2, - material.hasProperty(PropertyKey.ORE) && material.getProperty(PropertyKey.ORE).isEmissive() ? 12 : - 5, - true, true)); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - register.accept(ROTOR_HOLDER_OVERLAY); - register.accept(BASE_RING); - register.accept(BASE_BG); - register.accept(IDLE); - register.accept(SPINNING); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SimpleGeneratorMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SimpleGeneratorMachineRenderer.java deleted file mode 100644 index 5aa8e0ed400..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SimpleGeneratorMachineRenderer.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -import static com.gregtechceu.gtceu.client.renderer.machine.OverlayEnergyIORenderer.ENERGY_OUT_1A; - -/** - * @author KilaBash - * @date 2023/3/17 - * @implNote SimpleGeneratorMachineRenderer - */ -public class SimpleGeneratorMachineRenderer extends WorkableTieredHullMachineRenderer { - - public SimpleGeneratorMachineRenderer(int tier, ResourceLocation workableModel) { - super(tier, workableModel); - } - - @Override - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (side == frontFacing && modelFacing != null) { - ENERGY_OUT_1A.renderOverlay(quads, modelFacing, modelState, 2); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SteamHullMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SteamHullMachineRenderer.java deleted file mode 100644 index d042c203907..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SteamHullMachineRenderer.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.inventory.InventoryMenu; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.NotNull; - -import java.util.Map; - -/** - * @author KilaBash - * @date 2023/3/15 - * @implNote SteamHullMachineRenderer - */ -public class SteamHullMachineRenderer extends MachineRenderer { - - public SteamHullMachineRenderer(boolean isHighTier, ResourceLocation modelLocation) { - this(isHighTier ? "bricked_steel" : "bricked_bronze", modelLocation); - } - - public SteamHullMachineRenderer(String name, ResourceLocation modelLocation) { - super(modelLocation); - setTextureOverride(Map.of( - "bottom", GTCEu.id("block/casings/steam/%s/bottom".formatted(name)), - "top", GTCEu.id("block/casings/steam/%s/top".formatted(name)), - "side", GTCEu.id("block/casings/steam/%s/side".formatted(name)))); - } - - @NotNull - @Override - @OnlyIn(Dist.CLIENT) - public TextureAtlasSprite getParticleTexture() { - return Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS).apply(override.get("side")); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SteamMinerRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SteamMinerRenderer.java deleted file mode 100644 index e92a7977df6..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SteamMinerRenderer.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -public class SteamMinerRenderer extends WorkableSteamMachineRenderer { - - public SteamMinerRenderer(boolean isHighTier, ResourceLocation modelLocation) { - super(isHighTier, modelLocation); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, - @Nullable Direction modelFacing, ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (side == Direction.DOWN) quads.add(StaticFaceBakery.bakeFace(modelFacing, - ModelFactory.getBlockSprite(MinerRenderer.PIPE_IN_OVERLAY), modelState)); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/TieredHullMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/TieredHullMachineRenderer.java deleted file mode 100644 index 3700fb9890a..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/TieredHullMachineRenderer.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.GTValues; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.inventory.InventoryMenu; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.NotNull; - -import java.util.Locale; -import java.util.Map; - -/** - * @author KilaBash - * @date 2023/3/2 - * @implNote TieredHullMachineRenderer - */ -public class TieredHullMachineRenderer extends MachineRenderer { - - public TieredHullMachineRenderer(int tier, ResourceLocation modelLocation) { - super(modelLocation); - setTextureOverride(Map.of( - "bottom", - GTCEu.id("block/casings/voltage/%s/bottom".formatted(GTValues.VN[tier].toLowerCase(Locale.ROOT))), - "top", GTCEu.id("block/casings/voltage/%s/top".formatted(GTValues.VN[tier].toLowerCase(Locale.ROOT))), - "side", - GTCEu.id("block/casings/voltage/%s/side".formatted(GTValues.VN[tier].toLowerCase(Locale.ROOT))))); - } - - @NotNull - @Override - @OnlyIn(Dist.CLIENT) - public TextureAtlasSprite getParticleTexture() { - return Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS).apply(override.get("side")); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/TransformerRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/TransformerRenderer.java deleted file mode 100644 index 1974df920fd..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/TransformerRenderer.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.common.machine.electric.TransformerMachine; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -import static com.gregtechceu.gtceu.client.renderer.machine.OverlayEnergyIORenderer.*; - -/** - * @author KilaBash - * @date 2023/3/10 - * @implNote TransformerRenderer - */ -public class TransformerRenderer extends TieredHullMachineRenderer { - - private final int baseAmp; - - public TransformerRenderer(int tier, int baseAmp) { - super(tier, GTCEu.id("block/machine/hull_machine")); - this.baseAmp = baseAmp; - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - OverlayEnergyIORenderer otherFaceTexture = ENERGY_OUT_4A; - OverlayEnergyIORenderer frontFaceTexture = ENERGY_IN_1A; - var isTransformUp = false; - if (machine instanceof TransformerMachine transformer) { - isTransformUp = transformer.isTransformUp(); - } - - switch (baseAmp) { - case 1 -> { // 1A <-> 4A - otherFaceTexture = isTransformUp ? ENERGY_IN_4A : otherFaceTexture; - frontFaceTexture = isTransformUp ? ENERGY_OUT_1A : frontFaceTexture; - } - case 2 -> { // 2A <-> 8A - otherFaceTexture = isTransformUp ? ENERGY_IN_8A : ENERGY_OUT_8A; - frontFaceTexture = isTransformUp ? ENERGY_OUT_2A : ENERGY_IN_2A; - } - case 4 -> { // 4A <-> 16A - otherFaceTexture = isTransformUp ? ENERGY_IN_16A : ENERGY_OUT_16A; - frontFaceTexture = isTransformUp ? ENERGY_OUT_4A : ENERGY_IN_4A; - } - default -> { // 16A <-> 64A or more - otherFaceTexture = isTransformUp ? ENERGY_IN_64A : ENERGY_OUT_64A; - frontFaceTexture = isTransformUp ? ENERGY_OUT_16A : ENERGY_IN_16A; - - } - } - - if (side == frontFacing && modelFacing != null) { - frontFaceTexture.renderOverlay(quads, modelFacing, modelState, 2); - } else if (side != null && modelFacing != null) { - otherFaceTexture.renderOverlay(quads, modelFacing, modelState, 3); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableCasingMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableCasingMachineRenderer.java deleted file mode 100644 index 6a28b12d11b..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableCasingMachineRenderer.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.capability.IWorkable; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.client.model.WorkableOverlayModel; - -import com.lowdragmc.lowdraglib.client.bakedpipeline.Quad; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.Map; -import java.util.function.Consumer; - -/** - * @author KilaBash - * @date 2023/3/4 - * @implNote WorkableCasingMachineRenderer - */ -public class WorkableCasingMachineRenderer extends MachineRenderer { - - protected final WorkableOverlayModel overlayModel; - protected final ResourceLocation baseCasing; - - public WorkableCasingMachineRenderer(ResourceLocation baseCasing, ResourceLocation workableModel) { - this(baseCasing, workableModel, true); - } - - public WorkableCasingMachineRenderer(ResourceLocation baseCasing, ResourceLocation workableModel, boolean tint) { - super(tint ? GTCEu.id("block/cube/tinted/all") : GTCEu.id("block/cube/all")); - this.overlayModel = new WorkableOverlayModel(workableModel); - this.baseCasing = baseCasing; - setTextureOverride(Map.of("all", baseCasing)); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (machine instanceof IWorkable workable) { - overlayModel.bakeQuads(side, modelState, workable.isActive(), workable.isWorkingEnabled()) - .forEach(quad -> quads.add(Quad.from(quad, reBakeOverlayQuadsOffset()).rebake())); - } else { - overlayModel.bakeQuads(side, modelState, false, false) - .forEach(quad -> quads.add(Quad.from(quad, reBakeOverlayQuadsOffset()).rebake())); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - overlayModel.registerTextureAtlas(register); - } - } - - public float reBakeOverlayQuadsOffset() { - return 0.004f; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableSidedCasingMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableSidedCasingMachineRenderer.java deleted file mode 100644 index c37de7fe2d7..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableSidedCasingMachineRenderer.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.capability.IWorkable; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.client.model.WorkableOverlayModel; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraft.world.inventory.InventoryMenu; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.Map; -import java.util.function.Consumer; - -public class WorkableSidedCasingMachineRenderer extends MachineRenderer { - - protected final WorkableOverlayModel overlayModel; - - public WorkableSidedCasingMachineRenderer(String basePath, ResourceLocation workableModel) { - this(basePath, workableModel, true); - } - - public WorkableSidedCasingMachineRenderer(String basePath, ResourceLocation workableModel, boolean tint) { - super(tint ? GTCEu.id("block/cube/tinted/bottom_top") : new ResourceLocation("block/cube_bottom_top")); - setTextureOverride(Map.of( - "bottom", GTCEu.id(basePath + "/bottom"), - "top", GTCEu.id(basePath + "/top"), - "side", GTCEu.id(basePath + "/side"))); - this.overlayModel = new WorkableOverlayModel(workableModel); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (machine instanceof IWorkable workable) { - quads.addAll(overlayModel.bakeQuads(side, modelState, workable.isActive(), workable.isWorkingEnabled())); - } else { - quads.addAll(overlayModel.bakeQuads(side, modelState, false, false)); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - overlayModel.registerTextureAtlas(register); - } - } - - @NotNull - @Override - @OnlyIn(Dist.CLIENT) - public TextureAtlasSprite getParticleTexture() { - return Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS).apply(override.get("side")); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableSteamMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableSteamMachineRenderer.java deleted file mode 100644 index cc8d6703a16..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableSteamMachineRenderer.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.capability.IWorkable; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.feature.IExhaustVentMachine; -import com.gregtechceu.gtceu.client.model.WorkableOverlayModel; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.function.Consumer; - -/** - * @author KilaBash - * @date 2023/3/15 - * @implNote SteamBoilerRenderer - */ -public class WorkableSteamMachineRenderer extends SteamHullMachineRenderer { - - public static final ResourceLocation VENT_OVERLAY = GTCEu.id("block/overlay/machine/overlay_steam_vent"); - protected final WorkableOverlayModel overlayModel; - - public WorkableSteamMachineRenderer(boolean isHighTier, ResourceLocation overlay) { - super(isHighTier, GTCEu.id("block/machine/hull_machine")); - this.overlayModel = new WorkableOverlayModel(overlay); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (machine instanceof IWorkable workable) { - quads.addAll(overlayModel.bakeQuads(side, modelState, workable.isActive(), - workable.isWorkingEnabled())); - } else { - quads.addAll(overlayModel.bakeQuads(side, modelState, false, false)); - } - if (machine instanceof IExhaustVentMachine exhaustVentMachine) { - if (side != null && exhaustVentMachine.getVentingDirection() == side && modelFacing != null) { - quads.add( - StaticFaceBakery.bakeFace(modelFacing, ModelFactory.getBlockSprite(VENT_OVERLAY), modelState)); - } - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - overlayModel.registerTextureAtlas(register); - register.accept(VENT_OVERLAY); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableTieredHullMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableTieredHullMachineRenderer.java deleted file mode 100644 index a88442e2c4b..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableTieredHullMachineRenderer.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.capability.IWorkable; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.client.model.WorkableOverlayModel; - -import com.lowdragmc.lowdraglib.client.bakedpipeline.Quad; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.function.Consumer; - -/** - * @author KilaBash - * @date 2023/2/19 - * @implNote WorkableTieredHullMachineRenderer - */ -public class WorkableTieredHullMachineRenderer extends TieredHullMachineRenderer { - - protected final WorkableOverlayModel overlayModel; - - public WorkableTieredHullMachineRenderer(int tier, ResourceLocation workableModel) { - super(tier, GTCEu.id("block/machine/hull_machine")); - this.overlayModel = new WorkableOverlayModel(workableModel); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (machine instanceof IWorkable workable) { - overlayModel.bakeQuads(side, modelState, workable.isActive(), workable.isWorkingEnabled()) - .forEach(quad -> quads.add(Quad.from(quad, overlayQuadsOffset()).rebake())); - } else { - overlayModel.bakeQuads(side, modelState, false, false) - .forEach(quad -> quads.add(Quad.from(quad, overlayQuadsOffset()).rebake())); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - overlayModel.registerTextureAtlas(register); - } - } - - public float overlayQuadsOffset() { - return 0.002f; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorldAcceleratorRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorldAcceleratorRenderer.java deleted file mode 100644 index 5d95fd92e90..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorldAcceleratorRenderer.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.client.model.WorkableOverlayModel; -import com.gregtechceu.gtceu.common.machine.electric.WorldAcceleratorMachine; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.function.Consumer; - -public class WorldAcceleratorRenderer extends TieredHullMachineRenderer { - - private final WorkableOverlayModel blockEntityModeModel, randomTickModeModel; - - public WorldAcceleratorRenderer(int tier, ResourceLocation beModeModelPath, ResourceLocation rtModeModelPath) { - super(tier, GTCEu.id("block/machine/hull_machine")); - blockEntityModeModel = new WorkableOverlayModel(beModeModelPath); - randomTickModeModel = new WorkableOverlayModel(rtModeModelPath); - } - - private WorkableOverlayModel getModeModel(boolean isRandomTickMode) { - if (isRandomTickMode) { - return randomTickModeModel; - } - return blockEntityModeModel; - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (machine instanceof WorldAcceleratorMachine worldAcceleratorMachine) { - WorkableOverlayModel model = getModeModel(worldAcceleratorMachine.isRandomTickMode()); - quads.addAll(model.bakeQuads(side, modelState, worldAcceleratorMachine.isActive(), - worldAcceleratorMachine.isWorkingEnabled())); - } else { - quads.addAll(getModeModel(true).bakeQuads(side, modelState, false, false)); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - randomTickModeModel.registerTextureAtlas(register); - blockEntityModeModel.registerTextureAtlas(register); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/gcym/LargeChemicalBathRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/gcym/LargeChemicalBathRenderer.java deleted file mode 100644 index 144f96b1131..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/gcym/LargeChemicalBathRenderer.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine.gcym; - -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; -import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; -import com.gregtechceu.gtceu.client.renderer.block.FluidBlockRenderer; -import com.gregtechceu.gtceu.client.renderer.machine.WorkableCasingMachineRenderer; -import com.gregtechceu.gtceu.client.util.RenderUtil; -import com.gregtechceu.gtceu.common.machine.multiblock.electric.gcym.LargeChemicalBathMachine; -import com.gregtechceu.gtceu.config.ConfigHolder; - -import net.minecraft.client.renderer.ItemBlockRenderTypes; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.client.RenderTypeHelper; - -import com.mojang.blaze3d.vertex.PoseStack; - -public class LargeChemicalBathRenderer extends WorkableCasingMachineRenderer { - - private final FluidBlockRenderer fluidBlockRenderer; - private Fluid cachedFluid; - private ResourceLocation cachedRecipe; - - public LargeChemicalBathRenderer(ResourceLocation baseCasing, ResourceLocation workableModel) { - super(baseCasing, workableModel); - - fluidBlockRenderer = FluidBlockRenderer.Builder.create() - .setFaceOffset(-0.125f) - .setForcedLight(LightTexture.FULL_BRIGHT) - .getRenderer(); - } - - @Override - public int getViewDistance() { - return 32; - } - - @Override - public boolean isGlobalRenderer(BlockEntity blockEntity) { - return true; - } - - @Override - public boolean hasTESR(BlockEntity blockEntity) { - return true; - } - - @Override - public void render(BlockEntity blockEntity, float partialTicks, PoseStack stack, MultiBufferSource buffer, - int combinedLight, int combinedOverlay) { - super.render(blockEntity, partialTicks, stack, buffer, combinedLight, combinedOverlay); - - if (!ConfigHolder.INSTANCE.client.renderer.renderFluids) return; - if (blockEntity instanceof MetaMachineBlockEntity mm) { - if (mm.metaMachine instanceof LargeChemicalBathMachine lcb) { - var lastRecipe = lcb.recipeLogic.getLastRecipe(); - if (lastRecipe == null) { - cachedRecipe = null; - cachedFluid = null; - } else if (lcb.getOffsetTimer() % 20 == 0 || lastRecipe.id != cachedRecipe) { - cachedRecipe = lastRecipe.id; - if (lcb.isActive()) { - cachedFluid = RenderUtil.getRecipeFluidToRender(lastRecipe); - } else { - cachedFluid = null; - } - } - - if (cachedFluid == null) { - return; - } - - stack.pushPose(); - var pose = stack.last().pose(); - - var fluidRenderType = ItemBlockRenderTypes.getRenderLayer(cachedFluid.defaultFluidState()); - var consumer = buffer.getBuffer(RenderTypeHelper.getEntityRenderType(fluidRenderType, false)); - - var up = RelativeDirection.UP.getRelativeFacing(lcb.getFrontFacing(), lcb.getUpwardsFacing(), - lcb.isFlipped()); - if (up.getAxis() != Direction.Axis.Y) up = up.getOpposite(); - fluidBlockRenderer.drawPlane(up, lcb.getFluidBlockOffsets(), pose, consumer, cachedFluid, - RenderUtil.FluidTextureType.STILL, combinedOverlay, lcb.getPos()); - - stack.popPose(); - } - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/gcym/LargeMixerRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/gcym/LargeMixerRenderer.java deleted file mode 100644 index 41ca25e4ce3..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/gcym/LargeMixerRenderer.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine.gcym; - -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; -import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; -import com.gregtechceu.gtceu.client.renderer.block.FluidBlockRenderer; -import com.gregtechceu.gtceu.client.renderer.machine.WorkableCasingMachineRenderer; -import com.gregtechceu.gtceu.client.util.RenderUtil; -import com.gregtechceu.gtceu.common.machine.multiblock.electric.gcym.LargeMixerMachine; -import com.gregtechceu.gtceu.config.ConfigHolder; - -import net.minecraft.client.renderer.ItemBlockRenderTypes; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.client.RenderTypeHelper; - -import com.mojang.blaze3d.vertex.PoseStack; - -public class LargeMixerRenderer extends WorkableCasingMachineRenderer { - - private final FluidBlockRenderer fluidBlockRenderer; - private Fluid cachedFluid; - private ResourceLocation cachedRecipe; - - public LargeMixerRenderer(ResourceLocation baseCasing, ResourceLocation workableModel) { - super(baseCasing, workableModel); - - fluidBlockRenderer = FluidBlockRenderer.Builder.create() - .setFaceOffset(-0.125f) - .setForcedLight(LightTexture.FULL_BRIGHT) - .getRenderer(); - } - - @Override - public int getViewDistance() { - return 32; - } - - @Override - public boolean isGlobalRenderer(BlockEntity blockEntity) { - return true; - } - - @Override - public boolean hasTESR(BlockEntity blockEntity) { - return true; - } - - @Override - public void render(BlockEntity blockEntity, float partialTicks, PoseStack stack, MultiBufferSource buffer, - int combinedLight, int combinedOverlay) { - super.render(blockEntity, partialTicks, stack, buffer, combinedLight, combinedOverlay); - - if (!ConfigHolder.INSTANCE.client.renderer.renderFluids) return; - if (blockEntity instanceof MetaMachineBlockEntity mm) { - if (mm.metaMachine instanceof LargeMixerMachine lm) { - var lastRecipe = lm.recipeLogic.getLastRecipe(); - if (lastRecipe == null) { - cachedRecipe = null; - cachedFluid = null; - } else if (lm.getOffsetTimer() % 20 == 0 || lastRecipe.id != cachedRecipe) { - cachedRecipe = lastRecipe.id; - if (lm.isActive()) { - cachedFluid = RenderUtil.getRecipeFluidToRender(lastRecipe); - } else { - cachedFluid = null; - } - } - - if (cachedFluid == null) { - return; - } - - stack.pushPose(); - var pose = stack.last().pose(); - - var fluidRenderType = ItemBlockRenderTypes.getRenderLayer(cachedFluid.defaultFluidState()); - var consumer = buffer.getBuffer(RenderTypeHelper.getEntityRenderType(fluidRenderType, false)); - - var up = RelativeDirection.UP.getRelativeFacing(lm.getFrontFacing(), lm.getUpwardsFacing(), - lm.isFlipped()); - if (up != Direction.UP && up != Direction.DOWN) up = up.getOpposite(); - fluidBlockRenderer.drawPlane(up, lm.getFluidBlockOffsets(), pose, consumer, cachedFluid, - RenderUtil.FluidTextureType.STILL, combinedOverlay, lm.getPos()); - - stack.popPose(); - } - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java new file mode 100644 index 00000000000..850a0c64c55 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java @@ -0,0 +1,144 @@ +package com.gregtechceu.gtceu.client.renderer.machine.impl; + +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; +import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; +import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; +import com.gregtechceu.gtceu.client.model.machine.IControllerModelRenderer; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRender; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderType; +import com.gregtechceu.gtceu.client.util.ModelUtils; +import com.gregtechceu.gtceu.common.block.BoilerFireboxType; +import com.gregtechceu.gtceu.common.data.GTBlocks; + +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.data.ModelData; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import lombok.Getter; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.List; +import java.util.function.Supplier; + +public class BoilerMultiPartRender extends DynamicRender + implements IControllerModelRenderer { + + // spotless:off + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + BlockState.CODEC.fieldOf("firebox_idle").forGetter(BoilerMultiPartRender::getFireboxIdle), + BlockState.CODEC.fieldOf("firebox_active").forGetter(BoilerMultiPartRender::getFireboxActive), + BlockState.CODEC.fieldOf("casing_block").forGetter(BoilerMultiPartRender::getCasing) + ).apply(instance, BoilerMultiPartRender::new)); + public static final DynamicRenderType TYPE = new DynamicRenderType<>(BoilerMultiPartRender.CODEC); + // spotless:on + + @Getter + private final BlockState fireboxIdle, fireboxActive; + @Getter + private final BlockState casing; + + private BakedModel fireboxIdleModel, fireboxActiveModel; + private BakedModel casingModel; + + public BoilerMultiPartRender(BoilerFireboxType fireboxType, Supplier casingBlock) { + this(GTBlocks.ALL_FIREBOXES.get(fireboxType).getDefaultState(), + GTBlocks.ALL_FIREBOXES.get(fireboxType).getDefaultState().setValue(GTBlockStateProperties.ACTIVE, true), + casingBlock.get().defaultBlockState()); + } + + public BoilerMultiPartRender(BlockState fireboxIdle, BlockState fireboxActive, BlockState casing) { + this.fireboxIdle = fireboxIdle; + this.fireboxActive = fireboxActive; + this.casing = casing; + } + + @Override + public DynamicRenderType getType() { + return TYPE; + } + + @Override + public void render(MultiblockControllerMachine machine, float partialTick, PoseStack poseStack, + MultiBufferSource buffer, + int packedLight, int packedOverlay) {} + + @Override + public boolean shouldRender(MultiblockControllerMachine machine, Vec3 cameraPos) { + return false; + } + + @Override + public boolean isBlockEntityRenderer() { + return false; + } + + @SuppressWarnings("DataFlowIssue") + @Override + @OnlyIn(Dist.CLIENT) + public void renderPartModel(List quads, IMultiController controller, IMultiPart part, + Direction frontFacing, @Nullable Direction side, RandomSource rand, + @NotNull ModelData modelData, @Nullable RenderType renderType) { + if (this.fireboxIdleModel == null) { + this.fireboxIdleModel = ModelUtils.getModelForState(fireboxIdle); + } + if (this.fireboxActiveModel == null) { + this.fireboxActiveModel = ModelUtils.getModelForState(fireboxActive); + } + if (this.casingModel == null) { + this.casingModel = ModelUtils.getModelForState(casing); + } + + BlockPos partPos = part.self().getPos(); + + MultiblockControllerMachine machine = controller.self(); + BlockPos controllerPos = machine.getPos(); + Direction multiFront = machine.getFrontFacing(); + Direction multiUpward = machine.getUpwardsFacing(); + boolean flipped = machine.isFlipped(); + Direction relativeDown = RelativeDirection.DOWN.getRelative(multiFront, multiUpward, flipped); + + int belowControllerY = controllerPos.relative(relativeDown).get(relativeDown.getAxis()); + int partY = partPos.get(relativeDown.getAxis()); + if (belowControllerY == partY) { + // firebox + if (controller instanceof IRecipeLogicMachine rlm && rlm.getRecipeLogic().isWorking()) { + emitQuads(quads, fireboxActiveModel, machine.getLevel(), partPos, fireboxActive, + side, rand, modelData, renderType); + } else { + emitQuads(quads, fireboxIdleModel, machine.getLevel(), partPos, fireboxIdle, + side, rand, modelData, renderType); + } + } else { + // Not exactly one below the controller, so not a firebox + emitQuads(quads, casingModel, machine.getLevel(), partPos, casing, + side, rand, modelData, renderType); + } + } + + private static void emitQuads(List quads, @Nullable BakedModel model, + BlockAndTintGetter level, BlockPos pos, BlockState state, + @Nullable Direction side, RandomSource rand, + ModelData modelData, @Nullable RenderType renderType) { + if (model == null) return; + modelData = model.getModelData(level, pos, state, modelData); + quads.addAll(model.getQuads(state, side, rand, modelData, renderType)); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/CentralMonitorRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/CentralMonitorRender.java new file mode 100644 index 00000000000..8ce0183cafc --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/CentralMonitorRender.java @@ -0,0 +1,94 @@ +package com.gregtechceu.gtceu.client.renderer.machine.impl; + +import com.gregtechceu.gtceu.api.capability.IMonitorComponent; +import com.gregtechceu.gtceu.api.item.ComponentItem; +import com.gregtechceu.gtceu.api.item.component.IItemComponent; +import com.gregtechceu.gtceu.api.item.component.IMonitorModuleItem; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRender; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderType; +import com.gregtechceu.gtceu.client.util.RenderUtil; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.CentralMonitorMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.monitor.MonitorGroup; + +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.core.BlockPos; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.levelgen.structure.BoundingBox; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.serialization.Codec; + +public class CentralMonitorRender extends DynamicRender { + + // spotless:off + public static final Codec CODEC = Codec.unit(CentralMonitorRender::new); + public static final DynamicRenderType TYPE = new DynamicRenderType<>(CODEC); + // spotless:on + private static final float SCREEN_OFFSET_Z = 0.01f; + + public CentralMonitorRender() {} + + @Override + public DynamicRenderType getType() { + return TYPE; + } + + @Override + public void render(CentralMonitorMachine machine, float partialTick, PoseStack poseStack, MultiBufferSource buffer, + int packedLight, int packedOverlay) { + poseStack.pushPose(); + RenderUtil.moveToFace(poseStack, 0.5f, 0.5f, 0.5f, machine.getFrontFacing()); + RenderUtil.rotateToFace(poseStack, machine.getFrontFacing(), machine.getUpwardsFacing()); + poseStack.translate(-machine.getRightDist() - 0.5f, -machine.getUpDist() - 0.5f, SCREEN_OFFSET_Z); + + if (machine.getRecipeLogic().isActive()) { + for (MonitorGroup group : machine.getMonitorGroups()) { + ItemStack itemStack = group.getItemStackHandler().getStackInSlot(0); + if (!(itemStack.getItem() instanceof ComponentItem item)) { + continue; + } + for (IItemComponent component : item.getComponents()) { + if (!(component instanceof IMonitorModuleItem module)) { + continue; + } + poseStack.pushPose(); + module.getRenderer(group.getItemStackHandler().getStackInSlot(0), machine, group) + .render(machine, group, partialTick, poseStack, buffer, packedLight, packedOverlay); + poseStack.popPose(); + } + } + } + poseStack.popPose(); + } + + @Override + public boolean shouldRenderOffScreen(CentralMonitorMachine machine) { + return true; + } + + @Override + public boolean shouldRender(CentralMonitorMachine machine, Vec3 cameraPos) { + return machine.isFormed(); + } + + @Override + public AABB getRenderBoundingBox(CentralMonitorMachine machine) { + BlockPos pos = machine.getPos(); + BoundingBox bounds = new BoundingBox( + pos.getX() - 1, pos.getY() - 1, pos.getZ() - 1, + pos.getX() + 1, pos.getY() + 1, pos.getZ() + 1); + + for (int row = 0; row <= machine.getUpDist() + machine.getDownDist(); row++) { + for (int col = 0; col <= machine.getLeftDist() + machine.getRightDist(); col++) { + IMonitorComponent component = machine.getComponent(row, col); + if (component != null && component.isMonitor()) { + // noinspection deprecation + bounds.encapsulate(component.getPos()); + } + } + } + return AABB.of(bounds); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FluidAreaRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FluidAreaRender.java new file mode 100644 index 00000000000..6d720956525 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FluidAreaRender.java @@ -0,0 +1,139 @@ +package com.gregtechceu.gtceu.client.renderer.machine.impl; + +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IFluidRenderMulti; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; +import com.gregtechceu.gtceu.client.renderer.block.FluidBlockRenderer; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRender; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderType; +import com.gregtechceu.gtceu.client.util.RenderUtil; +import com.gregtechceu.gtceu.config.ConfigHolder; + +import net.minecraft.client.renderer.ItemBlockRenderTypes; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.core.Direction; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.phys.AABB; +import net.minecraftforge.client.RenderTypeHelper; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import lombok.Getter; +import org.jetbrains.annotations.Nullable; + +import java.util.Collections; +import java.util.List; +import java.util.Optional; + +public class FluidAreaRender extends DynamicRender { + + public static final List DEFAULT_FACES = Collections.singletonList(RelativeDirection.UP); + + // spotless:off + @SuppressWarnings("deprecation") + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + FluidBlockRenderer.CODEC.forGetter(FluidAreaRender::getFluidBlockRenderer), + BuiltInRegistries.FLUID.byNameCodec().optionalFieldOf("fixed_fluid").forGetter(FluidAreaRender::getFixedFluid), + RelativeDirection.CODEC.listOf().optionalFieldOf("drawn_faces", DEFAULT_FACES).forGetter(FluidAreaRender::getDrawFaces) + ).apply(instance, FluidAreaRender::new)); + public static final DynamicRenderType TYPE = new DynamicRenderType<>(FluidAreaRender.CODEC); + // spotless:on + + @Getter + private final FluidBlockRenderer fluidBlockRenderer; + private final boolean fixedFluid; + @Getter + private final List drawFaces; + + private @Nullable Fluid cachedFluid; + private @Nullable ResourceLocation cachedRecipe; + + @SuppressWarnings("OptionalUsedAsFieldOrParameterType") + public FluidAreaRender(FluidBlockRenderer fluidBlockRenderer, + Optional fixedFluid, List drawFaces) { + this.fluidBlockRenderer = fluidBlockRenderer; + if (fixedFluid.isPresent()) { + this.fixedFluid = true; + this.cachedFluid = fixedFluid.get(); + } else { + this.fixedFluid = false; + } + this.drawFaces = drawFaces.isEmpty() ? DEFAULT_FACES : drawFaces; + } + + @Override + public DynamicRenderType getType() { + return TYPE; + } + + @Override + public int getViewDistance() { + return 32; + } + + @Override + public void render(IFluidRenderMulti machine, float partialTick, + PoseStack poseStack, MultiBufferSource buffer, + int packedLight, int packedOverlay) { + if (!ConfigHolder.INSTANCE.client.renderer.renderFluids) return; + if (!machine.isFormed() || machine.getFluidOffsets() == null) { + return; + } + if (!fixedFluid) { + var lastRecipe = machine.getRecipeLogic().getLastRecipe(); + if (lastRecipe == null) { + cachedRecipe = null; + cachedFluid = null; + } else if (machine.self().getOffsetTimer() % 20 == 0 || lastRecipe.id != cachedRecipe) { + cachedRecipe = lastRecipe.id; + if (machine.isActive()) { + cachedFluid = RenderUtil.getRecipeFluidToRender(lastRecipe); + } else { + cachedFluid = null; + } + } + } + if (cachedFluid == null) { + return; + } + + poseStack.pushPose(); + var pose = poseStack.last().pose(); + + var fluidRenderType = ItemBlockRenderTypes.getRenderLayer(cachedFluid.defaultFluidState()); + var consumer = buffer.getBuffer(RenderTypeHelper.getEntityRenderType(fluidRenderType, false)); + + for (RelativeDirection face : this.drawFaces) { + var dir = face.getRelative(machine.self().getFrontFacing(), machine.self().getUpwardsFacing(), + machine.self().isFlipped()); + if (dir.getAxis() != Direction.Axis.Y) dir = dir.getOpposite(); + + fluidBlockRenderer.drawPlane(dir, machine.getFluidOffsets(), pose, consumer, cachedFluid, + RenderUtil.FluidTextureType.STILL, packedOverlay, machine.self().getPos()); + } + + poseStack.popPose(); + } + + private Optional getFixedFluid() { + if (fixedFluid) return Optional.ofNullable(cachedFluid); + else return Optional.empty(); + } + + @Override + public boolean shouldRenderOffScreen(IFluidRenderMulti machine) { + return true; + } + + @Override + public AABB getRenderBoundingBox(IFluidRenderMulti machine) { + AABB box = super.getRenderBoundingBox(machine); + var offsets = machine.getFluidOffsets(); + for (var offset : offsets) { + box = box.minmax(new AABB(offset)); + } + return box.inflate(getViewDistance()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FusionRingRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FusionRingRender.java new file mode 100644 index 00000000000..fb5e254216e --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FusionRingRender.java @@ -0,0 +1,113 @@ +package com.gregtechceu.gtceu.client.renderer.machine.impl; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; +import com.gregtechceu.gtceu.client.renderer.GTRenderTypes; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRender; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderType; +import com.gregtechceu.gtceu.client.util.BloomUtils; +import com.gregtechceu.gtceu.client.util.RenderBufferHelper; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.FusionReactorMachine; + +import com.lowdragmc.shimmer.client.shader.RenderUtils; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.serialization.Codec; + +import static net.minecraft.util.FastColor.ARGB32.*; + +public class FusionRingRender extends DynamicRender { + + // spotless:off + public static final Codec CODEC = Codec.unit(FusionRingRender::new); + public static final DynamicRenderType TYPE = new DynamicRenderType<>(FusionRingRender.CODEC); + // spotless:on + + public static final float FADEOUT = 60; + + protected float delta = 0; + protected int lastColor = -1; + + public FusionRingRender() {} + + @Override + public DynamicRenderType getType() { + return TYPE; + } + + @Override + public boolean shouldRender(FusionReactorMachine machine, Vec3 cameraPos) { + return machine.recipeLogic.isWorking() || delta > 0; + } + + @Override + public void render(FusionReactorMachine machine, float partialTick, + PoseStack poseStack, MultiBufferSource buffer, + int packedLight, int packedOverlay) { + if (!machine.recipeLogic.isWorking() && delta <= 0) { + return; + } + if (GTCEu.Mods.isShimmerLoaded()) { + PoseStack finalStack = RenderUtils.copyPoseStack(poseStack); + BloomUtils.entityBloom(source -> renderLightRing(machine, partialTick, finalStack, + source.getBuffer(GTRenderTypes.getLightRing()))); + } else { + renderLightRing(machine, partialTick, poseStack, buffer.getBuffer(GTRenderTypes.getLightRing())); + } + } + + @OnlyIn(Dist.CLIENT) + private void renderLightRing(FusionReactorMachine machine, float partialTicks, PoseStack stack, + VertexConsumer buffer) { + var color = machine.getColor(); + var alpha = 1f; + if (machine.recipeLogic.isWorking()) { + lastColor = color; + delta = FADEOUT; + } else { + alpha = delta / FADEOUT; + lastColor = color(Mth.floor(alpha * 255), red(lastColor), green(lastColor), blue(lastColor)); + delta -= Minecraft.getInstance().getDeltaFrameTime(); + } + + final var lerpFactor = Math.abs((Math.abs(machine.getOffsetTimer() % 50) + partialTicks) - 25) / 25; + var front = machine.getFrontFacing(); + var upwards = machine.getUpwardsFacing(); + var flipped = machine.isFlipped(); + var back = RelativeDirection.BACK.getRelative(front, upwards, flipped); + var axis = RelativeDirection.UP.getRelative(front, upwards, flipped).getAxis(); + var r = Mth.lerp(lerpFactor, red(lastColor), 255) / 255f; + var g = Mth.lerp(lerpFactor, green(lastColor), 255) / 255f; + var b = Mth.lerp(lerpFactor, blue(lastColor), 255) / 255f; + RenderBufferHelper.renderRing(stack, buffer, + back.getStepX() * 7 + 0.5F, + back.getStepY() * 7 + 0.5F, + back.getStepZ() * 7 + 0.5F, + 6, 0.2F, 10, 20, + r, g, b, alpha, axis); + } + + @Override + public boolean shouldRenderOffScreen(FusionReactorMachine machine) { + return machine.recipeLogic.isWorking() || delta > 0; + } + + @Override + public int getViewDistance() { + return 32; + } + + @Override + public AABB getRenderBoundingBox(FusionReactorMachine machine) { + return new AABB(machine.getPos()).inflate(getViewDistance() / 2.0D); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumChestItemRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumChestItemRender.java new file mode 100644 index 00000000000..6be72025874 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumChestItemRender.java @@ -0,0 +1,157 @@ +package com.gregtechceu.gtceu.client.renderer.machine.impl; + +import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRender; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderType; +import com.gregtechceu.gtceu.client.util.PoseStackExtensions; +import com.gregtechceu.gtceu.client.util.RenderUtil; +import com.gregtechceu.gtceu.common.data.GTMachines; +import com.gregtechceu.gtceu.common.machine.storage.CreativeChestMachine; +import com.gregtechceu.gtceu.common.machine.storage.QuantumChestMachine; +import com.gregtechceu.gtceu.utils.FormattingUtil; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; +import net.minecraft.client.renderer.LightTexture; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.core.Direction; +import net.minecraft.util.Mth; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.serialization.Codec; +import lombok.experimental.ExtensionMethod; +import org.jetbrains.annotations.Nullable; +import org.joml.Quaternionf; + +import static com.gregtechceu.gtceu.utils.GTMatrixUtils.*; + +@ExtensionMethod(PoseStackExtensions.class) +public class QuantumChestItemRender extends DynamicRender { + + // spotless:off + public static final Codec CODEC = Codec.unit(QuantumChestItemRender::new); + public static final DynamicRenderType TYPE = new DynamicRenderType<>(QuantumChestItemRender.CODEC); + // spotless:on + + private static @Nullable Item CREATIVE_CHEST_ITEM = null; + + public QuantumChestItemRender() {} + + @Override + public DynamicRenderType getType() { + return TYPE; + } + + @Override + public void renderByItem(ItemStack stack, ItemDisplayContext displayContext, + PoseStack poseStack, MultiBufferSource buffer, int packedLight, int packedOverlay) { + if (CREATIVE_CHEST_ITEM == null) CREATIVE_CHEST_ITEM = GTMachines.CREATIVE_ITEM.getItem(); + if (stack.hasTag()) { + poseStack.pushPose(); + poseStack.translate(-0.5f, -0.5f, -0.5f); + + ItemStack itemStack = ItemStack.of(stack.getOrCreateTagElement("stored")); + long storedAmount = stack.getOrCreateTag().getLong("storedAmount"); + float totalTick = Minecraft.getInstance().level.getGameTime() + Minecraft.getInstance().getFrameTime(); + // Don't need to handle locked items here since they don't get saved to the item + renderChestItem(poseStack, buffer, totalTick, Direction.NORTH, + itemStack, storedAmount, ItemStack.EMPTY, stack.is(CREATIVE_CHEST_ITEM)); + + poseStack.popPose(); + } + super.renderByItem(stack, displayContext, poseStack, buffer, packedLight, packedOverlay); + } + + @Override + public void render(QuantumChestMachine machine, float partialTick, PoseStack poseStack, MultiBufferSource buffer, + int packedLight, int packedOverlay) { + poseStack.pushPose(); + setupModelRotation(machine, poseStack); + + var totalTick = machine.getLevel().getGameTime() + partialTick; + renderChestItem(poseStack, buffer, totalTick, machine.getFrontFacing(), + machine.getStored(), machine.getStoredAmount(), machine.getLockedItem(), + machine instanceof CreativeChestMachine); + poseStack.popPose(); + } + + @OnlyIn(Dist.CLIENT) + public void renderChestItem(PoseStack poseStack, MultiBufferSource buffer, float totalTick, Direction frontFacing, + ItemStack stored, long storedAmount, ItemStack locked, boolean isCreative) { + ItemStack itemStack = !stored.isEmpty() ? stored : locked; + if (itemStack.isEmpty()) return; + var itemRenderer = Minecraft.getInstance().getItemRenderer(); + + poseStack.pushPose(); + poseStack.translate(0.5f, 0.5f, 0.5f); + if (frontFacing.getAxis() == Direction.Axis.Y) { + Quaternionf rotation = getRotation(Direction.NORTH, frontFacing); + poseStack.mulPose(rotation); + } + poseStack.mulPose(new Quaternionf().rotateY(totalTick * Mth.TWO_PI / 80)); + poseStack.scale(0.6f, 0.6f, 0.6f); + + itemRenderer.renderStatic(itemStack, ItemDisplayContext.FIXED, + LightTexture.FULL_BRIGHT, OverlayTexture.NO_OVERLAY, + poseStack, buffer, Minecraft.getInstance().level, + Item.getId(itemStack.getItem()) + itemStack.getDamageValue()); + poseStack.popPose(); + + drawAmountText(poseStack, buffer, frontFacing, storedAmount, isCreative); + } + + public static void setupModelRotation(MetaMachine machine, PoseStack poseStack) { + var frontFacing = machine.getFrontFacing(); + var upwardFacing = machine.getUpwardsFacing(); + + poseStack.translate(0.5f, 0.5f, 0.5f); + rotateMatrix(poseStack.last().pose(), + upwardFacingAngle(upwardFacing) + (upwardFacing.getAxis() == Direction.Axis.X ? Mth.PI : 0), + getDirectionAxis(frontFacing)); + poseStack.translate(-0.5f, -0.5f, -0.5f); + } + + public static void drawAmountText(PoseStack poseStack, MultiBufferSource buffer, Direction frontFacing, + long storedAmount, boolean isCreative) { + poseStack.pushPose(); + RenderSystem.disableDepthTest(); + poseStack.translate(frontFacing.getStepX() * -1 / 16f, frontFacing.getStepY() * -1 / 16f, + frontFacing.getStepZ() * -1 / 16f); + + RenderUtil.moveToFace(poseStack, 0.5f, 0.5f, 0.5f, frontFacing); + RenderUtil.rotateToFace(poseStack, frontFacing, Direction.NORTH); + poseStack.scale(1f / 64, 1f / 64, 0); + poseStack.translate(-32, -32, 0); + + String text; + int x = 0, y = 24; + int w = 64, h = 28; + float textX = x + w / 2.0f; + float textY = y + h / 2.0f; + + poseStack.pushPose(); + if (isCreative) { + text = "∞"; + poseStack.translate(textX, textY, 0); + poseStack.scale(3.0f, 3.0f, 1.0f); + poseStack.translate(-textX, -textY, 0); + } else { + text = storedAmount <= 0 ? "*" : FormattingUtil.formatNumberReadable(storedAmount, false); + } + + Font font = Minecraft.getInstance().font; + font.drawInBatch(text, textX - font.getSplitter().stringWidth(text) / 2.0f, textY - font.lineHeight / 2.0f, + 0xffffffff, false, + poseStack.last().pose(), buffer, Font.DisplayMode.NORMAL, 0, LightTexture.FULL_BRIGHT); + poseStack.popPose(); + RenderSystem.enableDepthTest(); + poseStack.popPose(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumTankFluidRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumTankFluidRender.java new file mode 100644 index 00000000000..1489b8dc126 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumTankFluidRender.java @@ -0,0 +1,139 @@ +package com.gregtechceu.gtceu.client.renderer.machine.impl; + +import com.gregtechceu.gtceu.api.item.MetaMachineItem; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRender; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderType; +import com.gregtechceu.gtceu.client.util.RenderBufferHelper; +import com.gregtechceu.gtceu.client.util.RenderUtil; +import com.gregtechceu.gtceu.common.data.GTMachines; +import com.gregtechceu.gtceu.common.machine.storage.CreativeTankMachine; +import com.gregtechceu.gtceu.common.machine.storage.QuantumTankMachine; + +import net.minecraft.client.renderer.LightTexture; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.Sheets; +import net.minecraft.core.Direction; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; +import net.minecraftforge.fluids.FluidStack; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.serialization.Codec; + +import java.util.EnumSet; + +import javax.annotation.Nullable; + +import static com.gregtechceu.gtceu.client.renderer.machine.impl.QuantumChestItemRender.*; +import static com.gregtechceu.gtceu.common.machine.storage.QuantumTankMachine.TANK_CAPACITY; + +public class QuantumTankFluidRender extends DynamicRender { + + // spotless:off + public static final Codec CODEC = Codec.unit(QuantumTankFluidRender::new); + public static final DynamicRenderType TYPE = new DynamicRenderType<>(QuantumTankFluidRender.CODEC); + // spotless:on + + private static final float MIN = 0.16f; + private static final float MAX = 0.84f; + + private static @Nullable Item CREATIVE_FLUID_ITEM = null; + + public QuantumTankFluidRender() {} + + @Override + public DynamicRenderType getType() { + return TYPE; + } + + @Override + public void renderByItem(ItemStack stack, ItemDisplayContext displayContext, + PoseStack poseStack, MultiBufferSource buffer, int packedLight, int packedOverlay) { + if (CREATIVE_FLUID_ITEM == null) CREATIVE_FLUID_ITEM = GTMachines.CREATIVE_FLUID.getItem(); + if (stack.hasTag()) { + poseStack.pushPose(); + + FluidStack stored = FluidStack.loadFluidStackFromNBT(stack.getOrCreateTagElement("stored")); + long storedAmount = stack.getOrCreateTag().getLong("storedAmount"); + if (storedAmount == 0 && !stored.isEmpty()) storedAmount = stored.getAmount(); + long maxAmount = 0; + if (stack.getItem() instanceof MetaMachineItem machineItem) { + maxAmount = TANK_CAPACITY.getLong(machineItem.getDefinition()); + } + // Don't need to handle locked fluids here since they don't get saved to the item + renderTank(poseStack, buffer, Direction.NORTH, + stored, storedAmount, maxAmount, FluidStack.EMPTY, + stack.is(CREATIVE_FLUID_ITEM)); + + poseStack.popPose(); + } + super.renderByItem(stack, displayContext, poseStack, buffer, packedLight, packedOverlay); + } + + @Override + public void render(QuantumTankMachine machine, float partialTick, PoseStack poseStack, MultiBufferSource buffer, + int packedLight, int packedOverlay) { + poseStack.pushPose(); + setupModelRotation(machine, poseStack); + + renderTank(poseStack, buffer, machine.getFrontFacing(), + machine.getStored(), machine.getStoredAmount(), machine.getMaxAmount(), machine.getLockedFluid(), + machine instanceof CreativeTankMachine); + + poseStack.popPose(); + } + + @OnlyIn(Dist.CLIENT) + public void renderTank(PoseStack poseStack, MultiBufferSource buffer, Direction frontFacing, + FluidStack stored, long storedAmount, long maxAmount, FluidStack locked, + boolean isCreative) { + FluidStack fluid = !stored.isEmpty() ? stored : locked; + if (fluid.isEmpty()) return; + + var ext = IClientFluidTypeExtensions.of(fluid.getFluid()); + var fluidSprite = RenderUtil.FluidTextureType.STILL.map(ext, fluid); + + EnumSet sidesToRender = EnumSet.of(frontFacing); + VertexConsumer builder = buffer.getBuffer(Sheets.translucentCullBlockSheet()); + + var gas = fluid.getFluid().getFluidType().isLighterThanAir(); + var percentFull = isCreative || maxAmount <= storedAmount ? 1f : (float) storedAmount / maxAmount; + + var maxTop = gas ? MAX : MIN + percentFull * (MAX - MIN); + var minBot = gas ? MIN + (1 - percentFull) * (MAX - MIN) : MIN; + float minY, maxY, minZ, maxZ; + if (frontFacing.getAxis() == Direction.Axis.Y) { + minY = MIN; + maxY = MAX; + if (frontFacing == Direction.UP) { + minZ = minBot; + maxZ = maxTop; + // the output is already rotated in the pose stack, so we don't need to rotate it again here + sidesToRender.add(gas ? Direction.SOUTH : Direction.NORTH); + } else { + // -z is top + minZ = 1 - maxTop; + maxZ = 1 - minBot; + // the output is already rotated in the pose stack, so we don't need to rotate it again here + sidesToRender.add(gas ? Direction.NORTH : Direction.SOUTH); + } + } else { + minY = minBot; + maxY = maxTop; + minZ = MIN; + maxZ = MAX; + + sidesToRender.add(gas ? Direction.DOWN : Direction.UP); + } + RenderBufferHelper.renderCube(builder, poseStack.last(), sidesToRender, + ext.getTintColor(fluid) | 0xff000000, LightTexture.FULL_BRIGHT, fluidSprite, + MIN, minY, minZ, MAX, maxY, maxZ); + + drawAmountText(poseStack, buffer, frontFacing, storedAmount, isCreative); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/package-info.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/package-info.java new file mode 100644 index 00000000000..faae3ffe958 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package com.gregtechceu.gtceu.client.renderer.machine.impl; + +import net.minecraft.MethodsReturnNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/package-info.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/package-info.java new file mode 100644 index 00000000000..4eb06edb14d --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package com.gregtechceu.gtceu.client.renderer.machine; + +import net.minecraft.MethodsReturnNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/monitor/IMonitorRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/monitor/IMonitorRenderer.java new file mode 100644 index 00000000000..b217dc6c35c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/monitor/IMonitorRenderer.java @@ -0,0 +1,17 @@ +package com.gregtechceu.gtceu.client.renderer.monitor; + +import com.gregtechceu.gtceu.common.machine.multiblock.electric.CentralMonitorMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.monitor.MonitorGroup; + +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import com.mojang.blaze3d.vertex.PoseStack; + +public interface IMonitorRenderer { + + @OnlyIn(Dist.CLIENT) + void render(CentralMonitorMachine machine, MonitorGroup group, float partialTick, PoseStack poseStack, + MultiBufferSource buffer, int packedLight, int packedOverlay); +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/monitor/MonitorImageRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/monitor/MonitorImageRenderer.java new file mode 100644 index 00000000000..a76b37ccf7d --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/monitor/MonitorImageRenderer.java @@ -0,0 +1,49 @@ +package com.gregtechceu.gtceu.client.renderer.monitor; + +import com.gregtechceu.gtceu.client.renderer.GTRenderTypes; +import com.gregtechceu.gtceu.client.util.ClientImageCache; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.CentralMonitorMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.monitor.MonitorGroup; +import com.gregtechceu.gtceu.utils.GTUtil; + +import net.minecraft.client.renderer.LightTexture; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import org.joml.Matrix4f; + +public class MonitorImageRenderer implements IMonitorRenderer { + + private final String url; + + public MonitorImageRenderer(String url) { + this.url = url; + } + + @Override + public void render(CentralMonitorMachine machine, MonitorGroup group, float partialTick, PoseStack poseStack, + MultiBufferSource buffer, int packedLight, int packedOverlay) { + BlockPos rel = group.getRow(0, machine::toRelative).get(0); + BlockPos size = GTUtil.getLast(group.getRow(-1, machine::toRelative)) + .offset(-rel.getX() + 1, -rel.getY() + 1, -rel.getZ() + 1); + + poseStack.translate(rel.getX(), rel.getY(), rel.getZ()); + + ResourceLocation textureId = ClientImageCache.getOrLoadTexture(url); + if (textureId == null) return; + + VertexConsumer consumer = buffer.getBuffer(GTRenderTypes.guiTexture(textureId)); + Matrix4f pose = poseStack.last().pose(); + + float minX = 0, maxX = size.getX(); + float minY = 0, maxY = size.getY(); + + consumer.vertex(pose, minX, maxY, 0).color(0xFFFFFFFF).uv(0, 1).uv2(LightTexture.FULL_BRIGHT).endVertex(); + consumer.vertex(pose, maxX, maxY, 0).color(0xFFFFFFFF).uv(1, 1).uv2(LightTexture.FULL_BRIGHT).endVertex(); + consumer.vertex(pose, maxX, minY, 0).color(0xFFFFFFFF).uv(1, 0).uv2(LightTexture.FULL_BRIGHT).endVertex(); + consumer.vertex(pose, minX, minY, 0).color(0xFFFFFFFF).uv(0, 0).uv2(LightTexture.FULL_BRIGHT).endVertex(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/monitor/MonitorTextRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/monitor/MonitorTextRenderer.java new file mode 100644 index 00000000000..029a85b5223 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/monitor/MonitorTextRenderer.java @@ -0,0 +1,76 @@ +package com.gregtechceu.gtceu.client.renderer.monitor; + +import com.gregtechceu.gtceu.common.machine.multiblock.electric.CentralMonitorMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.monitor.MonitorGroup; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; +import net.minecraft.client.renderer.LightTexture; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.util.FormattedCharSequence; + +import com.mojang.blaze3d.vertex.PoseStack; + +import java.util.List; + +public class MonitorTextRenderer implements IMonitorRenderer { + + private static final float TEXT_SCALE = 1 / 144f; + private final List text; + private final float scale; + + public MonitorTextRenderer(List text, double scale) { + this.text = text; + this.scale = (float) scale; + } + + @Override + public void render(CentralMonitorMachine machine, MonitorGroup group, float partialTick, PoseStack poseStack, + MultiBufferSource buffer, int packedLight, int packedOverlay) { + try { + BlockPos rel = group.getRow(0, machine::toRelative).get(0); + int row = 0; + int columns = group.getRow(0, machine::toRelative).size(); + poseStack.translate(rel.getX(), rel.getY(), rel.getZ()); + poseStack.scale(TEXT_SCALE * scale, TEXT_SCALE * scale, TEXT_SCALE * scale); + float y = 9; + for (Component s : text) { + boolean didAnything = false; + for (FormattedCharSequence line : Minecraft.getInstance().font.split(s, + Math.round(columns * 135 / scale))) { + if (y >= 144) { + try { + row++; + columns = group.getRow(row, machine::toRelative).size(); + y -= 144; + poseStack.translate(-rel.getX() / (TEXT_SCALE * scale), -rel.getY() / (TEXT_SCALE * scale), + -rel.getZ() / (TEXT_SCALE * scale)); + rel = group.getRow(row, machine::toRelative).get(0); + poseStack.translate(rel.getX() / (TEXT_SCALE * scale), rel.getY() / (TEXT_SCALE * scale), + rel.getZ() / (TEXT_SCALE * scale)); + } catch (IndexOutOfBoundsException e) { + return; + } + } + Minecraft.getInstance().font.drawInBatch( + line, + 9, y, + 0xFFFFFF, + false, + poseStack.last().pose(), + buffer, + Font.DisplayMode.NORMAL, + 0, + LightTexture.FULL_BRIGHT); + y += Minecraft.getInstance().font.lineHeight * scale; + didAnything = true; + } + if (!didAnything) { + y += Minecraft.getInstance().font.lineHeight * scale; + } + } + } catch (IndexOutOfBoundsException ignored) {} + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/AssetEventListener.java b/src/main/java/com/gregtechceu/gtceu/client/util/AssetEventListener.java new file mode 100644 index 00000000000..eb035bf4ed0 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/util/AssetEventListener.java @@ -0,0 +1,44 @@ +package com.gregtechceu.gtceu.client.util; + +import net.minecraftforge.client.event.ModelEvent; +import net.minecraftforge.client.event.TextureStitchEvent; +import net.minecraftforge.eventbus.api.Event; + +import org.jetbrains.annotations.Nullable; + +@FunctionalInterface +public interface AssetEventListener { + + void accept(T event); + + default @Nullable Class eventClass() { + return null; + } + + interface AtlasStitched extends AssetEventListener { + + @Override + @Nullable + default Class eventClass() { + return TextureStitchEvent.Post.class; + } + } + + interface ModifyBakingResult extends AssetEventListener { + + @Override + @Nullable + default Class eventClass() { + return ModelEvent.ModifyBakingResult.class; + } + } + + interface RegisterAdditional extends AssetEventListener { + + @Override + @Nullable + default Class eventClass() { + return ModelEvent.RegisterAdditional.class; + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/ClientImageCache.java b/src/main/java/com/gregtechceu/gtceu/client/util/ClientImageCache.java new file mode 100644 index 00000000000..1c93aafc26c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/util/ClientImageCache.java @@ -0,0 +1,105 @@ +package com.gregtechceu.gtceu.client.util; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.misc.ImageCache; +import com.gregtechceu.gtceu.common.network.GTNetwork; +import com.gregtechceu.gtceu.common.network.packets.CPacketImageRequest; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.texture.AbstractTexture; +import net.minecraft.client.renderer.texture.DynamicTexture; +import net.minecraft.client.renderer.texture.SimpleTexture; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import com.mojang.blaze3d.platform.NativeImage; +import org.apache.commons.lang3.ArrayUtils; +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; + +@OnlyIn(Dist.CLIENT) +public class ClientImageCache { + + private static final Map imageParts = new HashMap<>(); + + private static boolean downloading = false; + // TODO make some kind of loading icon for this + private static final AbstractTexture LOADING_TEXTURE_MARKER = new SimpleTexture( + GTCEu.id("textures/block/void.png")); + private static final LoadingCache CACHE = CacheBuilder.newBuilder() + .refreshAfterWrite(ImageCache.REFRESH_SECS, TimeUnit.SECONDS) + .expireAfterAccess(ImageCache.EXPIRE_SECS, TimeUnit.SECONDS) + .build(CacheLoader.from(url -> { + if (!downloading) { + downloading = true; + GTCEu.LOGGER.debug("Requesting image {}", url); + GTNetwork.sendToServer(new CPacketImageRequest(url)); + } + return LOADING_TEXTURE_MARKER; + })); + + private static @NotNull ResourceLocation getUrlTextureId(String url) { + return GTCEu.id("textures/central_monitor/image_" + url.hashCode()); + } + + public static @Nullable ResourceLocation getOrLoadTexture(String url) { + AbstractTexture texture = null; + + try { + texture = CACHE.get(url); + } catch (ExecutionException e) { + Throwable t = e; + if (t.getCause() != null) { + t = t.getCause(); + } + GTCEu.LOGGER.error("Could not load image {}", url, t); + } + if (texture == null || texture == LOADING_TEXTURE_MARKER) { + return null; + } + + return getUrlTextureId(url); + } + + @ApiStatus.Internal + public static void receiveImagePart(String url, byte[] imagePart, int index, + final int totalParts) throws IOException { + byte[][] parts = imageParts.computeIfAbsent(url, $ -> new byte[totalParts][]); + parts[index] = imagePart; + + if (index == totalParts - 1) { + byte[] imageBytes = new byte[imagePart.length]; + int currentIndex = 0; + for (byte[] part : parts) { + imageBytes = ArrayUtils.insert(currentIndex, imageBytes, part); + currentIndex += part.length; + } + + saveTexture(url, imageBytes); + imageParts.remove(url); + downloading = false; + } + } + + private static void saveTexture(String url, byte[] imageBytes) throws IOException { + ByteBuffer buffer = ByteBuffer.allocateDirect(imageBytes.length); + buffer.put(imageBytes).flip(); + DynamicTexture texture = new DynamicTexture(NativeImage.read(buffer)); + + Minecraft.getInstance().getTextureManager().register(getUrlTextureId(url), texture); + + CACHE.put(url, texture); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/DrawUtil.java b/src/main/java/com/gregtechceu/gtceu/client/util/DrawUtil.java index 55cf4941c75..03b1958a156 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/util/DrawUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/client/util/DrawUtil.java @@ -1,6 +1,6 @@ package com.gregtechceu.gtceu.client.util; -import com.gregtechceu.gtceu.core.mixins.GuiGraphicsAccessor; +import com.gregtechceu.gtceu.core.mixins.client.GuiGraphicsAccessor; import com.lowdragmc.lowdraglib.utils.ColorUtils; diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/ExtendedBlockModelRotation.java b/src/main/java/com/gregtechceu/gtceu/client/util/ExtendedBlockModelRotation.java new file mode 100644 index 00000000000..a6ddce39347 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/util/ExtendedBlockModelRotation.java @@ -0,0 +1,70 @@ +package com.gregtechceu.gtceu.client.util; + +import net.minecraft.core.Direction; + +import lombok.Getter; + +/** + * All possible rotations for a fully orientable block. + *

+ * This code is from + * Applied + * Energistics 2, + * licensed as LGPL 3.0. + */ +public enum ExtendedBlockModelRotation { + + // DUNSWE -> SWNE + DOWN_SOUTH(90, 0, 180), + DOWN_WEST(90, 0, 270), + DOWN_NORTH(90, 0, 0), + DOWN_EAST(90, 0, 90), + + UP_SOUTH(270, 0, 0), + UP_WEST(270, 0, 270), + UP_NORTH(270, 0, 180), + UP_EAST(270, 0, 90), + + NORTH_SOUTH(0, 0, 180), + NORTH_WEST(0, 0, 90), + NORTH_NORTH(0, 0, 0), // Default + NORTH_EAST(0, 0, 270), + + SOUTH_SOUTH(0, 180, 180), + SOUTH_WEST(0, 180, 90), + SOUTH_NORTH(0, 180, 0), + SOUTH_EAST(0, 180, 270), + + WEST_SOUTH(0, 270, 180), + WEST_WEST(0, 270, 90), + WEST_NORTH(0, 270, 0), + WEST_EAST(0, 270, 270), + + EAST_SOUTH(0, 90, 180), + EAST_WEST(0, 90, 90), + EAST_NORTH(0, 90, 0), + EAST_EAST(0, 90, 270); + + public static final ExtendedBlockModelRotation[] VALUES = values(); + + @Getter + private final int angleX; + @Getter + private final int angleY; + @Getter + private final int angleZ; + + ExtendedBlockModelRotation(int angleX, int angleY, int angleZ) { + this.angleX = angleX; + this.angleY = angleY; + this.angleZ = angleZ; + } + + /** + * Gets the block orientation in which the block's front and top are facing the specified directions. + */ + public static ExtendedBlockModelRotation get(Direction frontFacing, Direction upwardsFacing) { + return VALUES[frontFacing.get3DDataValue() * 4 + upwardsFacing.get2DDataValue()]; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/FacadeBlockAndTintGetter.java b/src/main/java/com/gregtechceu/gtceu/client/util/FacadeBlockAndTintGetter.java new file mode 100644 index 00000000000..d1ebf6387fc --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/util/FacadeBlockAndTintGetter.java @@ -0,0 +1,73 @@ +package com.gregtechceu.gtceu.client.util; + +import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.ColorResolver; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.lighting.LevelLightEngine; +import net.minecraft.world.level.material.FluidState; + +import org.jetbrains.annotations.Nullable; + +import javax.annotation.ParametersAreNonnullByDefault; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +public class FacadeBlockAndTintGetter implements BlockAndTintGetter { + + public final BlockAndTintGetter parent; + public final BlockPos pos; + public final BlockState blockState; + public final BlockEntity blockEntity; + + public FacadeBlockAndTintGetter(BlockAndTintGetter parent, + BlockPos pos, BlockState blockState, @Nullable BlockEntity blockEntity) { + this.parent = parent; + this.pos = pos; + this.blockState = blockState; + this.blockEntity = blockEntity; + } + + @Override + public float getShade(Direction direction, boolean shade) { + return parent.getShade(direction, shade); + } + + @Override + public LevelLightEngine getLightEngine() { + return parent.getLightEngine(); + } + + @Override + public int getBlockTint(BlockPos blockPos, ColorResolver colorResolver) { + return parent.getBlockTint(blockPos, colorResolver); + } + + @Override + public @Nullable BlockEntity getBlockEntity(BlockPos pos) { + return pos.equals(this.pos) ? blockEntity : parent.getBlockEntity(pos); + } + + @Override + public BlockState getBlockState(BlockPos pos) { + return pos.equals(this.pos) ? blockState : parent.getBlockState(pos); + } + + @Override + public FluidState getFluidState(BlockPos pos) { + return pos.equals(this.pos) ? blockState.getFluidState() : parent.getFluidState(pos); + } + + @Override + public int getHeight() { + return parent.getHeight(); + } + + @Override + public int getMinBuildHeight() { + return parent.getMinBuildHeight(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/GTQuadTransformers.java b/src/main/java/com/gregtechceu/gtceu/client/util/GTQuadTransformers.java new file mode 100644 index 00000000000..fdfea07a48d --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/util/GTQuadTransformers.java @@ -0,0 +1,84 @@ +package com.gregtechceu.gtceu.client.util; + +import net.minecraft.client.renderer.FaceInfo; +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.core.Direction; +import net.minecraft.util.Mth; +import net.minecraftforge.client.model.IQuadTransformer; +import net.minecraftforge.client.model.QuadTransformers; + +public final class GTQuadTransformers { + + public static IQuadTransformer offset(float by) { + return offset(by, by, by); + } + + public static IQuadTransformer offset(float xOffset, float yOffset, float zOffset) { + if (xOffset == 0.0f && yOffset == 0.0f && zOffset == 0.0f) return QuadTransformers.empty(); + + return quad -> { + int[] vertices = quad.getVertices(); + Direction direction = quad.getDirection(); + FaceInfo faceInfo = FaceInfo.fromFacing(direction); + + for (int i = 0; i < 4; i++) { + FaceInfo.VertexInfo normal = faceInfo.getVertexInfo(i); + int xNormal = Direction.from3DDataValue(normal.xFace).getStepX(); + int yNormal = Direction.from3DDataValue(normal.yFace).getStepY(); + int zNormal = Direction.from3DDataValue(normal.zFace).getStepZ(); + + int offset = i * IQuadTransformer.STRIDE + IQuadTransformer.POSITION; + float x = Float.intBitsToFloat(vertices[offset]); + float y = Float.intBitsToFloat(vertices[offset + 1]); + float z = Float.intBitsToFloat(vertices[offset + 2]); + + x += xOffset * xNormal; + y += yOffset * yNormal; + z += zOffset * zNormal; + + vertices[offset] = Float.floatToRawIntBits(x); + vertices[offset + 1] = Float.floatToRawIntBits(y); + vertices[offset + 2] = Float.floatToRawIntBits(z); + } + }; + } + + public static BakedQuad setSprite(BakedQuad quad, TextureAtlasSprite sprite) { + TextureAtlasSprite oldSprite = quad.getSprite(); + int[] vertices = quad.getVertices().clone(); + + for (int i = 0; i < 4; i++) { + int offset = i * IQuadTransformer.STRIDE + IQuadTransformer.UV0; + float u = Float.intBitsToFloat(vertices[offset]); + float v = Float.intBitsToFloat(vertices[offset + 1]); + + // same as sprite.getX(oldSprite.getXOffset(x)), but we don't multiply and divide in between + u = Mth.map(u, oldSprite.getU0(), oldSprite.getU1(), sprite.getU0(), sprite.getU1()); + v = Mth.map(v, oldSprite.getV0(), oldSprite.getV1(), sprite.getV0(), sprite.getV1()); + + vertices[offset] = Float.floatToRawIntBits(u); + vertices[offset + 1] = Float.floatToRawIntBits(v); + } + BakedQuad newQuad = new BakedQuad(vertices, quad.getTintIndex(), quad.getDirection(), + sprite, quad.isShade(), quad.hasAmbientOcclusion()); + return newQuad.gtceu$setTextureKey(quad.gtceu$getTextureKey()); + } + + public static BakedQuad setColor(BakedQuad quad, int argbColor, boolean clearTintIndex) { + int[] vertices = quad.getVertices().clone(); + BakedQuad copy = new BakedQuad(vertices, clearTintIndex ? -1 : quad.getTintIndex(), quad.getDirection(), + quad.getSprite(), quad.isShade(), quad.hasAmbientOcclusion()); + + QuadTransformers.applyingColor(argbColor).processInPlace(copy); + return copy.gtceu$setTextureKey(quad.gtceu$getTextureKey()); + } + + public static BakedQuad copy(BakedQuad quad) { + return new BakedQuad(quad.getVertices().clone(), quad.getTintIndex(), quad.getDirection(), + quad.getSprite(), quad.isShade(), quad.hasAmbientOcclusion()) + .gtceu$setTextureKey(quad.gtceu$getTextureKey()); + } + + private GTQuadTransformers() {} +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/ModelUtils.java b/src/main/java/com/gregtechceu/gtceu/client/util/ModelUtils.java new file mode 100644 index 00000000000..8568412da98 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/util/ModelUtils.java @@ -0,0 +1,160 @@ +package com.gregtechceu.gtceu.client.util; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.client.model.machine.MachineModel; +import com.gregtechceu.gtceu.client.renderer.cover.ICoverableRenderer; +import com.gregtechceu.gtceu.integration.modernfix.GTModernFixIntegration; + +import com.lowdragmc.lowdraglib.client.model.custommodel.CustomBakedModel; + +import net.minecraft.ChatFormatting; +import net.minecraft.Util; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.texture.TextureAtlas; +import net.minecraft.client.resources.model.*; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.server.packs.resources.ResourceManagerReloadListener; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.Property; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.client.event.ModelEvent; +import net.minecraftforge.client.event.RegisterClientReloadListenersEvent; +import net.minecraftforge.client.event.TextureStitchEvent; +import net.minecraftforge.client.model.data.ModelData; +import net.minecraftforge.eventbus.api.EventPriority; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Mod.EventBusSubscriber(modid = GTCEu.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) +public class ModelUtils { + + private ModelUtils() {} + + private static final List EVENT_LISTENERS = new ArrayList<>(); + + public static List getBakedModelQuads(BakedModel model, BlockAndTintGetter level, BlockPos pos, + BlockState state, Direction side, RandomSource rand) { + return model.getQuads(state, side, rand, model.getModelData(level, pos, state, ModelData.EMPTY), null); + } + + public static BakedModel getModelForState(BlockState state) { + return Minecraft.getInstance().getBlockRenderer().getBlockModel(state); + } + + public static String getPropertyValueString(Map.Entry, Comparable> entry) { + Property property = entry.getKey(); + Comparable value = entry.getValue(); + + String valueString = Util.getPropertyName(property, value); + if (Boolean.TRUE.equals(value)) { + valueString = ChatFormatting.GREEN + valueString; + } else if (Boolean.FALSE.equals(value)) { + valueString = ChatFormatting.RED + valueString; + } + + return property.getName() + ": " + valueString; + } + + public static void registerAtlasStitchedEventListener(boolean removeOnReload, + AssetEventListener.AtlasStitched listener) { + EVENT_LISTENERS.add(new EventListenerHolder(listener, removeOnReload)); + } + + public static void registerAtlasStitchedEventListener(boolean removeOnReload, final ResourceLocation atlasLocation, + final AssetEventListener.AtlasStitched listener) { + registerAtlasStitchedEventListener(removeOnReload, event -> { + if (event.getAtlas().location().equals(atlasLocation)) { + listener.accept(event); + } + }); + } + + public static void registerBakeEventListener(boolean removeOnReload, + AssetEventListener.ModifyBakingResult listener) { + EVENT_LISTENERS.add(new EventListenerHolder(listener, removeOnReload)); + } + + public static void registerAddModelsEventListener(boolean removeOnReload, + AssetEventListener.RegisterAdditional listener) { + EVENT_LISTENERS.add(new EventListenerHolder(listener, removeOnReload)); + } + + @SubscribeEvent(priority = EventPriority.HIGH) + public static void registerReloadListener(RegisterClientReloadListenersEvent event) { + event.registerReloadListener(new ResourceManagerReloadListener() { + + @Override + public void onResourceManagerReload(@NotNull ResourceManager resourceManager) { + EVENT_LISTENERS.removeIf(EventListenerHolder::removeOnReload); + } + }); + } + + @SuppressWarnings({ "unchecked", "deprecation" }) + @SubscribeEvent(priority = EventPriority.LOWEST) + public static void onAtlasStitched(TextureStitchEvent.Post event) { + TextureAtlas atlas = event.getAtlas(); + if (atlas.location() == TextureAtlas.LOCATION_BLOCKS) { + MachineModel.initSprites(atlas); + ICoverableRenderer.initSprites(atlas); + } + + for (var listener : EVENT_LISTENERS) { + Class eventClass = listener.listener.eventClass(); + if (eventClass != null && eventClass.isInstance(event)) { + ((AssetEventListener) listener.listener).accept(event); + } + } + } + + @SuppressWarnings("unchecked") + @SubscribeEvent(priority = EventPriority.LOWEST) + public static void onModifyBakingResult(ModelEvent.ModifyBakingResult event) { + for (var listener : EVENT_LISTENERS) { + Class eventClass = listener.listener.eventClass(); + if (eventClass != null && eventClass.isInstance(event)) { + ((AssetEventListener) listener.listener).accept(event); + } + } + + // don't process the CTM model unwrapping here if modernfix dynamic resources is enabled + if (GTCEu.Mods.isModernFixLoaded() && GTModernFixIntegration.isDynamicResourcesEnabled()) return; + + // Unwrap all machine models from LDLib CTM models so we don't need to be as aggressive with mixins + // Also, the caching they have stops our models from updating properly + for (var entry : event.getModels().entrySet()) { + BakedModel model = entry.getValue(); + if (!(model instanceof CustomBakedModel ctmModel)) { + continue; + } + if (ctmModel.getParent() instanceof MachineModel machine) { + entry.setValue(machine); + } + } + } + + @SuppressWarnings("unchecked") + @SubscribeEvent(priority = EventPriority.LOWEST) + public static void onRegisterAdditional(ModelEvent.RegisterAdditional event) { + for (var listener : EVENT_LISTENERS) { + Class eventClass = listener.listener.eventClass(); + if (eventClass != null && eventClass.isInstance(event)) { + ((AssetEventListener) listener.listener).accept(event); + } + } + } + + private record EventListenerHolder(AssetEventListener listener, boolean removeOnReload) {} +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/PoseStackExtensions.java b/src/main/java/com/gregtechceu/gtceu/client/util/PoseStackExtensions.java new file mode 100644 index 00000000000..ac411d26ada --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/util/PoseStackExtensions.java @@ -0,0 +1,11 @@ +package com.gregtechceu.gtceu.client.util; + +import com.mojang.blaze3d.vertex.PoseStack; +import org.joml.Matrix4fc; + +public class PoseStackExtensions { + + public static void mulPoseMatrix(PoseStack self, Matrix4fc matrix) { + self.last().pose().mul(matrix); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/RenderBufferHelper.java b/src/main/java/com/gregtechceu/gtceu/client/util/RenderBufferHelper.java index 5acfe490fb3..6a739a35182 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/util/RenderBufferHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/client/util/RenderBufferHelper.java @@ -1,13 +1,20 @@ package com.gregtechceu.gtceu.client.util; +import com.gregtechceu.gtceu.utils.GTMatrixUtils; + +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.Direction; import net.minecraft.util.Mth; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.*; import org.joml.Matrix4f; +import org.joml.Vector3fc; + +import java.util.EnumSet; +import java.util.Set; @OnlyIn(Dist.CLIENT) public class RenderBufferHelper { @@ -88,4 +95,96 @@ public static void renderRing(PoseStack poseStack, VertexConsumer buffer, float } } + + public static void renderCube(VertexConsumer buffer, PoseStack.Pose pose, + int color, int combinedLight, TextureAtlasSprite sprite, + float minX, float minY, float minZ, float maxX, float maxY, float maxZ) { + renderCube(buffer, pose, EnumSet.allOf(Direction.class), + color, combinedLight, sprite, + minX, minY, minZ, maxX, maxY, maxZ); + } + + public static void renderCube(VertexConsumer buffer, PoseStack.Pose pose, Set sidesToRender, + int color, int combinedLight, TextureAtlasSprite sprite, + float minX, float minY, float minZ, float maxX, float maxY, float maxZ) { + float uMin = sprite.getU0(), uMax = sprite.getU1(), vMin = sprite.getV0(), vMax = sprite.getV1(); + + if (sidesToRender.contains(Direction.UP)) + renderCubeFace(buffer, pose, color, combinedLight, Direction.UP, + minX, maxY, minZ, uMin, vMax, + minX, maxY, maxZ, uMax, vMax, + maxX, maxY, maxZ, uMax, vMin, + maxX, maxY, minZ, uMin, vMin); + + if (sidesToRender.contains(Direction.DOWN)) + renderCubeFace(buffer, pose, color, combinedLight, Direction.DOWN, + minX, minY, minZ, uMin, vMax, + maxX, minY, minZ, uMax, vMax, + maxX, minY, maxZ, uMax, vMin, + minX, minY, maxZ, uMin, vMin); + + if (sidesToRender.contains(Direction.NORTH)) + renderCubeFace(buffer, pose, color, combinedLight, Direction.NORTH, + minX, minY, minZ, uMin, vMax, + minX, maxY, minZ, uMax, vMax, + maxX, maxY, minZ, uMax, vMin, + maxX, minY, minZ, uMin, vMin); + + if (sidesToRender.contains(Direction.SOUTH)) + renderCubeFace(buffer, pose, color, combinedLight, Direction.SOUTH, + minX, minY, maxZ, uMin, vMax, + maxX, minY, maxZ, uMax, vMax, + maxX, maxY, maxZ, uMax, vMin, + minX, maxY, maxZ, uMin, vMin); + + if (sidesToRender.contains(Direction.WEST)) + renderCubeFace(buffer, pose, color, combinedLight, Direction.WEST, + minX, minY, minZ, uMin, vMax, + minX, minY, maxZ, uMax, vMax, + minX, maxY, maxZ, uMax, vMin, + minX, maxY, minZ, uMin, vMin); + + if (sidesToRender.contains(Direction.EAST)) + renderCubeFace(buffer, pose, color, combinedLight, Direction.EAST, + maxX, minY, minZ, uMin, vMax, + maxX, maxY, minZ, uMax, vMax, + maxX, maxY, maxZ, uMax, vMin, + maxX, minY, maxZ, uMin, vMin); + } + + public static void renderCubeFace(VertexConsumer buffer, PoseStack.Pose pose, + int color, int combinedLight, Direction normalDir, + float x1, float y1, float z1, float u1, float v1, + float x2, float y2, float z2, float u2, float v2, + float x3, float y3, float z3, float u3, float v3, + float x4, float y4, float z4, float u4, float v4) { + Vector3fc normal = GTMatrixUtils.getDirectionAxis(normalDir); + + vertex(buffer, pose, x1, y1, z1, color, u1, v1, combinedLight, normal.x(), normal.y(), normal.z()); + vertex(buffer, pose, x2, y2, z2, color, u2, v2, combinedLight, normal.x(), normal.y(), normal.z()); + vertex(buffer, pose, x3, y3, z3, color, u3, v3, combinedLight, normal.x(), normal.y(), normal.z()); + vertex(buffer, pose, x4, y4, z4, color, u4, v4, combinedLight, normal.x(), normal.y(), normal.z()); + } + + public static void vertex(VertexConsumer buffer, PoseStack.Pose pose, + float x, float y, float z, + int color, float texU, float texV, int lightmapUV, + float normalX, float normalY, float normalZ) { + vertex(buffer, pose, x, y, z, color, + texU, texV, OverlayTexture.NO_OVERLAY, lightmapUV, + normalX, normalY, normalZ); + } + + public static void vertex(VertexConsumer buffer, PoseStack.Pose pose, + float x, float y, float z, int color, + float texU, float texV, int overlayUV, int lightmapUV, + float normalX, float normalY, float normalZ) { + buffer.vertex(pose.pose(), x, y, z); + buffer.color(color); + buffer.uv(texU, texV); + buffer.overlayCoords(overlayUV); + buffer.uv2(lightmapUV); + buffer.normal(pose.normal(), normalX, normalY, normalZ); + buffer.endVertex(); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/RenderUtil.java b/src/main/java/com/gregtechceu/gtceu/client/util/RenderUtil.java index 4c60eea4405..8978fd3d2a3 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/util/RenderUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/client/util/RenderUtil.java @@ -1,50 +1,85 @@ package com.gregtechceu.gtceu.client.util; import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; +import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; +import com.gregtechceu.gtceu.utils.GTMatrixUtils; +import com.gregtechceu.gtceu.utils.ResearchManager; +import com.lowdragmc.lowdraglib.gui.util.DrawerHelper; + +import net.minecraft.Util; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.inventory.InventoryMenu; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; import net.minecraft.world.level.material.Fluid; import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; +import net.minecraftforge.fluids.FluidStack; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import org.jetbrains.annotations.Nullable; import org.joml.Matrix4f; +import org.joml.Quaternionf; import org.joml.Vector3f; +import org.joml.Vector3fc; import java.util.*; -import java.util.function.Function; +import java.util.function.BiFunction; @OnlyIn(Dist.CLIENT) public class RenderUtil { public enum FluidTextureType { - STILL(fluidTypeExtensions -> Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS) - .apply(fluidTypeExtensions.getStillTexture())), - FLOWING(fluidTypeExtensions -> Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS) - .apply(fluidTypeExtensions.getFlowingTexture())), - OVERLAY(fluidTypeExtensions -> Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS) - .apply(fluidTypeExtensions.getOverlayTexture())); + STILL((fluidTypeExtensions, fluidStack) -> { + if (!fluidStack.isEmpty()) return fluidTypeExtensions.getStillTexture(fluidStack); + else return fluidTypeExtensions.getStillTexture(); + }), + FLOWING((fluidTypeExtensions, fluidStack) -> { + if (!fluidStack.isEmpty()) return fluidTypeExtensions.getFlowingTexture(fluidStack); + else return fluidTypeExtensions.getFlowingTexture(); + }), + OVERLAY((fluidTypeExtensions, fluidStack) -> { + if (!fluidStack.isEmpty()) return fluidTypeExtensions.getOverlayTexture(fluidStack); + else return fluidTypeExtensions.getOverlayTexture(); + }); + + private static final ResourceLocation WATER_STILL = new ResourceLocation("minecraft", "block/water_still"); - private final Function mapper; + private final BiFunction mapper; - FluidTextureType(Function mapper) { + FluidTextureType(BiFunction mapper) { this.mapper = mapper; } public TextureAtlasSprite map(IClientFluidTypeExtensions fluidTypeExtensions) { - return mapper.apply(fluidTypeExtensions); + return map(fluidTypeExtensions, FluidStack.EMPTY); + } + + public TextureAtlasSprite map(IClientFluidTypeExtensions fluidTypeExtensions, FluidStack fluidStack) { + ResourceLocation texture = mapper.apply(fluidTypeExtensions, fluidStack); + if (texture == null) texture = STILL.mapper.apply(fluidTypeExtensions, fluidStack); + if (texture == null) texture = WATER_STILL; + + return Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS).apply(texture); } } @@ -56,35 +91,33 @@ public static Vector3f vec3f(float x, float y, float z) { return new Vector3f(x, y, z); } - private static final Map DIRECTION_POSITION_MAP = new HashMap<>() { - - { - put(Direction.UP, new Vector3f[] { vec3f(0, 1, 1), vec3f(1, 1, 1), vec3f(1, 1, 0), vec3f(0, 1, 0) }); - put(Direction.DOWN, new Vector3f[] { vec3f(1, 0, 1), vec3f(0, 0, 1), vec3f(0, 0, 0), vec3f(1, 0, 0) }); - put(Direction.SOUTH, new Vector3f[] { vec3f(1, 1, 0), vec3f(1, 0, 0), vec3f(0, 0, 0), vec3f(0, 1, 0) }); - put(Direction.NORTH, new Vector3f[] { vec3f(0, 1, 1), vec3f(0, 0, 1), vec3f(1, 0, 1), vec3f(1, 1, 1) }); - put(Direction.EAST, new Vector3f[] { vec3f(0, 1, 0), vec3f(0, 0, 0), vec3f(0, 0, 1), vec3f(0, 1, 1) }); - put(Direction.WEST, new Vector3f[] { vec3f(1, 1, 1), vec3f(1, 0, 1), vec3f(1, 0, 0), vec3f(1, 1, 0) }); - } - }; + // spotless:off + private static final Map DIRECTION_POSITION_MAP = Util.make(new EnumMap<>(Direction.class), map -> { + map.put(Direction.UP, new Vector3fc[] { vec3f(0, 1, 1), vec3f(1, 1, 1), vec3f(1, 1, 0), vec3f(0, 1, 0) }); + map.put(Direction.DOWN, new Vector3fc[] { vec3f(1, 0, 1), vec3f(0, 0, 1), vec3f(0, 0, 0), vec3f(1, 0, 0) }); + map.put(Direction.SOUTH, new Vector3fc[] { vec3f(1, 1, 0), vec3f(1, 0, 0), vec3f(0, 0, 0), vec3f(0, 1, 0) }); + map.put(Direction.NORTH, new Vector3fc[] { vec3f(0, 1, 1), vec3f(0, 0, 1), vec3f(1, 0, 1), vec3f(1, 1, 1) }); + map.put(Direction.EAST, new Vector3fc[] { vec3f(0, 1, 0), vec3f(0, 0, 0), vec3f(0, 0, 1), vec3f(0, 1, 1) }); + map.put(Direction.WEST, new Vector3fc[] { vec3f(1, 1, 1), vec3f(1, 0, 1), vec3f(1, 0, 0), vec3f(1, 1, 0) }); + }); + // spotless:on - public static Vector3f[] getVertices(Direction direction) { + public static Vector3fc[] getVertices(Direction direction) { return DIRECTION_POSITION_MAP.get(direction); } - private static final Map DIRECTION_NORMAL_MAP = new HashMap<>() { + // spotless:off + private static final Map DIRECTION_NORMAL_MAP = Util.make(new EnumMap<>(Direction.class), map -> { + map.put(Direction.UP, vec3f(0, 1, 0)); + map.put(Direction.DOWN, vec3f(0, 1, 0)); + map.put(Direction.SOUTH, vec3f(0, 0, 1)); + map.put(Direction.NORTH, vec3f(0, 0, 1)); + map.put(Direction.EAST, vec3f(1, 0, 0)); + map.put(Direction.WEST, vec3f(1, 0, 0)); + }); + // spotless:on - { - put(Direction.UP, vec3f(0, 1, 0)); - put(Direction.DOWN, vec3f(0, 1, 0)); - put(Direction.SOUTH, vec3f(0, 0, 1)); - put(Direction.NORTH, vec3f(0, 0, 1)); - put(Direction.EAST, vec3f(1, 0, 0)); - put(Direction.WEST, vec3f(1, 0, 0)); - } - }; - - public static Vector3f getNormal(Direction direction) { + public static Vector3fc getNormal(Direction direction) { return DIRECTION_NORMAL_MAP.get(direction); } @@ -94,9 +127,9 @@ public static int getFluidLight(Fluid fluid, BlockPos pos) { pos); } - public static void vertex(Matrix4f pose, VertexConsumer vertexConsumer, float x, float y, float z, int r, int g, - int b, int a, float u, float v, int overlayCoords, int lightOverlay, float v0, float v1, - float v2) { + public static void vertex(Matrix4f pose, VertexConsumer vertexConsumer, float x, float y, float z, + int r, int g, int b, int a, float u, float v, int overlayCoords, int lightOverlay, + float v0, float v1, float v2) { /* * For future reference: * The order of the vertex calls is important. @@ -112,8 +145,8 @@ public static void vertex(Matrix4f pose, VertexConsumer vertexConsumer, float x, .endVertex(); } - public static Vector3f transformVertex(Vector3f vertex, Direction direction, float offsetX, float offsetY, - float offsetZ) { + public static Vector3f transformVertex(Vector3fc vertex, Direction direction, + float offsetX, float offsetY, float offsetZ) { float addX = offsetX, addY = offsetY, addZ = offsetZ; switch (direction) { case DOWN -> addY = -addY; @@ -121,10 +154,10 @@ public static Vector3f transformVertex(Vector3f vertex, Direction direction, flo case EAST -> addX = -addX; } - return vec3f(vertex.x + addX, vertex.y + addY, vertex.z + addZ); + return new Vector3f(vertex).add(addX, addY, addZ); } - public static Fluid getRecipeFluidToRender(GTRecipe recipe) { + public static @Nullable Fluid getRecipeFluidToRender(GTRecipe recipe) { if (recipe == null) { return null; } @@ -158,4 +191,90 @@ public static Fluid getRecipeFluidToRender(GTRecipe recipe) { return fluid; } + + public static void moveToFace(PoseStack poseStack, Vector3fc pos, Direction face) { + moveToFace(poseStack, pos.x(), pos.y(), pos.z(), face); + } + + public static void moveToFace(PoseStack poseStack, float x, float y, float z, Direction face) { + poseStack.translate(Math.fma(face.getStepX(), 0.5f, x), + Math.fma(face.getStepY(), 0.5f, y), + Math.fma(face.getStepZ(), 0.5f, z)); + } + + /** + * Rotate the current coordinate system, so it is on the face of the given block side. + * This can be used to render on the given face as if it was a 2D canvas, + * where x+ is facing right and y+ is facing up. + */ + public static void rotateToFace(PoseStack poseStack, Direction face, Direction spin) { + float rotationAngle = Mth.HALF_PI * switch (face) { + case UP, WEST -> 1; + case DOWN, EAST -> -1; + case SOUTH -> 2; + case NORTH -> 0; + }; + Quaternionf rotation = new Quaternionf(); + if (face.getAxis() == Direction.Axis.Y) { + poseStack.scale(1.0f, -1.0f, 1.0f); + rotation.rotateX(rotationAngle); + } else { + poseStack.scale(-1.0f, -1.0f, -1.0f); + rotation.rotateY(rotationAngle); + } + rotation.rotateZ(getSpinAngle(spin, face)); + + poseStack.mulPose(rotation); + } + + private static float getSpinAngle(Direction spin, Direction face) { + if (spin.getAxis() == Direction.Axis.Z && face == Direction.DOWN) { + spin = spin.getOpposite(); + } + return GTMatrixUtils.upwardFacingAngle(spin); + } + + public static boolean renderResearchItemContent(GuiGraphics graphics, Operation originalMethod, + @Nullable LivingEntity entity, @Nullable Level level, + ItemStack stack, int x, int y, int z, int seed) { + if (!Screen.hasShiftDown()) return false; + + ResearchManager.ResearchItem researchData = ResearchManager.readResearchId(stack); + if (researchData == null) return false; + + Collection recipes = researchData.recipeType().getDataStickEntry(researchData.researchId()); + if (recipes == null || recipes.isEmpty()) return false; + + for (var recipe : recipes) { + // check item outputs first + List outputs = recipe.getOutputContents(ItemRecipeCapability.CAP); + if (!outputs.isEmpty()) { + ItemStack[] items = ItemRecipeCapability.CAP.of(outputs.get(0).content).getItems(); + if (items.length > 0) { + ItemStack output = items[0]; + if (!output.isEmpty() && !ItemStack.isSameItemSameTags(output, stack)) { + originalMethod.call(entity, level, output, x, y, seed, z); + return true; + } + } + } + // if there are no item outputs, try to find a fluid output + outputs = recipe.getOutputContents(FluidRecipeCapability.CAP); + if (!outputs.isEmpty()) { + FluidStack[] fluids = FluidRecipeCapability.CAP.of(outputs.get(0).content).getStacks(); + if (fluids.length != 0) { + FluidStack output = fluids[0]; + if (!output.isEmpty()) { + var clientExt = IClientFluidTypeExtensions.of(output.getFluid()); + var texture = RenderUtil.FluidTextureType.STILL.map(clientExt, output); + int color = clientExt.getTintColor(output); + + DrawerHelper.drawFluidTexture(graphics, x, y, texture, 0, 0, z, color); + return true; + } + } + } + } + return false; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/StaticFaceBakery.java b/src/main/java/com/gregtechceu/gtceu/client/util/StaticFaceBakery.java index 906baa5e6ac..dd7b1c9a7c0 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/util/StaticFaceBakery.java +++ b/src/main/java/com/gregtechceu/gtceu/client/util/StaticFaceBakery.java @@ -3,10 +3,7 @@ import com.lowdragmc.lowdraglib.client.bakedpipeline.FaceQuad; import net.minecraft.client.renderer.FaceInfo; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.block.model.BlockElementFace; -import net.minecraft.client.renderer.block.model.BlockElementRotation; -import net.minecraft.client.renderer.block.model.BlockFaceUV; +import net.minecraft.client.renderer.block.model.*; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.model.BlockModelRotation; import net.minecraft.client.resources.model.ModelState; @@ -19,6 +16,7 @@ import net.minecraftforge.client.model.QuadTransformers; import com.mojang.math.Transformation; +import org.jetbrains.annotations.Nullable; import org.joml.*; import java.lang.Math; @@ -29,19 +27,20 @@ public class StaticFaceBakery { public static final AABB SLIGHTLY_OVER_BLOCK = new AABB(-0.001f, -0.001f, -0.001f, 1.001f, 1.001f, 1.001f); - public static final AABB OUTPUT_OVERLAY = new AABB(-.004f, -.004f, -.004f, - 1.004f, 1.004f, 1.004f); - public static final AABB AUTO_OUTPUT_OVERLAY = new AABB(-.006f, -.006f, -.006f, + public static final AABB OUTPUT_OVERLAY = new AABB(-.006f, -.006f, -.006f, 1.006f, 1.006f, 1.006f); + public static final AABB AUTO_OUTPUT_OVERLAY = new AABB(-.008f, -.008f, -.008f, + 1.008f, 1.008f, 1.008f); public static final AABB COVER_OVERLAY = new AABB(-.008f, -.008f, -.008f, 1.008f, 1.008f, 1.008f); - public static final int VERTEX_INT_SIZE = 8; + private static final int VERTEX_INT_SIZE = 8; private static final float RESCALE_22_5 = 1.0F / (float) Math.cos((float) (Math.PI / 8)) - 1.0F; private static final float RESCALE_45 = 1.0F / (float) Math.cos((float) (Math.PI / 4)) - 1.0F; - public static final int VERTEX_COUNT = 4; + private static final int VERTEX_COUNT = 4; + private static final int POSITION_INDEX = 0; private static final int COLOR_INDEX = 3; - public static final int UV_INDEX = 4; + private static final int UV_INDEX = 4; /** * bake a quad of specific face. @@ -60,7 +59,7 @@ public static BakedQuad bakeFace(AABB cube, Direction face, TextureAtlasSprite s return bakeQuad( new Vector3f((float) cube.minX * 16f, (float) cube.minY * 16f, (float) cube.minZ * 16f), new Vector3f((float) cube.maxX * 16f, (float) cube.maxY * 16f, (float) cube.maxZ * 16f), - new BlockElementFace(cull ? face : null, tintIndex, "", + new BlockElementFace(cull ? face : null, tintIndex, sprite.contents().name().toString(), new BlockFaceUV(new float[] { 0.0F, 0.0F, 16.0F, 16.0F }, 0)), sprite, face, @@ -92,191 +91,179 @@ public static BakedQuad bakeFace(Direction face, TextureAtlasSprite sprite) { return bakeFace(face, sprite, BlockModelRotation.X0_Y0); } - public static BakedQuad bakeQuad( - Vector3f posFrom, + public static BakedQuad bakeFace(AABB cube, Direction face, TextureAtlasSprite sprite) { + return bakeFace(cube, face, sprite, BlockModelRotation.X0_Y0, -1, 0, true, true); + } + + public static BakedQuad bakeQuad(Vector3f posFrom, Vector3f posTo, BlockElementFace face, TextureAtlasSprite sprite, Direction facing, ModelState transform, - @javax.annotation.Nullable BlockElementRotation partRotation, + @Nullable BlockElementRotation partRotation, boolean shade, int emissivity) { - BlockFaceUV blockfaceuv = face.uv; + BlockFaceUV uvs = face.uv; if (transform.isUvLocked()) { - blockfaceuv = recomputeUVs(face.uv, facing, transform.getRotation()); + uvs = recomputeUVs(face.uv, facing, transform.getRotation()); } - float[] afloat = new float[blockfaceuv.uvs.length]; - System.arraycopy(blockfaceuv.uvs, 0, afloat, 0, afloat.length); - float f = sprite.uvShrinkRatio(); - float f1 = (blockfaceuv.uvs[0] + blockfaceuv.uvs[0] + blockfaceuv.uvs[2] + blockfaceuv.uvs[2]) / VERTEX_COUNT; - float f2 = (blockfaceuv.uvs[1] + blockfaceuv.uvs[1] + blockfaceuv.uvs[3] + blockfaceuv.uvs[3]) / VERTEX_COUNT; - blockfaceuv.uvs[0] = Mth.lerp(f, blockfaceuv.uvs[0], f1); - blockfaceuv.uvs[2] = Mth.lerp(f, blockfaceuv.uvs[2], f1); - blockfaceuv.uvs[1] = Mth.lerp(f, blockfaceuv.uvs[1], f2); - blockfaceuv.uvs[3] = Mth.lerp(f, blockfaceuv.uvs[3], f2); - int[] aint = makeVertices(blockfaceuv, sprite, facing, setupShape(posFrom, posTo), transform.getRotation(), - partRotation, shade); - Direction direction = calculateFacing(aint); - System.arraycopy(afloat, 0, blockfaceuv.uvs, 0, afloat.length); + float[] originalUVs = new float[uvs.uvs.length]; + System.arraycopy(uvs.uvs, 0, originalUVs, 0, originalUVs.length); + + float shrinkRatio = sprite.uvShrinkRatio(); + float uMiddle = (uvs.uvs[0] * 2 + uvs.uvs[2] * 2) / VERTEX_COUNT; + float vMiddle = (uvs.uvs[1] * 2 + uvs.uvs[3] * 2) / VERTEX_COUNT; + uvs.uvs[0] = Mth.lerp(shrinkRatio, uvs.uvs[0], uMiddle); + uvs.uvs[2] = Mth.lerp(shrinkRatio, uvs.uvs[2], uMiddle); + uvs.uvs[1] = Mth.lerp(shrinkRatio, uvs.uvs[1], vMiddle); + uvs.uvs[3] = Mth.lerp(shrinkRatio, uvs.uvs[3], vMiddle); + + int[] vertices = makeVertices(uvs, sprite, facing, + setupShape(posFrom, posTo), transform.getRotation(), partRotation, shade); + Direction direction = calculateFacing(vertices); + System.arraycopy(originalUVs, 0, uvs.uvs, 0, originalUVs.length); if (partRotation == null) { - recalculateWinding(aint, direction); + recalculateWinding(vertices, direction); } - ForgeHooksClient.fillNormal(aint, direction); + ForgeHooksClient.fillNormal(vertices, direction); ForgeFaceData data = face.getFaceData(); - BakedQuad quad = new BakedQuad(aint, face.tintIndex, direction, sprite, shade, data.ambientOcclusion()); + BakedQuad quad = new BakedQuad(vertices, face.tintIndex, direction, sprite, shade, data.ambientOcclusion()); if (!ForgeFaceData.DEFAULT.equals(data)) { QuadTransformers.applyingLightmap(data.blockLight(), data.skyLight()).processInPlace(quad); QuadTransformers.applyingColor(data.color()).processInPlace(quad); } - com.lowdragmc.lowdraglib.client.bakedpipeline.QuadTransformers.settingEmissivity(emissivity) - .processInPlace(quad); + if (emissivity > 0) { + QuadTransformers.settingEmissivity(emissivity).processInPlace(quad); + } - return quad; + return quad.gtceu$setTextureKey(face.texture); } public static BlockFaceUV recomputeUVs(BlockFaceUV uv, Direction facing, Transformation modelRotation) { - Matrix4f matrix4f = BlockMath + Matrix4f uvLock = BlockMath .getUVLockTransform(modelRotation, facing, () -> "Unable to resolve UVLock for model").getMatrix(); - float f = uv.getU(uv.getReverseIndex(0)); - float f1 = uv.getV(uv.getReverseIndex(0)); - Vector4f vector4f = matrix4f.transform(new Vector4f(f / 16.0F, f1 / 16.0F, 0.0F, 1.0F)); - float f2 = 16.0F * vector4f.x(); - float f3 = 16.0F * vector4f.y(); - float f4 = uv.getU(uv.getReverseIndex(2)); - float f5 = uv.getV(uv.getReverseIndex(2)); - Vector4f vector4f1 = matrix4f.transform(new Vector4f(f4 / 16.0F, f5 / 16.0F, 0.0F, 1.0F)); - float f6 = 16.0F * vector4f1.x(); - float f7 = 16.0F * vector4f1.y(); - float f8; - float f9; - if (Math.signum(f4 - f) == Math.signum(f6 - f2)) { - f8 = f2; - f9 = f6; + float maybeUMin = uv.getU(uv.getReverseIndex(0)); + float maybeVMin = uv.getV(uv.getReverseIndex(0)); + Vector4f lockedUVMin = uvLock.transform(new Vector4f(maybeUMin / 16.0F, maybeVMin / 16.0F, 0.0F, 1.0F)); + float uMinScaled = 16.0F * lockedUVMin.x(); + float vMinScaled = 16.0F * lockedUVMin.y(); + float maybeUMax = uv.getU(uv.getReverseIndex(2)); + float maybeVMax = uv.getV(uv.getReverseIndex(2)); + Vector4f lockedUVMax = uvLock.transform(new Vector4f(maybeUMax / 16.0F, maybeVMax / 16.0F, 0.0F, 1.0F)); + float uMaxScaled = 16.0F * lockedUVMax.x(); + float vMaxScaled = 16.0F * lockedUVMax.y(); + float uMin; + float uMax; + if (Math.signum(maybeUMax - maybeUMin) == Math.signum(uMaxScaled - uMinScaled)) { + uMin = uMinScaled; + uMax = uMaxScaled; } else { - f8 = f6; - f9 = f2; + uMin = uMaxScaled; + uMax = uMinScaled; } - float f10; - float f11; - if (Math.signum(f5 - f1) == Math.signum(f7 - f3)) { - f10 = f3; - f11 = f7; + float vMin; + float vMax; + if (Math.signum(maybeVMax - maybeVMin) == Math.signum(vMaxScaled - vMinScaled)) { + vMin = vMinScaled; + vMax = vMaxScaled; } else { - f10 = f7; - f11 = f3; + vMin = vMaxScaled; + vMax = vMinScaled; } - float f12 = (float) Math.toRadians(uv.rotation); - Matrix3f matrix3f = new Matrix3f(matrix4f); - Vector3f vector3f = matrix3f.transform(new Vector3f(Mth.cos(f12), Mth.sin(f12), 0.0F)); - int i = Math.floorMod( - -((int) Math.round(Math.toDegrees(Math.atan2((double) vector3f.y(), (double) vector3f.x())) / 90.0)) * - 90, + float rotation = (float) Math.toRadians(uv.rotation); + Matrix3f uvMat3 = new Matrix3f(uvLock); + Vector3f rotVector = uvMat3.transform(new Vector3f(Mth.cos(rotation), Mth.sin(rotation), 0.0F)); + int rotationDegrees = Math.floorMod( + -((int) Math.round(Math.toDegrees(Math.atan2(rotVector.y(), rotVector.x())) / 90.0)) * 90, 360); - return new BlockFaceUV(new float[] { f8, f10, f9, f11 }, i); + return new BlockFaceUV(new float[] { uMin, vMin, uMax, vMax }, rotationDegrees); } - private static int[] makeVertices( - BlockFaceUV uvs, - TextureAtlasSprite sprite, - Direction orientation, - float[] posDiv16, - Transformation rotation, - @javax.annotation.Nullable BlockElementRotation partRotation, + private static int[] makeVertices(BlockFaceUV uvs, TextureAtlasSprite sprite, + Direction orientation, float[] shape, + Transformation rotation, @Nullable BlockElementRotation partRotation, boolean shade) { - int[] aint = new int[32]; - + int[] vert = new int[32]; for (int i = 0; i < 4; ++i) { - bakeVertex(aint, i, orientation, uvs, posDiv16, sprite, rotation, partRotation, shade); + bakeVertex(vert, i, orientation, uvs, sprite, shape, rotation, partRotation, shade); } - - return aint; + return vert; } - private static void bakeVertex( - int[] vertexData, - int vertexIndex, - Direction facing, - BlockFaceUV blockFaceUV, - float[] posDiv16, - TextureAtlasSprite sprite, - Transformation rotation, - @javax.annotation.Nullable BlockElementRotation partRotation, + private static void bakeVertex(int[] vertexData, int vertexIndex, Direction facing, + BlockFaceUV blockFaceUV, TextureAtlasSprite sprite, float[] shape, + Transformation rotation, @Nullable BlockElementRotation partRotation, boolean shade) { - FaceInfo.VertexInfo faceinfo$vertexinfo = FaceInfo.fromFacing(facing).getVertexInfo(vertexIndex); - Vector3f vector3f = new Vector3f(posDiv16[faceinfo$vertexinfo.xFace], posDiv16[faceinfo$vertexinfo.yFace], - posDiv16[faceinfo$vertexinfo.zFace]); - applyElementRotation(vector3f, partRotation); - applyModelRotation(vector3f, rotation); - fillVertex(vertexData, vertexIndex, vector3f, sprite, blockFaceUV); + FaceInfo.VertexInfo vertexInfo = FaceInfo.fromFacing(facing).getVertexInfo(vertexIndex); + Vector3f face = new Vector3f(shape[vertexInfo.xFace], shape[vertexInfo.yFace], shape[vertexInfo.zFace]); + applyElementRotation(face, partRotation); + applyModelRotation(face, rotation); + fillVertex(vertexData, vertexIndex, face, sprite, blockFaceUV); } - private static void fillVertex(int[] vertexData, int vertexIndex, Vector3f vector, TextureAtlasSprite sprite, - BlockFaceUV blockFaceUV) { + private static void fillVertex(int[] vertexData, int vertexIndex, Vector3f face, + TextureAtlasSprite sprite, BlockFaceUV blockFaceUV) { int i = vertexIndex * VERTEX_INT_SIZE; - vertexData[i] = Float.floatToRawIntBits(vector.x()); - vertexData[i + 1] = Float.floatToRawIntBits(vector.y()); - vertexData[i + 2] = Float.floatToRawIntBits(vector.z()); - vertexData[i + COLOR_INDEX] = -1; + vertexData[i + POSITION_INDEX] = Float.floatToRawIntBits(face.x()); + vertexData[i + POSITION_INDEX + 1] = Float.floatToRawIntBits(face.y()); + vertexData[i + POSITION_INDEX + 2] = Float.floatToRawIntBits(face.z()); + vertexData[i + COLOR_INDEX] = 0xffffffff; vertexData[i + UV_INDEX] = Float.floatToRawIntBits( - sprite.getU((double) blockFaceUV.getU(vertexIndex) * 0.999 + - (double) blockFaceUV.getU((vertexIndex + 2) % 4) * 0.001)); - vertexData[i + 4 + 1] = Float.floatToRawIntBits( - sprite.getV((double) blockFaceUV.getV(vertexIndex) * 0.999 + - (double) blockFaceUV.getV((vertexIndex + 2) % 4) * 0.001)); + sprite.getU(blockFaceUV.getU(vertexIndex) * 0.999 + blockFaceUV.getU((vertexIndex + 2) % 4) * 0.001)); + vertexData[i + UV_INDEX + 1] = Float.floatToRawIntBits( + sprite.getV(blockFaceUV.getV(vertexIndex) * 0.999 + blockFaceUV.getV((vertexIndex + 2) % 4) * 0.001)); } private static float[] setupShape(Vector3f min, Vector3f max) { - float[] afloat = new float[Direction.values().length]; - afloat[FaceInfo.Constants.MIN_X] = min.x() / 16.0F; - afloat[FaceInfo.Constants.MIN_Y] = min.y() / 16.0F; - afloat[FaceInfo.Constants.MIN_Z] = min.z() / 16.0F; - afloat[FaceInfo.Constants.MAX_X] = max.x() / 16.0F; - afloat[FaceInfo.Constants.MAX_Y] = max.y() / 16.0F; - afloat[FaceInfo.Constants.MAX_Z] = max.z() / 16.0F; - return afloat; + float[] shape = new float[Direction.values().length]; + shape[FaceInfo.Constants.MIN_X] = min.x() / 16.0F; + shape[FaceInfo.Constants.MIN_Y] = min.y() / 16.0F; + shape[FaceInfo.Constants.MIN_Z] = min.z() / 16.0F; + shape[FaceInfo.Constants.MAX_X] = max.x() / 16.0F; + shape[FaceInfo.Constants.MAX_Y] = max.y() / 16.0F; + shape[FaceInfo.Constants.MAX_Z] = max.z() / 16.0F; + return shape; } - private static void applyElementRotation(Vector3f vec, - @javax.annotation.Nullable BlockElementRotation partRotation) { + private static void applyElementRotation(Vector3f vec, @Nullable BlockElementRotation partRotation) { if (partRotation != null) { - Vector3f vector3f; - Vector3f vector3f1; + Vector3f axis; + Vector3f scale; switch (partRotation.axis()) { case X -> { - vector3f = new Vector3f(1.0F, 0.0F, 0.0F); - vector3f1 = new Vector3f(0.0F, 1.0F, 1.0F); + axis = new Vector3f(1.0F, 0.0F, 0.0F); + scale = new Vector3f(0.0F, 1.0F, 1.0F); } case Y -> { - vector3f = new Vector3f(0.0F, 1.0F, 0.0F); - vector3f1 = new Vector3f(1.0F, 0.0F, 1.0F); + axis = new Vector3f(0.0F, 1.0F, 0.0F); + scale = new Vector3f(1.0F, 0.0F, 1.0F); } case Z -> { - vector3f = new Vector3f(0.0F, 0.0F, 1.0F); - vector3f1 = new Vector3f(1.0F, 1.0F, 0.0F); + axis = new Vector3f(0.0F, 0.0F, 1.0F); + scale = new Vector3f(1.0F, 1.0F, 0.0F); } default -> throw new IllegalArgumentException("There are only 3 axes"); } - Quaternionf quaternionf = new Quaternionf().rotationAxis(partRotation.angle() * (float) (Math.PI / 180.0), - vector3f); + Quaternionf rotation = new Quaternionf() + .rotationAxis(partRotation.angle() * (float) (Math.PI / 180.0), axis); if (partRotation.rescale()) { if (Math.abs(partRotation.angle()) == 22.5F) { - vector3f1.mul(RESCALE_22_5); + scale.mul(RESCALE_22_5); } else { - vector3f1.mul(RESCALE_45); + scale.mul(RESCALE_45); } - - vector3f1.add(1.0F, 1.0F, 1.0F); + scale.add(1.0F, 1.0F, 1.0F); } else { - vector3f1.set(1.0F, 1.0F, 1.0F); + scale.set(1.0F, 1.0F, 1.0F); } - rotateVertexBy(vec, new Vector3f(partRotation.origin()), new Matrix4f().rotation(quaternionf), vector3f1); + rotateVertexBy(vec, new Vector3f(partRotation.origin()), new Matrix4f().rotation(rotation), scale); } } @@ -287,73 +274,69 @@ public static void applyModelRotation(Vector3f pos, Transformation transform) { } private static void rotateVertexBy(Vector3f pos, Vector3f origin, Matrix4f transform, Vector3f scale) { - Vector4f vector4f = transform - .transform(new Vector4f(pos.x() - origin.x(), pos.y() - origin.y(), pos.z() - origin.z(), 1.0F)); - vector4f.mul(new Vector4f(scale, 1.0F)); - pos.set(vector4f.x() + origin.x(), vector4f.y() + origin.y(), vector4f.z() + origin.z()); + Vector4f transformed = new Vector4f(pos.x() - origin.x(), pos.y() - origin.y(), pos.z() - origin.z(), 1.0F) + .mul(transform); + transformed.mul(new Vector4f(scale, 1.0F)); + pos.set(transformed.x() + origin.x(), transformed.y() + origin.y(), transformed.z() + origin.z()); } private static void recalculateWinding(int[] vertices, Direction direction) { - int[] aint = new int[vertices.length]; - System.arraycopy(vertices, 0, aint, 0, vertices.length); - float[] afloat = new float[Direction.values().length]; - afloat[FaceInfo.Constants.MIN_X] = 999.0F; - afloat[FaceInfo.Constants.MIN_Y] = 999.0F; - afloat[FaceInfo.Constants.MIN_Z] = 999.0F; - afloat[FaceInfo.Constants.MAX_X] = -999.0F; - afloat[FaceInfo.Constants.MAX_Y] = -999.0F; - afloat[FaceInfo.Constants.MAX_Z] = -999.0F; + int[] verticesCopy = new int[vertices.length]; + System.arraycopy(vertices, 0, verticesCopy, 0, vertices.length); + float[] shape = new float[Direction.values().length]; + shape[FaceInfo.Constants.MIN_X] = 999.0F; + shape[FaceInfo.Constants.MIN_Y] = 999.0F; + shape[FaceInfo.Constants.MIN_Z] = 999.0F; + shape[FaceInfo.Constants.MAX_X] = -999.0F; + shape[FaceInfo.Constants.MAX_Y] = -999.0F; + shape[FaceInfo.Constants.MAX_Z] = -999.0F; for (int i = 0; i < 4; ++i) { - int j = 8 * i; - float f = Float.intBitsToFloat(aint[j]); - float f1 = Float.intBitsToFloat(aint[j + 1]); - float f2 = Float.intBitsToFloat(aint[j + 2]); - if (f < afloat[FaceInfo.Constants.MIN_X]) { - afloat[FaceInfo.Constants.MIN_X] = f; + int element = 8 * i; + float x = Float.intBitsToFloat(verticesCopy[element]); + float y = Float.intBitsToFloat(verticesCopy[element + 1]); + float z = Float.intBitsToFloat(verticesCopy[element + 2]); + if (x < shape[FaceInfo.Constants.MIN_X]) { + shape[FaceInfo.Constants.MIN_X] = x; } - - if (f1 < afloat[FaceInfo.Constants.MIN_Y]) { - afloat[FaceInfo.Constants.MIN_Y] = f1; + if (y < shape[FaceInfo.Constants.MIN_Y]) { + shape[FaceInfo.Constants.MIN_Y] = y; } - - if (f2 < afloat[FaceInfo.Constants.MIN_Z]) { - afloat[FaceInfo.Constants.MIN_Z] = f2; + if (z < shape[FaceInfo.Constants.MIN_Z]) { + shape[FaceInfo.Constants.MIN_Z] = z; } - - if (f > afloat[FaceInfo.Constants.MAX_X]) { - afloat[FaceInfo.Constants.MAX_X] = f; + if (x > shape[FaceInfo.Constants.MAX_X]) { + shape[FaceInfo.Constants.MAX_X] = x; } - - if (f1 > afloat[FaceInfo.Constants.MAX_Y]) { - afloat[FaceInfo.Constants.MAX_Y] = f1; + if (y > shape[FaceInfo.Constants.MAX_Y]) { + shape[FaceInfo.Constants.MAX_Y] = y; } - - if (f2 > afloat[FaceInfo.Constants.MAX_Z]) { - afloat[FaceInfo.Constants.MAX_Z] = f2; + if (z > shape[FaceInfo.Constants.MAX_Z]) { + shape[FaceInfo.Constants.MAX_Z] = z; } } - FaceInfo faceinfo = FaceInfo.fromFacing(direction); - - for (int i1 = 0; i1 < 4; ++i1) { - int j1 = 8 * i1; - FaceInfo.VertexInfo faceinfo$vertexinfo = faceinfo.getVertexInfo(i1); - float f8 = afloat[faceinfo$vertexinfo.xFace]; - float f3 = afloat[faceinfo$vertexinfo.yFace]; - float f4 = afloat[faceinfo$vertexinfo.zFace]; - vertices[j1] = Float.floatToRawIntBits(f8); - vertices[j1 + 1] = Float.floatToRawIntBits(f3); - vertices[j1 + 2] = Float.floatToRawIntBits(f4); - - for (int k = 0; k < 4; ++k) { - int l = 8 * k; - float f5 = Float.intBitsToFloat(aint[l]); - float f6 = Float.intBitsToFloat(aint[l + 1]); - float f7 = Float.intBitsToFloat(aint[l + 2]); - if (Mth.equal(f8, f5) && Mth.equal(f3, f6) && Mth.equal(f4, f7)) { - vertices[j1 + 4] = aint[l + 4]; - vertices[j1 + 4 + 1] = aint[l + 4 + 1]; + FaceInfo faceInfo = FaceInfo.fromFacing(direction); + + for (int vert1 = 0; vert1 < 4; ++vert1) { + int e1 = vert1 * VERTEX_INT_SIZE; + FaceInfo.VertexInfo vertexInfo = faceInfo.getVertexInfo(vert1); + float x1 = shape[vertexInfo.xFace]; + float y1 = shape[vertexInfo.yFace]; + float z1 = shape[vertexInfo.zFace]; + vertices[e1 + POSITION_INDEX] = Float.floatToRawIntBits(x1); + vertices[e1 + POSITION_INDEX + 1] = Float.floatToRawIntBits(y1); + vertices[e1 + POSITION_INDEX + 2] = Float.floatToRawIntBits(z1); + + for (int vert2 = 0; vert2 < 4; ++vert2) { + int e2 = vert2 * VERTEX_INT_SIZE; + float x2 = Float.intBitsToFloat(verticesCopy[e2 + POSITION_INDEX]); + float y2 = Float.intBitsToFloat(verticesCopy[e2 + POSITION_INDEX + 1]); + float z2 = Float.intBitsToFloat(verticesCopy[e2 + POSITION_INDEX + 2]); + + if (Mth.equal(x1, x2) && Mth.equal(y1, y2) && Mth.equal(z1, z2)) { + vertices[e1 + UV_INDEX] = verticesCopy[e2 + UV_INDEX]; + vertices[e1 + UV_INDEX + 1] = verticesCopy[e2 + UV_INDEX + 1]; } } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/VariantRotationHelpers.java b/src/main/java/com/gregtechceu/gtceu/client/util/VariantRotationHelpers.java new file mode 100644 index 00000000000..dbced90bc09 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/util/VariantRotationHelpers.java @@ -0,0 +1,67 @@ +package com.gregtechceu.gtceu.client.util; + +import net.minecraft.client.renderer.block.model.Variant; +import net.minecraft.client.resources.model.BlockModelRotation; +import net.minecraft.util.Mth; + +import com.google.common.base.Preconditions; +import com.mojang.math.Transformation; +import org.joml.Quaternionf; + +/** + * This code is from + * Applied + * Energistics 2, + * licensed as LGPL 3.0. + */ +public class VariantRotationHelpers { + + private static final Transformation[] TRANSFORMS = createTransformations(); + + private static Transformation[] createTransformations() { + var result = new Transformation[4 * 4 * 4]; + + for (var xRot = 0; xRot < 360; xRot += 90) { + for (var yRot = 0; yRot < 360; yRot += 90) { + // Reuse existing transform from Vanilla + result[indexFromAngles(xRot, yRot, 0)] = BlockModelRotation.by(xRot, yRot).getRotation(); + + for (var zRot = 90; zRot < 360; zRot += 90) { + var idx = indexFromAngles(xRot, yRot, zRot); + + // NOTE: Mojang's block model rotation rotates in the opposite direction + var quaternion = new Quaternionf().rotateYXZ( + -yRot * Mth.DEG_TO_RAD, + -xRot * Mth.DEG_TO_RAD, + -zRot * Mth.DEG_TO_RAD); + + result[idx] = new Transformation(null, quaternion, null, null); + } + } + } + + return result; + } + + private VariantRotationHelpers() {} + + public static Variant rotateVariant(Variant variant, int xRot, int yRot, int zRot) { + return new Variant( + variant.getModelLocation(), + getRotationTransform(xRot, yRot, zRot), + variant.isUvLocked(), + variant.getWeight()); + } + + public static Transformation getRotationTransform(int xRot, int yRot, int zRot) { + return TRANSFORMS[indexFromAngles(xRot, yRot, zRot)]; + } + + private static int indexFromAngles(int xRot, int yRot, int zRot) { + Preconditions.checkArgument(xRot >= 0 && xRot < 360 && xRot % 90 == 0); + Preconditions.checkArgument(yRot >= 0 && yRot < 360 && yRot % 90 == 0); + Preconditions.checkArgument(zRot >= 0 && zRot < 360 && zRot % 90 == 0); + return xRot / 90 * 16 + yRot / 90 * 4 + zRot / 90; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index a10284b2a04..b81109fb258 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -6,6 +6,7 @@ import com.gregtechceu.gtceu.api.addon.AddonFinder; import com.gregtechceu.gtceu.api.addon.IGTAddon; import com.gregtechceu.gtceu.api.capability.forge.GTCapability; +import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.data.chemical.material.event.MaterialEvent; import com.gregtechceu.gtceu.api.data.chemical.material.event.MaterialRegistryEvent; import com.gregtechceu.gtceu.api.data.chemical.material.event.PostMaterialEvent; @@ -19,12 +20,13 @@ import com.gregtechceu.gtceu.api.gui.factory.GTUIEditorFactory; import com.gregtechceu.gtceu.api.gui.factory.MachineUIFactory; import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; -import com.gregtechceu.gtceu.api.recipe.ingredient.FluidContainerIngredient; -import com.gregtechceu.gtceu.api.recipe.ingredient.IntCircuitIngredient; -import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderIngredient; -import com.gregtechceu.gtceu.api.recipe.ingredient.SizedIngredient; +import com.gregtechceu.gtceu.api.recipe.ingredient.*; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.*; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.fluid.*; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.item.*; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.data.*; +import com.gregtechceu.gtceu.common.data.GTPlaceholders; import com.gregtechceu.gtceu.common.data.machines.GTMachineUtils; import com.gregtechceu.gtceu.common.data.materials.GTFoods; import com.gregtechceu.gtceu.common.item.tool.rotation.CustomBlockRotations; @@ -34,7 +36,7 @@ import com.gregtechceu.gtceu.common.registry.GTRegistration; import com.gregtechceu.gtceu.common.unification.material.MaterialRegistryManager; import com.gregtechceu.gtceu.config.ConfigHolder; -import com.gregtechceu.gtceu.core.mixins.AbstractRegistrateAccessor; +import com.gregtechceu.gtceu.core.mixins.registrate.AbstractRegistrateAccessor; import com.gregtechceu.gtceu.data.GregTechDatagen; import com.gregtechceu.gtceu.data.lang.MaterialLangGenerator; import com.gregtechceu.gtceu.data.loot.ChestGenHooks; @@ -44,23 +46,33 @@ import com.gregtechceu.gtceu.data.pack.GTPackSource; import com.gregtechceu.gtceu.data.recipe.GTCraftingComponents; import com.gregtechceu.gtceu.forge.AlloyBlastPropertyAddition; +import com.gregtechceu.gtceu.integration.ae2.GTAEPlaceholders; +import com.gregtechceu.gtceu.integration.cctweaked.CCTweakedPlugin; +import com.gregtechceu.gtceu.integration.create.GTCreateIntegration; import com.gregtechceu.gtceu.integration.kjs.GTCEuStartupEvents; import com.gregtechceu.gtceu.integration.kjs.GTRegistryInfo; import com.gregtechceu.gtceu.integration.kjs.events.MaterialModificationEventJS; import com.gregtechceu.gtceu.integration.map.WaypointManager; import com.gregtechceu.gtceu.integration.top.forge.TheOneProbePluginImpl; import com.gregtechceu.gtceu.utils.input.KeyBind; +import com.gregtechceu.gtceu.utils.input.SyncedKeyMappings; import com.lowdragmc.lowdraglib.gui.factory.UIFactory; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.server.packs.PackType; import net.minecraft.server.packs.repository.Pack; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent; import net.minecraftforge.common.crafting.CraftingHelper; +import net.minecraftforge.common.crafting.IntersectionIngredient; +import net.minecraftforge.common.crafting.PartialNBTIngredient; +import net.minecraftforge.common.crafting.StrictNBTIngredient; import net.minecraftforge.event.AddPackFindersEvent; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.ModLoader; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; @@ -109,7 +121,10 @@ public static void init() { UIFactory.register(MachineUIFactory.INSTANCE); UIFactory.register(CoverUIFactory.INSTANCE); UIFactory.register(GTUIEditorFactory.INSTANCE); - GTPlacerTypes.init(); + + // Initialize the model generator before any content is loaded so machine models can use the generated data + GregTechDatagen.initPre(); + GTRecipeCapabilities.init(); GTRecipeConditions.init(); GTToolTiers.init(); @@ -120,6 +135,14 @@ public static void init() { TagPrefix.init(); GTSoundEntries.init(); GTDamageTypes.init(); + GTPlaceholders.initPlaceholders(); + if (GTCEu.Mods.isCreateLoaded()) { + GTCreateIntegration.init(); + } + if (GTCEu.Mods.isAE2Loaded()) { + GTAEPlaceholders.init(); + } + GTCovers.init(); GTFluids.init(); GTCreativeModeTabs.init(); @@ -141,7 +164,7 @@ public static void init() { // fabric exclusive, squeeze this in here to register before stuff is used GTRegistration.REGISTRATE.registerRegistrate(); - GregTechDatagen.init(); + GregTechDatagen.initPost(); // Register all material manager registries, for materials with mod ids. GTCEuAPI.materialManager.getRegistries().forEach(registry -> { // Force the material lang generator to be at index 0, so that addons' lang generators can override it. @@ -150,12 +173,12 @@ public static void init() { // noinspection UnstableApiUsage List> providers = Multimaps.asMap(accessor.getDatagens()) .get(ProviderType.LANG); - if (providers.isEmpty()) { - providers.add( - (provider) -> MaterialLangGenerator.generate((RegistrateLangProvider) provider, registry)); + NonNullConsumer generator = (provider) -> MaterialLangGenerator + .generate((RegistrateLangProvider) provider, registry); + if (providers == null) { + accessor.getDatagens().put(ProviderType.LANG, generator); } else { - providers.add(0, - (provider) -> MaterialLangGenerator.generate((RegistrateLangProvider) provider, registry)); + providers.add(0, generator); } } @@ -175,6 +198,7 @@ public static void init() { GTFeatures.register(); CustomBlockRotations.init(); KeyBind.init(); + SyncedKeyMappings.init(); MachineOwner.init(); FusionReactorMachine.registerFusionTier(GTValues.LuV, " (MKI)"); @@ -237,6 +261,38 @@ public void commonSetup(FMLCommonSetupEvent event) { CraftingHelper.register(IntCircuitIngredient.TYPE, IntCircuitIngredient.SERIALIZER); CraftingHelper.register(IntProviderIngredient.TYPE, IntProviderIngredient.SERIALIZER); CraftingHelper.register(FluidContainerIngredient.TYPE, FluidContainerIngredient.SERIALIZER); + + // register the map ingredient converters for all of our ingredients + MapIngredientTypeManager.registerMapIngredient(FluidIngredient.class, FluidTagMapIngredient::from); + MapIngredientTypeManager.registerMapIngredient(FluidIngredient.class, FluidStackMapIngredient::from); + + MapIngredientTypeManager.registerMapIngredient(FluidStack.class, FluidTagMapIngredient::from); + MapIngredientTypeManager.registerMapIngredient(FluidStack.class, FluidStackMapIngredient::from); + + // spotless:off + MapIngredientTypeManager.registerMapIngredient(SizedIngredient.class, + (ingredient) -> MapIngredientTypeManager.getFrom(ingredient.getInner(), ItemRecipeCapability.CAP)); + MapIngredientTypeManager.registerMapIngredient(IntProviderIngredient.class, + (ingredient) -> MapIngredientTypeManager.getFrom(ingredient.getInner(), ItemRecipeCapability.CAP)); + + MapIngredientTypeManager.registerMapIngredient(StrictNBTIngredient.class, StrictNBTItemStackMapIngredient::from); + MapIngredientTypeManager.registerMapIngredient(PartialNBTIngredient.class, PartialNBTItemStackMapIngredient::from); + MapIngredientTypeManager.registerMapIngredient(IntersectionIngredient.class, IntersectionMapIngredient::from); + MapIngredientTypeManager.registerMapIngredient(Ingredient.class, ItemTagMapIngredient::from); + MapIngredientTypeManager.registerMapIngredient(Ingredient.class, ItemStackMapIngredient::from); + + MapIngredientTypeManager.registerMapIngredient(ItemStack.class, ItemStackMapIngredient::from); + MapIngredientTypeManager.registerMapIngredient(ItemStack.class, ItemTagMapIngredient::from); + MapIngredientTypeManager.registerMapIngredient(ItemStack.class, StrictNBTItemStackMapIngredient::from); + MapIngredientTypeManager.registerMapIngredient(ItemStack.class, PartialNBTItemStackMapIngredient::from); + MapIngredientTypeManager.registerMapIngredient(ItemStack.class, IntersectionMapIngredient::from); + MapIngredientTypeManager.registerMapIngredient(ItemStack.class, CustomMapIngredient::from); + // spotless:on + + if (GTCEu.Mods.isCCTweakedLoaded()) { + GTCEu.LOGGER.info("CC: Tweaked found. Enabling integration..."); + CCTweakedPlugin.init(); + } }); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/BoilerFireboxType.java b/src/main/java/com/gregtechceu/gtceu/common/block/BoilerFireboxType.java index e46dedae6f4..b6ec41f6d2c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/BoilerFireboxType.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/BoilerFireboxType.java @@ -4,15 +4,29 @@ import net.minecraft.resources.ResourceLocation; +import com.mojang.serialization.Codec; +import com.mojang.serialization.DataResult; import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2023/3/9 - * @implNote BoilerFireBoxCasingBlock - */ +import java.util.HashMap; +import java.util.Map; + public record BoilerFireboxType(String name, ResourceLocation bottom, ResourceLocation top, ResourceLocation side) { + public static final Map FIREBOX_TYPES = new HashMap<>(); + public static final Codec CODEC = Codec.STRING.comapFlatMap(name -> { + BoilerFireboxType type = FIREBOX_TYPES.get(name); + if (type != null) { + return DataResult.success(type); + } else { + return DataResult.error(() -> "A firebox type named " + name + " does not exist"); + } + }, BoilerFireboxType::name); + + public BoilerFireboxType { + FIREBOX_TYPES.put(name, this); + } + public static BoilerFireboxType BRONZE_FIREBOX = new BoilerFireboxType("bronze_firebox", GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks"), GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks"), diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/CableBlock.java b/src/main/java/com/gregtechceu/gtceu/common/block/CableBlock.java index 584a10ddae1..60f7d017bb2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/CableBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/CableBlock.java @@ -43,11 +43,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/1 - * @implNote CableBlock - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class CableBlock extends MaterialPipeBlock { @@ -57,12 +52,11 @@ public CableBlock(Properties properties, Insulation insulation, Material materia } @Override - public int tinted(BlockState blockState, @Nullable BlockAndTintGetter blockAndTintGetter, - @Nullable BlockPos blockPos, int index) { + public int tinted(BlockState state, @Nullable BlockAndTintGetter level, @Nullable BlockPos pos, int index) { if (pipeType.isCable && index == 0) { return 0x404040; } - return index == 0 || index == 1 ? material.getMaterialRGB() : -1; + return super.tinted(state, level, pos, index); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/CoilBlock.java b/src/main/java/com/gregtechceu/gtceu/common/block/CoilBlock.java index 9a518f2cd2f..6b38fb4bba1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/CoilBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/CoilBlock.java @@ -22,11 +22,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/4 - * @implNote CoilBlock - */ @ParametersAreNonnullByDefault public class CoilBlock extends ActiveBlock { diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/FluidPipeBlock.java b/src/main/java/com/gregtechceu/gtceu/common/block/FluidPipeBlock.java index 7df277a3bfb..56bf336e3ad 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/FluidPipeBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/FluidPipeBlock.java @@ -40,11 +40,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/1 - * @implNote FluidPipeBlock - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class FluidPipeBlock extends MaterialPipeBlock { diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/LampBlock.java b/src/main/java/com/gregtechceu/gtceu/common/block/LampBlock.java index bb6e2c2d40d..03ecdfdd965 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/LampBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/LampBlock.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.block; +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; import com.gregtechceu.gtceu.client.renderer.block.LampRenderer; import com.lowdragmc.lowdraglib.client.renderer.IBlockRendererProvider; @@ -37,9 +38,9 @@ @MethodsReturnNonnullByDefault public class LampBlock extends Block implements IBlockRendererProvider { - public static final BooleanProperty BLOOM = BooleanProperty.create("bloom"); + public static final BooleanProperty BLOOM = GTBlockStateProperties.BLOOM; public static final BooleanProperty LIGHT = BlockStateProperties.LIT; - public static final BooleanProperty INVERTED = BooleanProperty.create("inverted"); + public static final BooleanProperty INVERTED = GTBlockStateProperties.INVERTED; public static final BooleanProperty POWERED = BlockStateProperties.POWERED; public static final String TAG_INVERTED = "inverted"; @@ -60,7 +61,7 @@ public LampBlock(Properties properties, DyeColor color, boolean bordered) { this.color = color; this.bordered = bordered; registerDefaultState(defaultBlockState() - .setValue(BLOOM, true) + .setValue(GTBlockStateProperties.BLOOM, true) .setValue(LIGHT, true) .setValue(INVERTED, false) .setValue(POWERED, false)); @@ -82,7 +83,7 @@ public static boolean isLightEnabled(BlockState state) { } public static boolean isBloomEnabled(BlockState state) { - return state.getValue(BLOOM); + return state.getValue(GTBlockStateProperties.BLOOM); } public static boolean isInverted(CompoundTag tag) { @@ -99,7 +100,7 @@ public static boolean isBloomEnabled(CompoundTag tag) { public CompoundTag getTagFromState(BlockState state) { CompoundTag tag = new CompoundTag(); - tag.putBoolean(TAG_BLOOM, state.getValue(BLOOM)); + tag.putBoolean(TAG_BLOOM, state.getValue(GTBlockStateProperties.BLOOM)); tag.putBoolean(TAG_LIT, state.getValue(LIGHT)); tag.putBoolean(TAG_INVERTED, state.getValue(INVERTED)); return tag; @@ -117,7 +118,7 @@ public ItemStack getStackFromIndex(int i) { @Override protected void createBlockStateDefinition(StateDefinition.Builder builder) { - super.createBlockStateDefinition(builder.add(INVERTED, BLOOM, LIGHT, POWERED)); + super.createBlockStateDefinition(builder.add(INVERTED, GTBlockStateProperties.BLOOM, LIGHT, POWERED)); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/MinerPipeBlock.java b/src/main/java/com/gregtechceu/gtceu/common/block/MinerPipeBlock.java index 18419d6c72d..1eae2d72c33 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/MinerPipeBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/MinerPipeBlock.java @@ -7,11 +7,6 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -/** - * @author KilaBash - * @date 2023/7/13 - * @implNote MinerPipeBlock - */ public class MinerPipeBlock extends Block { public static VoxelShape SHAPE = Block.box(4, 0, 4, 12, 16, 12); diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/RubberLogBlock.java b/src/main/java/com/gregtechceu/gtceu/common/block/RubberLogBlock.java index 57c4ccbc1d6..5a6970fa742 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/RubberLogBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/RubberLogBlock.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.block; +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; import com.gregtechceu.gtceu.common.data.GTBlocks; import net.minecraft.MethodsReturnNonnullByDefault; @@ -20,7 +21,7 @@ @MethodsReturnNonnullByDefault public class RubberLogBlock extends RotatedPillarBlock { - public static final BooleanProperty NATURAL = BooleanProperty.create("natural"); + public static final BooleanProperty NATURAL = GTBlockStateProperties.NATURAL; public RubberLogBlock(Properties properties) { super(properties); diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/explosive/GTExplosiveBlock.java b/src/main/java/com/gregtechceu/gtceu/common/block/explosive/GTExplosiveBlock.java index 4ffec36867e..b9b33f4dd09 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/explosive/GTExplosiveBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/explosive/GTExplosiveBlock.java @@ -1,9 +1,11 @@ package com.gregtechceu.gtceu.common.block.explosive; import com.gregtechceu.gtceu.common.entity.GTExplosiveEntity; +import com.gregtechceu.gtceu.data.recipe.CustomTags; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; @@ -14,7 +16,6 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.projectile.Arrow; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Explosion; @@ -22,6 +23,7 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.gameevent.GameEvent; import net.minecraft.world.level.storage.loot.LootParams; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.BlockHitResult; @@ -29,6 +31,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collections; import java.util.List; import javax.annotation.ParametersAreNonnullByDefault; @@ -56,7 +59,7 @@ public GTExplosiveBlock(BlockBehaviour.Properties properties, boolean canRedston } protected abstract GTExplosiveEntity createEntity(@NotNull Level world, @NotNull BlockPos pos, - @NotNull LivingEntity exploder); + @Nullable LivingEntity exploder); @Override public boolean isCollisionShapeFullBlock(BlockState state, BlockGetter level, BlockPos pos) { @@ -68,13 +71,20 @@ public boolean dropFromExplosion(Explosion explosion) { return false; } - public void explode(Level world, BlockPos pos, LivingEntity exploder) { - if (!world.isClientSide) { - GTExplosiveEntity entity = createEntity(world, pos, exploder); + @Override + public void onCaughtFire(BlockState state, Level level, BlockPos pos, @Nullable Direction face, + @Nullable LivingEntity igniter) { + explode(level, pos, igniter); + } + + public void explode(Level level, BlockPos pos, @Nullable LivingEntity exploder) { + if (!level.isClientSide) { + GTExplosiveEntity entity = createEntity(level, pos, exploder); entity.setFuse(fuseLength); - world.addFreshEntity(entity); - world.playSound(null, entity.getX(), entity.getY(), entity.getZ(), SoundEvents.TNT_PRIMED, + level.addFreshEntity(entity); + level.playSound(null, entity.getX(), entity.getY(), entity.getZ(), SoundEvents.TNT_PRIMED, SoundSource.BLOCKS, 1.0f, 1.0f); + level.gameEvent(entity, GameEvent.PRIME_FUSE, pos); } } @@ -91,11 +101,11 @@ public void wasExploded(Level level, BlockPos pos, Explosion explosion) { public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { ItemStack stack = player.getItemInHand(hand); - if (!stack.isEmpty() && (stack.getItem() == Items.FLINT_AND_STEEL || stack.getItem() == Items.FIRE_CHARGE)) { + if (!stack.isEmpty() && stack.is(CustomTags.TOOLS_IGNITER)) { this.explode(level, pos, player); level.removeBlock(pos, false); - if (stack.getItem() == Items.FLINT_AND_STEEL) { - stack.hurtAndBreak(1, player, playerx -> playerx.broadcastBreakEvent(hand)); + if (stack.isDamageableItem()) { + stack.hurtAndBreak(1, player, p -> p.broadcastBreakEvent(hand)); } else if (!player.isCreative()) { stack.shrink(1); } @@ -105,16 +115,11 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player } @Override - public List getDrops(BlockState state, LootParams.Builder params) { - if (explodeOnMine) { - Entity entity = params.getOptionalParameter(LootContextParams.THIS_ENTITY); - if (entity != null && !entity.isCrouching() && entity instanceof LivingEntity living) { - this.explode(params.getLevel(), BlockPos.containing(params.getParameter(LootContextParams.ORIGIN)), - living); - return List.of(); - } + public void playerWillDestroy(Level level, BlockPos pos, BlockState state, Player player) { + if (explodeOnMine && !player.isShiftKeyDown()) { + this.explode(level, pos, player); } - return super.getDrops(state, params); + super.playerWillDestroy(level, pos, state, player); } @Override @@ -139,6 +144,18 @@ public void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldS } } + @Override + public List getDrops(BlockState state, LootParams.Builder params) { + if (explodeOnMine) { + Entity player = params.getOptionalParameter(LootContextParams.THIS_ENTITY); + if (player != null && !player.isShiftKeyDown()) { + return Collections.emptyList(); + } + } + + return super.getDrops(state, params); + } + @Override public void neighborChanged(BlockState state, Level level, BlockPos pos, Block neighborBlock, BlockPos neighborPos, boolean movedByPiston) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/explosive/IndustrialTNTBlock.java b/src/main/java/com/gregtechceu/gtceu/common/block/explosive/IndustrialTNTBlock.java index c379f830f88..3c86c9c410f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/explosive/IndustrialTNTBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/explosive/IndustrialTNTBlock.java @@ -32,7 +32,7 @@ public void appendHoverText(ItemStack stack, @Nullable BlockGetter level, List implements IDataInfoProvider { diff --git a/src/main/java/com/gregtechceu/gtceu/common/blockentity/LaserPipeBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/common/blockentity/LaserPipeBlockEntity.java index 0d35e2cd4bd..23b618fc55f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/blockentity/LaserPipeBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/common/blockentity/LaserPipeBlockEntity.java @@ -164,7 +164,7 @@ public boolean canAttachTo(Direction side) { @Override public void setConnection(Direction side, boolean connected, boolean fromNeighbor) { - if (!getLevel().isClientSide && connected && !fromNeighbor) { + if (!getLevel().isClientSide && connected) { int connections = getConnections(); // block connection if any side other than the requested side and its opposite side are already connected. connections &= ~(1 << side.ordinal()); diff --git a/src/main/java/com/gregtechceu/gtceu/common/capability/EnvironmentalHazardSavedData.java b/src/main/java/com/gregtechceu/gtceu/common/capability/EnvironmentalHazardSavedData.java index 414cfc7dfe4..c15fe81bafc 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/capability/EnvironmentalHazardSavedData.java +++ b/src/main/java/com/gregtechceu/gtceu/common/capability/EnvironmentalHazardSavedData.java @@ -104,7 +104,7 @@ public void tick() { hazardZones.remove(pos); if (this.serverLevel.hasChunk(pos.x, pos.z)) { LevelChunk chunk = this.serverLevel.getChunk(pos.x, pos.z); - GTNetwork.NETWORK.sendToTrackingChunk(new SPacketRemoveHazardZone(pos), chunk); + GTNetwork.sendToAllPlayersTrackingChunk(chunk, new SPacketRemoveHazardZone(pos)); } } @@ -137,7 +137,7 @@ public void tick() { hazardZones.remove(pos); if (this.serverLevel.hasChunk(pos.x, pos.z)) { LevelChunk chunk = this.serverLevel.getChunk(pos.x, pos.z); - GTNetwork.NETWORK.sendToTrackingChunk(new SPacketRemoveHazardZone(pos), chunk); + GTNetwork.sendToAllPlayersTrackingChunk(chunk, new SPacketRemoveHazardZone(pos)); } } this.setDirty(); @@ -210,7 +210,7 @@ public void removeZone(ChunkPos chunkPos) { this.hazardZones.remove(chunkPos); if (this.serverLevel.hasChunk(chunkPos.x, chunkPos.z)) { LevelChunk chunk = this.serverLevel.getChunk(chunkPos.x, chunkPos.z); - GTNetwork.NETWORK.sendToTrackingChunk(new SPacketRemoveHazardZone(chunkPos), chunk); + GTNetwork.sendToAllPlayersTrackingChunk(chunk, new SPacketRemoveHazardZone(chunkPos)); } } @@ -323,14 +323,14 @@ public static HazardZone fromNetwork(FriendlyByteBuf buf) { public void sendAddZonePacket(ChunkPos pos, HazardZone zone) { if (this.serverLevel.hasChunk(pos.x, pos.z)) { LevelChunk chunk = this.serverLevel.getChunk(pos.x, pos.z); - GTNetwork.NETWORK.sendToTrackingChunk(new SPacketAddHazardZone(pos, zone), chunk); + GTNetwork.sendToAllPlayersTrackingChunk(chunk, new SPacketAddHazardZone(pos, zone)); } } public void sendSyncZonePacket(ChunkPos pos, HazardZone zone) { if (this.serverLevel.hasChunk(pos.x, pos.z)) { LevelChunk chunk = this.serverLevel.getChunk(pos.x, pos.z); - GTNetwork.NETWORK.sendToTrackingChunk(new SPacketSyncHazardZoneStrength(pos, zone.strength()), chunk); + GTNetwork.sendToAllPlayersTrackingChunk(chunk, new SPacketSyncHazardZoneStrength(pos, zone.strength())); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/commands/GTClientCommands.java b/src/main/java/com/gregtechceu/gtceu/common/commands/GTClientCommands.java index e68b85ba549..00e671aab77 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/commands/GTClientCommands.java +++ b/src/main/java/com/gregtechceu/gtceu/common/commands/GTClientCommands.java @@ -25,7 +25,7 @@ public static void register(CommandDispatcher dispatcher, Co .executes(ctx -> { Player player = EntityArgument.getPlayer(ctx, "player"); Thread sendThread = new Thread(new ProspectingShareTask( - ctx.getSource().getPlayer().getUUID(), player.getUUID())); + ctx.getSource().getPlayerOrException().getUUID(), player.getUUID())); sendThread.start(); return 1; })))); @@ -47,7 +47,7 @@ public ProspectingShareTask(UUID sender, UUID reciever) { public void run() { boolean first = true; for (ClientCacheManager.ProspectionInfo info : prospectionData) { - GTNetwork.NETWORK.sendToServer(new SCPacketShareProspection(sender, reciever, info.cacheName, info.key, + GTNetwork.sendToServer(new SCPacketShareProspection(sender, reciever, info.cacheName, info.key, info.isDimCache, info.dim, info.data, first)); first = false; diff --git a/src/main/java/com/gregtechceu/gtceu/common/commands/GTCommands.java b/src/main/java/com/gregtechceu/gtceu/common/commands/GTCommands.java index 619bda89e79..14e31f25adb 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/commands/GTCommands.java +++ b/src/main/java/com/gregtechceu/gtceu/common/commands/GTCommands.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.commands; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.cosmetics.CapeRegistry; import com.gregtechceu.gtceu.api.data.worldgen.GTOreDefinition; import com.gregtechceu.gtceu.api.data.worldgen.bedrockfluid.BedrockFluidDefinition; import com.gregtechceu.gtceu.api.data.worldgen.bedrockore.BedrockOreDefinition; @@ -16,48 +17,69 @@ import com.gregtechceu.gtceu.data.loader.GTOreLoader; import com.gregtechceu.gtceu.data.pack.GTDynamicDataPack; -import net.minecraft.commands.CommandBuildContext; -import net.minecraft.commands.CommandRuntimeException; -import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.*; +import net.minecraft.commands.arguments.EntityArgument; +import net.minecraft.commands.arguments.ResourceLocationArgument; import net.minecraft.commands.arguments.coordinates.BlockPosArgument; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import net.minecraft.resources.RegistryOps; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.RandomSource; import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.chunk.BulkSectionAccess; import net.minecraft.world.level.levelgen.structure.templatesystem.AlwaysTrueTest; +import com.google.common.collect.Sets; import com.google.gson.JsonElement; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.context.CommandContext; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.mojang.brigadier.exceptions.Dynamic2CommandExceptionType; +import com.mojang.brigadier.exceptions.DynamicCommandExceptionType; +import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; +import com.mojang.brigadier.suggestion.SuggestionProvider; import com.mojang.serialization.Codec; import com.mojang.serialization.JsonOps; +import java.nio.charset.StandardCharsets; import java.nio.file.Path; +import java.util.*; import static net.minecraft.commands.Commands.*; -/** - * @author KilaBash - * @date 2023/2/9 - * @implNote GTCommands - */ public class GTCommands { + public static final SuggestionProvider OWNED_CAPES = (ctx, builder) -> { + return SharedSuggestionProvider.suggestResource(findOwnedCapesFor(ctx), builder); + }; + public static final SuggestionProvider NOT_OWNED_CAPES = (ctx, builder) -> { + return SharedSuggestionProvider.suggestResource(findNotOwnedCapesFor(ctx), builder); + }; + public static final DynamicCommandExceptionType ERROR_NO_SUCH_CAPE = new DynamicCommandExceptionType( + id -> Component.translatable("command.gtceu.cape.failure.does_not_exist", id)); + + private static final SimpleCommandExceptionType ERROR_GIVE_FAILED = new SimpleCommandExceptionType( + Component.translatable("command.gtceu.cape.give.failed")); + private static final SimpleCommandExceptionType ERROR_TAKE_FAILED = new SimpleCommandExceptionType( + Component.translatable("command.gtceu.cape.take.failed")); + private static final Dynamic2CommandExceptionType ERROR_USE_FAILED = new Dynamic2CommandExceptionType( + (player, cape) -> Component.translatable("command.gtceu.cape.use.failed", player, cape)); + + // spotless:off public static void register(CommandDispatcher dispatcher, CommandBuildContext buildContext) { dispatcher.register( literal("gtceu") - .requires(source -> source.hasPermission(3)) .then(literal("ui_editor") + .requires(ctx -> ctx.hasPermission(LEVEL_ADMINS)) .executes(context -> { - GTUIEditorFactory.INSTANCE.openUI(GTUIEditorFactory.INSTANCE, - context.getSource().getPlayerOrException()); + GTUIEditorFactory.INSTANCE.openUI(GTUIEditorFactory.INSTANCE, context.getSource().getPlayerOrException()); return 1; })) .then(literal("dump_data") + .requires(ctx -> ctx.hasPermission(LEVEL_OWNERS)) .then(literal("bedrock_fluid_veins") .executes(context -> dumpDataRegistry(context, GTRegistries.BEDROCK_FLUID_DEFINITIONS, @@ -74,13 +96,199 @@ public static void register(CommandDispatcher dispatcher, Co GTOreDefinition.FULL_CODEC, GTOreLoader.FOLDER)))) .then(literal("place_vein") - .then(argument("vein", - GTRegistryArgument.registry(GTRegistries.ORE_VEINS, ResourceLocation.class)) - .executes(context -> GTCommands.placeVein(context, - BlockPos.containing(context.getSource().getPosition()))) + .requires(ctx -> ctx.hasPermission(LEVEL_ADMINS)) + .then(argument("vein", GTRegistryArgument.registry(GTRegistries.ORE_VEINS, ResourceLocation.class)) + .executes(context -> { + return GTCommands.placeVein(context, BlockPos.containing(context.getSource().getPosition())); + }) .then(argument("position", BlockPosArgument.blockPos()) - .executes(context -> GTCommands.placeVein(context, - BlockPosArgument.getBlockPos(context, "position"))))))); + .executes(context -> { + return GTCommands.placeVein(context, BlockPosArgument.getBlockPos(context, "position")); + })))) + .then(literal("cape") + .then(literal("give") + .requires(ctx -> ctx.hasPermission(LEVEL_GAMEMASTERS)) + .then(argument("targets", EntityArgument.players()) + .then(argument("cape", ResourceLocationArgument.id()) + .suggests(NOT_OWNED_CAPES) + .executes(ctx -> { + Collection players = EntityArgument.getPlayers(ctx, "targets"); + Collection cape = Collections.singleton(ResourceLocationArgument.getId(ctx, "cape")); + return giveCapes(ctx.getSource(), players, cape); + })) + .then(literal("*") + .executes(ctx -> { + Collection players = EntityArgument.getPlayers(ctx, "targets"); + return giveCapes(ctx.getSource(), players, CapeRegistry.ALL_CAPES.keySet()); + })))) + .then(literal("take") + .requires(ctx -> ctx.hasPermission(LEVEL_GAMEMASTERS)) + .then(argument("targets", EntityArgument.players()) + .then(argument("cape", ResourceLocationArgument.id()) + .suggests(OWNED_CAPES) + .executes(ctx -> { + Collection players = EntityArgument.getPlayers(ctx, "targets"); + Collection cape = Collections.singleton(ResourceLocationArgument.getId(ctx, "cape")); + return takeCapes(ctx.getSource(), players, cape); + })) + .then(literal("*") + .executes(ctx -> { + Collection players = EntityArgument.getPlayers(ctx, "targets"); + return takeCapes(ctx.getSource(), players, CapeRegistry.ALL_CAPES.keySet()); + })))) + .then(literal("use") + .then(argument("target", EntityArgument.player()) + .requires(ctx -> ctx.hasPermission(LEVEL_ADMINS)) + .then(argument("cape", ResourceLocationArgument.id()) + .suggests(OWNED_CAPES) + .executes(ctx -> { + ServerPlayer player = EntityArgument.getPlayer(ctx, "target"); + ResourceLocation cape = ResourceLocationArgument.getId(ctx, "cape"); + return setActiveCape(ctx.getSource(), player, cape); + })) + .then(literal("none") + .executes(ctx -> { + ServerPlayer player = ctx.getSource().getPlayerOrException(); + return setActiveCape(ctx.getSource(), player, null); + }))) + .then(argument("cape", ResourceLocationArgument.id()) + .suggests(OWNED_CAPES) + .executes(ctx -> { + ServerPlayer player = ctx.getSource().getPlayerOrException(); + ResourceLocation cape = ResourceLocationArgument.getId(ctx, "cape"); + return setActiveCape(ctx.getSource(), player, cape); + })) + .then(literal("none") + .executes(ctx -> { + ServerPlayer player = ctx.getSource().getPlayerOrException(); + return setActiveCape(ctx.getSource(), player, null); + }))))); + } + // spotless:on + + public static Collection findPlayersFrom(CommandContext ctx) throws CommandSyntaxException { + // go through all variants of the used player target selectors to find the targeted players + try { + return EntityArgument.getPlayers(ctx, "targets"); + } catch (IllegalArgumentException | CommandSyntaxException e) { + try { + return EntityArgument.getPlayers(ctx, "target"); + } catch (IllegalArgumentException | CommandSyntaxException ignored) { + return Collections.singleton(ctx.getSource().getPlayerOrException()); + } + } + } + + public static Collection findOwnedCapesFor(CommandContext ctx) throws CommandSyntaxException { + Collection players = findPlayersFrom(ctx); + if (players.isEmpty()) { + return CapeRegistry.ALL_CAPES.keySet(); + } + + Set validCapes = new HashSet<>(); + for (ServerPlayer player : players) { + validCapes.addAll(CapeRegistry.getUnlockedCapes(player.getUUID())); + } + return validCapes; + } + + public static Collection findNotOwnedCapesFor(CommandContext ctx) throws CommandSyntaxException { + Collection players = findPlayersFrom(ctx); + if (players.isEmpty()) { + return CapeRegistry.ALL_CAPES.keySet(); + } + + Set allCapes = CapeRegistry.ALL_CAPES.keySet(); + Set validCapes = new HashSet<>(); + for (ServerPlayer player : players) { + Set unlockedCapes = new HashSet<>(CapeRegistry.getUnlockedCapes(player.getUUID())); + // find all capes this player *doesn't* have + validCapes.addAll(Sets.difference(allCapes, unlockedCapes)); + } + return validCapes; + } + + public static int giveCapes(CommandSourceStack source, + Collection targets, Collection capes) + throws CommandSyntaxException { + int successes = 0; + + for (var player : targets) { + int playerSuccesses = 0; + for (var cape : capes) { + if (CapeRegistry.unlockCape(player.getUUID(), cape)) { + successes++; + playerSuccesses++; + } + } + if (playerSuccesses > 0) { + player.sendSystemMessage(Component.translatable("gtceu.chat.cape")); + } + } + + if (successes == 0) { + throw ERROR_GIVE_FAILED.create(); + } + if (targets.size() == 1) { + source.sendSuccess(() -> Component.translatable( + "command.gtceu.cape.give.success.single", capes.size(), + targets.iterator().next().getDisplayName()), + true); + } else { + source.sendSuccess(() -> Component.translatable( + "command.gtceu.cape.give.success.multiple", capes.size(), targets.size()), + true); + } + CapeRegistry.save(); + return successes; + } + + private static int takeCapes(CommandSourceStack source, + Collection targets, Collection capes) + throws CommandSyntaxException { + int successes = 0; + + for (var player : targets) { + for (var cape : capes) { + if (CapeRegistry.removeCape(player.getUUID(), cape)) { + successes++; + } + } + } + + if (successes == 0) { + throw ERROR_TAKE_FAILED.create(); + } + if (targets.size() == 1) { + source.sendSuccess(() -> Component.translatable( + "command.gtceu.cape.take.success.single", capes.size(), + targets.iterator().next().getDisplayName()), + true); + } else { + source.sendSuccess(() -> Component.translatable( + "command.gtceu.cape.take.success.multiple", capes.size(), targets.size()), + true); + } + CapeRegistry.save(); + return successes; + } + + private static int setActiveCape(CommandSourceStack source, ServerPlayer player, ResourceLocation cape) + throws CommandSyntaxException { + if (CapeRegistry.setActiveCape(player.getUUID(), cape)) { + if (cape != null) { + source.sendSuccess(() -> Component.translatable( + "command.gtceu.cape.use.success", player.getDisplayName(), cape.toString()), + true); + } else { + source.sendSuccess(() -> Component.translatable( + "command.gtceu.cape.use.success.none", player.getDisplayName()), + true); + } + return 1; + } else { + throw ERROR_USE_FAILED.create(player.getDisplayName(), cape); + } } private static int dumpDataRegistry(CommandContext context, @@ -91,7 +299,7 @@ private static int dumpDataRegistry(CommandContext conte for (ResourceLocation id : registry.keys()) { T entry = registry.get(id); JsonElement json = codec.encodeStart(ops, entry).getOrThrow(false, GTCEu.LOGGER::error); - GTDynamicDataPack.writeJson(id, folder, parent, json); + GTDynamicDataPack.writeJson(id, folder, parent, json.toString().getBytes(StandardCharsets.UTF_8)); dumpedCount++; } final int result = dumpedCount; diff --git a/src/main/java/com/gregtechceu/gtceu/common/commands/HazardCommands.java b/src/main/java/com/gregtechceu/gtceu/common/commands/HazardCommands.java index b622ef5e2a1..91d3d67dc6f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/commands/HazardCommands.java +++ b/src/main/java/com/gregtechceu/gtceu/common/commands/HazardCommands.java @@ -18,32 +18,25 @@ import com.mojang.brigadier.arguments.IntegerArgumentType; import com.mojang.brigadier.context.CommandContext; -import static net.minecraft.commands.Commands.argument; -import static net.minecraft.commands.Commands.literal; +import static net.minecraft.commands.Commands.*; public class HazardCommands { + // spotless:off public static void register(CommandDispatcher dispatcher, CommandBuildContext buildContext) { dispatcher.register( literal("environmental_hazard") - .requires(source -> source.hasPermission(2)) + .requires(source -> source.hasPermission(LEVEL_ADMINS)) .then(argument("condition", MedicalConditionArgument.medicalCondition()) .then(argument("can_spread", BoolArgumentType.bool()) .then(argument("source", BlockPosArgument.blockPos()) .then(literal("chunk") - .then(Commands - .argument("strength", - IntegerArgumentType.integer(1)) - .executes( - HazardCommands::spawnChunkEnvironmentalHazard))) + .then(Commands.argument("strength", IntegerArgumentType.integer(1)) + .executes(HazardCommands::spawnChunkEnvironmentalHazard))) .then(literal("local") - .then(Commands - .argument("from", BlockPosArgument.blockPos()) - .then(Commands - .argument("to", - BlockPosArgument.blockPos()) - .executes( - HazardCommands::spawnLocalEnvironmentalHazard))))))) + .then(Commands.argument("from", BlockPosArgument.blockPos()) + .then(Commands.argument("to", BlockPosArgument.blockPos()) + .executes(HazardCommands::spawnLocalEnvironmentalHazard))))))) .then(literal("clear") .then(argument("source", BlockPosArgument.blockPos()) .executes(context -> { @@ -52,13 +45,12 @@ public static void register(CommandDispatcher dispatcher, Co }) .then(argument("condition", MedicalConditionArgument.medicalCondition()) .executes(context -> { - BlockPos source = BlockPosArgument.getBlockPos(context, - "source"); - MedicalCondition condition = MedicalConditionArgument - .getCondition(context, "condition"); + BlockPos source = BlockPosArgument.getBlockPos(context, "source"); + MedicalCondition condition = MedicalConditionArgument.getCondition(context, "condition"); return clearEnvironmentalHazard(context, source, condition); }))))); } + // spotless:on private static int spawnChunkEnvironmentalHazard(CommandContext context) { ServerLevel serverLevel = context.getSource().getLevel(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/commands/MedicalConditionCommands.java b/src/main/java/com/gregtechceu/gtceu/common/commands/MedicalConditionCommands.java index e9bcf7321a0..602408e1666 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/commands/MedicalConditionCommands.java +++ b/src/main/java/com/gregtechceu/gtceu/common/commands/MedicalConditionCommands.java @@ -20,8 +20,7 @@ import java.util.Collection; import java.util.Collections; -import static net.minecraft.commands.Commands.argument; -import static net.minecraft.commands.Commands.literal; +import static net.minecraft.commands.Commands.*; public class MedicalConditionCommands { @@ -30,58 +29,61 @@ public class MedicalConditionCommands { private static final SimpleCommandExceptionType ERROR_GIVE_FAILED = new SimpleCommandExceptionType( Component.translatable("commands.effect.give.failed")); + // spotless:off public static void register(CommandDispatcher dispatcher, CommandBuildContext buildContext) { dispatcher.register( literal("medical_condition") .then(literal("query") - .executes(context -> queryMedicalConditions( - context.getSource().getPlayerOrException())) + .executes(ctx -> { + return queryMedicalConditions(ctx.getSource().getPlayerOrException()); + }) .then(argument("target", EntityArgument.player()) - .requires(source -> source.hasPermission(2)) - .executes(context -> queryMedicalConditions( - EntityArgument.getPlayer(context, "target"))))) + .requires(source -> source.hasPermission(LEVEL_GAMEMASTERS)) + .executes(context -> { + return queryMedicalConditions(EntityArgument.getPlayer(context, "target")); + }))) .then(literal("clear") - .requires(source -> source.hasPermission(2)) - .executes(context -> clearMedicalConditions( - Collections.singleton(context.getSource().getPlayerOrException()), - null)) + .requires(ctx -> ctx.hasPermission(LEVEL_ADMINS)) + .executes(ctx -> { + return clearMedicalConditions( + Collections.singleton(ctx.getSource().getPlayerOrException()), null); + }) .then(argument("targets", EntityArgument.players()) - .executes(context -> clearMedicalConditions( - EntityArgument.getPlayers(context, "targets"), null)) - .then(argument("condition", - MedicalConditionArgument.medicalCondition()) - .executes(context -> { - Collection targets = EntityArgument - .getPlayers(context, "targets"); + .executes(ctx -> { + return clearMedicalConditions(EntityArgument.getPlayers(ctx, "targets"), + null); + }) + .then(argument("condition", MedicalConditionArgument.medicalCondition()) + .executes(ctx -> { + Collection targets = EntityArgument.getPlayers(ctx, + "targets"); MedicalCondition condition = MedicalConditionArgument - .getCondition(context, "condition"); + .getCondition(ctx, "condition"); return clearMedicalConditions(targets, condition); })))) .then(literal("apply") - .requires(source -> source.hasPermission(2)) + .requires(ctx -> ctx.hasPermission(LEVEL_GAMEMASTERS)) .then(argument("targets", EntityArgument.players()) - .then(argument("condition", - MedicalConditionArgument.medicalCondition()) - .executes(context -> { + .then(argument("condition", MedicalConditionArgument.medicalCondition()) + .executes(ctx -> { MedicalCondition condition = MedicalConditionArgument - .getCondition(context, "condition"); - Collection players = EntityArgument - .getPlayers(context, "targets"); + .getCondition(ctx, "condition"); + Collection players = EntityArgument.getPlayers(ctx, + "targets"); return applyMedicalConditions(players, condition, 1); - }).then(argument("progression_multiplier", - FloatArgumentType.floatArg(0)) - .executes(context -> { + }) + .then(argument("progression_multiplier", FloatArgumentType.floatArg(0)) + .executes(ctx -> { MedicalCondition condition = MedicalConditionArgument - .getCondition(context, "condition"); + .getCondition(ctx, "condition"); Collection players = EntityArgument - .getPlayers(context, "targets"); - float strength = FloatArgumentType.getFloat( - context, + .getPlayers(ctx, "targets"); + float strength = FloatArgumentType.getFloat(ctx, "progression_multiplier"); - return applyMedicalConditions(players, - condition, strength); + return applyMedicalConditions(players, condition, strength); })))))); } + // spotless:off private static int queryMedicalConditions(ServerPlayer target) throws CommandSyntaxException { IMedicalConditionTracker tracker = GTCapabilityHelper.getMedicalConditionTracker(target); diff --git a/src/main/java/com/gregtechceu/gtceu/common/cosmetics/GTCapes.java b/src/main/java/com/gregtechceu/gtceu/common/cosmetics/GTCapes.java new file mode 100644 index 00000000000..b7018839ff7 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/cosmetics/GTCapes.java @@ -0,0 +1,87 @@ +package com.gregtechceu.gtceu.common.cosmetics; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.cosmetics.event.RegisterGTCapesEvent; + +import net.minecraft.resources.ResourceLocation; + +import java.util.UUID; + +public class GTCapes { + + public static final ResourceLocation GREGTECH_CAPE = GTCEu.id("gregtech"); + public static final ResourceLocation GREEN_CAPE = GTCEu.id("green"); + public static final ResourceLocation YELLOW_CAPE = GTCEu.id("yellow"); + public static final ResourceLocation RED_CAPE = GTCEu.id("red"); + public static final ResourceLocation DEBUG_CAPE = GTCEu.id("debug"); + + public static final ResourceLocation RAINBOW_CAPE = GTCEu.id("rainbow"); + public static final ResourceLocation ACE_CAPE = GTCEu.id("ace"); + public static final ResourceLocation AGENDER_CAPE = GTCEu.id("agender"); + public static final ResourceLocation AROMANTIC_CAPE = GTCEu.id("aromantic"); + public static final ResourceLocation BI_CAPE = GTCEu.id("bi"); + public static final ResourceLocation GENDERFLUID_CAPE = GTCEu.id("genderfluid"); + public static final ResourceLocation GENDERQUEER_CAPE = GTCEu.id("genderqueer"); + public static final ResourceLocation INTERSEX_CAPE = GTCEu.id("intersex"); + public static final ResourceLocation LESBIAN_CAPE = GTCEu.id("lesbian"); + public static final ResourceLocation NONBINARY_CAPE = GTCEu.id("nonbinary"); + public static final ResourceLocation PAN_CAPE = GTCEu.id("pan"); + public static final ResourceLocation TRANS_CAPE = GTCEu.id("trans"); + + public static void registerGTCapes(RegisterGTCapesEvent event) { + // TODO add the advancements to unlock these + // Reference + // https://github.com/GregTechCEu/GregTech/blob/master/src/main/java/gregtech/api/util/CapesRegistry.java#L151-L156 + // for correct advancement IDs + event.registerCape(GREGTECH_CAPE, GTCEu.id("textures/capes/gregtech_cape.png")); + event.registerCape(GREEN_CAPE, GTCEu.id("textures/capes/green_cape.png")); + event.registerCape(YELLOW_CAPE, GTCEu.id("textures/capes/yellow_cape.png")); + event.registerCape(RED_CAPE, GTCEu.id("textures/capes/red_cape.png")); + // don't link this to anything (except easter egg? april fools? TBD) + event.registerCape(DEBUG_CAPE, GTCEu.id("textures/capes/debug_cape.png")); + + event.registerFreeCape(RAINBOW_CAPE, GTCEu.id("textures/capes/rainbow_cape.png")); + event.registerFreeCape(ACE_CAPE, GTCEu.id("textures/capes/ace_cape.png")); + event.registerFreeCape(AGENDER_CAPE, GTCEu.id("textures/capes/agender_cape.png")); + event.registerFreeCape(AROMANTIC_CAPE, GTCEu.id("textures/capes/aromantic_cape.png")); + event.registerFreeCape(BI_CAPE, GTCEu.id("textures/capes/bi_cape.png")); + event.registerFreeCape(GENDERFLUID_CAPE, GTCEu.id("textures/capes/genderfluid_cape.png")); + event.registerFreeCape(GENDERQUEER_CAPE, GTCEu.id("textures/capes/genderqueer_cape.png")); + event.registerFreeCape(INTERSEX_CAPE, GTCEu.id("textures/capes/intersex_cape.png")); + event.registerFreeCape(LESBIAN_CAPE, GTCEu.id("textures/capes/lesbian_cape.png")); + event.registerFreeCape(NONBINARY_CAPE, GTCEu.id("textures/capes/nonbinary_cape.png")); + event.registerFreeCape(PAN_CAPE, GTCEu.id("textures/capes/pan_cape.png")); + event.registerFreeCape(TRANS_CAPE, GTCEu.id("textures/capes/trans_cape.png")); + } + + public static void giveDevCapes(RegisterGTCapesEvent event) { + // updated on 8.4.2025 - screret + event.unlockCapeFor(UUID.fromString("a24a9108-23d2-43fc-8db7-43f809d017db"), GREGTECH_CAPE); // ALongStringOfNumbers + event.unlockCapeFor(UUID.fromString("fbd96f69-60f9-481c-b71e-4b190cd5fc72"), GREGTECH_CAPE); // Anne-Marie + event.unlockCapeFor(UUID.fromString("77e2129d-8f68-4025-9394-df946f1f3aee"), GREGTECH_CAPE); // Brachy84 + event.unlockCapeFor(UUID.fromString("c1377a67-4585-46b6-b70e-dfaa419f1e71"), GREGTECH_CAPE); // BraggestSage833 + event.unlockCapeFor(UUID.fromString("aaf70ec1-ac70-494f-9966-ea5933712750"), GREGTECH_CAPE); // Bruberu + event.unlockCapeFor(UUID.fromString("c43b3c3d-7da6-4c2b-b335-703fce2ed795"), GREGTECH_CAPE); // Ghostipedia + event.unlockCapeFor(UUID.fromString("88374b6a-4710-46cd-bb04-a1580905a918"), GREGTECH_CAPE); // Ghzdude + event.unlockCapeFor(UUID.fromString("5d7073e3-882f-4c4a-94b3-0e5ba1c11e02"), GREGTECH_CAPE); // htmlcsjs + event.unlockCapeFor(UUID.fromString("c18c1d7f-3174-42c6-81dc-3c7ff9f720c3"), GREGTECH_CAPE); // jurrejelle + event.unlockCapeFor(UUID.fromString("29f1e04c-58d8-4a3b-9eff-f85be7825256"), GREGTECH_CAPE); // kross000 + event.unlockCapeFor(UUID.fromString("2fa297a6-7803-4629-8360-7059155cf43e"), GREGTECH_CAPE); // KilaBash + event.unlockCapeFor(UUID.fromString("44f38ff8-aad7-49c3-acb3-d92317af9078"), GREGTECH_CAPE); // LAGIdiot + event.unlockCapeFor(UUID.fromString("3dbb689e-edcf-41b9-9c09-6ae4ebb6ca5b"), GREGTECH_CAPE); // M_W_K + // todo Mikerooni (when he gets a new account) + event.unlockCapeFor(UUID.fromString("5cb66945-2ca4-498d-8c9a-29a676769363"), GREGTECH_CAPE); // omergunr100 + event.unlockCapeFor(UUID.fromString("4a57640e-c1b1-4413-a6ab-e9a8b60ec167"), GREGTECH_CAPE); // PrototypeTrousers + event.unlockCapeFor(UUID.fromString("12892f29-9eef-47ed-b8fb-df3e0e90db0c"), GREGTECH_CAPE); // Quarri6343 + event.unlockCapeFor(UUID.fromString("1184eb79-5831-4f7d-b8f4-3a46fccf7a1d"), GREGTECH_CAPE); // screret + event.unlockCapeFor(UUID.fromString("a82fb558-64f9-4dd6-a87d-84040e84bb43"), GREGTECH_CAPE); // serenibyss + event.unlockCapeFor(UUID.fromString("f76fc8b3-ac6b-44b9-9023-76edaf3d5909"), GREGTECH_CAPE); // spicierspace153 + event.unlockCapeFor(UUID.fromString("5c2933b3-5340-4356-81e7-783c53bd7845"), GREGTECH_CAPE); // Tech22 + event.unlockCapeFor(UUID.fromString("30628e4c-f7ac-427f-8ca7-aab2c0572be8"), GREGTECH_CAPE); // TheLastKumquat + event.unlockCapeFor(UUID.fromString("e6e784af-bd04-46ad-8141-47b8b9102cb9"), GREGTECH_CAPE); // Tictim + event.unlockCapeFor(UUID.fromString("60057953-6a71-4f11-9e72-bb0c81fa0085"), GREGTECH_CAPE); // ursamina + event.unlockCapeFor(UUID.fromString("3a27782d-6864-4814-a9fe-7c6931f29a8a"), GREGTECH_CAPE); // YoungOnion + event.unlockCapeFor(UUID.fromString("56bd41d0-06ef-4ed7-ab48-926ce45651f9"), GREGTECH_CAPE); // Zalgo239 + event.unlockCapeFor(UUID.fromString("2c69579f-a7fa-46ad-814e-9837e01215c1"), GREGTECH_CAPE); // Zorbatron + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/ComputerMonitorCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/ComputerMonitorCover.java index 86b0837504c..23b38c2f1fc 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/ComputerMonitorCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/ComputerMonitorCover.java @@ -1,15 +1,104 @@ package com.gregtechceu.gtceu.common.cover; +import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.capability.ICoverable; import com.gregtechceu.gtceu.api.cover.CoverBehavior; import com.gregtechceu.gtceu.api.cover.CoverDefinition; +import com.gregtechceu.gtceu.api.cover.IUICover; +import com.gregtechceu.gtceu.api.gui.widget.IntInputWidget; +import com.gregtechceu.gtceu.api.machine.TickableSubscription; +import com.gregtechceu.gtceu.api.machine.feature.IDataStickInteractable; +import com.gregtechceu.gtceu.api.placeholder.IPlaceholderInfoProviderCover; +import com.gregtechceu.gtceu.api.placeholder.MultiLineComponent; +import com.gregtechceu.gtceu.api.placeholder.PlaceholderContext; +import com.gregtechceu.gtceu.api.placeholder.PlaceholderHandler; +import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler; +import com.gregtechceu.gtceu.client.renderer.cover.CoverTextRenderer; +import com.gregtechceu.gtceu.client.renderer.cover.IDynamicCoverRenderer; +import com.gregtechceu.gtceu.data.lang.LangHandler; +import com.gregtechceu.gtceu.integration.create.GTCreateIntegration; +import com.gregtechceu.gtceu.utils.GTStringUtils; +import com.gregtechceu.gtceu.utils.GTUtil; +import com.lowdragmc.lowdraglib.gui.texture.ResourceBorderTexture; +import com.lowdragmc.lowdraglib.gui.widget.*; +import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; +import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; +import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; + +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.nbt.Tag; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.ComponentContents; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; + +import lombok.Getter; +import lombok.Setter; +import org.jetbrains.annotations.NotNull; + +import java.util.*; +import java.util.function.Supplier; + +import javax.annotation.ParametersAreNonnullByDefault; + +@MethodsReturnNonnullByDefault +@ParametersAreNonnullByDefault +public class ComputerMonitorCover extends CoverBehavior + implements IUICover, IDataStickInteractable, IPlaceholderInfoProviderCover { -public class ComputerMonitorCover extends CoverBehavior { + public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(ComputerMonitorCover.class, + CoverBehavior.MANAGED_FIELD_HOLDER); + + private TickableSubscription subscription; + private final CoverTextRenderer renderer; + @Persisted + private final List formatStringArgs = new ArrayList<>(8); + @Persisted + private final List formatStringLines = new ArrayList<>(8); + @Persisted + @DescSynced + @Getter + private List text = new ArrayList<>(); + @Persisted + public final CustomItemStackHandler itemStackHandler = new CustomItemStackHandler(8); + @Setter + private String placeholderSearch = ""; + @Setter + @Getter + @Persisted + private int updateInterval = 100; + @Getter + @Persisted + private long ticksSincePlaced = 0; + @Persisted + @Getter + private final List createDisplayTargetBuffer = new ArrayList<>(); public ComputerMonitorCover(CoverDefinition definition, ICoverable coverHolder, Direction attachedSide) { super(definition, coverHolder, attachedSide); + renderer = new CoverTextRenderer(this::getText); + for (int i = 0; i < 100; i++) createDisplayTargetBuffer.add(MutableComponent.create(ComponentContents.EMPTY)); + } + + public List getRenderedText() { + String s = formatStringLines.stream().reduce((a, b) -> a + "\n" + b).orElse(""); + List tmp = new ArrayList<>(formatStringArgs); + tmp = tmp.stream().map(str -> '{' + str + '}').toList(); + return PlaceholderHandler.processPlaceholders( + GTStringUtils.replace(s, "\\{}", tmp), + new PlaceholderContext(coverHolder.getLevel(), coverHolder.getPos(), attachedSide, itemStackHandler, + this, new MultiLineComponent(text))); + } + + public void setDisplayTargetBufferLine(int line, MutableComponent component) { + createDisplayTargetBuffer.set(line, component); } @Override @@ -17,5 +106,169 @@ public boolean canPipePassThrough() { return false; } - // No implementation here, this cover is just for decorative purposes + @Override + public Supplier getDynamicRenderer() { + return () -> renderer; + } + + @Override + public @NotNull ManagedFieldHolder getFieldHolder() { + return MANAGED_FIELD_HOLDER; + } + + @Override + public Widget createUIWidget() { + int textFieldWidth = 160, horizontalPadding = 10, verticalPadding = 2; + final WidgetGroup group = new WidgetGroup(0, 0, 2 * textFieldWidth + 3 * horizontalPadding, 150); + final WidgetGroup mainPage = new WidgetGroup(0, 0, 2 * textFieldWidth + 3 * horizontalPadding, 150); + final WidgetGroup formatStringArgsPage = new WidgetGroup(0, 0, 2 * textFieldWidth + 3 * horizontalPadding, 150); + for (int i = 0; i < 8; i++) { + TextFieldWidget formatStringInput = new TextFieldWidget(); + formatStringInput.setSize(textFieldWidth, 15); + formatStringInput.setSelfPosition(horizontalPadding + textFieldWidth / 2, + 10 + verticalPadding + i * (15 + verticalPadding)); + formatStringInput.setHoverTooltips(GTStringUtils.toImmutable( + LangHandler.getMultiLang("gtceu.gui.computer_monitor_cover.main_textbox_tooltip", i + 1))); + int finalI = i; + if (i >= formatStringLines.size()) formatStringLines.add(""); + formatStringInput.setCurrentString(formatStringLines.get(i)); + formatStringInput.setTextResponder((s) -> formatStringLines.set(finalI, s)); + mainPage.addWidget(formatStringInput); + SlotWidget slot = new com.gregtechceu.gtceu.api.gui.widget.SlotWidget( + itemStackHandler, + i, + horizontalPadding + 50, + 20 * i); + slot.setBackgroundTexture(SlotWidget.ITEM_SLOT_TEXTURE); + slot.setHoverTooltips(GTStringUtils + .toImmutable(LangHandler.getMultiLang("gtceu.gui.computer_monitor_cover.slot_tooltip", i + 1))); + mainPage.addWidget(slot); + } + for (int i = 0; i < 8; i++) { + TextFieldWidget formatStringArgsInput = new TextFieldWidget(); + formatStringArgsInput.setSize(textFieldWidth, 15); + formatStringArgsInput.setSelfPosition(textFieldWidth / 2 + horizontalPadding, + 10 + verticalPadding + i * (15 + verticalPadding)); + formatStringArgsInput.setHoverTooltips(GTStringUtils.toImmutable( + LangHandler.getMultiLang("gtceu.gui.computer_monitor_cover.second_page_textbox_tooltip", + GTStringUtils.getIntOrderingSuffix(i + 1)))); + + int finalI = i; + if (i >= formatStringArgs.size()) formatStringArgs.add(""); + formatStringArgsInput.setCurrentString(formatStringArgs.get(i)); + formatStringArgsInput.setTextResponder((s) -> formatStringArgs.set(finalI, s)); + formatStringArgsPage.addWidget(formatStringArgsInput); + } + ButtonWidget switchToFormatStringArgsPageButton = new ButtonWidget( + horizontalPadding + 50, + 10 * (15 + verticalPadding) + verticalPadding, + 20, 20, + new ResourceBorderTexture(), + clickData -> { + group.clearAllWidgets(); + group.addWidget(formatStringArgsPage); + }); + ButtonWidget switchBack = new ButtonWidget( + horizontalPadding + 50, + 10 * (15 + verticalPadding) + verticalPadding, + 20, 20, + new ResourceBorderTexture(), + clickData -> { + group.clearAllWidgets(); + group.addWidget(mainPage); + }); + mainPage.addWidget(PlaceholderHandler.getPlaceholderHandlerUI("")); + // TextFieldWidget searchBox = new TextFieldWidget(280, 0, 80, 15, null, onSearch); + // searchBox.setHoverTooltips("Search"); + // mainPage.addWidget(searchBox); + IntInputWidget updateIntervalInput = new IntInputWidget(0, 0, 60, 20, this::getUpdateInterval, + this::setUpdateInterval); + updateIntervalInput.setMin(1); + updateIntervalInput.setMax(60 * 20); + updateIntervalInput + .setHoverTooltips(Component.translatable("gtceu.gui.computer_monitor_cover.update_interval")); + mainPage.addWidget(updateIntervalInput); + switchToFormatStringArgsPageButton + .setHoverTooltips(Component.translatable("gtceu.gui.computer_monitor_cover.edit_blank_placeholders")); + switchBack.setHoverTooltips(Component.translatable("gtceu.gui.computer_monitor_cover.edit_displayed_text")); + mainPage.addWidget(switchToFormatStringArgsPageButton); + formatStringArgsPage.addWidget(switchBack); + group.addWidget(mainPage); + return group; + } + + @Override + public void onLoad() { + super.onLoad(); + subscription = coverHolder.subscribeServerTick(subscription, this::update); + } + + private void update() { + ticksSincePlaced++; + if (coverHolder.getOffsetTimer() % updateInterval == 0) { + try { + if (GTCEu.Mods.isCreateLoaded()) + GTCreateIntegration.TemporaryRedstoneLinkTransmitter.destroyAll(); + setRedstoneSignalOutput(0); + text = getRenderedText(); + } catch (RuntimeException e) { + text = GTUtil + .list(Component.translatable("gtceu.computer_monitor_cover.error.exception", e.getMessage())); + } + } + } + + @Override + public void onRemoved() { + super.onRemoved(); + if (subscription != null) { + subscription.unsubscribe(); + } + } + + @Override + public boolean canConnectRedstone() { + return true; + } + + @Override + public List getAdditionalDrops() { + List drops = super.getAdditionalDrops(); + for (int i = 0; i < 8; i++) { + if (!itemStackHandler.getStackInSlot(i).isEmpty()) + drops.add(itemStackHandler.getStackInSlot(i)); + } + return drops; + } + + @Override + public InteractionResult onDataStickUse(Player player, ItemStack dataStick) { + CompoundTag tag = dataStick.getTagElement("computer_monitor_cover_config"); + if (tag == null) return InteractionResult.FAIL; + List stringLines = new ArrayList<>(); + ListTag stringLinesTag = tag.getList("lines", Tag.TAG_STRING); + for (int i = 0; i < stringLinesTag.size(); i++) stringLines.add(stringLinesTag.getString(i)); + formatStringLines.clear(); + formatStringLines.addAll(stringLines); + List stringArgs = new ArrayList<>(); + ListTag stringArgsTag = tag.getList("args", Tag.TAG_STRING); + for (int i = 0; i < stringArgsTag.size(); i++) stringArgs.add(stringArgsTag.getString(i)); + formatStringArgs.clear(); + formatStringArgs.addAll(stringArgs); + updateInterval = tag.getInt("updateInterval"); + return InteractionResult.SUCCESS; + } + + @Override + public InteractionResult onDataStickShiftUse(Player player, ItemStack dataStick) { + CompoundTag tag = dataStick.getOrCreateTagElement("computer_monitor_cover_config"); + ListTag stringLinesTag = new ListTag(); + formatStringLines.forEach(line -> stringLinesTag.add(StringTag.valueOf(line))); + tag.put("lines", stringLinesTag); + ListTag stringArgsTag = new ListTag(); + formatStringArgs.forEach(line -> stringArgsTag.add(StringTag.valueOf(line))); + tag.put("args", stringArgsTag); + tag.putInt("updateInterval", updateInterval); + return InteractionResult.SUCCESS; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/ConveyorCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/ConveyorCover.java index 27114314e47..fe13338548f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/ConveyorCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/ConveyorCover.java @@ -6,6 +6,7 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.cover.CoverBehavior; import com.gregtechceu.gtceu.api.cover.CoverDefinition; +import com.gregtechceu.gtceu.api.cover.IIOCover; import com.gregtechceu.gtceu.api.cover.IUICover; import com.gregtechceu.gtceu.api.cover.filter.FilterHandler; import com.gregtechceu.gtceu.api.cover.filter.FilterHandlers; @@ -56,14 +57,9 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/12 - * @implNote ConveyorCover - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class ConveyorCover extends CoverBehavior implements IUICover, IControllable { +public class ConveyorCover extends CoverBehavior implements IIOCover, IUICover, IControllable { public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(ConveyorCover.class, CoverBehavior.MANAGED_FIELD_HOLDER); diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/FacadeCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/FacadeCover.java index db5a45e0fb6..8ffc6882457 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/FacadeCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/FacadeCover.java @@ -14,7 +14,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; @@ -50,10 +49,7 @@ public ManagedFieldHolder getFieldHolder() { @Override public void onAttached(ItemStack itemStack, ServerPlayer player) { super.onAttached(itemStack, player); - var facadeStack = FacadeItemBehaviour.getFacadeStack(itemStack); - if (facadeStack.getItem() instanceof BlockItem blockItem) { - facadeState = blockItem.getBlock().defaultBlockState(); - } + this.facadeState = FacadeItemBehaviour.getFacadeState(itemStack); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/FluidFilterCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/FluidFilterCover.java index 4c196f74fbb..a5d95956215 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/FluidFilterCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/FluidFilterCover.java @@ -28,11 +28,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/13 - * @implNote ItemFilterCover - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class FluidFilterCover extends CoverBehavior implements IUICover { @@ -45,6 +40,7 @@ public class FluidFilterCover extends CoverBehavior implements IUICover { @Getter protected FilterMode filterMode = FilterMode.FILTER_INSERT; private FilteredFluidHandlerWrapper fluidFilterWrapper; + @Persisted @Setter @Getter protected ManualIOMode allowFlow = ManualIOMode.DISABLED; diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/FluidRegulatorCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/FluidRegulatorCover.java index 24bc9865896..95e2058b9d5 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/FluidRegulatorCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/FluidRegulatorCover.java @@ -25,8 +25,6 @@ import lombok.Getter; import org.jetbrains.annotations.NotNull; -import java.util.Map; - import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault @@ -133,28 +131,23 @@ private int keepExact(IFluidHandlerModifiable source, IFluidHandlerModifiable de int platformTransferLimit) { int fluidLeftToTransfer = platformTransferLimit; - final Map sourceAmounts = enumerateDistinctFluids(source, TransferDirection.EXTRACT); - final Map destinationAmounts = enumerateDistinctFluids(destination, - TransferDirection.INSERT); + var sourceAmounts = enumerateDistinctFluids(source, TransferDirection.EXTRACT); + var destinationAmounts = enumerateDistinctFluids(destination, TransferDirection.INSERT); for (FluidStack fluidStack : sourceAmounts.keySet()) { - if (fluidLeftToTransfer <= 0) - break; + if (fluidLeftToTransfer <= 0) break; int amountToKeep = getFilteredFluidAmount(fluidStack); - int amountInDest = destinationAmounts.getOrDefault(fluidStack, 0); - if (amountInDest >= amountToKeep) - continue; + long amountInDest = destinationAmounts.getOrDefault(fluidStack, 0); + if (amountInDest >= amountToKeep) continue; FluidStack fluidToMove = fluidStack.copy(); - fluidToMove.setAmount(Math.min(fluidLeftToTransfer, amountToKeep - amountInDest)); - if (fluidToMove.getAmount() <= 0) - continue; + fluidToMove.setAmount(Math.min(fluidLeftToTransfer, (int) (amountToKeep - amountInDest))); + if (fluidToMove.getAmount() <= 0) continue; FluidStack drained = source.drain(fluidToMove, FluidAction.SIMULATE); int fillableAmount = destination.fill(drained, FluidAction.SIMULATE); - if (fillableAmount <= 0) - continue; + if (fillableAmount <= 0) continue; fluidToMove.setAmount(Math.min(fluidToMove.getAmount(), fillableAmount)); diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/InfiniteWaterCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/InfiniteWaterCover.java index ca09deade6b..6c8db9886cf 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/InfiniteWaterCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/InfiniteWaterCover.java @@ -15,11 +15,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/15 - * @implNote InfiniteWaterCover - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class InfiniteWaterCover extends CoverBehavior { diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/ItemFilterCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/ItemFilterCover.java index a4d9b39b210..46bcbcff06e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/ItemFilterCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/ItemFilterCover.java @@ -33,11 +33,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/13 - * @implNote ItemFilterCover - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class ItemFilterCover extends CoverBehavior implements IUICover { @@ -51,6 +46,7 @@ public class ItemFilterCover extends CoverBehavior implements IUICover { @Getter protected FilterMode filterMode = FilterMode.FILTER_INSERT; private FilteredItemHandlerWrapper itemFilterWrapper; + @Persisted @Setter @Getter protected ManualIOMode allowFlow = ManualIOMode.DISABLED; diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/PumpCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/PumpCover.java index 2989cff0a2c..f0ed3536ce0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/PumpCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/PumpCover.java @@ -6,6 +6,7 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.cover.CoverBehavior; import com.gregtechceu.gtceu.api.cover.CoverDefinition; +import com.gregtechceu.gtceu.api.cover.IIOCover; import com.gregtechceu.gtceu.api.cover.IUICover; import com.gregtechceu.gtceu.api.cover.filter.FilterHandler; import com.gregtechceu.gtceu.api.cover.filter.FilterHandlers; @@ -19,7 +20,6 @@ import com.gregtechceu.gtceu.api.transfer.fluid.ModifiableFluidHandlerWrapper; import com.gregtechceu.gtceu.common.cover.data.BucketMode; import com.gregtechceu.gtceu.common.cover.data.ManualIOMode; -import com.gregtechceu.gtceu.utils.FluidStackHashStrategy; import com.gregtechceu.gtceu.utils.GTTransferUtils; import com.lowdragmc.lowdraglib.gui.widget.LabelWidget; @@ -40,25 +40,20 @@ import net.minecraftforge.fluids.capability.IFluidHandler; import it.unimi.dsi.fastutil.ints.Int2IntFunction; -import it.unimi.dsi.fastutil.objects.Object2IntOpenCustomHashMap; +import it.unimi.dsi.fastutil.objects.Object2LongMap; +import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap; import lombok.Getter; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; import java.util.List; -import java.util.Map; import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/12 - * @implNote PumpCover - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class PumpCover extends CoverBehavior implements IUICover, IControllable { +public class PumpCover extends CoverBehavior implements IIOCover, IUICover, IControllable { public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(PumpCover.class, CoverBehavior.MANAGED_FIELD_HOLDER); @@ -266,23 +261,17 @@ protected enum TransferDirection { EXTRACT } - protected Map enumerateDistinctFluids(IFluidHandlerModifiable fluidHandler, - TransferDirection direction) { - final Map summedFluids = new Object2IntOpenCustomHashMap<>( - FluidStackHashStrategy.comparingAllButAmount()); - + protected Object2LongMap enumerateDistinctFluids(IFluidHandlerModifiable fluidHandler, + TransferDirection direction) { + // Long map because we could have multiple tanks of the same fluid summing up to > Integer.MAX_VALUE + var summedFluids = new Object2LongOpenHashMap(); for (int tank = 0; tank < fluidHandler.getTanks(); tank++) { - if (!canTransfer(fluidHandler, direction, tank)) - continue; + if (!canTransfer(fluidHandler, direction, tank)) continue; FluidStack fluidStack = fluidHandler.getFluidInTank(tank); - if (fluidStack.isEmpty()) - continue; + if (fluidStack.isEmpty()) continue; - summedFluids.putIfAbsent(fluidStack, 0); - summedFluids.computeIfPresent(fluidStack, (stack, totalAmount) -> { - return totalAmount + stack.getAmount(); - }); + summedFluids.addTo(fluidStack, fluidStack.getAmount()); } return summedFluids; diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/WirelessTransmitterCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/WirelessTransmitterCover.java new file mode 100644 index 00000000000..b66b219ca89 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/WirelessTransmitterCover.java @@ -0,0 +1,65 @@ +package com.gregtechceu.gtceu.common.cover; + +import com.gregtechceu.gtceu.api.capability.ICoverable; +import com.gregtechceu.gtceu.api.cover.CoverBehavior; +import com.gregtechceu.gtceu.api.cover.CoverDefinition; +import com.gregtechceu.gtceu.api.machine.feature.IDataStickInteractable; +import com.gregtechceu.gtceu.api.placeholder.IPlaceholderInfoProviderCover; + +import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; + +import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.core.Direction; +import net.minecraft.network.chat.ComponentContents; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; + +import lombok.Getter; + +import java.util.ArrayList; +import java.util.List; + +import javax.annotation.ParametersAreNonnullByDefault; + +@MethodsReturnNonnullByDefault +@ParametersAreNonnullByDefault +public class WirelessTransmitterCover extends CoverBehavior + implements IDataStickInteractable, IPlaceholderInfoProviderCover { + + private static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( + WirelessTransmitterCover.class, CoverBehavior.MANAGED_FIELD_HOLDER); + + @Getter + private final List createDisplayTargetBuffer = new ArrayList<>(); + + public WirelessTransmitterCover(CoverDefinition definition, ICoverable coverHolder, Direction attachedSide) { + super(definition, coverHolder, attachedSide); + for (int i = 0; i < 100; i++) createDisplayTargetBuffer.add(MutableComponent.create(ComponentContents.EMPTY)); + } + + @Override + public InteractionResult onDataStickUse(Player player, ItemStack dataStick) { + dataStick.getOrCreateTag().putInt("targetX", coverHolder.getPos().getX()); + dataStick.getOrCreateTag().putInt("targetY", coverHolder.getPos().getY()); + dataStick.getOrCreateTag().putInt("targetZ", coverHolder.getPos().getZ()); + dataStick.getOrCreateTag().putString("face", attachedSide.getName()); + return InteractionResult.SUCCESS; + } + + @Override + public long getTicksSincePlaced() { + return coverHolder.getOffsetTimer(); + } + + @Override + public void setDisplayTargetBufferLine(int line, MutableComponent component) { + createDisplayTargetBuffer.set(line, component); + } + + @Override + public ManagedFieldHolder getFieldHolder() { + return MANAGED_FIELD_HOLDER; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/detector/AdvancedEnergyDetectorCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/detector/AdvancedEnergyDetectorCover.java index 667a7cb2cfb..87444820b26 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/detector/AdvancedEnergyDetectorCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/detector/AdvancedEnergyDetectorCover.java @@ -24,6 +24,7 @@ import lombok.Getter; import lombok.Setter; +import java.math.BigInteger; import java.util.List; import javax.annotation.ParametersAreNonnullByDefault; @@ -49,6 +50,7 @@ public ManagedFieldHolder getFieldHolder() { @Getter @Setter public long minValue, maxValue; + @Persisted @Getter private boolean usePercent; @@ -68,27 +70,39 @@ protected void update() { if (coverHolder.getOffsetTimer() % 20 != 0) return; IEnergyInfoProvider energyInfoProvider = getEnergyInfoProvider(); - - if (energyInfoProvider == null) { - return; - } - - // TODO properly support values > MAX_LONG - IEnergyInfoProvider.EnergyInfo energyInfo = energyInfoProvider.getEnergyInfo(); - long capacity = energyInfo.capacity().longValue(); - long stored = energyInfo.stored().longValue(); - - if (usePercent) { - if (capacity > 0) { - float ratio = (float) stored / capacity; - setRedstoneSignalOutput(computeLatchedRedstoneBetweenValues(ratio * 100, maxValue, - minValue, isInverted(), redstoneSignalOutput)); + if (energyInfoProvider == null) return; + + var energyInfo = energyInfoProvider.getEnergyInfo(); + var isBigInt = energyInfoProvider.supportsBigIntEnergyValues(); + + if (isBigInt) { + if (usePercent) { + if (energyInfo.capacity().compareTo(BigInteger.ZERO) > 0) { + var ratio = GTMath.ratio(energyInfo.stored(), energyInfo.capacity()); + setRedstoneSignalOutput(computeLatchedRedstoneBetweenValues(ratio * 100, maxValue, + minValue, isInverted(), redstoneSignalOutput)); + } else { + setRedstoneSignalOutput(isInverted() ? 15 : 0); + } } else { - setRedstoneSignalOutput(isInverted() ? 0 : 15); + setRedstoneSignalOutput(computeLatchedRedstoneBetweenValues(energyInfo.stored(), + BigInteger.valueOf(this.maxValue), BigInteger.valueOf(this.minValue), + isInverted(), redstoneSignalOutput)); } } else { - setRedstoneSignalOutput(computeLatchedRedstoneBetweenValues(stored, this.maxValue, this.minValue, - isInverted(), redstoneSignalOutput)); + if (usePercent) { + if (energyInfo.capacity().longValue() > 0) { + var ratio = energyInfo.stored().longValue() / energyInfo.capacity().longValue(); + setRedstoneSignalOutput(computeLatchedRedstoneBetweenValues(ratio * 100, maxValue, + minValue, isInverted(), redstoneSignalOutput)); + } else { + setRedstoneSignalOutput(isInverted() ? 15 : 0); + } + } else { + setRedstoneSignalOutput(computeLatchedRedstoneBetweenValues(energyInfo.stored().longValue(), + this.maxValue, this.minValue, + isInverted(), redstoneSignalOutput)); + } } } @@ -141,7 +155,12 @@ private void initializeMinMaxInputs(boolean wasPercent) { if (GTCEu.isClientThread() || minValueInput == null || maxValueInput == null) return; - long energyCapacity = getEnergyInfoProvider().getEnergyInfo().capacity().longValue(); + long energyCapacity; + try { + energyCapacity = getEnergyInfoProvider().getEnergyInfo().capacity().longValueExact(); + } catch (ArithmeticException e) { + energyCapacity = Long.MAX_VALUE; + } minValueInput.setMin(0L); maxValueInput.setMin(0L); diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/detector/EnergyDetectorCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/detector/EnergyDetectorCover.java index 54832a98cff..99b25f520f4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/detector/EnergyDetectorCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/detector/EnergyDetectorCover.java @@ -10,6 +10,8 @@ import org.jetbrains.annotations.Nullable; +import java.math.BigInteger; + public class EnergyDetectorCover extends DetectorCover { public EnergyDetectorCover(CoverDefinition definition, ICoverable coverHolder, Direction attachedSide) { @@ -27,18 +29,23 @@ protected void update() { return; IEnergyInfoProvider energyInfoProvider = getEnergyInfoProvider(); - if (energyInfoProvider == null) - return; + if (energyInfoProvider == null) return; var energyInfo = energyInfoProvider.getEnergyInfo(); + var isBigInt = energyInfoProvider.supportsBigIntEnergyValues(); - long storedEnergy = energyInfo.stored().longValue(); - long energyCapacity = energyInfo.capacity().longValue(); + if (isBigInt) { + if (energyInfo.capacity().equals(BigInteger.ZERO)) return; - if (energyCapacity == 0) - return; + setRedstoneSignalOutput( + RedstoneUtil.computeRedstoneValue(energyInfo.stored(), energyInfo.capacity(), isInverted())); + } else { + long storedEnergy = energyInfo.stored().longValue(); + long energyCapacity = energyInfo.capacity().longValue(); + if (energyCapacity == 0) return; - setRedstoneSignalOutput(RedstoneUtil.computeRedstoneValue(storedEnergy, energyCapacity, isInverted())); + setRedstoneSignalOutput(RedstoneUtil.computeRedstoneValue(storedEnergy, energyCapacity, isInverted())); + } } @Nullable diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/ender/AbstractEnderLinkCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/ender/AbstractEnderLinkCover.java new file mode 100644 index 00000000000..65ccd50b0b4 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/ender/AbstractEnderLinkCover.java @@ -0,0 +1,514 @@ +package com.gregtechceu.gtceu.common.cover.ender; + +import com.gregtechceu.gtceu.api.capability.IControllable; +import com.gregtechceu.gtceu.api.capability.ICoverable; +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.cover.CoverBehavior; +import com.gregtechceu.gtceu.api.cover.CoverDefinition; +import com.gregtechceu.gtceu.api.cover.IUICover; +import com.gregtechceu.gtceu.api.cover.filter.FilterHandler; +import com.gregtechceu.gtceu.api.gui.GuiTextures; +import com.gregtechceu.gtceu.api.gui.widget.ColorBlockWidget; +import com.gregtechceu.gtceu.api.gui.widget.ConfirmTextInputWidget; +import com.gregtechceu.gtceu.api.gui.widget.EnumSelectorWidget; +import com.gregtechceu.gtceu.api.gui.widget.ToggleButtonWidget; +import com.gregtechceu.gtceu.api.machine.ConditionalSubscriptionHandler; +import com.gregtechceu.gtceu.api.machine.MachineCoverContainer; +import com.gregtechceu.gtceu.api.misc.virtualregistry.EntryTypes; +import com.gregtechceu.gtceu.api.misc.virtualregistry.VirtualEnderRegistry; +import com.gregtechceu.gtceu.api.misc.virtualregistry.VirtualEntry; +import com.gregtechceu.gtceu.api.misc.virtualregistry.entries.VirtualTank; +import com.gregtechceu.gtceu.common.cover.data.ManualIOMode; + +import com.lowdragmc.lowdraglib.gui.editor.ColorPattern; +import com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup; +import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; +import com.lowdragmc.lowdraglib.gui.texture.TextTexture; +import com.lowdragmc.lowdraglib.gui.widget.*; +import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; +import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; +import com.lowdragmc.lowdraglib.syncdata.annotation.RequireRerender; +import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; + +import net.minecraft.ChatFormatting; +import net.minecraft.core.Direction; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.item.ItemStack; + +import lombok.Getter; +import org.apache.commons.lang3.mutable.MutableBoolean; +import org.jetbrains.annotations.Contract; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.*; +import java.util.regex.Pattern; + +@SuppressWarnings("SameParameterValue") +public abstract class AbstractEnderLinkCover extends CoverBehavior + implements IUICover, IControllable { + + public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(AbstractEnderLinkCover.class, + CoverBehavior.MANAGED_FIELD_HOLDER); + public static final Pattern COLOR_INPUT_PATTERN = Pattern.compile("^[0-9a-fA-F]{0,8}$"); + + protected final ConditionalSubscriptionHandler subscriptionHandler; + + @Persisted + @DescSynced + protected String colorStr = VirtualEntry.DEFAULT_COLOR; + @Getter + @Persisted + @DescSynced + protected Permissions permission = Permissions.PUBLIC; + @Persisted + @Getter + protected boolean isWorkingEnabled = true; + @Getter + @Persisted + @DescSynced + protected ManualIOMode manualIOMode = ManualIOMode.DISABLED; + @Getter + @Persisted + @DescSynced + @RequireRerender + protected IO io = IO.OUT; + protected VirtualEntryWidget virtualEntryWidget; + @DescSynced + boolean isAnyChanged = false; + + public AbstractEnderLinkCover(CoverDefinition definition, ICoverable coverHolder, Direction attachedSide) { + super(definition, coverHolder, attachedSide); + subscriptionHandler = new ConditionalSubscriptionHandler(coverHolder, this::update, this::isSubscriptionActive); + } + + @Override + public void onLoad() { + super.onLoad(); + subscriptionHandler.initialize(coverHolder.getLevel()); + } + + @Override + public abstract boolean canAttach(); + + @Override + public void onAttached(@NotNull ItemStack itemStack, @NotNull ServerPlayer player) { + super.onAttached(itemStack, player); + } + + @Override + public void onRemoved() { + super.onRemoved(); + subscriptionHandler.unsubscribe(); + if (!isRemote()) { + VirtualEnderRegistry.getInstance() + .deleteEntryIf(getOwner(), getEntryType(), getChannelName(), VirtualEntry::canRemove); + } + } + + @Override + public void onUnload() { + super.onUnload(); + subscriptionHandler.unsubscribe(); + if (!isRemote()) { + VirtualEnderRegistry.getInstance() + .deleteEntryIf(getOwner(), getEntryType(), getChannelName(), VirtualEntry::canRemove); + } + } + + @Override + public void onUIClosed() { + virtualEntryWidget = null; + } + + @Override + public void setWorkingEnabled(boolean isWorkingAllowed) { + if (this.isWorkingEnabled != isWorkingAllowed) { + this.isWorkingEnabled = isWorkingAllowed; + subscriptionHandler.updateSubscription(); + } + } + + @Override + public Widget createUIWidget() { + virtualEntryWidget = new VirtualEntryWidget(this); + return virtualEntryWidget; + } + + @Override + public @NotNull ManagedFieldHolder getFieldHolder() { + return MANAGED_FIELD_HOLDER; + } + + public void setIo(IO io) { + if (io == IO.IN || io == IO.OUT) { + this.io = io; + subscriptionHandler.updateSubscription(); + } + } + + public UUID getOwner() { + if (permission == Permissions.PRIVATE && coverHolder instanceof MachineCoverContainer mcc) { + var owner = mcc.getMachine().getOwner(); + return owner != null ? owner.getPlayerUUID() : null; + } + return null; + } + + protected boolean isSubscriptionActive() { + return isWorkingEnabled(); + } + + protected abstract String identifier(); + + protected abstract VirtualEntry getEntry(); + + protected abstract void setEntry(VirtualEntry entry); + + protected final String getChannelName() { + return identifier() + this.colorStr; + } + + protected void setChannelName(String name) { + if (isRemote()) return; + VirtualEnderRegistry.getInstance().deleteEntryIf(getOwner(), getEntryType(), getChannelName(), + VirtualEntry::canRemove); + this.colorStr = name; + setVirtualEntry(); + } + + protected final String getChannelName(VirtualEntry entry) { + return identifier() + entry.getColorStr(); + } + + protected void setPermission(Permissions permission) { + if (isRemote()) return; + VirtualEnderRegistry.getInstance().deleteEntryIf(getOwner(), getEntryType(), getChannelName(), + VirtualEntry::canRemove); + this.permission = permission; + setVirtualEntry(); + } + + protected void setVirtualEntry() { + setEntry(VirtualEnderRegistry.getInstance().getOrCreateEntry(getOwner(), getEntryType(), getChannelName())); + getEntry().setColor(this.colorStr); + this.isAnyChanged = true; + subscriptionHandler.updateSubscription(); + } + + protected abstract EntryTypes getEntryType(); + + protected void update() { + long timer = coverHolder.getOffsetTimer(); + if (timer % 5 != 0) return; + + if (isWorkingEnabled() && !isRemote()) { + var entry = VirtualEnderRegistry.getInstance().getOrCreateEntry(getOwner(), getEntryType(), + getChannelName()); + if (!entry.getColorStr().equals(this.colorStr)) { + entry.setColor(this.colorStr); + } + if (!getEntry().equals(entry)) { + setEntry(entry); + } + transfer(); + } + + if (isAnyChanged) { + if (virtualEntryWidget != null) virtualEntryWidget.update(); + isAnyChanged = false; + } + subscriptionHandler.updateSubscription(); + } + + protected abstract void transfer(); + + protected void setManualIOMode(ManualIOMode manualIOMode) { + this.manualIOMode = manualIOMode; + subscriptionHandler.updateSubscription(); + } + + @Nullable + protected FilterHandler getFilterHandler() { + return null; + } + + protected abstract Widget addVirtualEntryWidget(VirtualEntry entry, int x, int y, int width, int height, + boolean canClick); + + protected abstract String getUITitle(); + + protected int getColor() { + return VirtualEntry.parseColor(this.colorStr); + } + + protected enum Permissions implements EnumSelectorWidget.SelectableEnum { + + PUBLIC("cover.ender_fluid_link.private.tooltip.disabled", + GuiTextures.BUTTON_PUBLIC_PRIVATE.getSubTexture(0, 0, 1, 0.5)), + + PRIVATE("cover.ender_fluid_link.private.tooltip.enabled", + GuiTextures.BUTTON_PUBLIC_PRIVATE.getSubTexture(0, 0.5, 1, 0.5)); + + @Getter + private final String tooltip; + @Getter + private final IGuiTexture icon; + + Permissions(String tooltip, IGuiTexture icon) { + this.tooltip = tooltip; + this.icon = icon; + } + } + + protected static class VirtualEntryWidget extends WidgetGroup { + + private static final int WIDGET_BOARD = 20; + private static final int GROUP_WIDTH = 176; + private static final int TOTAL_WIDTH = 156; + private static final int BUTTON_SIZE = 16; + private final AbstractEnderLinkCover cover; + private final MutableBoolean showChannels; + private final WidgetGroup mainGroup; + private final WidgetGroup mainChannelGroup; + private final DraggableScrollableWidgetGroup channelsGroup; // client only + + VirtualEntryWidget(AbstractEnderLinkCover cover) { + super(0, 0, GROUP_WIDTH, 137); + this.cover = cover; + this.showChannels = new MutableBoolean(false); + mainGroup = new WidgetGroup(0, 0, GROUP_WIDTH, 137); + channelsGroup = new DraggableScrollableWidgetGroup(0, 20, 170, 110) + .setYScrollBarWidth(2).setYBarStyle(null, ColorPattern.T_WHITE.rectTexture().setRadius(1)); + mainChannelGroup = new WidgetGroup(10, 20, 156, 20); + initWidgets(); + } + + public void update() { + if (isRemote()) return; + widgets.clear(); + mainGroup.widgets.clear(); + channelsGroup.widgets.clear(); + mainChannelGroup.widgets.clear(); + initWidgets(); + this.detectAndSendChanges(); + } + + private void initWidgets() { + int currentX = 0; + final var titleGroup = new WidgetGroup(10, 5, GROUP_WIDTH, 20); + + this.addWidget(titleGroup); + this.addWidget(mainGroup); + this.addWidget(channelsGroup.setVisible(false)); + + titleGroup.addWidget(createToggleButton()); + titleGroup.addWidget(new LabelWidget(15, 3, cover.getUITitle())); + + var toggleButtonWidget = createToggleButtonForPrivacy(currentX); + mainChannelGroup.addWidget(toggleButtonWidget); + currentX += WIDGET_BOARD + 2; + mainChannelGroup.addWidget(createColorBlockWidget(currentX)); + currentX += WIDGET_BOARD + 2; + mainChannelGroup.addWidget(createConfirmTextInputWidget(currentX)); + + mainChannelGroup.addWidget(new ConfirmTextInputWidget(0, WIDGET_BOARD + 2, GROUP_WIDTH - WIDGET_BOARD, + WIDGET_BOARD, cover.getEntry().getDescription(), cover.getEntry()::setDescription, + t -> t == null ? "" : t, null).setTooltip("cover.ender_fluid_link.tooltip.channel_description")); + + mainGroup.addWidget(mainChannelGroup); + mainGroup.addWidget(createWorkingEnabledButton()); + addEnumSelectorWidgets(); + mainGroup.addWidget( + cover.addVirtualEntryWidget(cover.getEntry(), 146, WIDGET_BOARD, WIDGET_BOARD, WIDGET_BOARD, true)); + + if (cover.getFilterHandler() != null) { + mainGroup.addWidget(cover.getFilterHandler().createFilterSlotUI(117, 108)); + mainGroup.addWidget(cover.getFilterHandler().createFilterConfigUI(10, 72, 156, 60)); + } + } + + @Contract(" -> new") + private @NotNull ToggleButtonWidget createToggleButton() { + return (ToggleButtonWidget) new ToggleButtonWidget(0, 0, 12, 12, showChannels::getValue, cd -> { + showChannels.setValue(!showChannels.getValue()); + mainGroup.setVisible(showChannels.isFalse()); + channelsGroup.setVisible(showChannels.isTrue()); + requestUpdate(); + }).setTexture( + new GuiTextureGroup(GuiTextures.TOGGLE_BUTTON_BACK.getSubTexture(0, 0, 1, 0.5), + GuiTextures.BUTTON_LIST), + new GuiTextureGroup(GuiTextures.TOGGLE_BUTTON_BACK.getSubTexture(0, 0.5, 1, 0.5), + GuiTextures.BUTTON_LIST)) + .setHoverTooltips("cover.ender_fluid_link.tooltip.list_button"); + } + + @Contract("_ -> new") + private @NotNull Widget createToggleButtonForPrivacy(int currentX) { + return new EnumSelectorWidget<>(currentX, 0, + WIDGET_BOARD, WIDGET_BOARD, Permissions.values(), cover.permission, cover::setPermission); + } + + private ColorBlockWidget createColorBlockWidget(int currentX) { + return new ColorBlockWidget(currentX, 0, WIDGET_BOARD, WIDGET_BOARD).setColorSupplier(cover::getColor); + } + + private ConfirmTextInputWidget createConfirmTextInputWidget(int currentX) { + int GROUP_X = 10; + int textInputWidth = (GROUP_WIDTH - GROUP_X * 2) - currentX - WIDGET_BOARD - 2; + return new ConfirmTextInputWidget(currentX, 0, textInputWidth, WIDGET_BOARD, cover.colorStr, + cover::setChannelName, text -> { + if (text == null || !COLOR_INPUT_PATTERN.matcher(text).matches()) { + return VirtualTank.DEFAULT_COLOR; + } + return text; + }, text -> { + if (text.length() < 8) { + text += "F".repeat(8 - text.length()); + } + return text; + }).setTooltip("cover.ender_fluid_link.tooltip.channel_name"); + } + + @Contract(" -> new") + private @NotNull ToggleButtonWidget createWorkingEnabledButton() { + return new ToggleButtonWidget(116, 82, WIDGET_BOARD, WIDGET_BOARD, GuiTextures.BUTTON_POWER, + cover::isWorkingEnabled, cover::setWorkingEnabled); + } + + private void addEnumSelectorWidgets() { + mainGroup.addWidget(new EnumSelectorWidget<>(146, 82, WIDGET_BOARD, WIDGET_BOARD, List.of(IO.IN, IO.OUT), + cover.io, cover::setIo)); + mainGroup.addWidget(new EnumSelectorWidget<>(146, 107, WIDGET_BOARD, WIDGET_BOARD, ManualIOMode.VALUES, + cover.manualIOMode, cover::setManualIOMode) + .setHoverTooltips("cover.universal.manual_import_export.mode.description")); + } + + private void addChannelWidgets(List entries) { + channelsGroup.clearAllWidgets(); + int y = 1; + SelectableWidgetGroup selectedWidget = null; + for (var entry : entries.stream().sorted(Comparator.comparing(VirtualEntry::getColorStr)).toList()) { + SelectableWidgetGroup channelWidget = createChannelWidget(entry, 10, y); + if (cover.getChannelName(entry).equals(cover.getChannelName())) { + selectedWidget = channelWidget; + } + channelsGroup.addWidget(channelWidget); + y += 22; + } + channelsGroup.setSelected(selectedWidget); + if (selectedWidget != null) selectedWidget.onSelected(); + channelsGroup.setClientSideWidget(); + } + + private @NotNull SelectableWidgetGroup createChannelWidget(@NotNull VirtualEntry entry, int x, int y) { + int currentX = 0; + int MARGIN = 2; + int availableWidth = TOTAL_WIDTH - (BUTTON_SIZE + MARGIN) * 3; + + final MutableBoolean canSelect = new MutableBoolean(false); + var des = entry.getDescription(); + TextBoxWidget textBoxWidget = new TextBoxWidget(BUTTON_SIZE + MARGIN, + !des.isEmpty() ? 0 : 4, availableWidth, List.of(entry.getColorStr())).setCenter(true); + SelectableWidgetGroup channelGroup = new SelectableWidgetGroup(x, y, TOTAL_WIDTH, BUTTON_SIZE) { + + @Override + public boolean allowSelected(double mouseX, double mouseY, int button) { + return canSelect.getValue() && super.allowSelected(mouseX, mouseY, button); + } + }; + channelGroup.setOnSelected(group -> { + if (cover.getChannelName().equals(cover.getChannelName(entry))) return; + writeClientAction(0, buffer -> { + // send new channel name to server + String newChannelColorStr = entry.getColorStr(); + buffer.writeUtf(newChannelColorStr); + }); + playButtonClickSound(); + }).setSelectedTexture(1, -1); + + // Color block + ColorBlockWidget colorBlockWidget = new ColorBlockWidget(currentX, 0, BUTTON_SIZE, BUTTON_SIZE) + .setCurrentColor(VirtualEntry.parseColor(entry.getColorStr())); + channelGroup.addWidget(colorBlockWidget); + currentX += BUTTON_SIZE + MARGIN; + + // Text box + channelGroup.addWidget(textBoxWidget); + currentX += availableWidth + MARGIN; + if (!des.isEmpty()) { + var desText = new TextTexture(ChatFormatting.DARK_GRAY + des).setDropShadow(false); + desText.setType(TextTexture.TextType.ROLL).setRollSpeed(0.7f); + channelGroup.addWidget(new ImageWidget(BUTTON_SIZE + MARGIN, 10, availableWidth, 8, desText)); + } + + // Slot + Widget slotWidget = cover.addVirtualEntryWidget(entry, currentX, 0, BUTTON_SIZE, BUTTON_SIZE, false); + channelGroup.addWidget(slotWidget); + currentX += BUTTON_SIZE + MARGIN; + + // Clear Description button + channelGroup.addWidget( + new ButtonWidget(currentX, 0, BUTTON_SIZE, BUTTON_SIZE, GuiTextures.BUTTON_CLEAR_GRID, press -> { + writeClientAction(200, buffer -> buffer.writeUtf(cover.getChannelName(entry))); + requestUpdate(); + }) { + + @Override + public boolean isMouseOverElement(double mouseX, double mouseY) { + var isOver = super.isMouseOverElement(mouseX, mouseY); + if (canSelect.getValue() == isOver) canSelect.setValue(!isOver); + return isOver; + } + }.appendHoverTooltips("cover.ender_fluid_link.tooltip.clear_button")); + + return channelGroup; + } + + private void requestUpdate() { + writeClientAction(100, buffer -> buffer.writeBoolean(showChannels.isTrue())); + } + + @Override + public void handleClientAction(int id, FriendlyByteBuf buffer) { + super.handleClientAction(id, buffer); + if (id == 0) { + String newChannelColorStr = buffer.readUtf(); + cover.setChannelName(newChannelColorStr); + } else if (id == 100) { + if (!buffer.readBoolean()) return; + var entries = VirtualEnderRegistry.getInstance().getEntryNames(cover.getOwner(), cover.getEntryType()) + .stream().map(name -> VirtualEnderRegistry.getInstance().getEntry(cover.getOwner(), + cover.getEntryType(), name)) + .sorted(Comparator.comparing(VirtualEntry::getColorStr)); + writeUpdateInfo(101, buf -> { + var list = entries.toList(); + buf.writeVarInt(list.size()); + for (var entry : list) { + buf.writeNbt(entry.serializeNBT()); + } + }); + } else if (id == 200) { + String channelName = buffer.readUtf(); + VirtualEnderRegistry.getInstance().getEntry(cover.getOwner(), cover.getEntryType(), channelName) + .setDescription(""); + } + } + + @Override + public void readUpdateInfo(int id, FriendlyByteBuf buffer) { + super.readUpdateInfo(id, buffer); + if (id == 101) { + int size = buffer.readVarInt(); + List entries = new ArrayList<>(); + for (int i = 0; i < size; i++) { + VirtualEntry entry = cover.getEntryType().createInstance(); + entry.deserializeNBT(Objects.requireNonNull(buffer.readNbt())); + entries.add(entry); + } + addChannelWidgets(entries); + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/ender/EnderFluidLinkCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/ender/EnderFluidLinkCover.java new file mode 100644 index 00000000000..f4660d14df0 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/ender/EnderFluidLinkCover.java @@ -0,0 +1,135 @@ +package com.gregtechceu.gtceu.common.cover.ender; + +import com.gregtechceu.gtceu.api.capability.ICoverable; +import com.gregtechceu.gtceu.api.cover.CoverDefinition; +import com.gregtechceu.gtceu.api.cover.filter.FilterHandler; +import com.gregtechceu.gtceu.api.cover.filter.FilterHandlers; +import com.gregtechceu.gtceu.api.cover.filter.FluidFilter; +import com.gregtechceu.gtceu.api.gui.GuiTextures; +import com.gregtechceu.gtceu.api.gui.widget.TankWidget; +import com.gregtechceu.gtceu.api.misc.virtualregistry.EntryTypes; +import com.gregtechceu.gtceu.api.misc.virtualregistry.VirtualEnderRegistry; +import com.gregtechceu.gtceu.api.misc.virtualregistry.VirtualEntry; +import com.gregtechceu.gtceu.api.misc.virtualregistry.entries.VirtualTank; +import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; +import com.gregtechceu.gtceu.utils.GTTransferUtils; + +import com.lowdragmc.lowdraglib.gui.widget.*; +import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; +import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; +import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; + +import net.minecraft.core.Direction; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidUtil; + +import lombok.Getter; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import javax.annotation.ParametersAreNonnullByDefault; + +@ParametersAreNonnullByDefault +public class EnderFluidLinkCover extends AbstractEnderLinkCover { + + public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(EnderFluidLinkCover.class, + AbstractEnderLinkCover.MANAGED_FIELD_HOLDER); + public static final int TRANSFER_RATE = 8000; // mB/t + + @Persisted + @DescSynced + protected VirtualTank visualTank; + + @Getter + @Persisted + @DescSynced + protected final FilterHandler filterHandler; + protected int mBLeftToTransferLastSecond; + + public EnderFluidLinkCover(CoverDefinition definition, ICoverable coverHolder, Direction attachedSide) { + super(definition, coverHolder, attachedSide); + this.mBLeftToTransferLastSecond = TRANSFER_RATE * 20; + filterHandler = FilterHandlers.fluid(this); + if (!isRemote()) visualTank = VirtualEnderRegistry.getInstance() + .getOrCreateEntry(getOwner(), EntryTypes.ENDER_FLUID, getChannelName()); + } + + @Override + protected VirtualTank getEntry() { + return visualTank; + } + + @Override + protected void setEntry(VirtualEntry entry) { + visualTank = (VirtualTank) entry; + } + + @Override + public boolean canAttach() { + return FluidUtil.getFluidHandler(coverHolder.getLevel(), coverHolder.getPos(), attachedSide).isPresent(); + } + + @Override + protected EntryTypes getEntryType() { + return EntryTypes.ENDER_FLUID; + } + + @Override + protected String identifier() { + return "EFLink#"; + } + + @Override + protected void transfer() { + long timer = coverHolder.getOffsetTimer(); + if (mBLeftToTransferLastSecond > 0) { + int platformTransferredFluid = doTransferFluids(mBLeftToTransferLastSecond); + this.mBLeftToTransferLastSecond -= platformTransferredFluid; + } + + if (timer % 20 == 0) { + this.mBLeftToTransferLastSecond = TRANSFER_RATE * 20; + } + } + + protected @Nullable IFluidHandlerModifiable getOwnFluidHandler() { + return coverHolder.getFluidHandlerCap(attachedSide, false); + } + + private int doTransferFluids(int platformTransferLimit) { + var ownFluidHandler = getOwnFluidHandler(); + + if (ownFluidHandler != null) { + return switch (io) { + case IN -> GTTransferUtils.transferFluidsFiltered(ownFluidHandler, visualTank.getFluidTank(), + filterHandler.getFilter(), platformTransferLimit); + case OUT -> GTTransferUtils.transferFluidsFiltered(visualTank.getFluidTank(), ownFluidHandler, + filterHandler.getFilter(), platformTransferLimit); + default -> 0; + }; + + } + return 0; + } + + @Override + public @NotNull ManagedFieldHolder getFieldHolder() { + return MANAGED_FIELD_HOLDER; + } + + ////////////////////////////////////// + // ************ GUI ************ // + ////////////////////////////////////// + + @Override + protected Widget addVirtualEntryWidget(VirtualEntry entry, int x, int y, int width, int height, boolean canClick) { + return new TankWidget(((VirtualTank) entry).getFluidTank(), 0, x, y, width, height, canClick, canClick) + .setBackground(GuiTextures.FLUID_SLOT); + } + + @NotNull + @Override + protected String getUITitle() { + return "cover.ender_fluid_link.title"; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/AdvancedFluidVoidingCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/AdvancedFluidVoidingCover.java index 6c547b35a46..a9da558c8f7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/AdvancedFluidVoidingCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/AdvancedFluidVoidingCover.java @@ -10,6 +10,7 @@ import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; import com.gregtechceu.gtceu.common.cover.data.BucketMode; import com.gregtechceu.gtceu.common.cover.data.VoidingMode; +import com.gregtechceu.gtceu.utils.GTMath; import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; @@ -21,11 +22,10 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; +import it.unimi.dsi.fastutil.objects.Object2LongMaps; import lombok.Getter; import org.jetbrains.annotations.NotNull; -import java.util.Map; - import javax.annotation.ParametersAreNonnullByDefault; @MethodsReturnNonnullByDefault @@ -71,18 +71,19 @@ protected void doVoidFluids() { } private void voidOverflow(IFluidHandlerModifiable fluidHandler) { - final Map fluidAmounts = enumerateDistinctFluids(fluidHandler, TransferDirection.EXTRACT); - - for (FluidStack fluidStack : fluidAmounts.keySet()) { - int presentAmount = fluidAmounts.get(fluidStack); - int targetAmount = getFilteredFluidAmount(fluidStack); - if (targetAmount <= 0L || targetAmount > presentAmount) - continue; - - var toDrain = fluidStack.copy(); - toDrain.setAmount(presentAmount - targetAmount); - - fluidHandler.drain(toDrain, IFluidHandler.FluidAction.EXECUTE); + var fluidAmounts = enumerateDistinctFluids(fluidHandler, TransferDirection.EXTRACT); + + for (var entry : Object2LongMaps.fastIterable(fluidAmounts)) { + var stack = entry.getKey(); + long presentAmount = entry.getLongValue(); + int targetAmount = getFilteredFluidAmount(stack); + if (targetAmount <= 0L || targetAmount > presentAmount) continue; + + long diff = presentAmount - targetAmount; + for (int op : GTMath.split(diff)) { + var toDrain = new FluidStack(stack, op); + fluidHandler.drain(toDrain, IFluidHandler.FluidAction.EXECUTE); + } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/FluidVoidingCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/FluidVoidingCover.java index b12254446c4..e6580e6ed78 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/FluidVoidingCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/FluidVoidingCover.java @@ -7,6 +7,7 @@ import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; import com.gregtechceu.gtceu.common.cover.PumpCover; +import com.gregtechceu.gtceu.utils.GTMath; import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; import com.lowdragmc.lowdraglib.gui.widget.LabelWidget; @@ -27,9 +28,11 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; +import it.unimi.dsi.fastutil.objects.Object2LongMap; +import it.unimi.dsi.fastutil.objects.Object2LongMaps; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -import java.util.Map; import java.util.Set; import javax.annotation.ParametersAreNonnullByDefault; @@ -70,16 +73,16 @@ protected void doVoidFluids() { } void voidAny(IFluidHandlerModifiable fluidHandler) { - final Map fluidAmounts = enumerateDistinctFluids(fluidHandler, TransferDirection.EXTRACT); + Object2LongMap fluidAmounts = enumerateDistinctFluids(fluidHandler, TransferDirection.EXTRACT); - for (FluidStack fluidStack : fluidAmounts.keySet()) { - if (!filterHandler.test(fluidStack)) - continue; + for (var entry : Object2LongMaps.fastIterable(fluidAmounts)) { + var stack = entry.getKey(); + if (!filterHandler.test(stack)) continue; - var toDrain = fluidStack.copy(); - toDrain.setAmount(fluidAmounts.get(fluidStack)); - - fluidHandler.drain(toDrain, IFluidHandler.FluidAction.EXECUTE); + for (int op : GTMath.split(entry.getLongValue())) { + var toDrain = new FluidStack(stack, op); + fluidHandler.drain(toDrain, IFluidHandler.FluidAction.EXECUTE); + } } } @@ -116,8 +119,7 @@ public InteractionResult onSoftMalletClick(Player playerIn, InteractionHand hand playerIn.sendSystemMessage(Component.translatable(isWorkingEnabled() ? "cover.voiding.message.enabled" : "cover.voiding.message.disabled")); } - playerIn.swing(hand); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } // TODO: Decide grid behavior @@ -128,8 +130,8 @@ public boolean shouldRenderGrid(Player player, BlockPos pos, BlockState state, I } @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.SOFT_MALLET)) { return isWorkingEnabled() ? GuiTextures.TOOL_START : GuiTextures.TOOL_PAUSE; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/ItemVoidingCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/ItemVoidingCover.java index 2e6f387638d..a1ec57e81f0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/ItemVoidingCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/ItemVoidingCover.java @@ -29,6 +29,7 @@ import net.minecraftforge.items.IItemHandler; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Set; @@ -114,8 +115,7 @@ public InteractionResult onSoftMalletClick(Player playerIn, InteractionHand hand playerIn.sendSystemMessage(Component.translatable(isWorkingEnabled() ? "cover.voiding.message.enabled" : "cover.voiding.message.disabled")); } - playerIn.swing(hand); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } // TODO: Decide grid behavior @@ -126,8 +126,8 @@ public boolean shouldRenderGrid(Player player, BlockPos pos, BlockState state, I } @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { var superTips = super.sideTips(player, pos, state, toolTypes, side); if (superTips != null) return superTips; if (toolTypes.contains(GTToolType.SOFT_MALLET)) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GCYMRecipeTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GCYMRecipeTypes.java index 3c09bacf470..7bb52773371 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GCYMRecipeTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GCYMRecipeTypes.java @@ -21,10 +21,6 @@ import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.register; import static com.lowdragmc.lowdraglib.gui.texture.ProgressTexture.FillDirection.LEFT_TO_RIGHT; -/** - * @author Rundas - * @implNote Gregicality Multiblocks Recipe Types - */ public class GCYMRecipeTypes { ////////////////////////////////////// @@ -54,7 +50,6 @@ public class GCYMRecipeTypes { } return ""; }) - .setMaxTooltips(4) .setUiBuilder((recipe, widgetGroup) -> { int temp = recipe.data.getInt("ebf_temp"); List> items = new ArrayList<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTBedrockFluids.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTBedrockFluids.java index 6ed969bb590..8db838f9479 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTBedrockFluids.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTBedrockFluids.java @@ -16,11 +16,6 @@ import java.util.Set; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/7/11 - * @implNote GTBedrockFluids - */ @SuppressWarnings("unused") public class GTBedrockFluids { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTBlockEntities.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTBlockEntities.java index 78c2f759bfb..4355206d72f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTBlockEntities.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTBlockEntities.java @@ -9,11 +9,6 @@ import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; -/** - * @author KilaBash - * @date 2023/2/13 - * @implNote GTBlockEntities - */ public class GTBlockEntities { @SuppressWarnings("unchecked") diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java index f80325d84b5..e8c35c03a89 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java @@ -18,6 +18,7 @@ import com.gregtechceu.gtceu.common.block.*; import com.gregtechceu.gtceu.common.block.explosive.IndustrialTNTBlock; import com.gregtechceu.gtceu.common.block.explosive.PowderbarrelBlock; +import com.gregtechceu.gtceu.common.data.models.GTModels; import com.gregtechceu.gtceu.common.pipelike.duct.DuctPipeType; import com.gregtechceu.gtceu.common.pipelike.fluidpipe.longdistance.LDFluidPipeType; import com.gregtechceu.gtceu.common.pipelike.item.longdistance.LDItemPipeType; @@ -80,14 +81,8 @@ import static com.gregtechceu.gtceu.api.GTValues.*; import static com.gregtechceu.gtceu.common.data.GCYMBlocks.*; -import static com.gregtechceu.gtceu.common.data.GTModels.createModelBlockState; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; -/** - * @author KilaBash - * @date 2023/2/13 - * @implNote GTBlocks - */ @SuppressWarnings("removal") public class GTBlocks { ////////////////////////////////////// @@ -123,6 +118,7 @@ private static void registerLaserPipeBlock(int index) { .defaultLoot() .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WIRE_CUTTER) .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> RenderType::translucent) .color(() -> LaserPipeBlock::tintedColor) .item(LaserPipeBlockItem::new) .model(NonNullBiConsumer.noop()) @@ -152,6 +148,7 @@ private static void registerOpticalPipeBlock(int index) { .defaultLoot() .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WIRE_CUTTER) .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> RenderType::translucent) .color(() -> OpticalPipeBlock::tintedColor) .item(OpticalPipeBlockItem::new) .model(NonNullBiConsumer.noop()) @@ -179,6 +176,7 @@ private static void registerDuctPipeBlock(int index) { .defaultLoot() .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> RenderType::translucent) .item(DuctPipeBlockItem::new) .model(NonNullBiConsumer.noop()) .build() @@ -191,7 +189,7 @@ private static void registerDuctPipeBlock(int index) { .block("long_distance_item_pipeline", properties -> new LongDistancePipeBlock(properties, LDItemPipeType.INSTANCE)) .initialProperties(() -> Blocks.IRON_BLOCK) - .blockstate(GTModels::longDistanceItemPipeModel) + .exBlockstate(GTModels.cubeAllModel(GTCEu.id("block/pipe/ld_item_pipe/block"))) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH, BlockTags.NEEDS_STONE_TOOL) .simpleItem() .register(); @@ -201,7 +199,7 @@ private static void registerDuctPipeBlock(int index) { .block("long_distance_fluid_pipeline", properties -> new LongDistancePipeBlock(properties, LDFluidPipeType.INSTANCE)) .initialProperties(() -> Blocks.IRON_BLOCK) - .blockstate(GTModels::longDistanceFluidPipeModel) + .exBlockstate(GTModels.cubeAllModel(GTCEu.id("block/pipe/ld_fluid_pipe/block"))) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH, BlockTags.NEEDS_STONE_TOOL) .simpleItem() .register(); @@ -240,7 +238,7 @@ private static void registerDuctPipeBlock(int index) { GTCEu.id("block/casings/solid/machine_casing_sturdy_hsse")); public static final BlockEntry CASING_PALLADIUM_SUBSTATION = createCasingBlock("palladium_substation", GTCEu.id("block/casings/solid/machine_casing_palladium_substation")); - public static final BlockEntry CASING_TEMPERED_GLASS = createGlassCasingBlock("tempered_glass", + public static final BlockEntry CASING_TEMPERED_GLASS = createGlassCasingBlock("tempered_glass", GTCEu.id("block/casings/transparent/tempered_glass"), () -> RenderType::translucent); public static final ImmutableMap> MATERIALS_TO_CASINGS; @@ -276,7 +274,7 @@ private static void registerDuctPipeBlock(int index) { GTCEu.id("block/casings/pipe/machine_casing_grate")); public static final BlockEntry CASING_ASSEMBLY_CONTROL = createCasingBlock("assembly_line_casing", GTCEu.id("block/casings/mechanic/machine_casing_assembly_control")); - public static final BlockEntry CASING_LAMINATED_GLASS = createGlassCasingBlock("laminated_glass", + public static final BlockEntry CASING_LAMINATED_GLASS = createGlassCasingBlock("laminated_glass", GTCEu.id("block/casings/transparent/laminated_glass"), () -> RenderType::cutoutMipped); public static final BlockEntry CASING_ASSEMBLY_LINE = createActiveCasing("assembly_line_unit", "block/variant/assembly_line"); @@ -318,7 +316,7 @@ private static void registerDuctPipeBlock(int index) { .initialProperties(() -> Blocks.BEDROCK) .properties(BlockBehaviour.Properties::noOcclusion) .addLayer(() -> RenderType::cutoutMipped) - .blockstate((ctx, prov) -> createModelBlockState(ctx, prov, GTCEu.id("block/miner_pipe"))) + .exBlockstate(GTModels.createModelBlockState(GTCEu.id("block/miner_pipe"))) .tag(BlockTags.DRAGON_IMMUNE, BlockTags.WITHER_IMMUNE, BlockTags.INFINIBURN_END, BlockTags.FEATURES_CANNOT_REPLACE, BlockTags.GEODE_INVALID_BLOCKS) .register(); @@ -328,13 +326,14 @@ private static void registerDuctPipeBlock(int index) { .block("pump_deck", Block::new) .initialProperties(() -> Blocks.IRON_BLOCK) .properties(p -> p.sound(SoundType.WOOD).mapColor(MapColor.WOOD)) - .addLayer(() -> RenderType::cutoutMipped) - .blockstate(GTModels.createSidedCasingModel("pump_deck", GTCEu.id("block/casings/pump_deck"))) + .blockstate(GTModels.createSidedCasingModel(GTCEu.id("block/casings/pump_deck"))) .tag(CustomTags.MINEABLE_WITH_WRENCH, BlockTags.MINEABLE_WITH_AXE) .item(BlockItem::new) .build() .register(); + // spotless:off + // Machine Casings public static final BlockEntry MACHINE_CASING_ULV = createMachineCasingBlock(ULV); public static final BlockEntry MACHINE_CASING_LV = createMachineCasingBlock(LV); @@ -364,8 +363,7 @@ private static void registerDuctPipeBlock(int index) { public static final BlockEntry HERMETIC_CASING_UHV = createHermeticCasing(UHV); public static final BlockEntry BRONZE_HULL = createSteamCasing("bronze_machine_casing", "bronze"); - public static final BlockEntry BRONZE_BRICKS_HULL = createSteamCasing("bronze_brick_casing", - "bricked_bronze"); + public static final BlockEntry BRONZE_BRICKS_HULL = createSteamCasing("bronze_brick_casing", "bricked_bronze"); public static final BlockEntry STEEL_HULL = createSteamCasing("steel_machine_casing", "steel"); public static final BlockEntry STEEL_BRICKS_HULL = createSteamCasing("steel_brick_casing", "bricked_steel"); @@ -380,63 +378,44 @@ private static void registerDuctPipeBlock(int index) { public static final BlockEntry COIL_TRITANIUM = createCoilBlock(CoilBlock.CoilType.TRITANIUM); // PSS batteries - public static final BlockEntry BATTERY_EMPTY_TIER_I = createBatteryBlock( - BatteryBlock.BatteryPartType.EMPTY_TIER_I); - public static final BlockEntry BATTERY_LAPOTRONIC_EV = createBatteryBlock( - BatteryBlock.BatteryPartType.EV_LAPOTRONIC); - public static final BlockEntry BATTERY_LAPOTRONIC_IV = createBatteryBlock( - BatteryBlock.BatteryPartType.IV_LAPOTRONIC); - public static final BlockEntry BATTERY_EMPTY_TIER_II = createBatteryBlock( - BatteryBlock.BatteryPartType.EMPTY_TIER_II); - public static final BlockEntry BATTERY_LAPOTRONIC_LuV = createBatteryBlock( - BatteryBlock.BatteryPartType.LuV_LAPOTRONIC); - public static final BlockEntry BATTERY_LAPOTRONIC_ZPM = createBatteryBlock( - BatteryBlock.BatteryPartType.ZPM_LAPOTRONIC); - public static final BlockEntry BATTERY_EMPTY_TIER_III = createBatteryBlock( - BatteryBlock.BatteryPartType.EMPTY_TIER_III); - public static final BlockEntry BATTERY_LAPOTRONIC_UV = createBatteryBlock( - BatteryBlock.BatteryPartType.UV_LAPOTRONIC); - public static final BlockEntry BATTERY_ULTIMATE_UHV = createBatteryBlock( - BatteryBlock.BatteryPartType.UHV_ULTIMATE); + public static final BlockEntry BATTERY_EMPTY_TIER_I = createBatteryBlock(BatteryBlock.BatteryPartType.EMPTY_TIER_I); + public static final BlockEntry BATTERY_LAPOTRONIC_EV = createBatteryBlock(BatteryBlock.BatteryPartType.EV_LAPOTRONIC); + public static final BlockEntry BATTERY_LAPOTRONIC_IV = createBatteryBlock(BatteryBlock.BatteryPartType.IV_LAPOTRONIC); + public static final BlockEntry BATTERY_EMPTY_TIER_II = createBatteryBlock(BatteryBlock.BatteryPartType.EMPTY_TIER_II); + public static final BlockEntry BATTERY_LAPOTRONIC_LuV = createBatteryBlock(BatteryBlock.BatteryPartType.LuV_LAPOTRONIC); + public static final BlockEntry BATTERY_LAPOTRONIC_ZPM = createBatteryBlock(BatteryBlock.BatteryPartType.ZPM_LAPOTRONIC); + public static final BlockEntry BATTERY_EMPTY_TIER_III = createBatteryBlock(BatteryBlock.BatteryPartType.EMPTY_TIER_III); + public static final BlockEntry BATTERY_LAPOTRONIC_UV = createBatteryBlock(BatteryBlock.BatteryPartType.UV_LAPOTRONIC); + public static final BlockEntry BATTERY_ULTIMATE_UHV = createBatteryBlock(BatteryBlock.BatteryPartType.UHV_ULTIMATE); // Intake casing - public static final BlockEntry CASING_ENGINE_INTAKE = createActiveCasing("engine_intake_casing", - "block/variant/engine_intake"); - public static final BlockEntry CASING_EXTREME_ENGINE_INTAKE = createActiveCasing( - "extreme_engine_intake_casing", "block/variant/extreme_engine_intake"); + public static final BlockEntry CASING_ENGINE_INTAKE = createActiveCasing("engine_intake_casing", "block/variant/engine_intake"); + public static final BlockEntry CASING_EXTREME_ENGINE_INTAKE = createActiveCasing("extreme_engine_intake_casing", "block/variant/extreme_engine_intake"); // Fusion public static final Map> ALL_FUSION_CASINGS = new HashMap<>(); - public static final BlockEntry SUPERCONDUCTING_COIL = createFusionCasing( - FusionCasingBlock.CasingType.SUPERCONDUCTING_COIL); - public static final BlockEntry FUSION_COIL = createFusionCasing( - FusionCasingBlock.CasingType.FUSION_COIL); - public static final BlockEntry FUSION_CASING = createFusionCasing( - FusionCasingBlock.CasingType.FUSION_CASING); - public static final BlockEntry FUSION_CASING_MK2 = createFusionCasing( - FusionCasingBlock.CasingType.FUSION_CASING_MK2); - public static final BlockEntry FUSION_CASING_MK3 = createFusionCasing( - FusionCasingBlock.CasingType.FUSION_CASING_MK3); - public static final BlockEntry FUSION_GLASS = createGlassCasingBlock("fusion_glass", + public static final BlockEntry SUPERCONDUCTING_COIL = createFusionCasing(FusionCasingBlock.CasingType.SUPERCONDUCTING_COIL); + public static final BlockEntry FUSION_COIL = createFusionCasing(FusionCasingBlock.CasingType.FUSION_COIL); + public static final BlockEntry FUSION_CASING = createFusionCasing(FusionCasingBlock.CasingType.FUSION_CASING); + public static final BlockEntry FUSION_CASING_MK2 = createFusionCasing(FusionCasingBlock.CasingType.FUSION_CASING_MK2); + public static final BlockEntry FUSION_CASING_MK3 = createFusionCasing(FusionCasingBlock.CasingType.FUSION_CASING_MK3); + public static final BlockEntry FUSION_GLASS = createGlassCasingBlock("fusion_glass", GTCEu.id("block/casings/transparent/fusion_glass"), () -> RenderType::cutoutMipped); // Cleanroom - public static final BlockEntry PLASTCRETE = createCasingBlock("plascrete", - GTCEu.id("block/casings/cleanroom/plascrete")); + public static final BlockEntry PLASTCRETE = createCasingBlock("plascrete", GTCEu.id("block/casings/cleanroom/plascrete")); public static final BlockEntry FILTER_CASING = createCleanroomFilter(CleanroomFilterType.FILTER_CASING); - public static final BlockEntry FILTER_CASING_STERILE = createCleanroomFilter( - CleanroomFilterType.FILTER_CASING_STERILE); - public static final BlockEntry CLEANROOM_GLASS = createGlassCasingBlock("cleanroom_glass", - GTCEu.id("block/casings/transparent/cleanroom_glass"), () -> RenderType::cutoutMipped); + public static final BlockEntry FILTER_CASING_STERILE = createCleanroomFilter(CleanroomFilterType.FILTER_CASING_STERILE); + public static final BlockEntry CLEANROOM_GLASS = createGlassCasingBlock("cleanroom_glass", GTCEu.id("block/casings/transparent/cleanroom_glass"), () -> RenderType::cutoutMipped); // Fireboxes public static final Map> ALL_FIREBOXES = new HashMap<>(); public static final BlockEntry FIREBOX_BRONZE = createFireboxCasing(BoilerFireboxType.BRONZE_FIREBOX); public static final BlockEntry FIREBOX_STEEL = createFireboxCasing(BoilerFireboxType.STEEL_FIREBOX); - public static final BlockEntry FIREBOX_TITANIUM = createFireboxCasing( - BoilerFireboxType.TITANIUM_FIREBOX); - public static final BlockEntry FIREBOX_TUNGSTENSTEEL = createFireboxCasing( - BoilerFireboxType.TUNGSTENSTEEL_FIREBOX); + public static final BlockEntry FIREBOX_TITANIUM = createFireboxCasing(BoilerFireboxType.TITANIUM_FIREBOX); + public static final BlockEntry FIREBOX_TUNGSTENSTEEL = createFireboxCasing(BoilerFireboxType.TUNGSTENSTEEL_FIREBOX); + + // spotless:on // HPCA, AT public static final BlockEntry COMPUTER_CASING = REGISTRATE @@ -466,7 +445,6 @@ private static void registerDuctPipeBlock(int index) { .block("computer_heat_vent", Block::new) .initialProperties(() -> Blocks.IRON_BLOCK) .properties(p -> p.isValidSpawn((state, level, pos, ent) -> false)) - .addLayer(() -> RenderType::cutoutMipped) .blockstate((ctx, prov) -> { prov.simpleBlock(ctx.getEntry(), prov.models().cubeColumn("computer_heat_vent", GTCEu.id("block/casings/hpca/computer_heat_vent_side"), @@ -484,8 +462,7 @@ private static BlockEntry createSidedCasingBlock(String name, ResourceLoc return REGISTRATE.block(name, Block::new) .initialProperties(() -> Blocks.IRON_BLOCK) .properties(p -> p.isValidSpawn((state, level, pos, ent) -> false)) - .addLayer(() -> RenderType::cutoutMipped) - .blockstate(GTModels.createSidedCasingModel(name, texture)) + .blockstate(GTModels.createSidedCasingModel(texture)) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .item(BlockItem::new) .build() @@ -494,26 +471,23 @@ private static BlockEntry createSidedCasingBlock(String name, ResourceLoc private static BlockEntry createBrickCasingBlock(String name, ResourceLocation texture) { // return createCasingBlock(name, GlassBlock::new, texture, () -> Blocks.GLASS, type); - NonNullFunction supplier = Block::new; - return REGISTRATE.block(name, supplier) + return REGISTRATE.block(name, Block::new) .initialProperties(() -> Blocks.IRON_BLOCK) .properties(p -> p.isValidSpawn((state, level, pos, ent) -> false)) - .addLayer(() -> RenderType::cutoutMipped) - .blockstate(GTModels.cubeAllModel(name, texture)) + .exBlockstate(GTModels.cubeAllModel(texture)) .tag(BlockTags.MINEABLE_WITH_PICKAXE) .item(BlockItem::new) .build() .register(); } - private static BlockEntry createGlassCasingBlock(String name, ResourceLocation texture, - Supplier> type) { - NonNullFunction supplier = GlassBlock::new; - return REGISTRATE.block(name, supplier) + private static BlockEntry createGlassCasingBlock(String name, ResourceLocation texture, + Supplier> type) { + return REGISTRATE.block(name, GlassBlock::new) .initialProperties(() -> Blocks.GLASS) .properties(p -> p.isValidSpawn((state, level, pos, ent) -> false)) .addLayer(type) - .blockstate(GTModels.cubeAllModel(name, texture)) + .exBlockstate(GTModels.cubeAllModel(texture)) .tag(BlockTags.MINEABLE_WITH_PICKAXE) .item(BlockItem::new) .build() @@ -522,7 +496,7 @@ private static BlockEntry createGlassCasingBlock(String name, ResourceLoc public static BlockEntry createCasingBlock(String name, ResourceLocation texture) { return createCasingBlock(name, Block::new, texture, () -> Blocks.IRON_BLOCK, - () -> RenderType::cutoutMipped); + () -> RenderType::solid); } public static BlockEntry createCasingBlock(String name, @@ -534,7 +508,7 @@ public static BlockEntry createCasingBlock(String name, .initialProperties(properties) .properties(p -> p.isValidSpawn((state, level, pos, ent) -> false)) .addLayer(type) - .blockstate(GTModels.cubeAllModel(name, texture)) + .exBlockstate(GTModels.cubeAllModel(texture)) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .item(BlockItem::new) .build() @@ -548,7 +522,6 @@ private static BlockEntry createMachineCasingBlock(int tier) { .lang("%s Machine Casing".formatted(GTValues.VN[tier])) .initialProperties(() -> Blocks.IRON_BLOCK) .properties(p -> p.isValidSpawn((state, level, pos, ent) -> false)) - .addLayer(() -> RenderType::cutoutMipped) .blockstate(GTModels.createMachineCasingModel(tierName)) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .item(BlockItem::new) @@ -582,8 +555,7 @@ private static BlockEntry createHermeticCasing(int tier) { private static BlockEntry createSteamCasing(String name, String material) { return REGISTRATE.block(name, Block::new) .initialProperties(() -> Blocks.IRON_BLOCK) - .addLayer(() -> RenderType::cutoutMipped) - .blockstate(GTModels.createSteamCasingModel(name, material)) + .blockstate(GTModels.createSteamCasingModel(material)) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .item(BlockItem::new) .build() @@ -596,7 +568,7 @@ private static BlockEntry createCoilBlock(ICoilType coilType) { .initialProperties(() -> Blocks.IRON_BLOCK) .properties(p -> p.isValidSpawn((state, level, pos, ent) -> false)) .addLayer(() -> RenderType::cutoutMipped) - .blockstate(GTModels.createCoilModel("%s_coil_block".formatted(coilType.getName()), coilType)) + .blockstate(GTModels.createCoilModel(coilType)) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .item(BlockItem::new) .build() @@ -610,9 +582,7 @@ private static BlockEntry createBatteryBlock(IBatteryData batteryD p -> new BatteryBlock(p, batteryData)) .initialProperties(() -> Blocks.IRON_BLOCK) .properties(p -> p.isValidSpawn((state, level, pos, entityType) -> false)) - .addLayer(() -> RenderType::cutoutMipped) - .blockstate(GTModels.createBatteryBlockModel("%s_battery".formatted(batteryData.getBatteryName()), - batteryData)) + .blockstate(GTModels.createBatteryBlockModel(batteryData)) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .item(BlockItem::new) .build() @@ -628,7 +598,7 @@ private static BlockEntry createFusionCasing(IFusionCasingTyp .initialProperties(() -> Blocks.IRON_BLOCK) .properties(properties -> properties.strength(5.0f, 10.0f).sound(SoundType.METAL)) .addLayer(() -> RenderType::cutoutMipped) - .blockstate(GTModels.createFusionCasingModel(casingType.getSerializedName(), casingType)) + .blockstate(GTModels.createFusionCasingModel(casingType)) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH, CustomTags.TOOL_TIERS[casingType.getHarvestLevel()]) .item(BlockItem::new) @@ -643,8 +613,7 @@ private static BlockEntry createCleanroomFilter(IFilterType filterType) { .initialProperties(() -> Blocks.IRON_BLOCK) .properties(properties -> properties.strength(2.0f, 8.0f).sound(SoundType.METAL) .isValidSpawn((blockState, blockGetter, blockPos, entityType) -> false)) - .addLayer(() -> RenderType::cutoutMipped) - .blockstate(GTModels.createCleanroomFilterModel(filterType.getSerializedName(), filterType)) + .blockstate(GTModels.createCleanroomFilterModel(filterType)) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH, CustomTags.TOOL_TIERS[1]) .item(BlockItem::new) .build() @@ -671,7 +640,7 @@ private static BlockEntry createFireboxCasing(BoilerFireboxType typ .initialProperties(() -> Blocks.IRON_BLOCK) .properties(p -> p.isValidSpawn((state, level, pos, ent) -> false)) .addLayer(() -> RenderType::cutoutMipped) - .blockstate(GTModels.createFireboxModel("%s_casing".formatted(type.name()), type)) + .blockstate(GTModels.createFireboxModel(type)) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .item(BlockItem::new) .build() @@ -716,7 +685,7 @@ private static BlockEntry createFireboxCasing(BoilerFireboxType typ .initialProperties(() -> Blocks.OAK_SAPLING) .lang("Rubber Sapling") .blockstate(GTModels::createCrossBlockState) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> RenderType::cutout) .tag(BlockTags.SAPLINGS) .item() .model(GTModels::rubberTreeSaplingModel) @@ -768,7 +737,9 @@ public static ItemColor leavesItemColor() { .block("rubber_leaves", LeavesBlock::new) .initialProperties(() -> Blocks.OAK_LEAVES) .lang("Rubber Leaves") - .blockstate((ctx, prov) -> createModelBlockState(ctx, prov, GTCEu.id("block/rubber_leaves"))) + .blockstate((ctx, prov) -> { + prov.simpleBlock(ctx.get(), prov.models().leaves(ctx.getName(), prov.blockTexture(ctx.get()))); + }) .loot((table, block) -> table.add(block, table.createLeavesDrops(block, GTBlocks.RUBBER_SAPLING.get(), RUBBER_LEAVES_DROPPING_CHANCE))) .tag(BlockTags.LEAVES, BlockTags.MINEABLE_WITH_HOE) @@ -1205,8 +1176,8 @@ public static ItemColor leavesItemColor() { .loot((table, block) -> table.add(block, table.createSingleItemTable(Items.CHARCOAL, UniformGenerator.between(1.0F, 3.0F)))) .lang("Brittle Charcoal") + .exBlockstate(GTModels.cubeAllModel(GTCEu.id("block/misc/brittle_charcoal"))) .tag(BlockTags.MINEABLE_WITH_SHOVEL) - .blockstate(GTModels.cubeAllModel("brittle_charcoal", GTCEu.id("block/misc/brittle_charcoal"))) .item((b, p) -> new BlockItem(b, p) { @Override @@ -1329,7 +1300,6 @@ public static void generateStoneBlocks() { .block("%s_borderless_lamp".formatted(dyeColor.getName()), (p) -> new LampBlock(p, dyeColor, false)) .initialProperties(() -> Blocks.GLASS) .properties(p -> p.strength(0.3f, 8.0f).sound(SoundType.GLASS)) - .addLayer(() -> RenderType::cutout) .blockstate(GTModels.lampModel(dyeColor, false)) .item(LampBlockItem::new) .build() @@ -1434,7 +1404,7 @@ public static void init() { } public static boolean doMetalPipe(Material material) { - return GTValues.FOOLS.get() && material.hasProperty(PropertyKey.INGOT) && + return GTValues.FOOLS.getAsBoolean() && material.hasProperty(PropertyKey.INGOT) && !material.hasProperty(PropertyKey.POLYMER) && !material.hasProperty(PropertyKey.WOOD); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTConfiguredFeatures.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTConfiguredFeatures.java index 463e1f6c288..d56a13fd2b3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTConfiguredFeatures.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTConfiguredFeatures.java @@ -21,11 +21,6 @@ import net.minecraft.world.level.levelgen.feature.trunkplacers.ForkingTrunkPlacer; import net.minecraft.world.level.levelgen.structure.templatesystem.TagMatchTest; -/** - * @author KilaBash - * @date 2023/3/26 - * @implNote GTConfiguredFeatures - */ public class GTConfiguredFeatures { public static final ResourceKey> RUBBER = ResourceKey.create(Registries.CONFIGURED_FEATURE, diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java index d57b61af098..76f3b41e123 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java @@ -10,23 +10,21 @@ import com.gregtechceu.gtceu.client.renderer.cover.*; import com.gregtechceu.gtceu.common.cover.*; import com.gregtechceu.gtceu.common.cover.detector.*; +import com.gregtechceu.gtceu.common.cover.ender.EnderFluidLinkCover; import com.gregtechceu.gtceu.common.cover.voiding.AdvancedFluidVoidingCover; import com.gregtechceu.gtceu.common.cover.voiding.AdvancedItemVoidingCover; import com.gregtechceu.gtceu.common.cover.voiding.FluidVoidingCover; import com.gregtechceu.gtceu.common.cover.voiding.ItemVoidingCover; +import net.minecraft.resources.ResourceLocation; import net.minecraftforge.fml.ModLoader; import it.unimi.dsi.fastutil.ints.Int2ObjectFunction; import java.util.Arrays; import java.util.Locale; +import java.util.function.Supplier; -/** - * @author KilaBash - * @date 2023/2/24 - * @implNote GTCovers - */ public class GTCovers { public static final int[] ALL_TIERS = GTValues.tiersBetween(GTValues.LV, @@ -38,132 +36,111 @@ public class GTCovers { GTRegistries.COVERS.unfreeze(); } - public final static CoverDefinition FACADE = register( - "facade", FacadeCover::new, - FacadeCoverRenderer.INSTANCE); + public final static CoverDefinition FACADE = register("facade", FacadeCover::new, + () -> () -> FacadeCoverRenderer.INSTANCE); - public final static CoverDefinition ITEM_FILTER = register( - "item_filter", ItemFilterCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_item_filter"))); + public final static CoverDefinition ITEM_FILTER = register("item_filter", ItemFilterCover::new); + public final static CoverDefinition FLUID_FILTER = register("fluid_filter", FluidFilterCover::new); - public final static CoverDefinition FLUID_FILTER = register( - "fluid_filter", FluidFilterCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_fluid_filter"))); + public final static CoverDefinition INFINITE_WATER = register("infinite_water", InfiniteWaterCover::new); + public final static CoverDefinition ENDER_FLUID_LINK = register("ender_fluid_link", EnderFluidLinkCover::new); + public final static CoverDefinition SHUTTER = register("shutter", ShutterCover::new); + public final static CoverDefinition COVER_STORAGE = register("storage", StorageCover::new); - public final static CoverDefinition INFINITE_WATER = register( - "infinite_water", InfiniteWaterCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_infinite_water"))); + public final static CoverDefinition[] CONVEYORS = registerTiered("conveyor", ConveyorCover::new, + () -> tier -> new IOCoverRenderer( + GTCEu.id("block/cover/conveyor"), + null, + GTCEu.id("block/cover/conveyor_emissive"), + GTCEu.id("block/cover/conveyor_inverted_emissive")), + ALL_TIERS); - public final static CoverDefinition SHUTTER = register( - "shutter", ShutterCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_shutter"))); - public final static CoverDefinition COVER_STORAGE = register( - "storage", StorageCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/storage_cover"))); + public final static CoverDefinition[] ROBOT_ARMS = registerTiered("robot_arm", RobotArmCover::new, + () -> tier -> new IOCoverRenderer( + GTCEu.id("block/cover/arm"), + null, + GTCEu.id("block/cover/arm_emissive"), + GTCEu.id("block/cover/arm_inverted_emissive")), + ALL_TIERS); - public final static CoverDefinition[] CONVEYORS = registerTiered( - "conveyor", ConveyorCover::new, - tier -> ConveyorCoverRenderer.INSTANCE, ALL_TIERS); + public final static CoverDefinition[] PUMPS = registerTiered("pump", PumpCover::new, + () -> tier -> IOCoverRenderer.PUMP_LIKE_COVER_RENDERER, ALL_TIERS); - public final static CoverDefinition[] ROBOT_ARMS = registerTiered( - "robot_arm", RobotArmCover::new, - tier -> RobotArmCoverRenderer.INSTANCE, ALL_TIERS); + public final static CoverDefinition[] FLUID_REGULATORS = registerTiered("fluid_regulator", FluidRegulatorCover::new, + () -> tier -> IOCoverRenderer.PUMP_LIKE_COVER_RENDERER, ALL_TIERS); - public final static CoverDefinition[] PUMPS = registerTiered( - "pump", PumpCover::new, - tier -> PumpCoverRenderer.INSTANCE, ALL_TIERS); + public final static CoverDefinition COMPUTER_MONITOR = register("computer_monitor", ComputerMonitorCover::new); - public final static CoverDefinition[] FLUID_REGULATORS = registerTiered( - "fluid_regulator", FluidRegulatorCover::new, - tier -> FluidRegulatorCoverRenderer.INSTANCE, ALL_TIERS); - - public final static CoverDefinition COMPUTER_MONITOR = register( - "computer_monitor", ComputerMonitorCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_display"))); - - public final static CoverDefinition MACHINE_CONTROLLER = register( - "machine_controller", MachineControllerCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_controller"))); + public final static CoverDefinition MACHINE_CONTROLLER = register("machine_controller", + MachineControllerCover::new); + public final static CoverDefinition WIRELESS_TRANSMITTER = register( + "wireless_transmitter", + WirelessTransmitterCover::new, + () -> () -> new SimpleCoverRenderer(GTCEu.id("block/cover/wireless_transmitter"))); // Voiding - public final static CoverDefinition ITEM_VOIDING = register( - "item_voiding", ItemVoidingCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_item_voiding"))); - public final static CoverDefinition ITEM_VOIDING_ADVANCED = register( - "item_voiding_advanced", AdvancedItemVoidingCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_item_voiding_advanced"))); - public final static CoverDefinition FLUID_VOIDING = register( - "fluid_voiding", FluidVoidingCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_fluid_voiding"))); - public final static CoverDefinition FLUID_VOIDING_ADVANCED = register( - "fluid_voiding_advanced", AdvancedFluidVoidingCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_fluid_voiding_advanced"))); + public final static CoverDefinition ITEM_VOIDING = register("item_voiding", ItemVoidingCover::new); + public final static CoverDefinition ITEM_VOIDING_ADVANCED = register("item_voiding_advanced", + AdvancedItemVoidingCover::new); + public final static CoverDefinition FLUID_VOIDING = register("fluid_voiding", FluidVoidingCover::new); + public final static CoverDefinition FLUID_VOIDING_ADVANCED = register("fluid_voiding_advanced", + AdvancedFluidVoidingCover::new); // Detectors - public final static CoverDefinition ACTIVITY_DETECTOR = register( - "activity_detector", ActivityDetectorCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_activity_detector"))); - public final static CoverDefinition ACTIVITY_DETECTOR_ADVANCED = register( - "activity_detector_advanced", AdvancedActivityDetectorCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_activity_detector_advanced"))); - public final static CoverDefinition FLUID_DETECTOR = register( - "fluid_detector", FluidDetectorCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_fluid_detector"))); - public final static CoverDefinition FLUID_DETECTOR_ADVANCED = register( - "fluid_detector_advanced", AdvancedFluidDetectorCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_fluid_detector_advanced"))); - public final static CoverDefinition ITEM_DETECTOR = register( - "item_detector", ItemDetectorCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_item_detector"))); - public final static CoverDefinition ITEM_DETECTOR_ADVANCED = register( - "item_detector_advanced", AdvancedItemDetectorCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_item_detector_advanced"))); - public final static CoverDefinition ENERGY_DETECTOR = register( - "energy_detector", EnergyDetectorCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_energy_detector"))); - public final static CoverDefinition ENERGY_DETECTOR_ADVANCED = register( - "energy_detector_advanced", AdvancedEnergyDetectorCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_energy_detector_advanced"))); - public final static CoverDefinition MAINTENANCE_DETECTOR = register( - "maintenance_detector", MaintenanceDetectorCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_maintenance_detector"))); + public final static CoverDefinition ACTIVITY_DETECTOR = register("activity_detector", ActivityDetectorCover::new); + public final static CoverDefinition ACTIVITY_DETECTOR_ADVANCED = register("activity_detector_advanced", + AdvancedActivityDetectorCover::new); + public final static CoverDefinition FLUID_DETECTOR = register("fluid_detector", FluidDetectorCover::new); + public final static CoverDefinition FLUID_DETECTOR_ADVANCED = register("fluid_detector_advanced", + AdvancedFluidDetectorCover::new); + public final static CoverDefinition ITEM_DETECTOR = register("item_detector", ItemDetectorCover::new); + public final static CoverDefinition ITEM_DETECTOR_ADVANCED = register("item_detector_advanced", + AdvancedItemDetectorCover::new); + public final static CoverDefinition ENERGY_DETECTOR = register("energy_detector", EnergyDetectorCover::new); + public final static CoverDefinition ENERGY_DETECTOR_ADVANCED = register("energy_detector_advanced", + AdvancedEnergyDetectorCover::new); + public final static CoverDefinition MAINTENANCE_DETECTOR = register("maintenance_detector", + MaintenanceDetectorCover::new); // Solar Panels - public final static CoverDefinition SOLAR_PANEL_BASIC = register( - "solar_panel", CoverSolarPanel::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_solar_panel"))); - public final static CoverDefinition[] SOLAR_PANEL = registerTiered( - "solar_panel", CoverSolarPanel::new, - tier -> new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_solar_panel")), ALL_TIERS_WITH_ULV); + public final static CoverDefinition SOLAR_PANEL_BASIC = register("solar_panel", CoverSolarPanel::new); + public final static CoverDefinition[] SOLAR_PANEL = registerTiered("solar_panel", CoverSolarPanel::new, + () -> tier -> new SimpleCoverRenderer(GTCEu.id("block/cover/solar_panel")), ALL_TIERS_WITH_ULV); /////////////////////////////////////////////// // *********** UTIL METHODS ***********// /////////////////////////////////////////////// - public static CoverDefinition register(String id, CoverDefinition.CoverBehaviourProvider behaviorCreator) { - return register(id, behaviorCreator, new SimpleCoverRenderer(GTCEu.id("block/cover/" + id))); + private static CoverDefinition register(String id, CoverDefinition.CoverBehaviourProvider behaviorCreator) { + return register(id, behaviorCreator, () -> () -> new SimpleCoverRenderer(GTCEu.id("block/cover/" + id))); + } + + private static CoverDefinition register(String id, CoverDefinition.CoverBehaviourProvider behaviorCreator, + Supplier> coverRenderer) { + return register(GTCEu.id(id), behaviorCreator, coverRenderer); } - public static CoverDefinition register(String id, CoverDefinition.CoverBehaviourProvider behaviorCreator, - ICoverRenderer coverRenderer) { - var definition = new CoverDefinition(GTCEu.id(id), behaviorCreator, coverRenderer); - GTRegistries.COVERS.register(GTCEu.id(id), definition); + public static CoverDefinition register(ResourceLocation id, CoverDefinition.CoverBehaviourProvider behaviorCreator, + Supplier> coverRenderer) { + var definition = new CoverDefinition(id, behaviorCreator, coverRenderer); + GTRegistries.COVERS.register(definition.getId(), definition); return definition; } - public static CoverDefinition[] registerTiered(String id, - CoverDefinition.TieredCoverBehaviourProvider behaviorCreator, - Int2ObjectFunction coverRenderer, int... tiers) { + private static CoverDefinition[] registerTiered(String id, + CoverDefinition.TieredCoverBehaviourProvider behaviorCreator, + Supplier> coverRenderer, + int... tiers) { return Arrays.stream(tiers).mapToObj(tier -> { var name = id + "." + GTValues.VN[tier].toLowerCase(Locale.ROOT); return register(name, (def, coverable, side) -> behaviorCreator.create(def, coverable, side, tier), - coverRenderer.apply(tier)); + () -> () -> coverRenderer.get().apply(tier)); }).toArray(CoverDefinition[]::new); } - public static CoverDefinition[] registerTiered(String id, - CoverDefinition.TieredCoverBehaviourProvider behaviorCreator, - int... tiers) { + private static CoverDefinition[] registerTiered(String id, + CoverDefinition.TieredCoverBehaviourProvider behaviorCreator, + int... tiers) { return Arrays.stream(tiers).mapToObj(tier -> { var name = id + "." + GTValues.VN[tier].toLowerCase(Locale.ROOT); return register(name, (def, coverable, side) -> behaviorCreator.create(def, coverable, side, tier)); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTCreativeModeTabs.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTCreativeModeTabs.java index b81a2bcedb5..a024f476db8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTCreativeModeTabs.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTCreativeModeTabs.java @@ -21,11 +21,6 @@ import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; -/** - * @author KilaBash - * @date 2023/2/14 - * @implNote GTCreativeModeTabs - */ @SuppressWarnings("Convert2MethodRef") public class GTCreativeModeTabs { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTDamageTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTDamageTypes.java index 19fb26763d7..6484a50bc08 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTDamageTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTDamageTypes.java @@ -7,11 +7,6 @@ import net.minecraft.tags.DamageTypeTags; import net.minecraft.world.damagesource.DamageType; -/** - * @author KilaBash - * @date 2023/7/19 - * @implNote GTDamageTypes - */ public class GTDamageTypes { public static final DamageTypeData EXPLOSION = new DamageTypeData.Builder() diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTFeatures.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTFeatures.java index 4168436d816..e888a9636f8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTFeatures.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTFeatures.java @@ -15,11 +15,6 @@ import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.RegistryObject; -/** - * @author KilaBash - * @date 2023/3/20 - * @implNote GTFeatures - */ public class GTFeatures { public static final ResourceLocation NEW_ORE_VEIN_TOGGLE = GTCEu.id("vein_toggle"); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java index 11ea09c6394..db7b5d1a282 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java @@ -21,11 +21,6 @@ import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; -/** - * @author KilaBash - * @date 2023/2/13 - * @implNote GTFluids - */ public class GTFluids { public static final FluidEntry POTION = REGISTRATE diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java index a81c85b54ff..52264be6a38 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java @@ -26,6 +26,8 @@ import com.gregtechceu.gtceu.common.entity.GTBoat; import com.gregtechceu.gtceu.common.item.*; import com.gregtechceu.gtceu.common.item.armor.*; +import com.gregtechceu.gtceu.common.item.modules.ImageModuleBehaviour; +import com.gregtechceu.gtceu.common.item.modules.TextModuleBehaviour; import com.gregtechceu.gtceu.common.item.tool.behavior.LighterBehavior; import com.gregtechceu.gtceu.common.item.tool.behavior.MetaMachineConfigCopyBehaviour; import com.gregtechceu.gtceu.config.ConfigHolder; @@ -73,22 +75,14 @@ import org.jetbrains.annotations.NotNull; import java.util.*; -import java.util.function.Function; import java.util.function.Supplier; import java.util.stream.Collectors; -import static com.gregtechceu.gtceu.common.data.GTCreativeModeTabs.ITEM; -import static com.gregtechceu.gtceu.common.data.GTCreativeModeTabs.TOOL; -import static com.gregtechceu.gtceu.common.data.GTModels.createTextureModel; -import static com.gregtechceu.gtceu.common.data.GTModels.overrideModel; +import static com.gregtechceu.gtceu.common.data.GTCreativeModeTabs.*; +import static com.gregtechceu.gtceu.common.data.models.GTModels.*; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; import static com.gregtechceu.gtceu.utils.FormattingUtil.toEnglishName; -/** - * @author KilaBash - * @date 2023/2/14 - * @implNote GTItems - */ public class GTItems { ////////////////////////////////////// @@ -216,7 +210,6 @@ public class GTItems { public static ItemEntry SHAPE_EXTRUDER_BOTTLE; public static ItemEntry SHAPE_EXTRUDER_FOIL; public static ItemEntry SHAPE_EXTRUDER_GEAR_SMALL; - public static ItemEntry SHAPE_EXTRUDER_ROD_LONG; public static ItemEntry SHAPE_EXTRUDER_ROTOR; static { @@ -289,10 +282,6 @@ public class GTItems { .lang("Extruder Mold (Small Gear)") .onRegister(materialInfo(new ItemMaterialInfo(new MaterialStack(GTMaterials.Steel, GTValues.M * 4)))) .register(); - SHAPE_EXTRUDERS[25] = SHAPE_EXTRUDER_ROD_LONG = REGISTRATE.item("long_rod_extruder_mold", Item::new) - .lang("Extruder Mold (Long Rod)") - .onRegister(materialInfo(new ItemMaterialInfo(new MaterialStack(GTMaterials.Steel, GTValues.M * 4)))) - .register(); SHAPE_EXTRUDERS[26] = SHAPE_EXTRUDER_ROTOR = REGISTRATE.item("rotor_extruder_mold", Item::new) .lang("Extruder Mold (Rotor)") .onRegister(materialInfo(new ItemMaterialInfo(new MaterialStack(GTMaterials.Steel, GTValues.M * 4)))) @@ -393,11 +382,9 @@ public static ItemEntry createFluidCell(Material mat, int capacit .setData(ProviderType.ITEM_MODEL, NonNullBiConsumer.noop()) .properties(p -> p.stacksTo(stackSize)) .onRegister(attach(cellName(), - ThermalFluidStats.create(FluidType.BUCKET_VOLUME * capacity, - prop, true), + ThermalFluidStats.create(FluidType.BUCKET_VOLUME * capacity, prop, true), new ItemFluidContainer())) - .onRegister( - materialInfo(new ItemMaterialInfo(new MaterialStack(mat, GTValues.M * matSize)))) + .onRegister(materialInfo(new ItemMaterialInfo(new MaterialStack(mat, GTValues.M * matSize)))) .register(); } @@ -405,23 +392,25 @@ public static ItemEntry createFluidCell(Material mat, int capacit .lang("Matches") .setData(ProviderType.ITEM_MODEL, NonNullBiConsumer.noop()) .onRegister(attach(new LighterBehavior(false, false, false))) + .tag(CustomTags.TOOLS_IGNITER) .register(); public static ItemEntry TOOL_MATCHBOX = REGISTRATE.item("matchbox", ComponentItem::create) .lang("Matchbox") .properties(p -> p.stacksTo(1)) .setData(ProviderType.ITEM_MODEL, NonNullBiConsumer.noop()) - .onRegister(attach(new LighterBehavior(false, true, false, Items.PAPER, 16))) + .onRegister(attach(new LighterBehavior(false, true, false, () -> new ItemStack(Items.PAPER, 1), 16))) + .tag(CustomTags.TOOLS_IGNITER) .register(); public static ItemEntry TOOL_LIGHTER_INVAR = REGISTRATE.item("invar_lighter", ComponentItem::create) .lang("Invar Lighter") .properties(p -> p.stacksTo(1)) .setData(ProviderType.ITEM_MODEL, NonNullBiConsumer.noop()) .onRegister(attach(new LighterBehavior(true, true, true))) - .onRegister(attach(FilteredFluidContainer.create(100, true, - x -> x.getFluid().is(CustomTags.LIGHTER_FLUIDS)), + .onRegister(attach(new FilteredFluidContainer(100, true, x -> x.getFluid().is(CustomTags.LIGHTER_FLUIDS)), new ItemFluidContainer())) .onRegister(modelPredicate(GTCEu.id("lighter_open"), (itemStack) -> itemStack.getOrCreateTag().getBoolean(LighterBehavior.LIGHTER_OPEN) ? 1.0f : 0.0f)) + .tag(CustomTags.TOOLS_IGNITER) .register(); public static ItemEntry TOOL_LIGHTER_PLATINUM = REGISTRATE .item("platinum_lighter", ComponentItem::create) @@ -429,11 +418,11 @@ public static ItemEntry createFluidCell(Material mat, int capacit .properties(p -> p.stacksTo(1).rarity(Rarity.UNCOMMON)) .setData(ProviderType.ITEM_MODEL, NonNullBiConsumer.noop()) .onRegister(attach(new LighterBehavior(true, true, true))) - .onRegister(attach(FilteredFluidContainer.create(1000, true, - x -> x.getFluid().is(CustomTags.LIGHTER_FLUIDS)), + .onRegister(attach(new FilteredFluidContainer(1000, true, x -> x.getFluid().is(CustomTags.LIGHTER_FLUIDS)), new ItemFluidContainer())) .onRegister(modelPredicate(GTCEu.id("lighter_open"), (itemStack) -> itemStack.getOrCreateTag().getBoolean(LighterBehavior.LIGHTER_OPEN) ? 1.0f : 0.0f)) + .tag(CustomTags.TOOLS_IGNITER) .register(); public static ItemEntry CARBON_FIBERS = REGISTRATE.item("carbon_fibers", Item::new) @@ -1436,13 +1425,13 @@ public static ItemEntry createFluidCell(Material mat, int capacit .register() : null; public static ItemEntry TOOL_DATA_STICK = REGISTRATE.item("data_stick", ComponentItem::create) - .lang("Data Stick").onRegister(attach(new DataItemBehavior())) + .lang("Data Stick").onRegister(attach(new DataItemBehavior(false, 8))) .register(); public static ItemEntry TOOL_DATA_ORB = REGISTRATE.item("data_orb", ComponentItem::create) - .lang("Data Orb").onRegister(attach(new DataItemBehavior())) + .lang("Data Orb").onRegister(attach(new DataItemBehavior(false, 64))) .register(); public static ItemEntry TOOL_DATA_MODULE = REGISTRATE.item("data_module", ComponentItem::create) - .lang("Data Module").onRegister(attach(new DataItemBehavior(true))) + .lang("Data Module").onRegister(attach(new DataItemBehavior(true, 256))) .register(); public static final Map> GLASS_LENSES = new HashMap<>(); @@ -1804,6 +1793,11 @@ public static ItemEntry createFluidCell(Material mat, int capacit new CoverPlaceBehavior(GTCovers.FLUID_FILTER))) .onRegister(materialInfo(new ItemMaterialInfo(new MaterialStack(GTMaterials.Zinc, GTValues.M * 3 / 2)))) .register(); + public static ItemEntry COVER_WIRELESS_TRANSMITTER = REGISTRATE + .item("wireless_transmitter_cover", ComponentItem::create) + .lang("Wireless Transmitter") + .onRegister(attach(new CoverPlaceBehavior(GTCovers.WIRELESS_TRANSMITTER))) + .register(); public static ItemEntry COVER_MACHINE_CONTROLLER = REGISTRATE .item("machine_controller_cover", ComponentItem::create) @@ -1883,7 +1877,9 @@ public static ItemEntry createFluidCell(Material mat, int capacit public static ItemEntry COVER_ENDER_FLUID_LINK = REGISTRATE .item("ender_fluid_link_cover", ComponentItem::create) .lang("Ender Fluid Link") + .onRegister(attach(new CoverPlaceBehavior(GTCovers.ENDER_FLUID_LINK))) .register(); + public static ItemEntry COVER_FLUID_VOIDING = REGISTRATE .item("fluid_voiding_cover", ComponentItem::create) .lang("Fluid Voiding Cover") @@ -2021,7 +2017,7 @@ public static ItemEntry createFluidCell(Material mat, int capacit .effect(() -> new MobEffectInstance(MobEffects.HUNGER, 400), .40f) .effect(() -> new MobEffectInstance(MobEffects.POISON, 100), .05f) .build()))) - .tag(CustomTags.DOUGHS) + .tag(CustomTags.WHEAT_DOUGHS) .register(); public static ItemEntry PLANT_BALL = REGISTRATE.item("plant_ball", ComponentItem::create) .onRegister(burnTime(75)).register(); @@ -2512,9 +2508,18 @@ public static ItemEntry createFluidCell(Material mat, int capacit .lang("Treated Wood Boat with Chest") .register(); + public static ItemEntry TEXT_MODULE = REGISTRATE.item("text_module", ComponentItem::create) + .onRegister(attach(new TextModuleBehaviour())) + .register(); + + public static ItemEntry IMAGE_MODULE = REGISTRATE.item("image_module", ComponentItem::create) + .onRegister(attach(new ImageModuleBehaviour())) + .register(); + public static void init() { GTMaterialItems.generateMaterialItems(); GTMaterialItems.generateTools(); + GTMaterialItems.generateArmors(); } public static NonNullConsumer materialInfo(ItemMaterialInfo materialInfo) { @@ -2581,7 +2586,7 @@ public static NonNullConsumer attach(IItemComponen } public static NonNullConsumer modelPredicate(ResourceLocation predicate, - Function property) { + StackProperty property) { return item -> { if (GTCEu.isClientSide()) { ItemProperties.register(item, predicate, (itemStack, c, l, i) -> property.apply(itemStack)); @@ -2618,4 +2623,10 @@ T extends Item> NonNullBiConsumer, RegistrateLangProvide prov.add(ctx.get(), names.stream().map(StringUtils::capitalize).collect(Collectors.joining(" "))); }; } + + @FunctionalInterface + public interface StackProperty { + + float apply(ItemStack stack); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java index ff724ec3f97..ed780c94e37 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java @@ -11,14 +11,19 @@ import com.gregtechceu.gtceu.api.machine.SimpleTieredMachine; import com.gregtechceu.gtceu.api.machine.multiblock.CleanroomType; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.steam.SimpleSteamMachine; import com.gregtechceu.gtceu.api.machine.steam.SteamBoilerMachine; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.api.registry.GTRegistries; -import com.gregtechceu.gtceu.client.renderer.machine.*; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderHelper; import com.gregtechceu.gtceu.client.util.TooltipHelper; import com.gregtechceu.gtceu.common.data.machines.*; +import com.gregtechceu.gtceu.common.data.models.GTModels; import com.gregtechceu.gtceu.common.machine.electric.*; import com.gregtechceu.gtceu.common.machine.multiblock.part.*; +import com.gregtechceu.gtceu.common.machine.multiblock.part.monitor.MonitorPartMachine; import com.gregtechceu.gtceu.common.machine.steam.SteamLiquidBoilerMachine; import com.gregtechceu.gtceu.common.machine.steam.SteamMinerMachine; import com.gregtechceu.gtceu.common.machine.steam.SteamSolarBoiler; @@ -34,7 +39,6 @@ import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidType; import net.minecraftforge.fml.ModLoader; @@ -46,20 +50,16 @@ import java.util.function.BiConsumer; import static com.gregtechceu.gtceu.api.GTValues.*; -import static com.gregtechceu.gtceu.api.capability.recipe.IO.IN; -import static com.gregtechceu.gtceu.api.capability.recipe.IO.OUT; +import static com.gregtechceu.gtceu.api.capability.recipe.IO.*; +import static com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties.*; import static com.gregtechceu.gtceu.common.data.GTCreativeModeTabs.MACHINE; import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.DUMMY_RECIPES; import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.STEAM_BOILER_RECIPES; import static com.gregtechceu.gtceu.common.data.machines.GTMachineUtils.*; import static com.gregtechceu.gtceu.common.data.machines.GTMachineUtils.ALL_TIERS; +import static com.gregtechceu.gtceu.common.data.models.GTMachineModels.*; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; -/** - * @author KilaBash - * @date 2023/2/19 - * @implNote GTMachines - */ public class GTMachines { static { @@ -76,7 +76,7 @@ public class GTMachines { (pressure, builder) -> builder.rotationState(RotationState.ALL) .recipeType(STEAM_BOILER_RECIPES) .recipeModifier(SteamBoilerMachine::recipeModifier) - .workableSteamHullRenderer(pressure, GTCEu.id("block/generators/boiler/coal")) + .workableSteamHullModel(pressure, GTCEu.id("block/generators/boiler/coal")) .tooltips(Component.translatable("gtceu.universal.tooltip.produces_fluid", (pressure ? ConfigHolder.INSTANCE.machines.smallBoilers.hpSolidBoilerBaseOutput : ConfigHolder.INSTANCE.machines.smallBoilers.solidBoilerBaseOutput) * @@ -89,7 +89,7 @@ public class GTMachines { (pressure, builder) -> builder.rotationState(RotationState.ALL) .recipeType(STEAM_BOILER_RECIPES) .recipeModifier(SteamBoilerMachine::recipeModifier) - .workableSteamHullRenderer(pressure, GTCEu.id("block/generators/boiler/lava")) + .workableSteamHullModel(pressure, GTCEu.id("block/generators/boiler/lava")) .tooltips(Component.translatable("gtceu.universal.tooltip.produces_fluid", (pressure ? ConfigHolder.INSTANCE.machines.smallBoilers.hpLiquidBoilerBaseOutput : ConfigHolder.INSTANCE.machines.smallBoilers.liquidBoilerBaseOutput) * @@ -102,7 +102,7 @@ public class GTMachines { (pressure, builder) -> builder.rotationState(RotationState.NON_Y_AXIS) .recipeType(STEAM_BOILER_RECIPES) .recipeModifier(SteamBoilerMachine::recipeModifier) - .workableSteamHullRenderer(pressure, GTCEu.id("block/generators/boiler/solar")) + .workableSteamHullModel(pressure, GTCEu.id("block/generators/boiler/solar")) .tooltips(Component.translatable("gtceu.universal.tooltip.produces_fluid", (pressure ? ConfigHolder.INSTANCE.machines.smallBoilers.hpSolarBoilerBaseOutput : ConfigHolder.INSTANCE.machines.smallBoilers.solarBoilerBaseOutput) * @@ -117,7 +117,8 @@ public class GTMachines { .recipeType(GTRecipeTypes.MACERATOR_RECIPES) .recipeModifier(SimpleSteamMachine::recipeModifier) .addOutputLimit(ItemRecipeCapability.CAP, 1) - .renderer(() -> new WorkableSteamMachineRenderer(pressure, GTCEu.id("block/machines/macerator"))) + .modelProperty(GTMachineModelProperties.VENT_DIRECTION, RelativeDirection.BACK) + .workableSteamHullModel(pressure, GTCEu.id("block/machines/macerator")) .register()); public static final Pair STEAM_COMPRESSOR = registerSimpleSteamMachines( "compressor", GTRecipeTypes.COMPRESSOR_RECIPES); @@ -144,9 +145,10 @@ public class GTMachines { int maxArea = IMiner.getWorkingArea(isHP ? 6 : 4); tooltip.add(Component.translatable("gtceu.universal.tooltip.working_area", maxArea, maxArea)); }) - .renderer(() -> new SteamMinerRenderer(isHP, - isHP ? GTCEu.id("block/machines/high_pressure_steam_miner") : - GTCEu.id("block/machines/steam_miner"))) + .modelProperty(GTMachineModelProperties.VENT_DIRECTION, RelativeDirection.UP) + .workableSteamHullModel(isHP, isHP ? + GTCEu.id("block/machines/high_pressure_steam_miner") : + GTCEu.id("block/machines/steam_miner")) .register()); ////////////////////////////////////// @@ -156,7 +158,7 @@ public class GTMachines { HullMachine::new, (tier, builder) -> builder .rotationState(RotationState.ALL) - .overlayTieredHullRenderer("hull") + .overlayTieredHullModel("hull") .abilities(PartAbility.PASSTHROUGH_HATCH) .langValue("%s §fMachine Hull".formatted(VNF[tier])) .tooltips(Component.translatable("gtceu.machine.hull.tooltip")) @@ -237,9 +239,9 @@ public class GTMachines { default -> 4; }) .recipeModifier(GTRecipeModifiers.OC_NON_PERFECT) - .workableTieredHullRenderer(GTCEu.id("block/machines/macerator")) + .workableTieredHullModel(GTCEu.id("block/machines/macerator")) .tooltips(workableTiered(tier, GTValues.V[tier], GTValues.V[tier] * 64, - GTRecipeTypes.MACERATOR_RECIPES, defaultTankSizeFunction.apply(tier), true)) + GTRecipeTypes.MACERATOR_RECIPES, defaultTankSizeFunction.applyAsInt(tier), true)) .register(), ELECTRIC_TIERS); public static final MachineDefinition[] GAS_COLLECTOR = registerSimpleMachines("gas_collector", @@ -252,9 +254,9 @@ public class GTMachines { .rotationState(RotationState.NON_Y_AXIS) .recipeType(GTRecipeTypes.ROCK_BREAKER_RECIPES) .recipeModifier(GTRecipeModifiers.OC_NON_PERFECT) - .workableTieredHullRenderer(GTCEu.id("block/machines/rock_crusher")) + .workableTieredHullModel(GTCEu.id("block/machines/rock_crusher")) .tooltips(workableTiered(tier, GTValues.V[tier], GTValues.V[tier] * 64, - GTRecipeTypes.ROCK_BREAKER_RECIPES, defaultTankSizeFunction.apply(tier), true)) + GTRecipeTypes.ROCK_BREAKER_RECIPES, defaultTankSizeFunction.applyAsInt(tier), true)) .tooltips(explosion()) .register(), ELECTRIC_TIERS); @@ -266,9 +268,9 @@ public class GTMachines { .rotationState(RotationState.NON_Y_AXIS) .recipeType(GTRecipeTypes.AIR_SCRUBBER_RECIPES) .recipeModifier(GTRecipeModifiers.OC_NON_PERFECT) - .workableTieredHullRenderer(GTCEu.id("block/machines/air_scrubber")) + .workableTieredHullModel(GTCEu.id("block/machines/air_scrubber")) .tooltips(workableTiered(tier, GTValues.V[tier], GTValues.V[tier] * 64, - GTRecipeTypes.AIR_SCRUBBER_RECIPES, defaultTankSizeFunction.apply(tier), true)) + GTRecipeTypes.AIR_SCRUBBER_RECIPES, defaultTankSizeFunction.applyAsInt(tier), true)) .tooltips(explosion()) .register(), LOW_TIERS); @@ -290,9 +292,9 @@ public class GTMachines { // ******** Electric ********// ////////////////////////////////////// public static final MachineDefinition[] TRANSFORMER = registerTransformerMachines("", 1); - public static final MachineDefinition[] HI_AMP_TRANSFORMER_2A = registerTransformerMachines("Hi-Amp (2x) ", 2); - public static final MachineDefinition[] HI_AMP_TRANSFORMER_4A = registerTransformerMachines("Hi-Amp (4x) ", 4); - public static final MachineDefinition[] POWER_TRANSFORMER = registerTransformerMachines("Power ", 16); + public static final MachineDefinition[] HI_AMP_TRANSFORMER_2A = registerTransformerMachines("Hi-Amp (2x)", 2); + public static final MachineDefinition[] HI_AMP_TRANSFORMER_4A = registerTransformerMachines("Hi-Amp (4x)", 4); + public static final MachineDefinition[] POWER_TRANSFORMER = registerTransformerMachines("Power", 16); public static final MachineDefinition[] ENERGY_CONVERTER_1A = registerConverter(1); public static final MachineDefinition[] ENERGY_CONVERTER_4A = registerConverter(4); @@ -304,8 +306,8 @@ public class GTMachines { .langValue("Long Distance Item Pipeline Endpoint") .rotationState(RotationState.ALL) .tier(LV) - .tieredHullRenderer(GTCEu.id("block/machine/ld_item_endpoint_machine")) - .tooltips(LangHandler.getMultiLang("gtceu.machine.endpoint.tooltip").toArray(Component[]::new)) + .blockModel(GTModels.createModelBlockState(GTCEu.id("block/machine/long_distance_item_pipeline_endpoint"))) + .tooltips(LangHandler.getMultiLang("gtceu.machine.endpoint.tooltip")) .tooltipBuilder((stack, tooltip) -> { if (ConfigHolder.INSTANCE.machines.ldItemPipeMinDistance > 0) { tooltip.add(Component.translatable("gtceu.machine.endpoint.tooltip.min_length", @@ -319,7 +321,7 @@ public class GTMachines { .langValue("Long Distance Fluid Pipeline Endpoint") .rotationState(RotationState.ALL) .tier(LV) - .tieredHullRenderer(GTCEu.id("block/machine/ld_fluid_endpoint_machine")) + .blockModel(GTModels.createModelBlockState(GTCEu.id("block/machine/long_distance_fluid_pipeline_endpoint"))) .tooltips(Component.translatable("gtceu.machine.endpoint.tooltip.0"), Component.translatable("gtceu.machine.endpoint.tooltip.1"), Component.translatable("gtceu.machine.endpoint.tooltip.2")) @@ -342,7 +344,7 @@ public class GTMachines { public static final MachineDefinition[] PUMP = registerTieredMachines("pump", PumpMachine::new, (tier, builder) -> builder .rotationState(RotationState.ALL) - .tieredHullRenderer(GTCEu.id("block/machine/pump_machine")) + .tieredHullModel(GTCEu.id("block/machine/template/pump_machine")) .langValue("%s Pump %s".formatted(VLVH[tier], VLVT[tier])) .tooltips(Component.translatable("gtceu.machine.pump.tooltip"), Component.translatable("gtceu.universal.tooltip.voltage_in", @@ -362,7 +364,7 @@ public class GTMachines { (tier, builder) -> builder .rotationState(RotationState.ALL) .editableUI(FisherMachine.EDITABLE_UI_CREATOR.apply(GTCEu.id("fisher"), (tier + 1) * (tier + 1))) - .tieredHullRenderer(GTCEu.id("block/machine/fisher_machine")) + .model(createFisherModel()) .langValue("%s Fisher %s".formatted(VLVH[tier], VLVT[tier])) .tooltips(Component.translatable("gtceu.machine.fisher.tooltip"), Component.translatable("gtceu.machine.fisher.speed", FisherMachine.calcMaxProgress(tier)), @@ -382,7 +384,7 @@ public class GTMachines { .rotationState(RotationState.NON_Y_AXIS) .editableUI(BlockBreakerMachine.EDITABLE_UI_CREATOR.apply(GTCEu.id("block_breaker"), (tier + 1) * (tier + 1))) - .tieredHullRenderer(GTCEu.id("block/machine/block_breaker_machine")) + .workableTieredHullModel(GTCEu.id("block/machines/block_breaker")) .langValue("%s Block Breaker %s".formatted(VLVH[tier], VLVT[tier])) .tooltips(Component.translatable("gtceu.machine.block_breaker.tooltip"), Component.translatable("gtceu.machine.block_breaker.speed_bonus", @@ -403,7 +405,7 @@ public class GTMachines { .langValue("%s Miner %s".formatted(VLVH[tier], VLVT[tier])) .recipeType(DUMMY_RECIPES) .editableUI(MinerMachine.EDITABLE_UI_CREATOR.apply(GTCEu.id("miner"), (tier + 1) * (tier + 1))) - .renderer(() -> new MinerRenderer(tier, GTCEu.id("block/machines/miner"))) + .workableTieredHullModel(GTCEu.id("block/machines/miner")) .tooltipBuilder((stack, tooltip) -> { int maxArea = IMiner.getWorkingArea(tier * 8); long energyPerTick = GTValues.V[tier - 1]; @@ -430,7 +432,10 @@ public class GTMachines { .rotationState(RotationState.NONE) .langValue("%s World Accelerator %s".formatted(VLVH[tier], VLVT[tier])) .recipeType(DUMMY_RECIPES) - .renderer(() -> new WorldAcceleratorRenderer(tier, GTCEu.id("block/machines/world_accelerator_te"), + .modelProperty(GTMachineModelProperties.IS_RANDOM_TICK_MODE, true) + .modelProperty(GTMachineModelProperties.IS_WORKING_ENABLED, true) + .modelProperty(GTMachineModelProperties.IS_ACTIVE, false) + .model(createWorldAcceleratorModel(GTCEu.id("block/machines/world_accelerator_te"), GTCEu.id("block/machines/world_accelerator"))) .tooltipBuilder((stack, tooltip) -> { int randTickWorkingArea = 3 + (tier - 1) * 2; @@ -456,10 +461,11 @@ public class GTMachines { .rotationState(RotationState.NONE) .langValue("%s Item Collector %s".formatted(VLVH[tier], VLVT[tier])) .recipeType(DUMMY_RECIPES) + .modelProperty(GTMachineModelProperties.IS_ACTIVE, false) + .modelProperty(GTMachineModelProperties.IS_WORKING_ENABLED, false) .editableUI(ItemCollectorMachine.EDITABLE_UI_CREATOR.apply(GTCEu.id("item_collector"), ItemCollectorMachine.getINVENTORY_SIZES()[tier])) - .renderer(() -> new WorkableTieredHullMachineRenderer(tier, - GTCEu.id("block/machines/item_collector"))) + .model(createItemCollectorModel(GTCEu.id("block/machines/item_collector"))) .tooltips( Component.translatable("gtceu.machine.item_collector.tooltip"), Component.translatable("gtceu.machine.item_collector.gui.collect_range", @@ -481,7 +487,8 @@ public class GTMachines { (tier, builder) -> builder .langValue("%s Buffer %s".formatted(VLVH[tier], VLVT[tier])) .rotationState(RotationState.NONE) - .tieredHullRenderer(GTCEu.id("block/machine/buffer")) + .model(createSingleOverlayTieredHullMachineModel(GTCEu.id("block/overlay/machine/overlay_buffer"), + GTCEu.id("block/overlay/machine/overlay_buffer_emissive"))) .tooltips( Component.translatable("gtceu.machine.buffer.tooltip"), Component.translatable( @@ -502,13 +509,20 @@ public class GTMachines { public static final MachineDefinition CREATIVE_ENERGY = REGISTRATE .machine("creative_energy", CreativeEnergyContainerMachine::new) .rotationState(RotationState.NONE) + .model(createSingleOverlayTieredHullMachineModel(GTModels.BLANK_TEXTURE, + GTCEu.id("block/overlay/machine/overlay_energy_emitter"))) .tooltipBuilder(CREATIVE_TOOLTIPS) + .tier(MAX) .register(); public static final MachineDefinition CREATIVE_COMPUTATION_PROVIDER = REGISTRATE .machine("creative_computation_provider", CreativeComputationProviderMachine::new) .rotationState(RotationState.NONE) + .model(createSingleOverlayTieredHullMachineModel( + GTCEu.id("block/overlay/machine/overlay_data_hatch_optical"), + GTCEu.id("block/overlay/machine/overlay_data_hatch_optical_emissive"))) .tooltipBuilder(CREATIVE_TOOLTIPS) + .tier(MAX) .register(); public static final MachineDefinition CREATIVE_FLUID = REGISTRATE @@ -524,8 +538,9 @@ public class GTMachines { FormattingUtil.formatNumbers(perCycle))); } }) - .renderer(() -> new QuantumTankRenderer(MAX, GTCEu.id("block/machine/creative_tank"))) - .hasTESR(true) + .model(createBasicMachineModel(GTCEu.id("block/machine/template/quantum/creative_container")) + .andThen(b -> b.addDynamicRenderer(DynamicRenderHelper::createQuantumTankRender))) + .hasBER(true) .register(); public static final MachineDefinition CREATIVE_ITEM = REGISTRATE @@ -541,85 +556,16 @@ public class GTMachines { FormattingUtil.formatNumbers(perCycle))); } }) - .renderer(() -> new QuantumChestRenderer(MAX, GTCEu.id("block/machine/creative_chest"))) - .hasTESR(true) + .model(createBasicMachineModel(GTCEu.id("block/machine/template/quantum/creative_container")) + .andThen(b -> b.addDynamicRenderer(DynamicRenderHelper::createQuantumChestRender))) + .hasBER(true) .register(); - public static BiConsumer> CHEST_TOOLTIPS = (stack, list) -> { - if (stack.hasTag()) { - ItemStack itemStack = ItemStack.of(stack.getOrCreateTagElement("stored")); - long storedAmount = stack.getOrCreateTag().getLong("storedAmount"); - list.add(1, Component.translatable("gtceu.universal.tooltip.item_stored", itemStack.getHoverName(), - FormattingUtil.formatNumbers(storedAmount))); - } - }; - - public static final MachineDefinition[] SUPER_CHEST = registerTieredMachines("super_chest", - (holder, tier) -> new QuantumChestMachine(holder, tier, 4_000_000 * (long) Math.pow(2, tier - 1)), - (tier, builder) -> builder - .langValue("Super Chest " + LVT[tier]) - .blockProp(BlockBehaviour.Properties::dynamicShape) - .rotationState(RotationState.ALL) - .allowExtendedFacing(true) - .renderer(() -> new QuantumChestRenderer(tier)) - .hasTESR(true) - .tooltipBuilder(CHEST_TOOLTIPS) - .tooltips(Component.translatable("gtceu.machine.quantum_chest.tooltip"), - Component.translatable("gtceu.universal.tooltip.item_storage_total", - FormattingUtil.formatNumbers(4_000_000 * (long) Math.pow(2, tier - 1)))) - .register(), - LOW_TIERS); - - public static final MachineDefinition[] QUANTUM_CHEST = registerTieredMachines("quantum_chest", - (holder, tier) -> new QuantumChestMachine(holder, tier, - tier == MAX ? Long.MAX_VALUE : 4_000_000 * (long) Math.pow(2, tier - 1)), - (tier, builder) -> builder - .langValue("Quantum Chest " + LVT[tier]) - .blockProp(BlockBehaviour.Properties::dynamicShape) - .rotationState(RotationState.ALL) - .allowExtendedFacing(true) - .renderer(() -> new QuantumChestRenderer(tier)) - .hasTESR(true) - .tooltipBuilder(CHEST_TOOLTIPS) - .tooltips(Component.translatable("gtceu.machine.quantum_chest.tooltip"), - Component.translatable("gtceu.universal.tooltip.item_storage_total", - FormattingUtil.formatNumbers(4_000_000 * (long) Math.pow(2, tier - 1)))) - .register(), - HIGH_TIERS); - - public static final MachineDefinition[] SUPER_TANK = registerTieredMachines("super_tank", - (holder, tier) -> new QuantumTankMachine(holder, tier, - 4000 * FluidType.BUCKET_VOLUME * (long) Math.pow(2, tier - 1)), - (tier, builder) -> builder - .langValue("Super Tank " + LVT[tier]) - .blockProp(BlockBehaviour.Properties::dynamicShape) - .rotationState(RotationState.ALL) - .allowExtendedFacing(true) - .renderer(() -> new QuantumTankRenderer(tier)) - .hasTESR(true) - .tooltipBuilder(TANK_TOOLTIPS) - .tooltips(Component.translatable("gtceu.machine.quantum_tank.tooltip"), - Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity", - FormattingUtil.formatNumbers(4_000_000 * (long) Math.pow(2, tier - 1)))) - .register(), - LOW_TIERS); + public static final MachineDefinition[] SUPER_CHEST = registerQuantumChests("super_chest", LOW_TIERS); + public static final MachineDefinition[] QUANTUM_CHEST = registerQuantumChests("quantum_chest", HIGH_TIERS); - public static final MachineDefinition[] QUANTUM_TANK = registerTieredMachines("quantum_tank", - (holder, tier) -> new QuantumTankMachine(holder, tier, - 4000 * FluidType.BUCKET_VOLUME * (long) Math.pow(2, tier - 1)), - (tier, builder) -> builder - .langValue("Quantum Tank " + LVT[tier]) - .blockProp(BlockBehaviour.Properties::dynamicShape) - .rotationState(RotationState.ALL) - .allowExtendedFacing(true) - .renderer(() -> new QuantumTankRenderer(tier)) - .hasTESR(true) - .tooltipBuilder(TANK_TOOLTIPS) - .tooltips(Component.translatable("gtceu.machine.quantum_tank.tooltip"), - Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity", - FormattingUtil.formatNumbers(4_000_000 * (long) Math.pow(2, tier - 1)))) - .register(), - HIGH_TIERS); + public static final MachineDefinition[] SUPER_TANK = registerQuantumTanks("super_tank", LOW_TIERS); + public static final MachineDefinition[] QUANTUM_TANK = registerQuantumTanks("quantum_tank", HIGH_TIERS); public static MachineDefinition WOODEN_CRATE = registerCrate(GTMaterials.Wood, 27, "Wooden Crate"); public static MachineDefinition BRONZE_CRATE = registerCrate(GTMaterials.Bronze, 54, "Bronze Crate"); @@ -657,10 +603,11 @@ public class GTMachines { .langValue(VNF[tier] + " Input Bus") .rotationState(RotationState.ALL) .abilities(PartAbility.IMPORT_ITEMS) - .overlayTieredHullRenderer("item_bus.import") + .colorOverlayTieredHullModel("overlay_pipe_in_emissive", null, OVERLAY_ITEM_HATCH) .tooltips(Component.translatable("gtceu.machine.item_bus.import.tooltip"), Component.translatable("gtceu.universal.tooltip.item_storage_capacity", (1 + Math.min(9, tier)) * (1 + Math.min(9, tier)))) + .allowCoverOnFront(true) .register(), ALL_TIERS); @@ -670,45 +617,46 @@ public class GTMachines { .langValue(VNF[tier] + " Output Bus") .rotationState(RotationState.ALL) .abilities(PartAbility.EXPORT_ITEMS) - .overlayTieredHullRenderer("item_bus.export") + .colorOverlayTieredHullModel("overlay_pipe_out_emissive", null, OVERLAY_ITEM_HATCH) .tooltips(Component.translatable("gtceu.machine.item_bus.export.tooltip"), Component.translatable("gtceu.universal.tooltip.item_storage_capacity", (1 + Math.min(9, tier)) * (1 + Math.min(9, tier)))) + .allowCoverOnFront(true) .register(), ALL_TIERS); public final static MachineDefinition[] FLUID_IMPORT_HATCH = registerFluidHatches( - "input_hatch", "Input Hatch", "fluid_hatch.import", "fluid_hatch.import", + "input_hatch", "Input Hatch", "fluid_hatch.import", IN, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_1X, 1, ALL_TIERS, PartAbility.IMPORT_FLUIDS, PartAbility.IMPORT_FLUIDS_1X); public final static MachineDefinition[] FLUID_IMPORT_HATCH_4X = registerFluidHatches( - "input_hatch_4x", "Quadruple Input Hatch", "fluid_hatch.import_4x", "fluid_hatch.import", + "input_hatch_4x", "Quadruple Input Hatch", "fluid_hatch.import", IN, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_4X, 4, MULTI_HATCH_TIERS, PartAbility.IMPORT_FLUIDS, PartAbility.IMPORT_FLUIDS_4X); public final static MachineDefinition[] FLUID_IMPORT_HATCH_9X = registerFluidHatches( - "input_hatch_9x", "Nonuple Input Hatch", "fluid_hatch.import_9x", "fluid_hatch.import", + "input_hatch_9x", "Nonuple Input Hatch", "fluid_hatch.import", IN, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_9X, 9, MULTI_HATCH_TIERS, PartAbility.IMPORT_FLUIDS, PartAbility.IMPORT_FLUIDS_9X); public final static MachineDefinition[] FLUID_EXPORT_HATCH = registerFluidHatches( - "output_hatch", "Output Hatch", "fluid_hatch.export", "fluid_hatch.export", + "output_hatch", "Output Hatch", "fluid_hatch.export", OUT, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_1X, 1, ALL_TIERS, PartAbility.EXPORT_FLUIDS, PartAbility.EXPORT_FLUIDS_1X); public final static MachineDefinition[] FLUID_EXPORT_HATCH_4X = registerFluidHatches( - "output_hatch_4x", "Quadruple Output Hatch", "fluid_hatch.export_4x", "fluid_hatch.export", + "output_hatch_4x", "Quadruple Output Hatch", "fluid_hatch.export", OUT, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_4X, 4, MULTI_HATCH_TIERS, PartAbility.EXPORT_FLUIDS, PartAbility.EXPORT_FLUIDS_4X); public final static MachineDefinition[] FLUID_EXPORT_HATCH_9X = registerFluidHatches( - "output_hatch_9x", "Nonuple Output Hatch", "fluid_hatch.export_9x", "fluid_hatch.export", + "output_hatch_9x", "Nonuple Output Hatch", "fluid_hatch.export", OUT, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_9X, 9, MULTI_HATCH_TIERS, PartAbility.EXPORT_FLUIDS, PartAbility.EXPORT_FLUIDS_9X); @@ -726,7 +674,7 @@ public class GTMachines { FormattingUtil .formatNumbers(EnergyHatchPartMachine.getHatchEnergyCapacity(tier, 2))), Component.translatable("gtceu.machine.energy_hatch.input.tooltip")) - .overlayTieredHullRenderer("energy_hatch.input") + .overlayTieredHullModel("energy_input_hatch") .register(), ALL_TIERS); @@ -743,7 +691,7 @@ public class GTMachines { FormattingUtil .formatNumbers(EnergyHatchPartMachine.getHatchEnergyCapacity(tier, 2))), Component.translatable("gtceu.machine.energy_hatch.output.tooltip")) - .overlayTieredHullRenderer("energy_hatch.output") + .overlayTieredHullModel("energy_output_hatch") .register(), ALL_TIERS); @@ -760,7 +708,7 @@ public class GTMachines { FormattingUtil .formatNumbers(EnergyHatchPartMachine.getHatchEnergyCapacity(tier, 4))), Component.translatable("gtceu.machine.energy_hatch.input_hi_amp.tooltip")) - .overlayTieredHullRenderer("energy_hatch.input_4a") + .overlayTieredHullModel("energy_input_hatch_4a") .register(), GTValues.tiersBetween(EV, GTCEuAPI.isHighTier() ? MAX : UHV)); @@ -777,7 +725,7 @@ public class GTMachines { FormattingUtil .formatNumbers(EnergyHatchPartMachine.getHatchEnergyCapacity(tier, 4))), Component.translatable("gtceu.machine.energy_hatch.output_hi_amp.tooltip")) - .overlayTieredHullRenderer("energy_hatch.output_4a") + .overlayTieredHullModel("energy_output_hatch_4a") .register(), GTValues.tiersBetween(EV, GTCEuAPI.isHighTier() ? MAX : UHV)); @@ -794,7 +742,7 @@ public class GTMachines { FormattingUtil .formatNumbers(EnergyHatchPartMachine.getHatchEnergyCapacity(tier, 16))), Component.translatable("gtceu.machine.energy_hatch.input_hi_amp.tooltip")) - .overlayTieredHullRenderer("energy_hatch.input_16a") + .overlayTieredHullModel("energy_input_hatch_16a") .register(), GTValues.tiersBetween(EV, GTCEuAPI.isHighTier() ? MAX : UHV)); @@ -811,7 +759,7 @@ public class GTMachines { FormattingUtil .formatNumbers(EnergyHatchPartMachine.getHatchEnergyCapacity(tier, 16))), Component.translatable("gtceu.machine.energy_hatch.output_hi_amp.tooltip")) - .overlayTieredHullRenderer("energy_hatch.output_16a") + .overlayTieredHullModel("energy_output_hatch_16a") .register(), GTValues.tiersBetween(EV, GTCEuAPI.isHighTier() ? MAX : UHV)); @@ -829,7 +777,7 @@ public class GTMachines { FormattingUtil .formatNumbers(EnergyHatchPartMachine.getHatchEnergyCapacity(tier, 64))), Component.translatable("gtceu.machine.substation_hatch.input.tooltip")) - .overlayTieredHullRenderer("energy_hatch.input_64a") + .overlayTieredHullModel("energy_input_hatch_64a") .register(), GTValues.tiersBetween(EV, GTCEuAPI.isHighTier() ? MAX : UHV)); @@ -847,7 +795,7 @@ public class GTMachines { FormattingUtil .formatNumbers(EnergyHatchPartMachine.getHatchEnergyCapacity(tier, 64))), Component.translatable("gtceu.machine.substation_hatch.output.tooltip")) - .overlayTieredHullRenderer("energy_hatch.output_64a") + .overlayTieredHullModel("energy_output_hatch_64a") .register(), GTValues.tiersBetween(EV, GTCEuAPI.isHighTier() ? MAX : UHV)); @@ -857,10 +805,10 @@ public class GTMachines { .langValue("Muffler Hatch " + VNF[tier]) .rotationState(RotationState.ALL) .abilities(PartAbility.MUFFLER) - .overlayTieredHullRenderer("muffler_hatch") + .overlayTieredHullModel("muffler_hatch") .tooltips(LangHandler.getFromMultiLang("gtceu.machine.muffler_hatch.tooltip", 0), Component.translatable("gtceu.muffler.recovery_tooltip", Math.max(1, tier * 10)), - Component.translatable("gtceu.universal.enabled"), + Component.translatable("gtceu.part_sharing.enabled"), LangHandler.getFromMultiLang("gtceu.machine.muffler_hatch.tooltip", 1) .withStyle(ChatFormatting.DARK_RED)) .register(), @@ -870,51 +818,57 @@ public class GTMachines { .machine("steam_input_bus", holder -> new SteamItemBusPartMachine(holder, IN)) .rotationState(RotationState.ALL) .abilities(PartAbility.STEAM_IMPORT_ITEMS) - .overlaySteamHullRenderer("item_bus.import") + .colorOverlaySteamHullModel("overlay_pipe_in_emissive", null, OVERLAY_ITEM_HATCH) .langValue("Steam Input Bus") .tooltips(Component.translatable("gtceu.machine.item_bus.import.tooltip"), Component.translatable("gtceu.machine.steam_bus.tooltip"), Component.translatable("gtceu.universal.tooltip.item_storage_capacity", 4)) + .allowCoverOnFront(true) .register(); public static final MachineDefinition STEAM_EXPORT_BUS = REGISTRATE .machine("steam_output_bus", holder -> new SteamItemBusPartMachine(holder, OUT)) .rotationState(RotationState.ALL) .abilities(PartAbility.STEAM_EXPORT_ITEMS) - .overlaySteamHullRenderer("item_bus.export") + .colorOverlaySteamHullModel("overlay_pipe_out_emissive", null, OVERLAY_ITEM_HATCH) .langValue("Steam Output Bus") .tooltips(Component.translatable("gtceu.machine.item_bus.export.tooltip"), Component.translatable("gtceu.machine.steam_bus.tooltip"), Component.translatable("gtceu.universal.tooltip.item_storage_capacity", 4)) + .allowCoverOnFront(true) .register(); public static final MachineDefinition STEAM_HATCH = REGISTRATE .machine("steam_input_hatch", SteamHatchPartMachine::new) .rotationState(RotationState.ALL) .abilities(PartAbility.STEAM) - .overlaySteamHullRenderer("steam_hatch") + .overlaySteamHullModel("steam_hatch") .tooltips(Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity", SteamHatchPartMachine.INITIAL_TANK_CAPACITY), Component.translatable("gtceu.machine.steam.steam_hatch.tooltip")) + .allowCoverOnFront(true) .register(); public static final MachineDefinition COKE_OVEN_HATCH = REGISTRATE.machine("coke_oven_hatch", CokeOvenHatch::new) .rotationState(RotationState.ALL) - .modelRenderer(() -> GTCEu.id("block/machine/part/coke_oven_hatch")) + .tooltips(Component.translatable("gtceu.part_sharing.disabled")) + .simpleModel(GTCEu.id("block/machine/part/coke_oven_hatch")) .register(); public static final MachineDefinition PUMP_HATCH = REGISTRATE.machine("pump_hatch", PumpHatchPartMachine::new) .rotationState(RotationState.ALL) .abilities(PartAbility.PUMP_FLUID_HATCH) - .renderer(PumpHatchPartRenderer::new) + .model(createBasicReplaceableTextureMachineModel(GTCEu.id("block/machine/part/pump_hatch"))) .register(); public static final MachineDefinition MAINTENANCE_HATCH = REGISTRATE .machine("maintenance_hatch", (blockEntity) -> new MaintenanceHatchPartMachine(blockEntity, false)) .rotationState(RotationState.ALL) .abilities(PartAbility.MAINTENANCE) - .tooltips(Component.translatable("gtceu.universal.disabled")) - .renderer(() -> new MaintenanceHatchPartRenderer(1, GTCEu.id("block/machine/part/maintenance"))) + .tooltips(Component.translatable("gtceu.part_sharing.disabled")) + .modelProperty(GTMachineModelProperties.IS_TAPED, false) + .model(createMaintenanceModel(GTCEu.id("block/machine/part/maintenance_hatch"))) + .tier(LV) .register(); public static final MachineDefinition CONFIGURABLE_MAINTENANCE_HATCH = REGISTRATE @@ -922,9 +876,10 @@ public class GTMachines { (blockEntity) -> new MaintenanceHatchPartMachine(blockEntity, true)) .rotationState(RotationState.ALL) .abilities(PartAbility.MAINTENANCE) - .tooltips(Component.translatable("gtceu.universal.disabled")) - .renderer( - () -> new MaintenanceHatchPartRenderer(3, GTCEu.id("block/machine/part/maintenance.configurable"))) + .tooltips(Component.translatable("gtceu.part_sharing.disabled")) + .modelProperty(GTMachineModelProperties.IS_TAPED, false) + .model(createMaintenanceModel(GTCEu.id("block/machine/part/configurable_maintenance_hatch"))) + .tier(HV) .register(); public static final MachineDefinition CLEANING_MAINTENANCE_HATCH = REGISTRATE @@ -932,22 +887,24 @@ public class GTMachines { holder -> new CleaningMaintenanceHatchPartMachine(holder, CleanroomType.CLEANROOM)) .rotationState(RotationState.ALL) .abilities(PartAbility.MAINTENANCE) - .tooltips(Component.translatable("gtceu.universal.disabled"), + .tooltips(Component.translatable("gtceu.part_sharing.disabled"), Component.translatable("gtceu.machine.maintenance_hatch_cleanroom_auto.tooltip.0"), Component.translatable("gtceu.machine.maintenance_hatch_cleanroom_auto.tooltip.1")) .tooltipBuilder((stack, tooltips) -> { tooltips.add(Component.literal(" ").append(Component .translatable(CleanroomType.CLEANROOM.getTranslationKey()).withStyle(ChatFormatting.GREEN))); }) - .renderer(() -> new MaintenanceHatchPartRenderer(3, GTCEu.id("block/machine/part/maintenance.cleaning"))) + .overlayTieredHullModel(GTCEu.id("block/machine/part/cleaning_maintenance_hatch")) + .tier(HV) .register(); public static final MachineDefinition AUTO_MAINTENANCE_HATCH = REGISTRATE .machine("auto_maintenance_hatch", AutoMaintenanceHatchPartMachine::new) .rotationState(RotationState.ALL) .abilities(PartAbility.MAINTENANCE) - .tooltips(Component.translatable("gtceu.universal.disabled")) - .renderer(() -> new MaintenanceHatchPartRenderer(3, GTCEu.id("block/machine/part/maintenance.full_auto"))) + .tooltips(Component.translatable("gtceu.part_sharing.disabled")) + .overlayTieredHullModel(GTCEu.id("block/machine/part/auto_maintenance_hatch")) + .tier(HV) .register(); public static final MachineDefinition[] ITEM_PASSTHROUGH_HATCH = registerTieredMachines("item_passthrough_hatch", @@ -956,11 +913,11 @@ public class GTMachines { .langValue("%s Item Passthrough Hatch".formatted(VNF[tier])) .rotationState(RotationState.ALL) .abilities(PartAbility.PASSTHROUGH_HATCH) - .overlayTieredHullRenderer("item_passthrough_hatch") + .overlayTieredHullModel("item_passthrough_hatch") .tooltips( Component.translatable("gtceu.universal.tooltip.item_storage_capacity", (1 + Math.min(9, tier)) * (1 + Math.min(9, tier))), - Component.translatable("gtceu.universal.enabled")) + Component.translatable("gtceu.part_sharing.enabled")) .register(), ELECTRIC_TIERS); @@ -971,11 +928,11 @@ public class GTMachines { .langValue("%s Fluid Passthrough Hatch".formatted(VNF[tier])) .rotationState(RotationState.ALL) .abilities(PartAbility.PASSTHROUGH_HATCH) - .overlayTieredHullRenderer("fluid_passthrough_hatch") + .overlayTieredHullModel("fluid_passthrough_hatch") .tooltips( Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity_mult", tier + 1, 16 * FluidType.BUCKET_VOLUME), - Component.translatable("gtceu.universal.enabled")) + Component.translatable("gtceu.part_sharing.enabled")) .register(), ELECTRIC_TIERS); @@ -988,8 +945,8 @@ public class GTMachines { .tooltips( Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity", FormattingUtil.formatNumbers(ReservoirHatchPartMachine.FLUID_AMOUNT)), - Component.translatable("gtceu.universal.enabled")) - .overlayTieredHullRenderer("reservoir_hatch") + Component.translatable("gtceu.part_sharing.enabled")) + .overlayTieredHullModel("reservoir_hatch") .register(); public static final MachineDefinition[] DUAL_IMPORT_HATCH = registerTieredMachines( @@ -999,7 +956,7 @@ public class GTMachines { .langValue("%s Dual Input Hatch".formatted(VNF[tier])) .rotationState(RotationState.ALL) .abilities(DUAL_INPUT_HATCH_ABILITIES) - .overlayTieredHullRenderer("dual_hatch.import") + .overlayTieredHullModel("dual_input_hatch") .tooltips( Component.translatable("gtceu.machine.dual_hatch.import.tooltip"), Component.translatable( @@ -1010,7 +967,7 @@ public class GTMachines { (tier - 4), DualHatchPartMachine.getTankCapacity(DualHatchPartMachine.INITIAL_TANK_CAPACITY, tier)), - Component.translatable("gtceu.universal.enabled")) + Component.translatable("gtceu.part_sharing.enabled")) .register(), DUAL_HATCH_TIERS); @@ -1021,7 +978,7 @@ public class GTMachines { .langValue("%s Dual Output Hatch".formatted(VNF[tier])) .rotationState(RotationState.ALL) .abilities(DUAL_OUTPUT_HATCH_ABILITIES) - .overlayTieredHullRenderer("dual_hatch.export") + .overlayTieredHullModel("dual_output_hatch") .tooltips( Component.translatable("gtceu.machine.dual_hatch.export.tooltip"), Component.translatable( @@ -1032,7 +989,7 @@ public class GTMachines { (tier - 4), DualHatchPartMachine.getTankCapacity( DualHatchPartMachine.INITIAL_TANK_CAPACITY, tier)), - Component.translatable("gtceu.universal.enabled")) + Component.translatable("gtceu.part_sharing.enabled")) .register(), DUAL_HATCH_TIERS); @@ -1042,7 +999,8 @@ public class GTMachines { .langValue("%s Diode".formatted(VNF[tier])) .rotationState(RotationState.ALL) .abilities(PartAbility.PASSTHROUGH_HATCH) - .renderer(() -> new DiodeRenderer(tier)) + .modelProperty(GTMachineModelProperties.DIODE_AMP_MODE, DiodePartMachine.AmpMode.MODE_1A) + .model(createDiodeModel()) .tooltips(Component.translatable("gtceu.machine.diode.tooltip_general"), Component.translatable("gtceu.machine.diode.tooltip_starts_at"), Component.translatable("gtceu.universal.tooltip.voltage_in_out", @@ -1059,10 +1017,13 @@ public class GTMachines { .langValue("%s Rotor Holder".formatted(VNF[tier])) .rotationState(RotationState.ALL) .abilities(PartAbility.ROTOR_HOLDER) - .renderer(() -> new RotorHolderMachineRenderer(tier)) - .tooltips(LangHandler.getFromMultiLang("gtceu.machine.rotor_holder.tooltip", 0), - LangHandler.getFromMultiLang("gtceu.machine.rotor_holder.tooltip", 1), - Component.translatable("gtceu.universal.disabled")) + .modelProperty(IS_FORMED, false) + .modelProperty(HAS_ROTOR, false) + .modelProperty(IS_ROTOR_SPINNING, false) + .modelProperty(IS_EMISSIVE_ROTOR, false) + .model(createRotorHolderModel()) + .tooltips(LangHandler.getMultiLang("gtceu.machine.rotor_holder.tooltip")) + .tooltips(Component.translatable("gtceu.part_sharing.disabled")) .register(), GTValues.tiersBetween(HV, GTCEuAPI.isHighTier() ? OpV : UV)); @@ -1078,6 +1039,12 @@ public class GTMachines { PartAbility.INPUT_LASER); public static final MachineDefinition[] LASER_OUTPUT_HATCH_4096 = registerLaserHatch(OUT, 4096, PartAbility.OUTPUT_LASER); + public static final MachineDefinition MONITOR = REGISTRATE.machine("monitor", MonitorPartMachine::new) + .rotationState(RotationState.ALL) + .model(createOverlayCasingMachineModel(GTCEu.id("block/casings/solid/machine_casing_frost_proof"), + GTCEu.id("block/machine/part/computer_monitor"))) + .tier(MV) + .register(); public static void init() { GTMultiMachines.init(); @@ -1092,7 +1059,14 @@ public static void init() { GTRegistryInfo.registerFor(GTRegistries.MACHINES.getRegistryName()); } ModLoader.get().postEvent(new GTCEuAPI.RegisterEvent<>(GTRegistries.MACHINES, MachineDefinition.class)); + GTRegistries.MACHINES.freeze(); + + for (MachineDefinition machine : GTRegistries.MACHINES) { + for (MachineRenderState renderState : machine.getStateDefinition().getPossibleStates()) { + MachineDefinition.RENDER_STATE_REGISTRY.add(renderState); + } + } } public static MachineDefinition get(String name) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java index 8c02d62b092..7600b448de6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java @@ -4,7 +4,6 @@ import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.block.MaterialBlock; import com.gregtechceu.gtceu.api.block.MaterialPipeBlock; -import com.gregtechceu.gtceu.api.block.OreBlock; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.chemical.material.registry.MaterialRegistry; @@ -20,6 +19,7 @@ import com.gregtechceu.gtceu.utils.FormattingUtil; import net.minecraft.client.renderer.RenderType; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import com.google.common.collect.ImmutableMap; @@ -31,10 +31,11 @@ import java.util.Map; +@SuppressWarnings("removal") public class GTMaterialBlocks { // Reference Table Builders - static ImmutableTable.Builder> MATERIAL_BLOCKS_BUILDER = ImmutableTable + static ImmutableTable.Builder> MATERIAL_BLOCKS_BUILDER = ImmutableTable .builder(); static ImmutableMap.Builder> SURFACE_ROCK_BLOCKS_BUILDER = ImmutableMap .builder(); @@ -46,7 +47,7 @@ public class GTMaterialBlocks { .builder(); // Reference Tables - public static Table> MATERIAL_BLOCKS; + public static Table> MATERIAL_BLOCKS; public static Map> SURFACE_ROCK_BLOCKS; public static Table> CABLE_BLOCKS; public static Table> FLUID_PIPE_BLOCKS; @@ -74,7 +75,7 @@ public static void generateMaterialBlocks() { private static void registerMaterialBlock(TagPrefix tagPrefix, Material material, GTRegistrate registrate) { MATERIAL_BLOCKS_BUILDER.put(tagPrefix, material, registrate .block(tagPrefix.idPattern().formatted(material.getName()), - properties -> new MaterialBlock(properties, tagPrefix, material)) + properties -> tagPrefix.blockConstructor().create(properties, tagPrefix, material)) .initialProperties(() -> Blocks.IRON_BLOCK) .properties(p -> tagPrefix.blockProperties().properties().apply(p).noLootTable()) .transform(GTBlocks.unificationBlock(tagPrefix, material)) @@ -83,10 +84,9 @@ private static void registerMaterialBlock(TagPrefix tagPrefix, Material material .setData(ProviderType.LANG, NonNullBiConsumer.noop()) .setData(ProviderType.LOOT, NonNullBiConsumer.noop()) .color(() -> MaterialBlock::tintedColor) - .item(MaterialBlockItem::create) - .onRegister(MaterialBlockItem::onRegister) + .item((b, p) -> tagPrefix.blockItemConstructor().create(b, p, tagPrefix, material)) .model(NonNullBiConsumer.noop()) - .color(() -> MaterialBlockItem::tintColor) + .color(() -> () -> MaterialBlockItem.tintColor(material)) .build() .register()); } @@ -114,14 +114,15 @@ private static void registerOreBlock(Material material, GTRegistrate registrate) if (ore.getKey().isIgnored(material)) continue; var oreTag = ore.getKey(); final TagPrefix.OreType oreType = ore.getValue(); - var entry = registrate - .block("%s%s_ore".formatted( - oreTag != TagPrefix.ore ? FormattingUtil.toLowerCaseUnder(oreTag.name) + "_" : "", - material.getName()), - properties -> new OreBlock(properties, oreTag, material, true)) + String typePrefix = ""; + if (oreTag != TagPrefix.ore) { + typePrefix = FormattingUtil.toLowerCaseUnderscore(oreTag.name) + "_"; + } + var entry = registrate.block("%s%s_ore".formatted(typePrefix, material.getName()), + properties -> oreTag.blockConstructor().create(properties, oreTag, material)) .initialProperties(() -> { - if (oreType.stoneType().get().isAir()) { // if the block is not registered (yet), fallback to - // stone + if (oreType.stoneType().get().isAir()) { + // if the block is not registered (yet), fallback to stone return Blocks.IRON_ORE; } return oreType.stoneType().get().getBlock(); @@ -132,10 +133,9 @@ private static void registerOreBlock(Material material, GTRegistrate registrate) .setData(ProviderType.LANG, NonNullBiConsumer.noop()) .setData(ProviderType.LOOT, NonNullBiConsumer.noop()) .color(() -> MaterialBlock::tintedColor) - .item(MaterialBlockItem::create) - .onRegister(MaterialBlockItem::onRegister) + .item((b, p) -> oreTag.blockItemConstructor().create(b, p, oreTag, material)) .model(NonNullBiConsumer.noop()) - .color(() -> MaterialBlockItem::tintColor) + .color(() -> () -> MaterialBlockItem.tintColor(material)) .build() .register(); MATERIAL_BLOCKS_BUILDER.put(oreTag, material, entry); @@ -166,6 +166,7 @@ private static void registerOreIndicator(Material material, GTRegistrate registr .block("%s_indicator".formatted(material.getName()), p -> new SurfaceRockBlock(p, material)) .initialProperties(() -> Blocks.GRAVEL) .properties(p -> p.noLootTable().strength(0.25f)) + .transform(GTBlocks.unificationBlock(TagPrefix.surfaceRock, material)) .setData(ProviderType.LANG, NonNullBiConsumer.noop()) .setData(ProviderType.LOOT, NonNullBiConsumer.noop()) .setData(ProviderType.BLOCKSTATE, NonNullBiConsumer.noop()) @@ -212,6 +213,7 @@ private static void registerCableBlock(Material material, Insulation insulation, .setData(ProviderType.LANG, NonNullBiConsumer.noop()) .setData(ProviderType.LOOT, NonNullBiConsumer.noop()) .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> RenderType::translucent) .color(() -> MaterialPipeBlock::tintedColor) .item(MaterialPipeBlockItem::new) .model(NonNullBiConsumer.noop()) @@ -259,6 +261,7 @@ private static void registerFluidPipeBlock(Material material, FluidPipeType flui .setData(ProviderType.LANG, NonNullBiConsumer.noop()) .setData(ProviderType.LOOT, NonNullBiConsumer.noop()) .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> RenderType::translucent) .color(() -> MaterialPipeBlock::tintedColor) .item(MaterialPipeBlockItem::new) .model(NonNullBiConsumer.noop()) @@ -305,6 +308,7 @@ private static void registerItemPipeBlock(Material material, ItemPipeType itemPi .setData(ProviderType.LANG, NonNullBiConsumer.noop()) .setData(ProviderType.LOOT, NonNullBiConsumer.noop()) .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> RenderType::translucent) .color(() -> MaterialPipeBlock::tintedColor) .item(MaterialPipeBlockItem::new) .model(NonNullBiConsumer.noop()) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java index cf60fbcc78b..eae601945b0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java @@ -10,7 +10,11 @@ import com.gregtechceu.gtceu.api.item.TagPrefixItem; import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; +import com.gregtechceu.gtceu.common.item.armor.GTArmorItem; +import com.gregtechceu.gtceu.common.item.armor.GTDyeableArmorItem; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; import net.minecraft.world.level.ItemLike; @@ -22,6 +26,7 @@ import com.tterrag.registrate.util.entry.ItemProviderEntry; import com.tterrag.registrate.util.nullness.NonNullBiConsumer; +import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.function.Supplier; @@ -30,15 +35,17 @@ import static com.gregtechceu.gtceu.common.data.GTCreativeModeTabs.TOOL; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; +@SuppressWarnings("UnstableApiUsage") public class GTMaterialItems { // Reference Table Builders - static ImmutableTable.Builder> MATERIAL_ITEMS_BUILDER = ImmutableTable + static ImmutableTable.Builder> MATERIAL_ITEMS_BUILDER = ImmutableTable .builder(); // Reference Maps public static final Map> toUnify = new HashMap<>(); public static final Map purifyMap = new HashMap<>(); + static { purifyMap.put(TagPrefix.crushed, TagPrefix.crushedPurified); purifyMap.put(TagPrefix.dustImpure, TagPrefix.dust); @@ -46,12 +53,17 @@ public class GTMaterialItems { } // Reference Tables - public static Table> MATERIAL_ITEMS; - public final static Table> TOOL_ITEMS = ArrayTable.create( + public static Table> MATERIAL_ITEMS; + public static final Table> TOOL_ITEMS = ArrayTable.create( GTCEuAPI.materialManager.getRegisteredMaterials().stream() .filter(mat -> mat.hasProperty(PropertyKey.TOOL)) .toList(), GTToolType.getTypes().values().stream().toList()); + public static final Table> ARMOR_ITEMS = ArrayTable.create( + GTCEuAPI.materialManager.getRegisteredMaterials().stream() + .filter(mat -> mat.hasProperty(PropertyKey.ARMOR)) + .toList(), + Arrays.asList(ArmorItem.Type.values())); // Material Items public static void generateMaterialItems() { @@ -74,13 +86,12 @@ public static void generateMaterialItems() { private static void generateMaterialItem(TagPrefix tagPrefix, Material material, GTRegistrate registrate) { MATERIAL_ITEMS_BUILDER.put(tagPrefix, material, registrate .item(tagPrefix.idPattern().formatted(material.getName()), - properties -> new TagPrefixItem(properties, tagPrefix, material)) - .onRegister(TagPrefixItem::onRegister) + properties -> tagPrefix.itemConstructor().create(properties, tagPrefix, material)) .setData(ProviderType.LANG, NonNullBiConsumer.noop()) .transform(GTItems.unificationItem(tagPrefix, material)) .properties(p -> p.stacksTo(tagPrefix.maxStackSize())) .model(NonNullBiConsumer.noop()) - .color(() -> TagPrefixItem::tintColor) + .color(() -> () -> TagPrefixItem.tintColor(material)) .onRegister(GTItems::cauldronInteraction) .register()); } @@ -103,6 +114,7 @@ public static void generateTools() { } } + @SuppressWarnings("unchecked") private static void generateTool(Material material, GTToolType toolType, GTRegistrate registrate) { var tier = material.getToolTier(); TOOL_ITEMS.put(material, toolType, (ItemProviderEntry) (ItemProviderEntry) registrate @@ -115,4 +127,42 @@ private static void generateTool(Material material, GTToolType toolType, GTRegis .color(() -> IGTTool::tintColor) .register()); } + + // Material Armors + public static void generateArmors() { + REGISTRATE.creativeModeTab(() -> TOOL); + for (ArmorItem.Type type : ArmorItem.Type.values()) { + for (MaterialRegistry registry : GTCEuAPI.materialManager.getRegistries()) { + GTRegistrate registrate = registry.getRegistrate(); + for (Material material : registry.getAllMaterials()) { + if (material.hasProperty(PropertyKey.ARMOR)) { + generateArmor(material, type, registrate); + } + } + } + } + } + + private static void generateArmor(final Material material, final ArmorItem.Type type, GTRegistrate registrate) { + var property = material.getProperty(PropertyKey.ARMOR); + if (property.isDyeable()) { + ARMOR_ITEMS.put(material, type, registrate + .item("%s_%s".formatted(material.getName(), type.getName()), + p -> new GTDyeableArmorItem(property.getArmorMaterial(), type, p, + material, property)) + .setData(ProviderType.LANG, NonNullBiConsumer.noop()) + .model(NonNullBiConsumer.noop()) + .color(() -> GTArmorItem::tintColor) + .register()); + } else { + ARMOR_ITEMS.put(material, type, registrate + .item("%s_%s".formatted(material.getName(), type.getName()), + p -> new GTArmorItem(property.getArmorMaterial(), type, p, + material, property)) + .setData(ProviderType.LANG, NonNullBiConsumer.noop()) + .model(NonNullBiConsumer.noop()) + .color(() -> GTArmorItem::tintColor) + .register()); + } + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java index fde94a012ba..39e7f85cf2c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java @@ -273,7 +273,7 @@ public static void init() { @NotNull public static Material get(String name) { var mat = GTCEuAPI.materialManager.getMaterial(name); - // mat could be null here due to the registry grabbing a material that isn't in the map + // material could be null here due to the registry grabbing a material that isn't in the map if (mat == null) { GTCEu.LOGGER.warn("{} is not a known Material", name); return GTMaterials.NULL; @@ -538,6 +538,8 @@ private static void excludeAllGemsButNormal(Material material) { public static Material VanadiumGallium; public static Material WroughtIron; public static Material Wulfenite; + public static Material Limonite; + @Deprecated public static Material YellowLimonite; public static Material YttriumBariumCuprate; public static Material NetherQuartz; @@ -667,6 +669,7 @@ private static void excludeAllGemsButNormal(Material material) { public static Material DiethylenetriaminepentaaceticAcid; public static Material SodiumNitrite; public static Material HydrogenPeroxide; + public static Material IlmeniteSlag; /** * Organic chemistry @@ -889,6 +892,11 @@ private static void excludeAllGemsButNormal(Material material) { public static Material PCBCoolant; public static Material Sculk; public static Material Wax; + public static Material BauxiteSlurry; + public static Material CrackedBauxiteSlurry; + public static Material BauxiteSludge; + public static Material DecalcifiedBauxiteSludge; + public static Material BauxiteSlag; /** * Second Degree Compounds diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTModels.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTModels.java deleted file mode 100644 index 49cd4899488..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTModels.java +++ /dev/null @@ -1,362 +0,0 @@ -package com.gregtechceu.gtceu.common.data; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.GTCEuAPI; -import com.gregtechceu.gtceu.api.block.ActiveBlock; -import com.gregtechceu.gtceu.api.block.ICoilType; -import com.gregtechceu.gtceu.api.block.IFilterType; -import com.gregtechceu.gtceu.api.block.IFusionCasingType; -import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet; -import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; -import com.gregtechceu.gtceu.api.fluids.GTFluid; -import com.gregtechceu.gtceu.api.fluids.store.FluidStorage; -import com.gregtechceu.gtceu.api.fluids.store.FluidStorageKey; -import com.gregtechceu.gtceu.api.machine.multiblock.IBatteryData; -import com.gregtechceu.gtceu.common.block.*; -import com.gregtechceu.gtceu.core.MixinHelpers; -import com.gregtechceu.gtceu.data.pack.GTDynamicResourcePack; - -import net.minecraft.client.Minecraft; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.GsonHelper; -import net.minecraft.world.item.BlockItem; -import net.minecraft.world.item.DyeColor; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.client.model.generators.ConfiguredModel; -import net.minecraftforge.client.model.generators.ModelBuilder; -import net.minecraftforge.client.model.generators.ModelFile; -import net.minecraftforge.client.model.generators.ModelProvider; -import net.minecraftforge.registries.ForgeRegistries; - -import com.google.gson.JsonObject; -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 java.io.BufferedReader; -import java.io.IOException; - -/** - * @author KilaBash - * @date 2023/7/20 - * @implNote GTModels - */ -public class GTModels { - - public static void createModelBlockState(DataGenContext ctx, - RegistrateBlockstateProvider prov, ResourceLocation modelLocation) { - prov.simpleBlock(ctx.getEntry(), prov.models().getExistingFile(modelLocation)); - } - - public static void createCrossBlockState(DataGenContext ctx, - RegistrateBlockstateProvider prov) { - prov.simpleBlock(ctx.getEntry(), prov.models().cross(ForgeRegistries.BLOCKS.getKey(ctx.getEntry()).getPath(), - prov.blockTexture(ctx.getEntry()))); - } - - public static void cellModel(DataGenContext ctx, RegistrateItemModelProvider prov) { - // empty model - prov.getBuilder("item/" + prov.name(ctx::getEntry) + "_empty") - .parent(new ModelFile.UncheckedModelFile("item/generated")) - .texture("layer0", prov.modLoc("item/%s/base".formatted(prov.name(ctx)))); - - // filled model - prov.getBuilder("item/" + prov.name(ctx::getEntry) + "_filled") - .parent(new ModelFile.UncheckedModelFile("item/generated")) - .texture("layer0", prov.modLoc("item/%s/base".formatted(prov.name(ctx)))) - .texture("layer1", prov.modLoc("item/%s/overlay".formatted(prov.name(ctx)))); - - // root model - prov.generated(ctx::getEntry, prov.modLoc("item/%s/base".formatted(prov.name(ctx)))) - .override().predicate(GTCEu.id("fluid_cell"), 0) - .model(new ModelFile.UncheckedModelFile(prov.modLoc("item/%s_empty".formatted(prov.name(ctx))))) - .end() - .override().predicate(GTCEu.id("fluid_cell"), 1) - .model(new ModelFile.UncheckedModelFile(prov.modLoc("item/%s_filled".formatted(prov.name(ctx))))) - .end(); - } - - public static < - T extends Item> NonNullBiConsumer, RegistrateItemModelProvider> overrideModel(ResourceLocation predicate, - int modelNumber) { - if (modelNumber <= 0) return NonNullBiConsumer.noop(); - return (ctx, prov) -> { - var rootModel = prov.generated(ctx::getEntry, prov.modLoc("item/%s/1".formatted(prov.name(ctx)))); - for (int i = 0; i < modelNumber; i++) { - var subModelBuilder = prov.getBuilder("item/" + prov.name(ctx::getEntry) + "/" + i) - .parent(new ModelFile.UncheckedModelFile("item/generated")); - subModelBuilder.texture("layer0", prov.modLoc("item/%s/%d".formatted(prov.name(ctx), i + 1))); - - rootModel = rootModel.override().predicate(predicate, i / 100f) - .model(new ModelFile.UncheckedModelFile(prov.modLoc("item/%s/%d".formatted(prov.name(ctx), i)))) - .end(); - } - }; - } - - public static void createTextureModel(DataGenContext ctx, RegistrateItemModelProvider prov, - ResourceLocation texture) { - prov.generated(ctx, texture); - } - - public static void rubberTreeSaplingModel(DataGenContext context, - RegistrateItemModelProvider provider) { - provider.generated(context, provider.modLoc("block/" + provider.name(context))); - } - - public static void longDistanceItemPipeModel(DataGenContext ctx, - RegistrateBlockstateProvider prov) { - prov.simpleBlock(ctx.getEntry(), - prov.models().cubeAll("long_distance_item_pipeline", prov.modLoc("block/pipe/ld_item_pipe/block"))); - } - - public static void longDistanceFluidPipeModel(DataGenContext ctx, - RegistrateBlockstateProvider prov) { - prov.simpleBlock(ctx.getEntry(), - prov.models().cubeAll("long_distance_fluid_pipeline", prov.modLoc("block/pipe/ld_fluid_pipe/block"))); - } - - public static NonNullBiConsumer, RegistrateBlockstateProvider> lampModel(DyeColor color, - boolean border) { - return (ctx, prov) -> { - final String borderPart = (border ? "" : "_borderless"); - ModelFile parentOn = prov.models().getExistingFile(prov.modLoc("block/lamp" + borderPart)); - ModelFile parentOff = prov.models().getExistingFile(prov.modLoc("block/lamp" + borderPart + "_off")); - - prov.getVariantBuilder(ctx.getEntry()) - .forAllStates(state -> { - if (state.getValue(LampBlock.LIGHT)) { - ModelBuilder model = prov.models() - .getBuilder(ctx.getName() + (state.getValue(LampBlock.BLOOM) ? "_bloom" : "")) - .parent(parentOn); - if (border) { - model.texture("active", "block/lamps/" + color.getName()); - if (state.getValue(LampBlock.BLOOM)) { - model.texture("active_overlay", "block/lamps/" + color.getName() + "_emissive"); - } else { - model.texture("active_overlay", "block/lamps/" + color.getName()); - } - } else { - if (state.getValue(LampBlock.BLOOM)) { - model.texture("active", - "block/lamps/" + color.getName() + "_borderless_emissive"); - } else { - model.texture("active", - "block/lamps/" + color.getName() + "_borderless"); - } - } - return ConfiguredModel.builder() - .modelFile(model) - .build(); - } else { - return ConfiguredModel.builder() - .modelFile(prov.models() - .getBuilder(ctx.getName() + "_off") - .parent(parentOff) - .texture("inactive", - "block/lamps/" + color.getName() + "_off" + borderPart)) - .build(); - } - }); - }; - } - - public static NonNullBiConsumer, RegistrateBlockstateProvider> randomRotatedModel(ResourceLocation texturePath) { - return (ctx, prov) -> { - Block block = ctx.getEntry(); - ModelFile cubeAll = prov.models().cubeAll(ctx.getName(), texturePath); - ModelFile cubeMirroredAll = prov.models().singleTexture(ctx.getName() + "_mirrored", - prov.mcLoc(ModelProvider.BLOCK_FOLDER + "/cube_mirrored_all"), "all", texturePath); - ConfiguredModel[] models = ConfiguredModel.builder() - .modelFile(cubeAll) - .rotationY(0) - .nextModel() - .modelFile(cubeAll) - .rotationY(180) - .nextModel() - .modelFile(cubeMirroredAll) - .rotationY(0) - .nextModel() - .modelFile(cubeMirroredAll) - .rotationY(180) - .build(); - prov.simpleBlock(block, models); - }; - } - - public static NonNullBiConsumer, RegistrateBlockstateProvider> createSidedCasingModel(String name, - ResourceLocation texture) { - return (ctx, prov) -> { - prov.simpleBlock(ctx.getEntry(), prov.models().cubeBottomTop(name, - texture.withSuffix("/side"), - texture.withSuffix("/bottom"), - texture.withSuffix("/top"))); - }; - } - - public static NonNullBiConsumer, RegistrateBlockstateProvider> cubeAllModel(String name, - ResourceLocation texture) { - return (ctx, prov) -> { - prov.simpleBlock(ctx.getEntry(), prov.models().cubeAll(name, texture)); - }; - } - - public static NonNullBiConsumer, RegistrateBlockstateProvider> createMachineCasingModel(String tierName) { - return (ctx, prov) -> { - prov.simpleBlock(ctx.getEntry(), - prov.models() - .withExistingParent("%s_machine_casing".formatted(tierName), - GTCEu.id("block/cube/tinted/bottom_top")) - .texture("bottom", GTCEu.id("block/casings/voltage/%s/bottom".formatted(tierName))) - .texture("top", GTCEu.id("block/casings/voltage/%s/top".formatted(tierName))) - .texture("side", GTCEu.id("block/casings/voltage/%s/side".formatted(tierName)))); - }; - } - - public static NonNullBiConsumer, RegistrateBlockstateProvider> createHermeticCasingModel(String tierName) { - return (ctx, prov) -> { - prov.simpleBlock(ctx.getEntry(), prov.models() - .withExistingParent("%s_hermetic_casing".formatted(tierName), GTCEu.id("block/hermetic_casing")) - .texture("bot_bottom", GTCEu.id("block/casings/voltage/%s/bottom".formatted(tierName))) - .texture("bot_top", GTCEu.id("block/casings/voltage/%s/top".formatted(tierName))) - .texture("bot_side", GTCEu.id("block/casings/voltage/%s/side".formatted(tierName))) - .texture("top_side", GTCEu.id("block/casings/hermetic_casing/hermetic_casing_overlay"))); - }; - } - - public static NonNullBiConsumer, RegistrateBlockstateProvider> createSteamCasingModel(String name, - String material) { - return (ctx, prov) -> { - prov.simpleBlock(ctx.getEntry(), prov.models().cubeBottomTop(name, - GTCEu.id("block/casings/steam/%s/side".formatted(material)), - GTCEu.id("block/casings/steam/%s/bottom".formatted(material)), - GTCEu.id("block/casings/steam/%s/top".formatted(material)))); - }; - } - - public static NonNullBiConsumer, RegistrateBlockstateProvider> createCoilModel(String name, - ICoilType coilType) { - return (ctx, prov) -> { - ActiveBlock block = ctx.getEntry(); - ModelFile inactive = prov.models().cubeAll(name, coilType.getTexture()); - ModelFile active = prov.models().withExistingParent(name + "_active", GTCEu.id("block/cube_2_layer/all")) - .texture("bot_all", coilType.getTexture()) - .texture("top_all", coilType.getTexture().withSuffix("_bloom")); - prov.getVariantBuilder(block) - .partialState().with(ActiveBlock.ACTIVE, false).modelForState().modelFile(inactive).addModel() - .partialState().with(ActiveBlock.ACTIVE, true).modelForState().modelFile(active).addModel(); - }; - } - - public static NonNullBiConsumer, RegistrateBlockstateProvider> createBatteryBlockModel(String name, - IBatteryData batteryData) { - return (ctx, prov) -> { - prov.simpleBlock(ctx.getEntry(), prov.models().cubeBottomTop(name, - GTCEu.id("block/casings/battery/" + batteryData.getBatteryName() + "/side"), - GTCEu.id("block/casings/battery/" + batteryData.getBatteryName() + "/top"), - GTCEu.id("block/casings/battery/" + batteryData.getBatteryName() + "/top"))); - }; - } - - public static NonNullBiConsumer, RegistrateBlockstateProvider> createFusionCasingModel(String name, - IFusionCasingType casingType) { - return (ctx, prov) -> { - ActiveBlock block = ctx.getEntry(); - ModelFile inactive = prov.models().cubeAll(name, casingType.getTexture()); - ModelFile active = prov.models().withExistingParent(name + "_active", GTCEu.id("block/cube_2_layer/all")) - .texture("bot_all", casingType.getTexture()) - .texture("top_all", new ResourceLocation(casingType.getTexture() + "_bloom")); - prov.getVariantBuilder(block) - .partialState().with(ActiveBlock.ACTIVE, false).modelForState().modelFile(inactive).addModel() - .partialState().with(ActiveBlock.ACTIVE, true).modelForState().modelFile(active).addModel(); - }; - } - - public static NonNullBiConsumer, RegistrateBlockstateProvider> createCleanroomFilterModel(String name, - IFilterType type) { - return (ctx, prov) -> { - prov.simpleBlock(ctx.getEntry(), prov.models().cubeAll(name, GTCEu.id("block/casings/cleanroom/" + type))); - }; - } - - public static NonNullBiConsumer, RegistrateBlockstateProvider> createActiveModel(ResourceLocation modelPath) { - return (ctx, prov) -> { - ActiveBlock block = ctx.getEntry(); - ModelFile inactive = prov.models().getExistingFile(modelPath); - ModelFile active = prov.models().getExistingFile(modelPath.withSuffix("_active")); - prov.getVariantBuilder(block) - .partialState().with(ActiveBlock.ACTIVE, false).modelForState().modelFile(inactive).addModel() - .partialState().with(ActiveBlock.ACTIVE, true).modelForState().modelFile(active).addModel(); - }; - } - - public static NonNullBiConsumer, RegistrateBlockstateProvider> createFireboxModel(String name, - BoilerFireboxType type) { - return (ctx, prov) -> { - ActiveBlock block = ctx.getEntry(); - ModelFile inactive = prov.models().cubeBottomTop(name, type.side(), type.bottom(), type.top()); - ModelFile active = prov.models().withExistingParent(name + "_active", GTCEu.id("block/fire_box_active")) - .texture("side", type.side()) - .texture("bottom", type.bottom()) - .texture("top", type.top()); - prov.getVariantBuilder(block) - .partialState().with(ActiveBlock.ACTIVE, false).modelForState().modelFile(inactive).addModel() - .partialState().with(ActiveBlock.ACTIVE, true).modelForState().modelFile(active).addModel(); - }; - } - - /** - * register fluid models for materials - */ - public static void registerMaterialFluidModels() { - for (var material : GTCEuAPI.materialManager.getRegisteredMaterials()) { - var fluidProperty = material.getProperty(PropertyKey.FLUID); - if (fluidProperty == null) continue; - MaterialIconSet iconSet = material.getMaterialIconSet(); - - for (FluidStorageKey key : FluidStorageKey.allKeys()) { - FluidStorage storage = fluidProperty.getStorage(); - // fluid block models. - FluidStorage.FluidEntry fluidEntry = storage.getEntry(key); - if (fluidEntry != null && fluidEntry.getBuilder() != null) { - if (fluidEntry.getBuilder().still() == null) { - ResourceLocation foundTexture = key.getIconType().getBlockTexturePath(iconSet, false); - fluidEntry.getBuilder().still(foundTexture); - } - if (fluidEntry.getBuilder().flowing() == null) { - fluidEntry.getBuilder().flowing(fluidEntry.getBuilder().still()); - } - MixinHelpers.addFluidTexture(material, fluidEntry); - } - - // bucket models. - Fluid fluid = storage.get(key); - if (fluid instanceof GTFluid gtFluid) { - // read the base bucket model JSON - JsonObject original; - try (BufferedReader reader = Minecraft.getInstance().getResourceManager() - .openAsReader(GTCEu.id("models/item/bucket/bucket.json"))) { - original = GsonHelper.parse(reader, true); - } catch (IOException e) { - throw new RuntimeException(e); - } - - JsonObject newJson = original.deepCopy(); - newJson.addProperty("fluid", BuiltInRegistries.FLUID.getKey(gtFluid).toString()); - if (gtFluid.getFluidType().isLighterThanAir()) { - newJson.addProperty("flip_gas", true); - } - if (gtFluid.getFluidType().getLightLevel() > 0) { - newJson.addProperty("apply_fluid_luminosity", true); - } - - GTDynamicResourcePack.addItemModel(BuiltInRegistries.ITEM.getKey(gtFluid.getBucket()), newJson); - } - } - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTOres.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTOres.java index 35fa653d46f..704864206e4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTOres.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTOres.java @@ -34,11 +34,6 @@ import static com.gregtechceu.gtceu.api.data.worldgen.generator.veins.VeinedVeinGenerator.VeinBlockDefinition; import static com.gregtechceu.gtceu.common.data.GTMaterials.*; -/** - * @author KilaBash - * @date 2023/3/20 - * @implNote GTOres - */ @SuppressWarnings("unused") public class GTOres { @@ -160,7 +155,7 @@ public class GTOres { .biomes(BiomeTags.IS_NETHER) .veinedVeinGenerator(generator -> generator .oreBlock(new VeinBlockDefinition(Goethite, 3)) - .oreBlock(new VeinBlockDefinition(YellowLimonite, 2)) + .oreBlock(new VeinBlockDefinition(Limonite, 2)) .oreBlock(new VeinBlockDefinition(Hematite, 2)) .rareBlock(new VeinBlockDefinition(Gold, 1)) .rareBlockChance(0.075f) @@ -182,7 +177,7 @@ public class GTOres { .dikeVeinGenerator(generator -> generator .withBlock(new DikeBlockDefinition(Beryllium, 3, 5, 30)) .withBlock(new DikeBlockDefinition(Emerald, 2, 5, 19)) - .withBlock(new DikeBlockDefinition(Emerald, 2, 16, 30))) + .withBlock(new DikeBlockDefinition(Thorium, 1, 16, 30))) .surfaceIndicatorGenerator(indicator -> indicator .surfaceRock(Beryllium) .placement(SurfaceIndicatorGenerator.IndicatorPlacement.ABOVE))); @@ -467,7 +462,7 @@ public class GTOres { .biomes(BiomeTags.IS_OVERWORLD) .veinedVeinGenerator(generator -> generator .oreBlock(new VeinBlockDefinition(Goethite, 5)) - .oreBlock(new VeinBlockDefinition(YellowLimonite, 2)) + .oreBlock(new VeinBlockDefinition(Limonite, 2)) .oreBlock(new VeinBlockDefinition(Hematite, 2)) .oreBlock(new VeinBlockDefinition(Malachite, 1)) .veininessThreshold(0.01f) @@ -664,7 +659,7 @@ public class GTOres { .layeredVeinGenerator(generator -> generator .withLayerPattern(() -> GTLayerPattern.builder(OVERWORLD_RULES) .layer(l -> l.weight(3).mat(Bentonite).size(2, 4)) - .layer(l -> l.weight(2).mat(Magnetite).size(1, 1)) + .layer(l -> l.weight(2).mat(Magnesite).size(1, 1)) .layer(l -> l.weight(2).mat(Olivine).size(1, 1)) .layer(l -> l.weight(1).mat(GlauconiteSand).size(1, 1)) .build())) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTPlaceholders.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTPlaceholders.java new file mode 100644 index 00000000000..4b83e859957 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTPlaceholders.java @@ -0,0 +1,661 @@ +package com.gregtechceu.gtceu.common.data; + +import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; +import com.gregtechceu.gtceu.api.capability.IEnergyContainer; +import com.gregtechceu.gtceu.api.capability.IWorkable; +import com.gregtechceu.gtceu.api.cover.filter.ItemFilter; +import com.gregtechceu.gtceu.api.item.ComponentItem; +import com.gregtechceu.gtceu.api.item.component.IDataItem; +import com.gregtechceu.gtceu.api.item.component.IItemComponent; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine; +import com.gregtechceu.gtceu.api.placeholder.*; +import com.gregtechceu.gtceu.api.placeholder.exceptions.*; +import com.gregtechceu.gtceu.common.blockentity.CableBlockEntity; +import com.gregtechceu.gtceu.utils.GTStringUtils; + +import net.minecraft.ChatFormatting; +import net.minecraft.commands.CommandSource; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.core.Direction; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.nbt.Tag; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.phys.Vec2; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.capability.IFluidHandler; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.registries.ForgeRegistries; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.*; + +public class GTPlaceholders { + + public static int countItems(String id, @Nullable IItemHandler itemHandler) { + if (itemHandler == null) return 0; + int cnt = 0; + for (int i = 0; i < itemHandler.getSlots(); i++) { + ItemStack itemStack = itemHandler.getStackInSlot(i); + String itemId = "%s:%s".formatted(itemStack.getItem().getCreatorModId(itemStack), + itemStack.getItem().toString()); + if (itemId.equals(id)) cnt += itemStack.getCount(); + } + return cnt; + } + + public static int countFluids(@Nullable String id, @Nullable IFluidHandler fluidHandler) { + if (fluidHandler == null) return 0; + int cnt = 0; + for (int i = 0; i < fluidHandler.getTanks(); i++) { + FluidStack fluidStack = fluidHandler.getFluidInTank(i); + String fluidId = Objects.requireNonNull(ForgeRegistries.FLUIDS.getKey(fluidStack.getFluid())).toString(); + if (id == null || fluidId.equals(id)) cnt += fluidStack.getAmount(); + } + return cnt; + } + + public static int countItems(@Nullable ItemFilter filter, @Nullable IItemHandler itemHandler) { + if (itemHandler == null) + return -1; + int cnt = 0; + for (int i = 0; i < itemHandler.getSlots(); i++) { + if (filter == null || filter.test(itemHandler.getStackInSlot(i))) + cnt += itemHandler.getStackInSlot(i).getCount(); + } + return cnt; + } + + public static void initPlaceholders() { + PlaceholderHandler.addPlaceholder(new Placeholder("energy") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + IEnergyContainer energy = GTCapabilityHelper.getEnergyContainer(ctx.level(), ctx.pos(), ctx.side()); + return MultiLineComponent.literal(energy != null ? energy.getEnergyStored() : 0); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("energyCapacity") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + IEnergyContainer energy = GTCapabilityHelper.getEnergyContainer(ctx.level(), ctx.pos(), ctx.side()); + return MultiLineComponent.literal(energy != null ? energy.getEnergyCapacity() : 0); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("calc") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, List args) { + List stringArgs = new ArrayList<>(); + args.forEach((components) -> stringArgs.add(GTStringUtils.componentsToString(components))); + return MultiLineComponent.literal(GTStringUtils.calc(stringArgs)); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("itemCount") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + IItemHandler itemHandler = GTCapabilityHelper.getItemHandler(ctx.level(), ctx.pos(), ctx.side()); + if (args.isEmpty()) return MultiLineComponent.literal(countItems((ItemFilter) null, itemHandler)); + if (args.size() == 1) return MultiLineComponent + .literal(countItems(GTStringUtils.componentsToString(args.get(0)), itemHandler)); + if (GTStringUtils.equals(args.get(0), "filter")) { + int slot = PlaceholderUtils.toInt(args.get(1)); + PlaceholderUtils.checkRange("slot index", 1, 8, slot); + try { + if (ctx.itemStackHandler() == null) + throw new NotSupportedException(); + return MultiLineComponent.literal(countItems( + ItemFilter.loadFilter(ctx.itemStackHandler().getStackInSlot(slot - 1)), itemHandler)); + } catch (NullPointerException e) { + throw new MissingItemException("filter", slot); + } + } + throw new InvalidArgsException(); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("fluidCount") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + IFluidHandler fluidHandler = GTCapabilityHelper.getFluidHandler(ctx.level(), ctx.pos(), ctx.side()); + if (args.isEmpty()) return MultiLineComponent.literal(countFluids(null, fluidHandler)); + if (args.size() == 1) + return MultiLineComponent + .literal(countFluids(GTStringUtils.componentsToString(args.get(0)), fluidHandler)); + PlaceholderUtils.checkArgs(args, 1); + return MultiLineComponent.empty(); // unreachable + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("if") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2, true); + try { + if (GTStringUtils.toDouble(args.get(0)) != 0) { + return args.get(1); + } else if (args.size() > 2) return args.get(2); + else return MultiLineComponent.empty(); + } catch (NumberFormatException e) { + return args.get(1); + } + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("color") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2); + ChatFormatting color = ChatFormatting.getByName(GTStringUtils.componentsToString(args.get(0))); + if (color == null) throw new InvalidArgsException(); + return new MultiLineComponent(args.get(1).stream().map(c -> c.withStyle(color)).toList()); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("underline") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + return new MultiLineComponent( + args.get(0).stream().map(c -> c.withStyle(ChatFormatting.UNDERLINE)).toList()); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("strike") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + return new MultiLineComponent( + args.get(0).stream().map(c -> c.withStyle(ChatFormatting.STRIKETHROUGH)).toList()); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("obf") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + return new MultiLineComponent( + args.get(0).stream().map(c -> c.withStyle(ChatFormatting.OBFUSCATED)).toList()); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("random") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2); + return MultiLineComponent.literal(GTValues.RNG.nextIntBetweenInclusive( + PlaceholderUtils.toInt(args.get(0)), PlaceholderUtils.toInt(args.get(1)))); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("repeat") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2); + int count = PlaceholderUtils.toInt(args.get(0)); + MultiLineComponent out = MultiLineComponent.empty(); + for (int i = 0; i < count; i++) out.append(args.get(1)); + return out; + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("block") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + return MultiLineComponent.literal("█"); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("tick") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + if (ctx.cover() instanceof IPlaceholderInfoProviderCover cover) + return MultiLineComponent.literal(cover.getTicksSincePlaced()); + throw new NotSupportedException(); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("select") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1, true); + int i = PlaceholderUtils.toInt(args.get(0)); + PlaceholderUtils.checkArgs(args, i + 2); + return args.get(i + 1); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("redstone") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2, true); + if (GTStringUtils.equals(args.get(0), "get")) { + Direction direction = Direction.byName(GTStringUtils.componentsToString(args.get(1))); + if (direction == null) + throw new InvalidArgsException(); + return MultiLineComponent.literal(ctx.level() + .getSignal(ctx.pos().relative(direction), direction)); + } else if (GTStringUtils.equals(args.get(1), "set")) { + int power = PlaceholderUtils.toInt(args.get(1)); + PlaceholderUtils.checkRange("redstone power", 0, 15, power); + if (ctx.cover() == null) throw new NotSupportedException(); + ctx.cover().setRedstoneSignalOutput(power); + return MultiLineComponent.empty(); + } + throw new InvalidArgsException(); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("previousText") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + int i = PlaceholderUtils.toInt(args.get(0)); + if (ctx.previousText() == null) throw new NotSupportedException(); + PlaceholderUtils.checkRange("line", 1, ctx.previousText().size(), i); + return MultiLineComponent.of(ctx.previousText().get(i - 1)); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("progress") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + IWorkable workable = GTCapabilityHelper.getWorkable(ctx.level(), + ctx.pos(), ctx.side()); + if (workable == null) throw new NotSupportedException(); + return MultiLineComponent.literal(workable.getProgress()); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("maxProgress") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + IWorkable workable = GTCapabilityHelper.getWorkable(ctx.level(), + ctx.pos(), ctx.side()); + if (workable == null) throw new NotSupportedException(); + return MultiLineComponent.literal(workable.getMaxProgress()); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("maintenance") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + IMaintenanceMachine maintenance = GTCapabilityHelper.getMaintenanceMachine(ctx.level(), + ctx.pos(), ctx.side()); + if (maintenance == null) throw new NotSupportedException(); + return MultiLineComponent.literal(maintenance.hasMaintenanceProblems() ? 1 : 0); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("active") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + IWorkable workable = GTCapabilityHelper.getWorkable(ctx.level(), + ctx.pos(), ctx.side()); + if (workable == null) throw new NotSupportedException(); + return MultiLineComponent.literal(workable.isActive() ? 1 : 0); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("voltage") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + if (ctx.level().getBlockEntity(ctx.pos()) instanceof CableBlockEntity cable) { + return MultiLineComponent.literal(cable.getAverageVoltage()); + } + throw new NotSupportedException(); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("amperage") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + if (ctx.level().getBlockEntity(ctx.pos()) instanceof CableBlockEntity cable) { + return MultiLineComponent.literal(cable.getAverageAmperage()); + } + throw new NotSupportedException(); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("count") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1, true); + String arg1 = GTStringUtils.componentsToString(args.get(0)); + int cnt = -1; + for (List arg : args) { + if (GTStringUtils.equals(arg, arg1)) cnt++; + } + return MultiLineComponent.literal(cnt); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("data") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2, true); + try { + int slot = PlaceholderUtils.toInt(args.get(1)); + PlaceholderUtils.checkRange("slot index", 1, 8, slot); + if (ctx.itemStackHandler() == null) throw new NotSupportedException(); + ItemStack stack = ctx.itemStackHandler().getStackInSlot(slot - 1); + int capacity = -1; + if (stack.getItem() instanceof ComponentItem componentItem) { + for (IItemComponent component : componentItem.getComponents()) { + if (component instanceof IDataItem dataComponent) { + capacity = dataComponent.getCapacity(); + break; + } + } + } + if (capacity == -1) throw new MissingItemException("any data item", slot); + PlaceholderUtils.checkRange("index", 0, capacity - 1, PlaceholderUtils.toInt(args.get(2))); + ListTag data = stack.getOrCreateTag().getList("computer_monitor_cover_data", Tag.TAG_STRING); + while (data.size() <= PlaceholderUtils.toInt(args.get(2))) data.add(StringTag.valueOf("")); + int p = stack.getOrCreateTag().getInt("computer_monitor_cover_p"); + if (GTStringUtils.equals(args.get(2), "")) args.set(2, MultiLineComponent.literal(p)); + if (GTStringUtils.equals(args.get(0), "get")) + return MultiLineComponent + .literal(data.getString(PlaceholderUtils.toInt(args.get(2)) % capacity)); + else if (args.get(0).equalsString("set")) { + data.set(PlaceholderUtils.toInt(args.get(2)) % capacity, + StringTag.valueOf(args.get(3).toString())); + stack.getOrCreateTag().put("computer_monitor_cover_data", data); + return MultiLineComponent.empty(); + } else if (args.get(0).equalsString("setp")) { + stack.getOrCreateTag().putInt("computer_monitor_cover_p", + PlaceholderUtils.toInt(args.get(3)) % capacity); + return MultiLineComponent.empty(); + } else if (args.get(0).equalsString("inc")) { + stack.getOrCreateTag().putInt("computer_monitor_cover_p", (p + 1) % capacity); + return MultiLineComponent.empty(); + } else if (args.get(0).equalsString("dec")) { + stack.getOrCreateTag().putInt("computer_monitor_cover_p", p == 0 ? capacity - 1 : p - 1); + return MultiLineComponent.empty(); + } else throw new InvalidArgsException(); + } catch (IndexOutOfBoundsException e) { + throw new InvalidArgsException(); + } + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("combine") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, List args) { + MultiLineComponent out = MultiLineComponent.empty(); + for (int i = 0; i < args.size(); i++) { + out.append(args.get(i)); + if (i != args.size() - 1) out.append(" "); + } + return out; + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("nbt") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + int slot = GTStringUtils.toInt(args.get(0)); + PlaceholderUtils.checkRange("slot index", 1, 8, slot); + if (ctx.itemStackHandler() == null) throw new NotSupportedException(); + return MultiLineComponent + .literal(ctx.itemStackHandler().getStackInSlot(slot - 1).getOrCreateTag().toString()); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("toChars") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + if (args.get(0).isEmpty()) return MultiLineComponent.empty(); + StringBuilder out = new StringBuilder(); + for (char c : GTStringUtils.componentsToString(args.get(0)).toCharArray()) out.append(c).append(' '); + return MultiLineComponent.literal(out.substring(0, out.length() - 2)); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("toAscii") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + String arg = args.get(0).toString(); + if (arg.length() != 1) throw new InvalidArgsException(); + return MultiLineComponent.literal((int) arg.toCharArray()[0]); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("fromAscii") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + return MultiLineComponent.literal((char) PlaceholderUtils.toInt(args.get(0))); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("subList") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2, true); + int l = PlaceholderUtils.toInt(args.get(0)); + int r = PlaceholderUtils.toInt(args.get(1)); + PlaceholderUtils.checkRange("start index", 0, args.size(), l); + PlaceholderUtils.checkRange("end index", 0, args.size(), r); + MultiLineComponent out = MultiLineComponent.empty(); + for (int i = l; i < r - 1; i++) out.append(args.get(i)).append(' '); + out.append(args.get(r - 1)); + return out; + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("cmp") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 3); + double a = PlaceholderUtils.toDouble(args.get(0)); + double b = PlaceholderUtils.toDouble(args.get(2)); + return switch (args.get(1).toString()) { + case ">" -> MultiLineComponent.literal(a > b ? 1 : 0); + case "<" -> MultiLineComponent.literal(a < b ? 1 : 0); + case ">=" -> MultiLineComponent.literal(a >= b ? 1 : 0); + case "<=" -> MultiLineComponent.literal(a <= b ? 1 : 0); + case "==" -> MultiLineComponent.literal(a == b ? 1 : 0); + case "!=" -> MultiLineComponent.literal(a != b ? 1 : 0); + default -> throw new InvalidArgsException(); + }; + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("bf") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2); + int slot = PlaceholderUtils.toInt(args.get(0)); + PlaceholderUtils.checkRange("slot index", 1, 8, slot); + if (ctx.itemStackHandler() == null) throw new NotSupportedException(); + ItemStack stack = ctx.itemStackHandler().getStackInSlot(slot - 1); + int capacity = -1; + if (stack.getItem() instanceof ComponentItem componentItem) { + for (IItemComponent component : componentItem.getComponents()) { + if (component instanceof IDataItem dataComponent) { + capacity = dataComponent.getCapacity(); + break; + } + } + } + if (capacity == -1) throw new MissingItemException("any data item", slot); + ListTag tag = stack.getOrCreateTag().getList("computer_monitor_cover_data", Tag.TAG_STRING); + int operationsLeft = 1000; + int p = 0; + String code = args.get(1).toString(); + Stack loops = new Stack<>(); + for (int i = 0; i < code.length() && operationsLeft > 0; i++) { + while (tag.size() <= p) tag.add(StringTag.valueOf("0")); + if (tag.getString(p).isEmpty()) tag.set(i, StringTag.valueOf("0")); + try { + switch (code.charAt(i)) { + case '+' -> tag.set(p, + StringTag.valueOf(String.valueOf(Integer.parseInt(tag.getString(p)) + 1))); + case '-' -> tag.set(p, + StringTag.valueOf(String.valueOf(Integer.parseInt(tag.getString(p)) - 1))); + case '>' -> p++; + case '<' -> p--; + case '[' -> loops.push(i); + case ']' -> { + if (Integer.parseInt(tag.getString(p)) == 0) loops.pop(); + else i = loops.peek(); + } + default -> throw new PlaceholderException(Component + .translatable("gtceu.computer_monitor_cover.error.bf_invalid", i).getString()); + } + } catch (InvalidNumberException e) { + throw new PlaceholderException(Component + .translatable("gtceu.computer_monitor_cover.error.bf_invalid_num", p, i).getString()); + } + operationsLeft--; + } + return MultiLineComponent.empty(); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("cmd") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2); + if (ctx.itemStackHandler() == null) throw new NotSupportedException(); + int slot = PlaceholderUtils.toInt(args.get(0)); + PlaceholderUtils.checkRange("slot index", 1, 8, slot); + ItemStack stack = ctx.itemStackHandler().getStackInSlot(slot - 1); + if (!stack.getOrCreateTag().contains("boundPlayerPermLevel")) + throw new MissingItemException("any data item bound to player", slot); + int perm = stack.getOrCreateTag().getInt("boundPlayerPermLevel"); + Component displayName = Component.Serializer + .fromJson(stack.getOrCreateTag().getString("boundPlayerName")); + if (displayName == null) displayName = Component.literal("Placeholder processor"); + if (ctx.level() instanceof ServerLevel serverLevel) { + MinecraftServer server = serverLevel.getServer(); + MultiLineComponent output = MultiLineComponent.empty(); + UUID playerUUID = null; + try { + playerUUID = UUID.fromString(stack.getOrCreateTag().getString("boundPlayerUUID")); + } catch (RuntimeException ignored) {} + ServerPlayer player = playerUUID == null ? null : server.getPlayerList().getPlayer(playerUUID); + CommandSource customSource = new CommandSource() { + + @Override + public void sendSystemMessage(@NotNull Component message) { + output.append(List.of(message)); + output.appendNewline(); + } + + @Override + public boolean acceptsSuccess() { + return true; + } + + @Override + public boolean acceptsFailure() { + return true; + } + + @Override + public boolean shouldInformAdmins() { + return false; + } + }; + CommandSourceStack source = new CommandSourceStack( + customSource, + ctx.pos() == null ? Vec3.ZERO : ctx.pos().getCenter(), + Vec2.ZERO, + serverLevel, + perm, + displayName.getString(), + displayName, + server, + player); + server.getCommands().performPrefixedCommand(source, args.get(1).toString()); + return output; + } else throw new NotSupportedException(); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("tm") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, List args) { + return MultiLineComponent.literal("™"); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("formatInt") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + long n = PlaceholderUtils.toLong(args.get(0)); + Map suffixes = Map.of( + 1L, "", + 1000L, "K", + 1000000L, "M", + 1000000000L, "B", + 1000000000000L, "T"); + long max = 1; + for (Long i : suffixes.keySet()) { + if (n >= i && max < i) max = i; + } + return MultiLineComponent.literal("%.2f%s".formatted(((double) n) / max, suffixes.get(max))); + } + }); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTPlacements.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTPlacements.java index b6de314bb6e..cc8ca11818a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTPlacements.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTPlacements.java @@ -18,11 +18,6 @@ import java.util.List; -/** - * @author KilaBash - * @date 2023/3/26 - * @implNote GTPlacements - */ public class GTPlacements { public static final ResourceKey RUBBER_CHECKED = ResourceKey.create(Registries.PLACED_FEATURE, diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTPlacerTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTPlacerTypes.java deleted file mode 100644 index c367185a952..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTPlacerTypes.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.gregtechceu.gtceu.common.data; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.registry.GTRegistries; -import com.gregtechceu.gtceu.common.worldgen.RubberFoliagePlacer; -import com.gregtechceu.gtceu.common.worldgen.RubberTrunkPlacer; -import com.gregtechceu.gtceu.core.mixins.IFoliagePlacerTypeAccessor; -import com.gregtechceu.gtceu.core.mixins.ITrunkPlacerTypeAccessor; - -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.world.level.levelgen.feature.foliageplacers.FoliagePlacer; -import net.minecraft.world.level.levelgen.feature.foliageplacers.FoliagePlacerType; -import net.minecraft.world.level.levelgen.feature.trunkplacers.TrunkPlacer; -import net.minecraft.world.level.levelgen.feature.trunkplacers.TrunkPlacerType; - -import com.mojang.serialization.Codec; - -/** - * @author KilaBash - * @date 2023/3/25 - * @implNote GTPlacerTypes - */ -public class GTPlacerTypes { - - public static final TrunkPlacerType RUBBER_TRUNK = registerTruckPlacer("rubber", - RubberTrunkPlacer.CODEC); - public static final FoliagePlacerType RUBBER_FOLIAGE = registerFoliagePlacer("rubber", - RubberFoliagePlacer.CODEC); - - public static

TrunkPlacerType

registerTruckPlacer(String pKey, Codec

pCodec) { - return GTRegistries.register(BuiltInRegistries.TRUNK_PLACER_TYPE, GTCEu.id(pKey), - ITrunkPlacerTypeAccessor.callCtor(pCodec)); - } - - public static

FoliagePlacerType

registerFoliagePlacer(String pKey, Codec

pCodec) { - return GTRegistries.register(BuiltInRegistries.FOLIAGE_PLACER_TYPE, GTCEu.id(pKey), - IFoliagePlacerTypeAccessor.callCtor(pCodec)); - } - - public static void init() {} -} diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCapabilities.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCapabilities.java index 9a054413a42..3efd43d9a99 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCapabilities.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCapabilities.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.addon.AddonFinder; import com.gregtechceu.gtceu.api.addon.IGTAddon; import com.gregtechceu.gtceu.api.capability.recipe.*; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; import com.gregtechceu.gtceu.api.registry.GTRegistries; @@ -11,17 +12,12 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.fml.ModLoader; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote GTRecipeCapabilities - */ public class GTRecipeCapabilities { public final static RecipeCapability ITEM = ItemRecipeCapability.CAP; public final static RecipeCapability FLUID = FluidRecipeCapability.CAP; public final static RecipeCapability BLOCK_STATE = BlockStateRecipeCapability.CAP; - public final static RecipeCapability EU = EURecipeCapability.CAP; + public final static RecipeCapability EU = EURecipeCapability.CAP; public final static RecipeCapability CWU = CWURecipeCapability.CAP; public static void init() { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCategories.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCategories.java index 22fdc55b580..0509eb55745 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCategories.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCategories.java @@ -14,6 +14,12 @@ public class GTRecipeCategories { + public static final GTRecipeCategory ORE_CRUSHING = register("ore_crushing", GTRecipeTypes.MACERATOR_RECIPES); + public static final GTRecipeCategory ORE_FORGING = register("ore_forging", GTRecipeTypes.FORGE_HAMMER_RECIPES); + public static final GTRecipeCategory ORE_BATHING = register("ore_bathing", GTRecipeTypes.CHEMICAL_BATH_RECIPES); + public static final GTRecipeCategory CHEM_DYES = register("chem_dyes", GTRecipeTypes.CHEMICAL_BATH_RECIPES); + public static final GTRecipeCategory INGOT_MOLDING = register("ingot_molding", GTRecipeTypes.ALLOY_SMELTER_RECIPES); + public static final GTRecipeCategory ARC_FURNACE_RECYCLING = register("arc_furnace_recycling", GTRecipeTypes.ARC_FURNACE_RECIPES) .setIcon(GuiTextures.ARC_FURNACE_RECYCLING_CATEGORY); @@ -26,12 +32,6 @@ public class GTRecipeCategories { GTRecipeTypes.EXTRACTOR_RECIPES) .setIcon(GuiTextures.EXTRACTOR_RECYCLING_CATEGORY); - public static final GTRecipeCategory ORE_CRUSHING = register("ore_crushing", GTRecipeTypes.MACERATOR_RECIPES); - public static final GTRecipeCategory ORE_FORGING = register("ore_forging", GTRecipeTypes.FORGE_HAMMER_RECIPES); - public static final GTRecipeCategory ORE_BATHING = register("ore_bathing", GTRecipeTypes.CHEMICAL_BATH_RECIPES); - public static final GTRecipeCategory CHEM_DYES = register("chem_dyes", GTRecipeTypes.CHEMICAL_BATH_RECIPES); - public static final GTRecipeCategory INGOT_MOLDING = register("ingot_molding", GTRecipeTypes.ALLOY_SMELTER_RECIPES); - public static GTRecipeCategory register(String categoryName, @NotNull GTRecipeType recipeType) { GTRecipeCategory category = new GTRecipeCategory(categoryName, recipeType); GTRegistries.RECIPE_CATEGORIES.register(category.registryKey, category); @@ -47,6 +47,6 @@ public static void init() { } public static GTRecipeCategory get(String name) { - return GTRegistries.RECIPE_CATEGORIES.get(GTCEu.appendId(name)); + return GTRegistries.RECIPE_CATEGORIES.get(GTCEu.id(name)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeConditions.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeConditions.java index 17f7059d3d5..9efd06b268e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeConditions.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeConditions.java @@ -8,11 +8,6 @@ import net.minecraftforge.fml.ModLoader; -/** - * @author KilaBash - * @date 2023/2/21 - * @implNote GTRecipeConditions - */ public final class GTRecipeConditions { static { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java index c1ba1406f62..7412d48e66f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java @@ -11,6 +11,7 @@ import com.gregtechceu.gtceu.api.recipe.OverclockingLogic; import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.api.recipe.modifier.ModifierFunction; import com.gregtechceu.gtceu.api.recipe.modifier.ParallelLogic; import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifier; @@ -28,11 +29,6 @@ import static com.gregtechceu.gtceu.api.recipe.OverclockingLogic.*; -/** - * @author KilaBash - * @date 2023/7/9 - * @implNote GTRecipeModifiers - */ public class GTRecipeModifiers { /** @@ -78,6 +74,7 @@ public class GTRecipeModifiers { .apply(GTMedicalConditions.CARBON_MONOXIDE_POISONING, 1000); public static final RecipeModifier PARALLEL_HATCH = GTRecipeModifiers::hatchParallel; + public static final RecipeModifier BATCH_MODE = GTRecipeModifiers::batchMode; /** * Recipe Modifier for Parallel Multiblock Machines - can be used as a valid {@link RecipeModifier} @@ -105,6 +102,26 @@ public class GTRecipeModifiers { return ModifierFunction.IDENTITY; } + public static @NotNull ModifierFunction batchMode(@NotNull MetaMachine machine, @NotNull GTRecipe recipe) { + if (machine instanceof IMultiController controller && controller.isFormed() && controller.isBatchEnabled()) { + if (recipe.duration < ConfigHolder.INSTANCE.machines.batchDuration) { + int parallel = ConfigHolder.INSTANCE.machines.batchDuration / recipe.duration; + parallel = ParallelLogic.getParallelAmountWithoutEU(machine, recipe, parallel); + + if (parallel == 0) return ModifierFunction.NULL; + if (parallel == 1) return ModifierFunction.IDENTITY; + + return ModifierFunction.builder() + .inputModifier(ContentModifier.multiplier(parallel)) + .outputModifier(ContentModifier.multiplier(parallel)) + .durationMultiplier(parallel) + .batchParallels(parallel) + .build(); + } + } + return ModifierFunction.IDENTITY; + } + /** * Recipe Modifier for Cracker Multiblocks - can be used as a valid {@link RecipeModifier} *

@@ -235,7 +252,7 @@ public class GTRecipeModifiers { long eut = 4 * (long) (parallels / (8.0 * coilMachine.getCoilType().getEnergyDiscount())); ModifierFunction baseModifier = r -> { var copy = r.copy(); - EURecipeCapability.putEUContent(copy.tickInputs, Math.max(1, eut)); + EURecipeCapability.putEUContent(copy.tickInputs, new EnergyStack(Math.max(1, eut))); copy.duration = Math.max(1, duration); return copy; }; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java index 30cb5582462..42aa8ce79f7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java @@ -4,7 +4,6 @@ import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.ICoilType; -import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; @@ -20,10 +19,10 @@ import com.gregtechceu.gtceu.common.machine.multiblock.electric.FusionReactorMachine; import com.gregtechceu.gtceu.common.machine.trait.customlogic.*; import com.gregtechceu.gtceu.common.recipe.condition.RockBreakerCondition; -import com.gregtechceu.gtceu.data.recipe.RecipeUtil; import com.gregtechceu.gtceu.data.recipe.builder.GTRecipeBuilder; import com.gregtechceu.gtceu.integration.kjs.GTRegistryInfo; import com.gregtechceu.gtceu.integration.xei.handlers.item.CycleItemStackHandler; +import com.gregtechceu.gtceu.utils.GTMath; import com.gregtechceu.gtceu.utils.ResearchManager; import com.lowdragmc.lowdraglib.utils.LocalizationUtils; @@ -45,11 +44,6 @@ import static com.lowdragmc.lowdraglib.gui.texture.ProgressTexture.FillDirection.*; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote GTRecipeTypes - */ public class GTRecipeTypes { public static final String STEAM = "steam"; @@ -148,7 +142,8 @@ public class GTRecipeTypes { .setIconSupplier(() -> GTMachines.MACERATOR[GTValues.LV].asStack()) .setSteamProgressBar(GuiTextures.PROGRESS_BAR_MACERATE_STEAM, LEFT_TO_RIGHT) .addCustomRecipeLogic(MaceratorLogic.INSTANCE) - .setSound(GTSoundEntries.MACERATOR); + .setSound(GTSoundEntries.MACERATOR) + .addDataInfo(data -> LocalizationUtils.format("gtceu.recipe.byproduct_tier", GTValues.VNF[GTValues.HV])); public final static GTRecipeType CANNER_RECIPES = register("canner", ELECTRIC).setMaxIOSize(2, 2, 1, 1) .setEUIO(IO.IN) @@ -189,8 +184,7 @@ public class GTRecipeTypes { .setSlotOverlay(true, false, GuiTextures.VIAL_OVERLAY_1) .setSlotOverlay(true, true, GuiTextures.VIAL_OVERLAY_2) .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW_MULTIPLE, LEFT_TO_RIGHT) - .setSound(GTValues.FOOLS.get() ? GTSoundEntries.SCIENCE : GTSoundEntries.CHEMICAL) - .setMaxTooltips(4) + .setSound(GTValues.FOOLS.getAsBoolean() ? GTSoundEntries.SCIENCE : GTSoundEntries.CHEMICAL) .onRecipeBuild((recipeBuilder, provider) -> GTRecipeTypes.LARGE_CHEMICAL_RECIPES.copyFrom(recipeBuilder) .save(provider)); @@ -210,32 +204,27 @@ public class GTRecipeTypes { .setSlotOverlay(true, false, true, GuiTextures.DUST_OVERLAY) .setProgressBar(GuiTextures.PROGRESS_BAR_SLICE, LEFT_TO_RIGHT) .setSound(GTSoundEntries.CUT) - .setMaxTooltips(4) .onRecipeBuild((recipeBuilder, provider) -> { if (recipeBuilder.input.getOrDefault(FluidRecipeCapability.CAP, Collections.emptyList()).isEmpty() && recipeBuilder.tickInput.getOrDefault(FluidRecipeCapability.CAP, Collections.emptyList()) .isEmpty()) { - recipeBuilder - .copy(new ResourceLocation(recipeBuilder.id.toString() + "_water")) - .inputFluids(GTMaterials.Water.getFluid((int) Math.max(4, - Math.min(1000, recipeBuilder.duration * recipeBuilder.EUt() / 320)))) + recipeBuilder.copy(new ResourceLocation(recipeBuilder.id.toString() + "_water")) + .inputFluids(GTMaterials.Water.getFluid((int) GTMath.clamp( + recipeBuilder.duration * recipeBuilder.EUt().getTotalEU() / 320, 4, 1000))) .duration(recipeBuilder.duration * 2) .save(provider); - recipeBuilder - .copy(new ResourceLocation(recipeBuilder.id.toString() + "_distilled_water")) - .inputFluids(GTMaterials.DistilledWater.getFluid((int) Math.max(3, - Math.min(750, recipeBuilder.duration * recipeBuilder.EUt() / 426)))) + recipeBuilder.copy(new ResourceLocation(recipeBuilder.id.toString() + "_distilled_water")) + .inputFluids(GTMaterials.DistilledWater.getFluid((int) GTMath.clamp( + recipeBuilder.duration * recipeBuilder.EUt().getTotalEU() / 426, 3, 750))) .duration((int) (recipeBuilder.duration * 1.5)) .save(provider); // Don't call buildAndRegister as we are mutating the original recipe and already in the middle of a // buildAndRegister call. // Adding a second call will result in duplicate recipe generation attempts - recipeBuilder - .inputFluids(GTMaterials.Lubricant.getFluid((int) Math.max(1, - Math.min(250, recipeBuilder.duration * recipeBuilder.EUt() / 1280)))) - .duration(Math.max(1, recipeBuilder.duration)); + recipeBuilder.inputFluids(GTMaterials.Lubricant.getFluid((int) GTMath.clamp( + recipeBuilder.duration * recipeBuilder.EUt().getTotalEU() / 1280, 1, 250))); } }); @@ -351,7 +340,6 @@ public class GTRecipeTypes { .setMaxIOSize(2, 1, 0, 0).setEUIO(IO.IN) .setSlotOverlay(false, false, true, GuiTextures.LENS_OVERLAY) .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW, LEFT_TO_RIGHT) - .setMaxTooltips(4) .setSound(GTSoundEntries.ELECTROLYZER); public final static GTRecipeType SIFTER_RECIPES = register("sifter", ELECTRIC).setMaxIOSize(1, 6, 0, 0) @@ -378,7 +366,6 @@ public class GTRecipeTypes { .setSlotOverlay(false, false, GuiTextures.CIRCUIT_OVERLAY) .setProgressBar(GuiTextures.PROGRESS_BAR_CIRCUIT_ASSEMBLER, LEFT_TO_RIGHT) .setSound(GTSoundEntries.ASSEMBLER) - .setMaxTooltips(4) .onRecipeBuild((recipeBuilder, provider) -> { if (recipeBuilder.input.getOrDefault(FluidRecipeCapability.CAP, Collections.emptyList()).isEmpty() && recipeBuilder.tickInput.getOrDefault(FluidRecipeCapability.CAP, Collections.emptyList()) @@ -401,14 +388,12 @@ public class GTRecipeTypes { .setSlotOverlay(false, false, GuiTextures.INT_CIRCUIT_OVERLAY) .setSlotOverlay(true, true, GuiTextures.CENTRIFUGE_OVERLAY) .setProgressBar(GuiTextures.PROGRESS_BAR_GAS_COLLECTOR, LEFT_TO_RIGHT) - .setMaxTooltips(4) .setOffsetVoltageText(true) .setSound(GTSoundEntries.COOLING); public final static GTRecipeType AIR_SCRUBBER_RECIPES = register("air_scrubber", ELECTRIC) .setMaxIOSize(1, 3, 1, 3).setEUIO(IO.IN) .setProgressBar(GuiTextures.PROGRESS_BAR_GAS_COLLECTOR, LEFT_TO_RIGHT) - .setMaxTooltips(4) .setSound(GTSoundEntries.COOLING); public static final GTRecipeType RESEARCH_STATION_RECIPES = register("research_station", ELECTRIC) @@ -418,7 +403,7 @@ public class GTRecipeTypes { .setSlotOverlay(true, false, GuiTextures.RESEARCH_STATION_OVERLAY) .setScanner(true) .setMaxTooltips(4) - .setSound(GTValues.FOOLS.get() ? GTSoundEntries.SCIENCE : GTSoundEntries.COMPUTATION); + .setSound(GTValues.FOOLS.getAsBoolean() ? GTSoundEntries.SCIENCE : GTSoundEntries.COMPUTATION); public final static GTRecipeType ROCK_BREAKER_RECIPES = register("rock_breaker", ELECTRIC).setMaxIOSize(1, 4, 0, 0) .setEUIO(IO.IN) @@ -442,7 +427,6 @@ public class GTRecipeTypes { .setBackground(GuiTextures.FLUID_SLOT).setShowAmount(false)); } }) - .setMaxTooltips(4) .setSound(GTSoundEntries.FIRE); public static final GTRecipeType SCANNER_RECIPES = register("scanner", ELECTRIC) @@ -535,8 +519,6 @@ public class GTRecipeTypes { .onRecipeBuild((recipeBuilder, provider) -> { if (recipeBuilder.data.getBoolean("disable_distillery")) return; if (recipeBuilder.output.containsKey(FluidRecipeCapability.CAP)) { - long EUt = EURecipeCapability.CAP - .of(recipeBuilder.tickInput.get(EURecipeCapability.CAP).get(0).getContent()); Content inputContent = recipeBuilder.input.get(FluidRecipeCapability.CAP).get(0); FluidIngredient input = FluidRecipeCapability.CAP.of(inputContent.getContent()); ItemStack[] outputs = recipeBuilder.output.containsKey(ItemRecipeCapability.CAP) ? @@ -554,14 +536,15 @@ public class GTRecipeTypes { GTRecipeBuilder builder = DISTILLERY_RECIPES .recipeBuilder(recipeBuilder.id.getPath() + "_to_" + BuiltInRegistries.FLUID.getKey(output.getStacks()[0].getFluid()).getPath()) - .EUt(Math.max(1, EUt / 4)).circuitMeta(i + 1); + .EUt(Math.max(1, recipeBuilder.EUt().voltage() / 4), recipeBuilder.EUt().amperage()) + .circuitMeta(i + 1); - int ratio = RecipeUtil.getRatioForDistillery(input, output, outputItem); + int ratio = RecipeHelper.getRatioForDistillery(input, output, outputItem); int recipeDuration = (int) (recipeBuilder.duration * OverclockingLogic.STD_DURATION_FACTOR_INV); boolean shouldDivide = ratio != 1; - boolean fluidsDivisible = RecipeUtil.isFluidStackDivisibleForDistillery(input, ratio) && - RecipeUtil.isFluidStackDivisibleForDistillery(output, ratio); + boolean fluidsDivisible = RecipeHelper.isFluidStackDivisibleForDistillery(input, ratio) && + RecipeHelper.isFluidStackDivisibleForDistillery(output, ratio); FluidIngredient dividedInputFluid = input.copy(); dividedInputFluid.setAmount(Math.max(1, dividedInputFluid.getAmount() / ratio)); @@ -637,7 +620,6 @@ public class GTRecipeTypes { .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW, LEFT_TO_RIGHT) .setSound(GTSoundEntries.ASSEMBLER) .setHasResearchSlot(true) - .setMaxTooltips(4) .onRecipeBuild(ResearchManager::createDefaultResearchRecipe); public static final GTRecipeType LARGE_CHEMICAL_RECIPES = register("large_chemical_reactor", MULTIBLOCK) @@ -649,7 +631,7 @@ public class GTRecipeTypes { .setSlotOverlay(false, true, true, GuiTextures.MOLECULAR_OVERLAY_4) .setSlotOverlay(true, false, GuiTextures.VIAL_OVERLAY_1) .setSlotOverlay(true, true, GuiTextures.VIAL_OVERLAY_2) - .setSound(GTValues.FOOLS.get() ? GTSoundEntries.SCIENCE : GTSoundEntries.CHEMICAL) + .setSound(GTValues.FOOLS.getAsBoolean() ? GTSoundEntries.SCIENCE : GTSoundEntries.CHEMICAL) .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW_MULTIPLE, LEFT_TO_RIGHT) .setSmallRecipeMap(CHEMICAL_RECIPES); @@ -695,6 +677,6 @@ public static void init() { } public static GTRecipeType get(String name) { - return GTRegistries.RECIPE_TYPES.get(GTCEu.appendId(name)); + return GTRegistries.RECIPE_TYPES.get(GTCEu.id(name)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTSoundEntries.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTSoundEntries.java index 58e2efa6cb4..86a63120f08 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTSoundEntries.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTSoundEntries.java @@ -11,11 +11,6 @@ import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; -/** - * @author KilaBash - * @date 2023/3/3 - * @implNote GTSounds - */ public class GTSoundEntries { static { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java index 62b0d9c2805..833631ab2e8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java @@ -2,29 +2,30 @@ import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.recipe.GTRecipe; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.monitor.MonitorGroup; import com.gregtechceu.gtceu.syncdata.*; import com.lowdragmc.lowdraglib.syncdata.IAccessor; import com.lowdragmc.lowdraglib.syncdata.payload.FriendlyBufPayload; +import com.lowdragmc.lowdraglib.syncdata.payload.NbtTagPayload; import net.minecraftforge.fluids.FluidStack; import static com.lowdragmc.lowdraglib.syncdata.TypedPayloadRegistries.*; -/** - * @author KilaBash - * @date 2023/2/26 - * @implNote GTSyncedFieldAccessors - */ public class GTSyncedFieldAccessors { public static final IAccessor GT_RECIPE_TYPE_ACCESSOR = new GTRecipeTypeAccessor(); public static void init() { register(FriendlyBufPayload.class, FriendlyBufPayload::new, GT_RECIPE_TYPE_ACCESSOR, 1000); + register(NbtTagPayload.class, NbtTagPayload::new, VirtualTankAccessor.INSTANCE, 2); + registerSimple(MachineRenderStatePayload.class, MachineRenderStatePayload::new, MachineRenderState.class, 1); registerSimple(MaterialPayload.class, MaterialPayload::new, Material.class, 1); registerSimple(GTRecipePayload.class, GTRecipePayload::new, GTRecipe.class, 100); registerSimple(FluidStackPayload.class, FluidStackPayload::new, FluidStack.class, -1); + registerSimple(MonitorGroupPayload.class, MonitorGroupPayload::new, MonitorGroup.class, 1); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java index 2e25302fc56..a44fe368143 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java @@ -11,18 +11,18 @@ import com.gregtechceu.gtceu.api.machine.multiblock.CoilWorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.pattern.FactoryBlockPattern; import com.gregtechceu.gtceu.api.pattern.MultiblockShapeInfo; import com.gregtechceu.gtceu.api.pattern.Predicates; import com.gregtechceu.gtceu.api.pattern.TraceabilityPredicate; -import com.gregtechceu.gtceu.client.renderer.machine.gcym.LargeChemicalBathRenderer; -import com.gregtechceu.gtceu.client.renderer.machine.gcym.LargeMixerRenderer; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderHelper; import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.common.data.GTRecipeModifiers; import com.gregtechceu.gtceu.common.data.GTRecipeTypes; import com.gregtechceu.gtceu.common.machine.multiblock.electric.DistillationTowerMachine; -import com.gregtechceu.gtceu.common.machine.multiblock.electric.gcym.LargeChemicalBathMachine; -import com.gregtechceu.gtceu.common.machine.multiblock.electric.gcym.LargeMixerMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.gcym.*; import com.gregtechceu.gtceu.common.machine.multiblock.part.ParallelHatchPartMachine; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.utils.FormattingUtil; @@ -46,14 +46,12 @@ import static com.gregtechceu.gtceu.common.data.GTBlocks.*; import static com.gregtechceu.gtceu.common.data.GTMachines.*; import static com.gregtechceu.gtceu.common.data.GTMaterials.NaquadahAlloy; +import static com.gregtechceu.gtceu.common.data.GTRecipeModifiers.*; import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.*; import static com.gregtechceu.gtceu.common.data.machines.GTMachineUtils.registerTieredMachines; +import static com.gregtechceu.gtceu.common.data.models.GTMachineModels.*; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; -/** - * @author Rundas - * @implNote Gregicality Multiblocks - */ public class GCYMMachines { public static void init() {} @@ -70,21 +68,26 @@ public static void init() {} } + " Parallel Control Hatch") .rotationState(RotationState.ALL) .abilities(PartAbility.PARALLEL_HATCH) - .workableTieredHullRenderer(GTCEu.id("block/machines/parallel_hatch_mk" + (tier - 4))) - .tooltips(Component.translatable("gtceu.machine.parallel_hatch_mk" + tier + ".tooltip")) + .modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE) + .model(createWorkableTieredHullMachineModel( + GTCEu.id("block/machines/parallel_hatch_mk" + (tier - 4))) + .andThen((ctx, prov, model) -> { + model.addReplaceableTextures("bottom", "top", "side"); + })) + .tooltips(Component.translatable("gtceu.machine.parallel_hatch_mk" + tier + ".tooltip"), + Component.translatable("gtceu.part_sharing.disabled")) .register(), IV, LuV, ZPM, UV); public final static MultiblockMachineDefinition LARGE_MACERATION_TOWER = REGISTRATE - .multiblock("large_maceration_tower", WorkableElectricMultiblockMachine::new) + .multiblock("large_maceration_tower", LargeMacerationTowerMachine::new) .langValue("Large Maceration Tower") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) .tooltips(Component.translatable("gtceu.machine.available_recipe_map_1.tooltip", Component.translatable("gtceu.macerator"))) .rotationState(RotationState.ALL) .recipeType(MACERATOR_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_SECURE_MACERATION) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXX", "XXXXX", "XXXXX", "XXXXX") @@ -99,7 +102,7 @@ public static void init() {} .where('G', Predicates.blocks(CRUSHING_WHEELS.get())) .where('A', Predicates.air()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/secure_maceration_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/secure_maceration_casing"), GTCEu.id("block/multiblock/gcym/large_maceration_tower")) .register(); @@ -111,11 +114,7 @@ public static void init() {} Component.translatable("gtceu.ore_washer"), Component.translatable("gtceu.chemical_bath"))) .rotationState(RotationState.ALL) .recipeTypes(CHEMICAL_BATH_RECIPES, ORE_WASHER_RECIPES) - .renderer(() -> new LargeChemicalBathRenderer(GTCEu.id("block/casings/gcym/watertight_casing"), - GTCEu.id("block/multiblock/gcym/large_chemical_bath"))) - .hasTESR(true) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_WATERTIGHT) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXX", "XXXXX", "XXXXX") @@ -132,6 +131,11 @@ public static void init() {} .where(' ', Predicates.air()) .where('T', Predicates.blocks(CASING_TITANIUM_PIPE.get())) .build()) + .hasBER(true) + .modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE) + .model(createWorkableCasingMachineModel(GTCEu.id("block/casings/gcym/watertight_casing"), + GTCEu.id("block/multiblock/gcym/large_chemical_bath")) + .andThen(b -> b.addDynamicRenderer(DynamicRenderHelper::makeRecipeFluidAreaRender))) .register(); public final static MultiblockMachineDefinition LARGE_CENTRIFUGE = REGISTRATE @@ -142,8 +146,7 @@ public static void init() {} Component.translatable("gtceu.centrifuge"), Component.translatable("gtceu.thermal_centrifuge"))) .rotationState(RotationState.ALL) .recipeTypes(CENTRIFUGE_RECIPES, THERMAL_CENTRIFUGE_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_VIBRATION_SAFE) .pattern(definition -> FactoryBlockPattern.start() .aisle("#XXX#", "XXXXX", "#XXX#") @@ -159,7 +162,7 @@ public static void init() {} .where('A', Predicates.air()) .where('#', Predicates.any()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/vibration_safe_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/vibration_safe_casing"), GTCEu.id("block/multiblock/gcym/large_centrifuge")) .register(); @@ -171,11 +174,7 @@ public static void init() {} Component.translatable("gtceu.mixer"))) .rotationState(RotationState.ALL) .recipeType(MIXER_RECIPES) - .renderer(() -> new LargeMixerRenderer(GTCEu.id("block/casings/gcym/reaction_safe_mixing_casing"), - GTCEu.id("block/multiblock/gcym/large_mixer"))) - .hasTESR(true) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_REACTION_SAFE) .pattern(definition -> FactoryBlockPattern.start() .aisle("#XXX#", "#XXX#", "#XXX#", "#XXX#", "#XXX#", "##F##") @@ -193,6 +192,11 @@ public static void init() {} .where('A', Predicates.air()) .where('#', Predicates.any()) .build()) + .hasBER(true) + .modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE) + .model(createWorkableCasingMachineModel(GTCEu.id("block/casings/gcym/reaction_safe_mixing_casing"), + GTCEu.id("block/multiblock/gcym/large_mixer")) + .andThen(b -> b.addDynamicRenderer(DynamicRenderHelper::makeRecipeFluidAreaRender))) .register(); public final static MultiblockMachineDefinition LARGE_ELECTROLYZER = REGISTRATE @@ -203,8 +207,7 @@ public static void init() {} Component.translatable("gtceu.electrolyzer"))) .rotationState(RotationState.ALL) .recipeType(ELECTROLYZER_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_NONCONDUCTING) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXX", "XXXXX", "XXXXX") @@ -217,7 +220,7 @@ public static void init() {} .or(Predicates.autoAbilities(true, false, true))) .where('C', blocks(ELECTROLYTIC_CELL.get())) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/nonconducting_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/nonconducting_casing"), GTCEu.id("block/multiblock/gcym/large_electrolyzer")) .register(); @@ -230,8 +233,7 @@ public static void init() {} Component.translatable("gtceu.polarizer"))) .rotationState(RotationState.ALL) .recipeTypes(ELECTROMAGNETIC_SEPARATOR_RECIPES, POLARIZER_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_NONCONDUCTING) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXX", "XXXXX", "XXXXX") @@ -244,7 +246,7 @@ public static void init() {} .or(Predicates.autoAbilities(true, false, true))) .where('C', blocks(ELECTROLYTIC_CELL.get())) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/nonconducting_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/nonconducting_casing"), GTCEu.id("block/multiblock/gcym/large_electrolyzer")) .register(); @@ -256,8 +258,7 @@ public static void init() {} Component.translatable("gtceu.packer"))) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.PACKER_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_TUNGSTENSTEEL_ROBUST) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXX", "XXX", "XXX") @@ -272,7 +273,7 @@ public static void init() {} .or(Predicates.autoAbilities(true, false, true))) .where('A', Predicates.air()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_robust_tungstensteel"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_robust_tungstensteel"), GTCEu.id("block/multiblock/gcym/large_packer")) .register(); @@ -287,8 +288,8 @@ public static void init() {} ConfigHolder.INSTANCE.gameplay.environmentalHazards) .rotationState(RotationState.ALL) .recipeType(ASSEMBLER_RECIPES) - .recipeModifiers(GTRecipeModifiers.DEFAULT_ENVIRONMENT_REQUIREMENT, GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(DEFAULT_ENVIRONMENT_REQUIREMENT, GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, + BATCH_MODE) .appearanceBlock(CASING_LARGE_SCALE_ASSEMBLING) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXXXXXX", "XXXXXXXXX", "XXXXXXXXX") @@ -304,7 +305,7 @@ public static void init() {} .where('A', Predicates.air()) .where('#', Predicates.any()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/large_scale_assembling_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/large_scale_assembling_casing"), GTCEu.id("block/multiblock/gcym/large_assembler")) .register(); @@ -319,8 +320,8 @@ public static void init() {} ConfigHolder.INSTANCE.gameplay.environmentalHazards) .rotationState(RotationState.ALL) .recipeType(CIRCUIT_ASSEMBLER_RECIPES) - .recipeModifiers(GTRecipeModifiers.DEFAULT_ENVIRONMENT_REQUIREMENT, GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(DEFAULT_ENVIRONMENT_REQUIREMENT, GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, + BATCH_MODE) .appearanceBlock(CASING_LARGE_SCALE_ASSEMBLING) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXXXX", "XXXXXXX", "XXXXXXX") @@ -340,7 +341,7 @@ public static void init() {} .where('A', Predicates.air()) .where('#', Predicates.any()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/large_scale_assembling_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/large_scale_assembling_casing"), GTCEu.id("block/multiblock/gcym/large_circuit_assembler")) .register(); @@ -352,8 +353,7 @@ public static void init() {} Component.translatable("gtceu.arc_furnace"))) .rotationState(RotationState.ALL) .recipeType(ARC_FURNACE_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_HIGH_TEMPERATURE_SMELTING) .pattern(definition -> FactoryBlockPattern.start() .aisle("#XXX#", "#XXX#", "#XXX#", "#XXX#") @@ -370,7 +370,7 @@ public static void init() {} .where('A', Predicates.air()) .where('#', Predicates.any()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/high_temperature_smelting_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/high_temperature_smelting_casing"), GTCEu.id("block/multiblock/gcym/large_arc_smelter")) .register(); @@ -384,8 +384,8 @@ public static void init() {} ConfigHolder.INSTANCE.gameplay.environmentalHazards) .rotationState(RotationState.ALL) .recipeType(LASER_ENGRAVER_RECIPES) - .recipeModifiers(GTRecipeModifiers.DEFAULT_ENVIRONMENT_REQUIREMENT, GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(DEFAULT_ENVIRONMENT_REQUIREMENT, GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, + BATCH_MODE) .appearanceBlock(CASING_LASER_SAFE_ENGRAVING) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXX", "XXGXX", "XXGXX", "XXXXX") @@ -402,7 +402,7 @@ public static void init() {} .where('K', blocks(CASING_GRATE.get())) .where('A', Predicates.air()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/laser_safe_engraving_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/laser_safe_engraving_casing"), GTCEu.id("block/multiblock/gcym/large_engraving_laser")) .register(); @@ -414,8 +414,7 @@ public static void init() {} Component.translatable("gtceu.sifter"))) .rotationState(RotationState.ALL) .recipeType(SIFTER_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_VIBRATION_SAFE) .pattern(definition -> FactoryBlockPattern.start() .aisle("#X#X#", "#X#X#", "#XXX#", "XXXXX", "#XXX#") @@ -431,7 +430,7 @@ public static void init() {} .where('A', Predicates.air()) .where('#', Predicates.any()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/vibration_safe_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/vibration_safe_casing"), GTCEu.id("block/multiblock/gcym/large_sifting_funnel")) .register(); @@ -487,7 +486,7 @@ public static void init() {} coil -> shapeInfo.add(builder.shallowCopy().where('C', coil.getValue().get()).build())); return shapeInfo; }) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/high_temperature_smelting_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/high_temperature_smelting_casing"), GTCEu.id("block/multiblock/gcym/blast_alloy_smelter")) .additionalDisplay((controller, components) -> { if (controller instanceof CoilWorkableElectricMultiblockMachine coilMachine && controller.isFormed()) { @@ -511,8 +510,7 @@ public static void init() {} Component.translatable("gtceu.autoclave"))) .rotationState(RotationState.ALL) .recipeType(AUTOCLAVE_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_WATERTIGHT) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXX", "XXX", "XXX") @@ -527,7 +525,7 @@ public static void init() {} .where('T', blocks(CASING_STEEL_PIPE.get())) .where('#', any()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/watertight_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/watertight_casing"), GTCEu.id("block/multiblock/gcym/large_autoclave")) .register(); @@ -540,8 +538,7 @@ public static void init() {} Component.translatable("gtceu.forge_hammer"), Component.translatable("gtceu.forming_press"))) .rotationState(RotationState.ALL) .recipeTypes(BENDER_RECIPES, COMPRESSOR_RECIPES, FORGE_HAMMER_RECIPES, FORMING_PRESS_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_STRESS_PROOF) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXXXX", "XXXXXXX", "XXXXXXX") @@ -555,7 +552,7 @@ public static void init() {} .where('C', blocks(CASING_TEMPERED_GLASS.get())) .where('A', air()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/stress_proof_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/stress_proof_casing"), GTCEu.id("block/multiblock/gcym/large_material_press")) .register(); @@ -568,13 +565,12 @@ public static void init() {} Component.translatable("gtceu.fluid_heater"))) .rotationState(RotationState.ALL) .recipeTypes(BREWING_RECIPES, FERMENTING_RECIPES, FLUID_HEATER_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_CORROSION_PROOF) .pattern(definition -> FactoryBlockPattern.start() .aisle("#XXX#", "#XXX#", "#XXX#", "#XXX#", "#####") .aisle("XXXXX", "XCCCX", "XAAAX", "XXAXX", "##X##") - .aisle("XXXXX", "XCPCX", "XAPAX", "XAPAX", "#XMX#") + .aisle("XXXXX", "XCPCX", "XAPAX", "XAPAX", "#XXX#") .aisle("XXXXX", "XCCCX", "XAAAX", "XXAXX", "##X##") .aisle("#XXX#", "#XSX#", "#XXX#", "#XXX#", "#####") .where('S', controller(blocks(definition.get()))) @@ -583,11 +579,10 @@ public static void init() {} .or(autoAbilities(true, false, true))) .where('P', blocks(CASING_STEEL_PIPE.get())) .where('C', blocks(MOLYBDENUM_DISILICIDE_COIL_BLOCK.get())) - .where('M', abilities(MUFFLER)) .where('A', air()) .where('#', any()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/corrosion_proof_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/corrosion_proof_casing"), GTCEu.id("block/multiblock/gcym/large_brewer")) .register(); @@ -599,8 +594,7 @@ public static void init() {} Component.translatable("gtceu.cutter"), Component.translatable("gtceu.lathe"))) .rotationState(RotationState.ALL) .recipeTypes(CUTTER_RECIPES, LATHE_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_SHOCK_PROOF) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXXXX", "XXXXXXX", "XXXXXXX", "##XXXXX") @@ -616,7 +610,7 @@ public static void init() {} .where('A', air()) .where('#', any()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/shock_proof_cutting_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/shock_proof_cutting_casing"), GTCEu.id("block/multiblock/gcym/large_cutter")) .register(); @@ -628,8 +622,7 @@ public static void init() {} Component.translatable("gtceu.distillation_tower"), Component.translatable("gtceu.distillery"))) .rotationState(RotationState.NON_Y_AXIS) .recipeTypes(DISTILLATION_RECIPES, DISTILLERY_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_WATERTIGHT) .pattern(definition -> { TraceabilityPredicate casingPredicate = blocks(CASING_WATERTIGHT.get()).setMinGlobalLimited(40); @@ -706,8 +699,9 @@ public static void init() {} } return shapeInfos; }) - .partSorter(Comparator.comparingInt(a -> a.self().getPos().getY())) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/watertight_casing"), + .allowExtendedFacing(false) + .partSorter(Comparator.comparingInt(p -> p.self().getPos().getY())) + .workableCasingModel(GTCEu.id("block/casings/gcym/watertight_casing"), GTCEu.id("block/multiblock/gcym/large_distillery")) .register(); @@ -719,8 +713,7 @@ public static void init() {} Component.translatable("gtceu.extractor"), Component.translatable("gtceu.canner"))) .rotationState(RotationState.ALL) .recipeTypes(EXTRACTOR_RECIPES, CANNER_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_WATERTIGHT) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXX", "XXXXX", "XXXXX") @@ -733,7 +726,7 @@ public static void init() {} .where('C', blocks(CASING_STEEL_PIPE.get())) .where('A', air()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/watertight_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/watertight_casing"), GTCEu.id("block/multiblock/gcym/large_extractor")) .register(); @@ -745,8 +738,7 @@ public static void init() {} Component.translatable("gtceu.extruder"))) .rotationState(RotationState.ALL) .recipeType(EXTRUDER_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_STRESS_PROOF) .pattern(definition -> FactoryBlockPattern.start() .aisle("##XXX", "##XXX", "##XXX") @@ -763,7 +755,7 @@ public static void init() {} .where('A', air()) .where('#', any()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/stress_proof_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/stress_proof_casing"), GTCEu.id("block/multiblock/gcym/large_extruder")) .register(); @@ -775,8 +767,7 @@ public static void init() {} Component.translatable("gtceu.fluid_solidifier"))) .rotationState(RotationState.ALL) .recipeType(FLUID_SOLIDFICATION_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_WATERTIGHT) .pattern(definition -> FactoryBlockPattern.start() .aisle("#XXX#", "#XXX#", "#XXX#", "#XXX#") @@ -792,7 +783,7 @@ public static void init() {} .where('A', air()) .where('#', any()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/watertight_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/watertight_casing"), GTCEu.id("block/multiblock/gcym/large_solidifier")) .register(); @@ -804,8 +795,7 @@ public static void init() {} Component.translatable("gtceu.wiremill"))) .rotationState(RotationState.ALL) .recipeType(WIREMILL_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_STRESS_PROOF) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXX", "XXXXX", "XXX##") @@ -818,10 +808,11 @@ public static void init() {} .where('C', blocks(CASING_TITANIUM_GEARBOX.get())) .where('#', any()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/stress_proof_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/stress_proof_casing"), GTCEu.id("block/multiblock/gcym/large_wiremill")) .register(); + // spotless:off public final static MultiblockMachineDefinition MEGA_BLAST_FURNACE = REGISTRATE .multiblock("mega_blast_furnace", CoilWorkableElectricMultiblockMachine::new) .langValue("Rotary Hearth Furnace") @@ -833,64 +824,24 @@ public static void init() {} Component.translatable("gtceu.machine.electric_blast_furnace.tooltip.2")) .rotationState(RotationState.ALL) .recipeType(BLAST_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers::ebfOverclock) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers::ebfOverclock, BATCH_MODE) .appearanceBlock(CASING_HIGH_TEMPERATURE_SMELTING) .pattern(definition -> { TraceabilityPredicate casing = blocks(CASING_HIGH_TEMPERATURE_SMELTING.get()).setMinGlobalLimited(360); return FactoryBlockPattern.start() - .aisle("##XXXXXXXXX##", "##XXXXXXXXX##", "#############", "#############", "#############", - "#############", "#############", "#############", "#############", "#############", - "#############", "#############", "#############", "#############", "#############", - "#############", "#############") - .aisle("#XXXXXXXXXXX#", "#XXXXXXXXXXX#", "###F#####F###", "###F#####F###", "###FFFFFFF###", - "#############", "#############", "#############", "#############", "#############", - "####FFFFF####", "#############", "#############", "#############", "#############", - "#############", "#############") - .aisle("XXXXXXXXXXXXX", "XXXXVVVVVXXXX", "##F#######F##", "##F#######F##", "##FFFHHHFFF##", - "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", - "##FFFHHHFFF##", "#############", "#############", "#############", "#############", - "#############", "###TTTTTTT###") - .aisle("XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "#F####P####F#", "#F####P####F#", "#FFHHHPHHHFF#", - "######P######", "######P######", "######P######", "######P######", "######P######", - "##FHHHPHHHF##", "######P######", "######P######", "######P######", "######P######", - "######P######", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BBPBB####", "####TITIT####", "#FFHHHHHHHFF#", - "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", - "#FFHHHHHHHFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", - "####BITIB####", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BAAAB####", "####IAAAI####", "#FHHHAAAHHHF#", - "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", - "#FHHHAAAHHHF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", - "####IAAAI####", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "###PPAAAPP###", "###PTAAATP###", "#FHPHAAAHPHF#", - "###PTAAATP###", "###PCAAACP###", "###PCAAACP###", "###PCAAACP###", "###PTAAATP###", - "#FHPHAAAHPHF#", "###PTAAATP###", "###PCAAACP###", "###PCAAACP###", "###PCAAACP###", - "###PTAAATP###", "##TPPPMPPPT##") - .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BAAAB####", "####IAAAI####", "#FHHHAAAHHHF#", - "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", - "#FHHHAAAHHHF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", - "####IAAAI####", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BBPBB####", "####TITIT####", "#FFHHHHHHHFF#", - "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", - "#FFHHHHHHHFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", - "####BITIB####", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "#F####P####F#", "#F####P####F#", "#FFHHHPHHHFF#", - "######P######", "######P######", "######P######", "######P######", "######P######", - "##FHHHPHHHF##", "######P######", "######P######", "######P######", "######P######", - "######P######", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXXXVVVVVXXXX", "##F#######F##", "##F#######F##", "##FFFHHHFFF##", - "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", - "##FFFHHHFFF##", "#############", "#############", "#############", "#############", - "#############", "###TTTTTTT###") - .aisle("#XXXXXXXXXXX#", "#XXXXXXXXXXX#", "###F#####F###", "###F#####F###", "###FFFFFFF###", - "#############", "#############", "#############", "#############", "#############", - "####FFFFF####", "#############", "#############", "#############", "#############", - "#############", "#############") - .aisle("##XXXXXXXXX##", "##XXXXSXXXX##", "#############", "#############", "#############", - "#############", "#############", "#############", "#############", "#############", - "#############", "#############", "#############", "#############", "#############", - "#############", "#############") + .aisle("##XXXXXXXXX##", "##XXXXXXXXX##", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############") + .aisle("#XXXXXXXXXXX#", "#XXXXXXXXXXX#", "###F#####F###", "###F#####F###", "###FFFFFFF###", "#############", "#############", "#############", "#############", "#############", "####FFFFF####", "#############", "#############", "#############", "#############", "#############", "#############") + .aisle("XXXXXXXXXXXXX", "XXXXVVVVVXXXX", "##F#######F##", "##F#######F##", "##FFFHHHFFF##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##FFFHHHFFF##", "#############", "#############", "#############", "#############", "#############", "###TTTTTTT###") + .aisle("XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "#F####P####F#", "#F####P####F#", "#FFHHHPHHHFF#", "######P######", "######P######", "######P######", "######P######", "######P######", "##FHHHPHHHF##", "######P######", "######P######", "######P######", "######P######", "######P######", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BBPBB####", "####TITIT####", "#FFHHHHHHHFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "#FFHHHHHHHFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BAAAB####", "####IAAAI####", "#FHHHAAAHHHF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", "#FHHHAAAHHHF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "###PPAAAPP###", "###PTAAATP###", "#FHPHAAAHPHF#", "###PTAAATP###", "###PCAAACP###", "###PCAAACP###", "###PCAAACP###", "###PTAAATP###", "#FHPHAAAHPHF#", "###PTAAATP###", "###PCAAACP###", "###PCAAACP###", "###PCAAACP###", "###PTAAATP###", "##TPPPMPPPT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BAAAB####", "####IAAAI####", "#FHHHAAAHHHF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", "#FHHHAAAHHHF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BBPBB####", "####TITIT####", "#FFHHHHHHHFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "#FFHHHHHHHFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "#F####P####F#", "#F####P####F#", "#FFHHHPHHHFF#", "######P######", "######P######", "######P######", "######P######", "######P######", "##FHHHPHHHF##", "######P######", "######P######", "######P######", "######P######", "######P######", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXXXVVVVVXXXX", "##F#######F##", "##F#######F##", "##FFFHHHFFF##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##FFFHHHFFF##", "#############", "#############", "#############", "#############", "#############", "###TTTTTTT###") + .aisle("#XXXXXXXXXXX#", "#XXXXXXXXXXX#", "###F#####F###", "###F#####F###", "###FFFFFFF###", "#############", "#############", "#############", "#############", "#############", "####FFFFF####", "#############", "#############", "#############", "#############", "#############", "#############") + .aisle("##XXXXXXXXX##", "##XXXXSXXXX##", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############") .where('S', controller(blocks(definition.get()))) .where('X', casing.or(autoAbilities(definition.getRecipeTypes())) .or(Predicates.autoAbilities(true, false, true))) @@ -910,58 +861,19 @@ public static void init() {} .shapeInfos(definition -> { List shapeInfo = new ArrayList<>(); var builder = MultiblockShapeInfo.builder() - .aisle("##XODXXXQLX##", "##XXXXSXXXX##", "#############", "#############", "#############", - "#############", "#############", "#############", "#############", "#############", - "#############", "#############", "#############", "#############", "#############", - "#############", "#############") - .aisle("#XXXXXXXXXXX#", "#XXXXXXXXXXX#", "###F#####F###", "###F#####F###", "###FFFFFFF###", - "#############", "#############", "#############", "#############", "#############", - "####FFFFF####", "#############", "#############", "#############", "#############", - "#############", "#############") - .aisle("XXXXXXXXXXXXX", "XXXXVVVVVXXXX", "##F#######F##", "##F#######F##", "##FFFXXXFFF##", - "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", - "##FFFXXXFFF##", "#############", "#############", "#############", "#############", - "#############", "###TTTTTTT###") - .aisle("XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "#F####P####F#", "#F####P####F#", "#FFXXXPXXXFF#", - "######P######", "######P######", "######P######", "######P######", "######P######", - "##FXXXPXXXF##", "######P######", "######P######", "######P######", "######P######", - "######P######", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BBPBB####", "####TITIT####", "#FFXXXXXXXFF#", - "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", - "#FFXXXXXXXFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", - "####BITIB####", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BAAAB####", "####IAAAI####", "#FXXXAAAXXXF#", - "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", - "#FXXXAAAXXXF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", - "####IAAAI####", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "###PPAAAPP###", "###PTAAATP###", "#FXPXAAAXPXF#", - "###PTAAATP###", "###PCAAACP###", "###PCAAACP###", "###PCAAACP###", "###PTAAATP###", - "#FXPXAAAXPXF#", "###PTAAATP###", "###PCAAACP###", "###PCAAACP###", "###PCAAACP###", - "###PTAAATP###", "##TPPPHPPPT##") - .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BAAAB####", "####IAAAI####", "#FXXXAAAXXXF#", - "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", - "#FXXXAAAXXXF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", - "####IAAAI####", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BBPBB####", "####TITIT####", "#FFXXXXXXXFF#", - "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", - "#FFXXXXXXXFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", - "####BITIB####", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "#F####P####F#", "#F####P####F#", "#FFXXXPXXXFF#", - "######P######", "######P######", "######P######", "######P######", "######P######", - "##FXXXPXXXF##", "######P######", "######P######", "######P######", "######P######", - "######P######", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXXXVVVVVXXXX", "##F#######F##", "##F#######F##", "##FFFXXXFFF##", - "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", - "##FFFXXXFFF##", "#############", "#############", "#############", "#############", - "#############", "###TTTTTTT###") - .aisle("#XXXXXXXXXXX#", "#XXXXXXXXXXX#", "###F#####F###", "###F#####F###", "###FFFFFFF###", - "#############", "#############", "#############", "#############", "#############", - "####FFFFF####", "#############", "#############", "#############", "#############", - "#############", "#############") - .aisle("##XXXEMEXXX##", "##XXXXXXXXX##", "#############", "#############", "#############", - "#############", "#############", "#############", "#############", "#############", - "#############", "#############", "#############", "#############", "#############", - "#############", "#############") + .aisle("##XODXXXQLX##", "##XXXXSXXXX##", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############") + .aisle("#XXXXXXXXXXX#", "#XXXXXXXXXXX#", "###F#####F###", "###F#####F###", "###FFFFFFF###", "#############", "#############", "#############", "#############", "#############", "####FFFFF####", "#############", "#############", "#############", "#############", "#############", "#############") + .aisle("XXXXXXXXXXXXX", "XXXXVVVVVXXXX", "##F#######F##", "##F#######F##", "##FFFXXXFFF##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##FFFXXXFFF##", "#############", "#############", "#############", "#############", "#############", "###TTTTTTT###") + .aisle("XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "#F####P####F#", "#F####P####F#", "#FFXXXPXXXFF#", "######P######", "######P######", "######P######", "######P######", "######P######", "##FXXXPXXXF##", "######P######", "######P######", "######P######", "######P######", "######P######", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BBPBB####", "####TITIT####", "#FFXXXXXXXFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "#FFXXXXXXXFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BAAAB####", "####IAAAI####", "#FXXXAAAXXXF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", "#FXXXAAAXXXF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "###PPAAAPP###", "###PTAAATP###", "#FXPXAAAXPXF#", "###PTAAATP###", "###PCAAACP###", "###PCAAACP###", "###PCAAACP###", "###PTAAATP###", "#FXPXAAAXPXF#", "###PTAAATP###", "###PCAAACP###", "###PCAAACP###", "###PCAAACP###", "###PTAAATP###", "##TPPPHPPPT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BAAAB####", "####IAAAI####", "#FXXXAAAXXXF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", "#FXXXAAAXXXF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BBPBB####", "####TITIT####", "#FFXXXXXXXFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "#FFXXXXXXXFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "#F####P####F#", "#F####P####F#", "#FFXXXPXXXFF#", "######P######", "######P######", "######P######", "######P######", "######P######", "##FXXXPXXXF##", "######P######", "######P######", "######P######", "######P######", "######P######", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXXXVVVVVXXXX", "##F#######F##", "##F#######F##", "##FFFXXXFFF##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##FFFXXXFFF##", "#############", "#############", "#############", "#############", "#############", "###TTTTTTT###") + .aisle("#XXXXXXXXXXX#", "#XXXXXXXXXXX#", "###F#####F###", "###F#####F###", "###FFFFFFF###", "#############", "#############", "#############", "#############", "#############", "####FFFFF####", "#############", "#############", "#############", "#############", "#############", "#############") + .aisle("##XXXEMEXXX##", "##XXXXXXXXX##", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############") .where('X', CASING_HIGH_TEMPERATURE_SMELTING.getDefaultState()) .where('S', definition, Direction.NORTH) .where('A', Blocks.AIR.defaultBlockState()) @@ -980,21 +892,17 @@ public static void init() {} .where('M', MAINTENANCE_HATCH, Direction.SOUTH); GTCEuAPI.HEATING_COILS.entrySet().stream() .sorted(Comparator.comparingInt(entry -> entry.getKey().getTier())) - .forEach( - coil -> shapeInfo.add(builder.shallowCopy().where('C', coil.getValue().get()).build())); + .forEach(coil -> shapeInfo.add(builder.shallowCopy().where('C', coil.getValue().get()).build())); return shapeInfo; }) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/high_temperature_smelting_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/high_temperature_smelting_casing"), GTCEu.id("block/multiblock/gcym/mega_blast_furnace")) .additionalDisplay((controller, components) -> { if (controller instanceof CoilWorkableElectricMultiblockMachine coilMachine && controller.isFormed()) { components.add(Component.translatable("gtceu.multiblock.blast_furnace.max_temperature", - Component - .translatable( - FormattingUtil - .formatNumbers(coilMachine.getCoilType().getCoilTemperature() + - 100L * Math.max(0, coilMachine.getTier() - GTValues.MV)) + - "K") + Component.translatable( + FormattingUtil.formatNumbers(coilMachine.getCoilType().getCoilTemperature() + + 100L * Math.max(0, coilMachine.getTier() - GTValues.MV)) + "K") .setStyle(Style.EMPTY.withColor(ChatFormatting.RED)))); } }) @@ -1008,22 +916,15 @@ public static void init() {} Component.translatable("gtceu.vacuum_freezer"))) .rotationState(RotationState.ALL) .recipeType(VACUUM_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_ALUMINIUM_FROSTPROOF) .pattern(definition -> FactoryBlockPattern.start() - .aisle("XXXXXXX#KKK", "XXXXXXX#KVK", "XXXXXXX#KVK", "XXXXXXX#KVK", "XXXXXXX#KKK", "XXXXXXX####", - "XXXXXXX####") - .aisle("XXXXXXX#KVK", "XPPPPPPPPPV", "XPAPAPX#VPV", "XPPPPPPPPPV", "XPAPAPX#KVK", "XPPPPPX####", - "XXXXXXX####") - .aisle("XXXXXXX#KVK", "XPAPAPXAVPV", "XAAAAAX#VPV", "XPAAAPX#VPV", "XAAAAAX#KVK", "XPAPAPX####", - "XXXXXXX####") - .aisle("XXXXXXX#KVK", "XPAPAPPPPPV", "XAAAAAX#VPV", "XPAAAPPPPPV", "XAAAAAX#KVK", "XPAPAPX####", - "XXXXXXX####") - .aisle("XXXXXXX#KKK", "XPPPPPX#KVK", "XPA#APX#KVK", "XPAAAPX#KVK", "XPAAAPX#KKK", "XPPPPPX####", - "XXXXXXX####") - .aisle("#XXXXX#####", "#XXSXX#####", "#XGGGX#####", "#XGGGX#####", "#XGGGX#####", "#XXXXX#####", - "###########") + .aisle("XXXXXXX#KKK", "XXXXXXX#KVK", "XXXXXXX#KVK", "XXXXXXX#KVK", "XXXXXXX#KKK", "XXXXXXX####", "XXXXXXX####") + .aisle("XXXXXXX#KVK", "XPPPPPPPPPV", "XPAPAPX#VPV", "XPPPPPPPPPV", "XPAPAPX#KVK", "XPPPPPX####", "XXXXXXX####") + .aisle("XXXXXXX#KVK", "XPAPAPXAVPV", "XAAAAAX#VPV", "XPAAAPX#VPV", "XAAAAAX#KVK", "XPAPAPX####", "XXXXXXX####") + .aisle("XXXXXXX#KVK", "XPAPAPPPPPV", "XAAAAAX#VPV", "XPAAAPPPPPV", "XAAAAAX#KVK", "XPAPAPX####", "XXXXXXX####") + .aisle("XXXXXXX#KKK", "XPPPPPX#KVK", "XPA#APX#KVK", "XPAAAPX#KVK", "XPAAAPX#KKK", "XPPPPPX####", "XXXXXXX####") + .aisle("#XXXXX#####", "#XXSXX#####", "#XGGGX#####", "#XGGGX#####", "#XGGGX#####", "#XXXXX#####", "###########") .where('S', controller(blocks(definition.get()))) .where('X', blocks(CASING_ALUMINIUM_FROSTPROOF.get()).setMinGlobalLimited(140) .or(autoAbilities(definition.getRecipeTypes())) @@ -1035,7 +936,8 @@ public static void init() {} .where('A', air()) .where('#', any()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_frost_proof"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_frost_proof"), GTCEu.id("block/multiblock/gcym/mega_vacuum_freezer")) .register(); + // spotless:on } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTAEMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTAEMachines.java index 248a5752b45..72abe4159a2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTAEMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTAEMachines.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.data.machines; +import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; @@ -20,12 +21,12 @@ public class GTAEMachines { .tier(EV) .rotationState(RotationState.ALL) .abilities(PartAbility.IMPORT_ITEMS) - .overlayTieredHullRenderer("me_item_bus.import") + .colorOverlayTieredHullModel(GTCEu.id("block/overlay/appeng/me_input_bus")) .tooltips( Component.translatable("gtceu.machine.item_bus.import.tooltip"), Component.translatable("gtceu.machine.me.item_import.tooltip"), Component.translatable("gtceu.machine.me.copy_paste.tooltip"), - Component.translatable("gtceu.universal.enabled")) + Component.translatable("gtceu.part_sharing.enabled")) .register(); public final static MachineDefinition STOCKING_IMPORT_BUS_ME = REGISTRATE @@ -34,14 +35,14 @@ public class GTAEMachines { .tier(LuV) .rotationState(RotationState.ALL) .abilities(PartAbility.IMPORT_ITEMS) - .overlayTieredHullRenderer("me_item_bus.import") + .colorOverlayTieredHullModel(GTCEu.id("block/overlay/appeng/me_input_bus")) .tooltips( Component.translatable("gtceu.machine.item_bus.import.tooltip"), Component.translatable("gtceu.machine.me.stocking_item.tooltip.0"), Component.translatable("gtceu.machine.me_import_item_hatch.configs.tooltip"), Component.translatable("gtceu.machine.me.copy_paste.tooltip"), Component.translatable("gtceu.machine.me.stocking_item.tooltip.1"), - Component.translatable("gtceu.universal.enabled")) + Component.translatable("gtceu.part_sharing.enabled")) .register(); public final static MachineDefinition ITEM_EXPORT_BUS_ME = REGISTRATE @@ -50,11 +51,12 @@ public class GTAEMachines { .tier(EV) .rotationState(RotationState.ALL) .abilities(PartAbility.EXPORT_ITEMS) - .overlayTieredHullRenderer("me_item_bus.export") - .tooltips(Component.translatable("gtceu.machine.item_bus.export.tooltip"), + .colorOverlayTieredHullModel(GTCEu.id("block/overlay/appeng/me_output_bus")) + .tooltips( + Component.translatable("gtceu.machine.item_bus.export.tooltip"), Component.translatable("gtceu.machine.me.item_export.tooltip"), Component.translatable("gtceu.machine.me.export.tooltip"), - Component.translatable("gtceu.universal.enabled")) + Component.translatable("gtceu.part_sharing.enabled")) .register(); public final static MachineDefinition FLUID_IMPORT_HATCH_ME = REGISTRATE @@ -63,12 +65,12 @@ public class GTAEMachines { .tier(EV) .rotationState(RotationState.ALL) .abilities(PartAbility.IMPORT_FLUIDS) - .overlayTieredHullRenderer("me_fluid_hatch.import") + .colorOverlayTieredHullModel(GTCEu.id("block/overlay/appeng/me_input_hatch")) .tooltips( Component.translatable("gtceu.machine.fluid_hatch.import.tooltip"), Component.translatable("gtceu.machine.me.fluid_import.tooltip"), Component.translatable("gtceu.machine.me.copy_paste.tooltip"), - Component.translatable("gtceu.universal.enabled")) + Component.translatable("gtceu.part_sharing.enabled")) .register(); public final static MachineDefinition STOCKING_IMPORT_HATCH_ME = REGISTRATE @@ -77,14 +79,14 @@ public class GTAEMachines { .tier(LuV) .rotationState(RotationState.ALL) .abilities(PartAbility.IMPORT_FLUIDS) - .overlayTieredHullRenderer("me_fluid_hatch.import") + .colorOverlayTieredHullModel(GTCEu.id("block/overlay/appeng/me_input_hatch")) .tooltips( Component.translatable("gtceu.machine.fluid_hatch.import.tooltip"), Component.translatable("gtceu.machine.me.stocking_fluid.tooltip.0"), Component.translatable("gtceu.machine.me_import_fluid_hatch.configs.tooltip"), Component.translatable("gtceu.machine.me.copy_paste.tooltip"), Component.translatable("gtceu.machine.me.stocking_fluid.tooltip.1"), - Component.translatable("gtceu.universal.enabled")) + Component.translatable("gtceu.part_sharing.enabled")) .register(); public final static MachineDefinition FLUID_EXPORT_HATCH_ME = REGISTRATE @@ -93,12 +95,12 @@ public class GTAEMachines { .tier(EV) .rotationState(RotationState.ALL) .abilities(PartAbility.EXPORT_FLUIDS) - .overlayTieredHullRenderer("me_fluid_hatch.export") + .colorOverlayTieredHullModel(GTCEu.id("block/overlay/appeng/me_output_hatch")) .tooltips( Component.translatable("gtceu.machine.fluid_hatch.export.tooltip"), Component.translatable("gtceu.machine.me.fluid_export.tooltip"), Component.translatable("gtceu.machine.me.export.tooltip"), - Component.translatable("gtceu.universal.enabled")) + Component.translatable("gtceu.part_sharing.enabled")) .register(); public static final MachineDefinition ME_PATTERN_BUFFER = REGISTRATE .machine("me_pattern_buffer", MEPatternBufferPartMachine::new) @@ -107,13 +109,13 @@ public class GTAEMachines { .abilities(PartAbility.IMPORT_ITEMS, PartAbility.IMPORT_FLUIDS, PartAbility.EXPORT_FLUIDS, PartAbility.EXPORT_ITEMS) .rotationState(RotationState.ALL) - .overlayTieredHullRenderer("me_pattern_buffer") + .colorOverlayTieredHullModel(GTCEu.id("block/overlay/appeng/me_buffer_hatch")) .langValue("ME Pattern Buffer") .tooltips( Component.translatable("block.gtceu.pattern_buffer.desc.0"), Component.translatable("block.gtceu.pattern_buffer.desc.1"), Component.translatable("block.gtceu.pattern_buffer.desc.2"), - Component.translatable("gtceu.universal.enabled")) + Component.translatable("gtceu.part_sharing.enabled")) .register(); public static final MachineDefinition ME_PATTERN_BUFFER_PROXY = REGISTRATE .machine("me_pattern_buffer_proxy", MEPatternBufferProxyPartMachine::new) @@ -122,13 +124,13 @@ public class GTAEMachines { .abilities(PartAbility.IMPORT_ITEMS, PartAbility.IMPORT_FLUIDS, PartAbility.EXPORT_FLUIDS, PartAbility.EXPORT_ITEMS) .rotationState(RotationState.ALL) - .overlayTieredHullRenderer("me_pattern_buffer_proxy") + .colorOverlayTieredHullModel(GTCEu.id("block/overlay/appeng/me_buffer_hatch_proxy")) .langValue("ME Pattern Buffer Proxy") .tooltips( Component.translatable("block.gtceu.pattern_buffer_proxy.desc.0"), Component.translatable("block.gtceu.pattern_buffer_proxy.desc.1"), Component.translatable("block.gtceu.pattern_buffer_proxy.desc.2"), - Component.translatable("gtceu.universal.enabled")) + Component.translatable("gtceu.part_sharing.enabled")) .register(); public static void init() {} diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java index 2fd6a80e3ad..40b396a6286 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java @@ -17,21 +17,27 @@ import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.fluids.PropertyFluidFilter; import com.gregtechceu.gtceu.api.item.DrumMachineItem; +import com.gregtechceu.gtceu.api.item.QuantumTankMachineItem; import com.gregtechceu.gtceu.api.machine.*; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IRotorHolderMachine; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.steam.SimpleSteamMachine; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.pattern.FactoryBlockPattern; import com.gregtechceu.gtceu.api.pattern.Predicates; import com.gregtechceu.gtceu.api.pattern.TraceabilityPredicate; import com.gregtechceu.gtceu.api.pattern.predicates.SimplePredicate; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; +import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; import com.gregtechceu.gtceu.api.registry.registrate.MultiblockMachineBuilder; -import com.gregtechceu.gtceu.client.renderer.machine.*; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderHelper; import com.gregtechceu.gtceu.common.block.BoilerFireboxType; import com.gregtechceu.gtceu.common.data.*; +import com.gregtechceu.gtceu.common.data.models.GTMachineModels; import com.gregtechceu.gtceu.common.machine.electric.BatteryBufferMachine; import com.gregtechceu.gtceu.common.machine.electric.ChargerMachine; import com.gregtechceu.gtceu.common.machine.electric.ConverterMachine; @@ -46,6 +52,8 @@ import com.gregtechceu.gtceu.common.machine.multiblock.steam.LargeBoilerMachine; import com.gregtechceu.gtceu.common.machine.storage.CrateMachine; import com.gregtechceu.gtceu.common.machine.storage.DrumMachine; +import com.gregtechceu.gtceu.common.machine.storage.QuantumChestMachine; +import com.gregtechceu.gtceu.common.machine.storage.QuantumTankMachine; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.utils.FormattingUtil; @@ -57,6 +65,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidType; @@ -72,18 +81,17 @@ import java.util.function.BiConsumer; import java.util.function.BiFunction; import java.util.function.Supplier; -import java.util.stream.Stream; +import java.util.stream.IntStream; import static com.gregtechceu.gtceu.api.GTValues.*; -import static com.gregtechceu.gtceu.api.GTValues.UV; -import static com.gregtechceu.gtceu.api.capability.recipe.IO.IN; +import static com.gregtechceu.gtceu.api.capability.recipe.IO.*; import static com.gregtechceu.gtceu.api.pattern.Predicates.*; -import static com.gregtechceu.gtceu.api.pattern.Predicates.autoAbilities; -import static com.gregtechceu.gtceu.common.data.GTBlocks.ALL_FIREBOXES; -import static com.gregtechceu.gtceu.common.data.GTCreativeModeTabs.MACHINE; -import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.DUMMY_RECIPES; +import static com.gregtechceu.gtceu.common.data.GTBlocks.*; +import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.*; +import static com.gregtechceu.gtceu.common.data.models.GTMachineModels.*; +import static com.gregtechceu.gtceu.common.machine.storage.QuantumTankMachine.TANK_CAPACITY; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; -import static com.gregtechceu.gtceu.utils.FormattingUtil.toEnglishName; +import static com.gregtechceu.gtceu.utils.FormattingUtil.*; public class GTMachineUtils { @@ -119,24 +127,44 @@ public class GTMachineUtils { public static MachineDefinition[] registerSimpleMachines(String name, GTRecipeType recipeType, Int2IntFunction tankScalingFunction, boolean hasPollutionDebuff) { - return registerSimpleMachines(name, recipeType, tankScalingFunction, hasPollutionDebuff, ELECTRIC_TIERS); + return registerSimpleMachines(REGISTRATE, name, recipeType, tankScalingFunction, hasPollutionDebuff); + } + + public static MachineDefinition[] registerSimpleMachines(GTRegistrate registrate, String name, + GTRecipeType recipeType, + Int2IntFunction tankScalingFunction, + boolean hasPollutionDebuff) { + return registerSimpleMachines(registrate, name, recipeType, tankScalingFunction, hasPollutionDebuff, + ELECTRIC_TIERS); } public static MachineDefinition[] registerSimpleMachines(String name, GTRecipeType recipeType, Int2IntFunction tankScalingFunction) { - return registerSimpleMachines(name, recipeType, tankScalingFunction, false); + return registerSimpleMachines(REGISTRATE, name, recipeType, tankScalingFunction); + } + + public static MachineDefinition[] registerSimpleMachines(GTRegistrate registrate, String name, + GTRecipeType recipeType, + Int2IntFunction tankScalingFunction) { + return registerSimpleMachines(registrate, name, recipeType, tankScalingFunction, false); } public static MachineDefinition[] registerSimpleMachines(String name, GTRecipeType recipeType) { - return registerSimpleMachines(name, recipeType, defaultTankSizeFunction); + return registerSimpleMachines(REGISTRATE, name, recipeType); + } + + public static MachineDefinition[] registerSimpleMachines(GTRegistrate registrate, String name, + GTRecipeType recipeType) { + return registerSimpleMachines(registrate, name, recipeType, defaultTankSizeFunction); } - public static MachineDefinition[] registerSimpleMachines(String name, + public static MachineDefinition[] registerSimpleMachines(GTRegistrate registrate, + String name, GTRecipeType recipeType, Int2IntFunction tankScalingFunction, boolean hasPollutionDebuff, int... tiers) { - return registerTieredMachines(name, + return registerTieredMachines(registrate, name, (holder, tier) -> new SimpleTieredMachine(holder, tier, tankScalingFunction), (tier, builder) -> { if (hasPollutionDebuff) { builder.recipeModifiers(GTRecipeModifiers.ENVIRONMENT_REQUIREMENT @@ -152,9 +180,9 @@ public static MachineDefinition[] registerSimpleMachines(String name, .editableUI(SimpleTieredMachine.EDITABLE_UI_CREATOR.apply(GTCEu.id(name), recipeType)) .rotationState(RotationState.NON_Y_AXIS) .recipeType(recipeType) - .workableTieredHullRenderer(GTCEu.id("block/machines/" + name)) + .workableTieredHullModel(GTCEu.id("block/machines/" + name)) .tooltips(workableTiered(tier, GTValues.V[tier], GTValues.V[tier] * 64, recipeType, - tankScalingFunction.apply(tier), true)) + tankScalingFunction.applyAsInt(tier), true)) .register(); }, tiers); @@ -164,9 +192,17 @@ public static MachineDefinition[] registerTieredMachines(String name, BiFunction factory, BiFunction, MachineDefinition> builder, int... tiers) { + return registerTieredMachines(REGISTRATE, name, factory, builder, tiers); + } + + public static MachineDefinition[] registerTieredMachines(GTRegistrate registrate, + String name, + BiFunction factory, + BiFunction, MachineDefinition> builder, + int... tiers) { MachineDefinition[] definitions = new MachineDefinition[GTValues.TIER_COUNT]; for (int tier : tiers) { - var register = REGISTRATE + var register = registrate .machine(GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + name, holder -> factory.apply(holder, tier)) .tier(tier); @@ -178,28 +214,53 @@ public static MachineDefinition[] registerTieredMachines(String name, public static Pair registerSteamMachines(String name, BiFunction factory, BiFunction, MachineDefinition> builder) { + return registerSteamMachines(REGISTRATE, name, factory, builder); + } + + public static Pair registerSteamMachines(GTRegistrate registrate, String name, + BiFunction factory, + BiFunction, MachineDefinition> builder) { MachineDefinition lowTier = builder.apply(false, - REGISTRATE.machine("lp_%s".formatted(name), holder -> factory.apply(holder, false)) + registrate.machine("lp_%s".formatted(name), holder -> factory.apply(holder, false)) .langValue("Low Pressure " + FormattingUtil.toEnglishName(name)) .tier(0)); MachineDefinition highTier = builder.apply(true, - REGISTRATE.machine("hp_%s".formatted(name), holder -> factory.apply(holder, true)) + registrate.machine("hp_%s".formatted(name), holder -> factory.apply(holder, true)) .langValue("High Pressure " + FormattingUtil.toEnglishName(name)) .tier(1)); return Pair.of(lowTier, highTier); } - public static MachineDefinition[] registerFluidHatches(String name, String displayname, String model, - String tooltip, IO io, int initialCapacity, int slots, + public static MachineDefinition[] registerFluidHatches(String name, String displayName, String tooltip, + IO io, int initialCapacity, int slots, + int[] tiers, PartAbility... abilities) { + return registerFluidHatches(REGISTRATE, name, displayName, tooltip, io, initialCapacity, slots, tiers, + abilities); + } + + public static MachineDefinition[] registerFluidHatches(GTRegistrate registrate, String name, String displayName, + String tooltip, + IO io, int initialCapacity, int slots, int[] tiers, PartAbility... abilities) { - return registerTieredMachines(name, + final String pipeOverlay; + if (slots >= 9) { + pipeOverlay = "overlay_pipe_9x"; + } else if (slots >= 4) { + pipeOverlay = "overlay_pipe_4x"; + } else { + pipeOverlay = null; + } + final String ioOverlay = io == OUT ? "overlay_pipe_out_emissive" : "overlay_pipe_in_emissive"; + final String emissiveOverlay = slots > 4 ? OVERLAY_FLUID_HATCH_HALF_PX_TEX : OVERLAY_FLUID_HATCH_TEX; + return registerTieredMachines(registrate, name, (holder, tier) -> new FluidHatchPartMachine(holder, tier, io, initialCapacity, slots), (tier, builder) -> { - builder.langValue(VNF[tier] + ' ' + displayname) + builder.langValue(VNF[tier] + ' ' + displayName) .rotationState(RotationState.ALL) - .overlayTieredHullRenderer(model) + .colorOverlayTieredHullModel(ioOverlay, pipeOverlay, emissiveOverlay) .abilities(abilities) - .tooltips(Component.translatable("gtceu.machine." + tooltip + ".tooltip")); + .tooltips(Component.translatable("gtceu.machine." + tooltip + ".tooltip")) + .allowCoverOnFront(true); if (slots == 1) { builder.tooltips(Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity", @@ -216,17 +277,25 @@ public static MachineDefinition[] registerFluidHatches(String name, String displ } public static MachineDefinition[] registerTransformerMachines(String langName, int baseAmp) { - return registerTieredMachines("transformer_%da".formatted(baseAmp), + return registerTransformerMachines(REGISTRATE, langName, baseAmp); + } + + public static MachineDefinition[] registerTransformerMachines(GTRegistrate registrate, String langName, + int baseAmp) { + return registerTieredMachines(registrate, "transformer_%da".formatted(baseAmp), (holder, tier) -> new TransformerMachine(holder, tier, baseAmp), (tier, builder) -> builder .rotationState(RotationState.ALL) - .itemColor((itemStack, index) -> index == 2 ? GTValues.VC[tier + 1] : - index == 3 ? GTValues.VC[tier] : - index == 1 ? Long.decode(ConfigHolder.INSTANCE.client.defaultPaintingColor) - .intValue() : -1) - .renderer(() -> new TransformerRenderer(tier, baseAmp)) + .itemColor((itemStack, index) -> switch (index) { + case 1 -> ConfigHolder.INSTANCE.client.getDefaultPaintingColor(); + case 2 -> VC[tier + 1]; + case 3 -> VC[tier]; + default -> -1; + }) + .modelProperty(GTMachineModelProperties.IS_TRANSFORM_UP, false) + .model(createTransformerModel(baseAmp)) .langValue("%s %sTransformer".formatted(VCF[tier] + VOLTAGE_NAMES[tier] + ChatFormatting.RESET, - langName)) + langName.isEmpty() ? "" : langName + " ")) .tooltips(Component.translatable("gtceu.machine.transformer.description"), Component.translatable("gtceu.machine.transformer.tooltip_tool_usage"), Component.translatable("gtceu.machine.transformer.tooltip_transform_down", @@ -248,7 +317,16 @@ public static MachineDefinition[] registerSimpleGenerator(String name, Int2IntFunction tankScalingFunction, float hazardStrengthPerOperation, int... tiers) { - return registerTieredMachines(name, + return registerSimpleGenerator(REGISTRATE, name, recipeType, tankScalingFunction, hazardStrengthPerOperation, + tiers); + } + + public static MachineDefinition[] registerSimpleGenerator(GTRegistrate registrate, String name, + GTRecipeType recipeType, + Int2IntFunction tankScalingFunction, + float hazardStrengthPerOperation, + int... tiers) { + return registerTieredMachines(registrate, name, (holder, tier) -> new SimpleGeneratorMachine(holder, tier, hazardStrengthPerOperation * tier, tankScalingFunction), (tier, builder) -> builder @@ -259,31 +337,44 @@ public static MachineDefinition[] registerSimpleGenerator(String name, .recipeModifier(SimpleGeneratorMachine::recipeModifier, true) .addOutputLimit(ItemRecipeCapability.CAP, 0) .addOutputLimit(FluidRecipeCapability.CAP, 0) - .renderer(() -> new SimpleGeneratorMachineRenderer(tier, GTCEu.id("block/generators/" + name))) + .simpleGeneratorModel(GTCEu.id("block/generators/" + name)) .tooltips(workableTiered(tier, GTValues.V[tier], GTValues.V[tier] * 64, recipeType, - tankScalingFunction.apply(tier), false)) + tankScalingFunction.applyAsInt(tier), false)) .register(), tiers); } public static Pair registerSimpleSteamMachines(String name, GTRecipeType recipeType) { - return registerSteamMachines("steam_" + name, SimpleSteamMachine::new, (pressure, builder) -> builder - .rotationState(RotationState.ALL) - .recipeType(recipeType) - .recipeModifier(SimpleSteamMachine::recipeModifier) - .renderer(() -> new WorkableSteamMachineRenderer(pressure, GTCEu.id("block/machines/" + name))) - .register()); + return registerSimpleSteamMachines(REGISTRATE, name, recipeType); + } + + public static Pair registerSimpleSteamMachines(GTRegistrate registrate, + String name, + GTRecipeType recipeType) { + return registerSteamMachines(registrate, "steam_" + name, SimpleSteamMachine::new, + (pressure, builder) -> builder + .rotationState(RotationState.ALL) + .recipeType(recipeType) + .recipeModifier(SimpleSteamMachine::recipeModifier) + .modelProperty(GTMachineModelProperties.VENT_DIRECTION, RelativeDirection.BACK) + .workableSteamHullModel(pressure, GTCEu.id("block/machines/" + name)) + .register()); } public static MachineDefinition[] registerBatteryBuffer(int batterySlotSize) { - return registerTieredMachines("battery_buffer_" + batterySlotSize + "x", + return registerBatteryBuffer(REGISTRATE, batterySlotSize); + } + + public static MachineDefinition[] registerBatteryBuffer(GTRegistrate registrate, int batterySlotSize) { + return registerTieredMachines(registrate, "battery_buffer_" + batterySlotSize + "x", (holder, tier) -> new BatteryBufferMachine(holder, tier, batterySlotSize), (tier, builder) -> builder .rotationState(RotationState.ALL) - .renderer(() -> new BatteryBufferRenderer(tier, batterySlotSize)) - .langValue("%s %s%s".formatted(VCF[tier] + VOLTAGE_NAMES[tier] + ChatFormatting.RESET, - batterySlotSize, "x Battery Buffer")) + .model(GTMachineModels.createBatteryBufferModel(batterySlotSize)) + .langValue("%s %sx Battery Buffer".formatted( + VCF[tier] + VOLTAGE_NAMES[tier] + ChatFormatting.RESET, + batterySlotSize)) .tooltips( Component.translatable("gtceu.universal.tooltip.item_storage_capacity", batterySlotSize), @@ -298,13 +389,19 @@ public static MachineDefinition[] registerBatteryBuffer(int batterySlotSize) { } public static MachineDefinition[] registerCharger(int itemSlotSize) { - return registerTieredMachines("charger_" + itemSlotSize + "x", + return registerCharger(REGISTRATE, itemSlotSize); + } + + public static MachineDefinition[] registerCharger(GTRegistrate registrate, int itemSlotSize) { + return registerTieredMachines(registrate, "charger_" + itemSlotSize + "x", (holder, tier) -> new ChargerMachine(holder, tier, itemSlotSize), (tier, builder) -> builder .rotationState(RotationState.ALL) - .renderer(() -> new ChargerRenderer(tier)) - .langValue("%s %s%s".formatted(VCF[tier] + VOLTAGE_NAMES[tier] + ChatFormatting.RESET, - itemSlotSize, "x Turbo Charger")) + .modelProperty(GTMachineModelProperties.CHARGER_STATE, ChargerMachine.State.IDLE) + .model(GTMachineModels.createChargerModel()) + .langValue("%s %sx Turbo Charger".formatted( + VCF[tier] + VOLTAGE_NAMES[tier] + ChatFormatting.RESET, + itemSlotSize)) .tooltips(Component.translatable("gtceu.universal.tooltip.item_storage_capacity", itemSlotSize), Component.translatable("gtceu.universal.tooltip.voltage_in_out", FormattingUtil.formatNumbers(GTValues.V[tier]), @@ -316,17 +413,24 @@ public static MachineDefinition[] registerCharger(int itemSlotSize) { } public static MachineDefinition[] registerConverter(int amperage) { + return registerConverter(REGISTRATE, amperage); + } + + public static MachineDefinition[] registerConverter(GTRegistrate registrate, int amperage) { + final var tab = registrate.creativeModeTab(); + if (!ConfigHolder.INSTANCE.compat.energy.enableFEConverters) { - REGISTRATE.creativeModeTab(() -> null); + registrate.creativeModeTab(() -> null); } - MachineDefinition[] converters = registerTieredMachines(amperage + "a_energy_converter", + MachineDefinition[] converters = registerTieredMachines(registrate, amperage + "a_energy_converter", (holder, tier) -> new ConverterMachine(holder, tier, amperage), (tier, builder) -> builder .rotationState(RotationState.ALL) .langValue("%s %s§eA§r Energy Converter".formatted(VCF[tier] + VN[tier] + ChatFormatting.RESET, amperage)) - .renderer(() -> new ConverterRenderer(tier, amperage)) + .modelProperty(GTMachineModelProperties.IS_FE_TO_EU, false) + .model(GTMachineModels.createConverterModel(amperage)) .tooltips(Component.translatable("gtceu.machine.energy_converter.description"), Component.translatable("gtceu.machine.energy_converter.tooltip_tool_usage"), Component.translatable("gtceu.machine.energy_converter.tooltip_conversion_native", @@ -341,14 +445,19 @@ public static MachineDefinition[] registerConverter(int amperage) { ALL_TIERS); if (!ConfigHolder.INSTANCE.compat.energy.enableFEConverters) { - REGISTRATE.creativeModeTab(() -> MACHINE); + registrate.creativeModeTab(() -> tab); } return converters; } public static MachineDefinition[] registerLaserHatch(IO io, int amperage, PartAbility ability) { + return registerLaserHatch(REGISTRATE, io, amperage, ability); + } + + public static MachineDefinition[] registerLaserHatch(GTRegistrate registrate, IO io, int amperage, + PartAbility ability) { String name = io == IN ? "target" : "source"; - return registerTieredMachines(amperage + "a_laser_" + name + "_hatch", + return registerTieredMachines(registrate, amperage + "a_laser_" + name + "_hatch", (holder, tier) -> new LaserHatchPartMachine(holder, io, tier, amperage), (tier, builder) -> builder .langValue(VNF[tier] + "§r " + FormattingUtil.formatNumbers(amperage) + "§eA§r Laser " + FormattingUtil.toEnglishName(name) + " Hatch") @@ -362,38 +471,47 @@ public static MachineDefinition[] registerLaserHatch(IO io, int amperage, PartAb FormattingUtil .formatNumbers( EnergyHatchPartMachine.getHatchEnergyCapacity(tier, amperage))), - Component.translatable("gtceu.universal.disabled")) + Component.translatable("gtceu.part_sharing.disabled")) .abilities(ability) - .overlayTieredHullRenderer("laser_hatch." + name) + .overlayTieredHullModel("laser_" + name + "_hatch") .register(), HIGH_TIERS); } public static MachineDefinition registerCrate(Material material, int capacity, String lang) { - boolean wooden = material.hasProperty(PropertyKey.WOOD); + return registerCrate(REGISTRATE, material, capacity, lang); + } - return REGISTRATE.machine(material.getName() + "_crate", holder -> new CrateMachine(holder, material, capacity)) + public static MachineDefinition registerCrate(GTRegistrate registrate, Material material, int capacity, + String lang) { + final boolean wooden = material.hasProperty(PropertyKey.WOOD); + + return registrate.machine(material.getName() + "_crate", holder -> new CrateMachine(holder, material, capacity)) .langValue(lang) .rotationState(RotationState.NONE) .tooltips(Component.translatable("gtceu.universal.tooltip.item_storage_capacity", capacity)) - .renderer(() -> new CrateRenderer( - GTCEu.id("block/machine/crate/" + (wooden ? "wooden" : "metal") + "_crate"))) + .modelProperty(GTMachineModelProperties.IS_TAPED, false) + .model(GTMachineModels.createCrateModel(wooden)) .paintingColor(wooden ? 0xFFFFFF : material.getMaterialRGB()) .itemColor((s, t) -> wooden ? 0xFFFFFF : material.getMaterialRGB()) .register(); } public static MachineDefinition registerDrum(Material material, int capacity, String lang) { + return registerDrum(REGISTRATE, material, capacity, lang); + } + + public static MachineDefinition registerDrum(GTRegistrate registrate, Material material, int capacity, + String lang) { boolean wooden = material.hasProperty(PropertyKey.WOOD); - var definition = REGISTRATE - .machine(material.getName() + "_drum", MachineDefinition::createDefinition, + var definition = registrate + .machine(material.getName() + "_drum", MachineDefinition::new, holder -> new DrumMachine(holder, material, capacity), MetaMachineBlock::new, (holder, prop) -> DrumMachineItem.create(holder, prop, material), - MetaMachineBlockEntity::createBlockEntity) + MetaMachineBlockEntity::new) .langValue(lang) .rotationState(RotationState.NONE) - .renderer( - () -> new MachineRenderer(GTCEu.id("block/machine/" + (wooden ? "wooden" : "metal") + "_drum"))) + .simpleModel(GTCEu.id("block/machine/template/drum/" + (wooden ? "wooden" : "metal") + "_drum")) .tooltipBuilder((stack, list) -> { TANK_TOOLTIPS.accept(stack, list); if (material.hasProperty(PropertyKey.FLUID_PIPE)) { @@ -411,6 +529,63 @@ public static MachineDefinition registerDrum(Material material, int capacity, St return definition; } + public static MachineDefinition[] registerQuantumTanks(String name, int... tiers) { + return registerQuantumTanks(REGISTRATE, name, tiers); + } + + public static MachineDefinition[] registerQuantumTanks(GTRegistrate registrate, String name, int... tiers) { + MachineDefinition[] definitions = new MachineDefinition[GTValues.TIER_COUNT]; + for (int tier : tiers) { + long maxAmount = 4000 * FluidType.BUCKET_VOLUME * (long) Math.pow(2, tier - 1); + var register = registrate.machine( + GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + name, + MachineDefinition::new, (holder) -> new QuantumTankMachine(holder, tier, maxAmount), + MetaMachineBlock::new, QuantumTankMachineItem::new, + MetaMachineBlockEntity::new) + .langValue(toEnglishName(name) + " " + LVT[tier]) + .blockProp(BlockBehaviour.Properties::dynamicShape) + .rotationState(RotationState.ALL) + .allowExtendedFacing(true) + .model(createTieredHullMachineModel(GTCEu.id("block/machine/template/quantum/quantum_tank")) + .andThen(b -> b.addDynamicRenderer(DynamicRenderHelper::createQuantumTankRender))) + .hasBER(true) + .tooltipBuilder(TANK_TOOLTIPS) + .tooltips(Component.translatable("gtceu.machine.quantum_tank.tooltip"), + Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity", + FormattingUtil.formatNumbers(maxAmount))) + .tier(tier) + .register(); + TANK_CAPACITY.put(register, maxAmount); + definitions[tier] = register; + } + return definitions; + } + + public static MachineDefinition[] registerQuantumChests(String name, int... tiers) { + return registerQuantumChests(REGISTRATE, name, tiers); + } + + public static MachineDefinition[] registerQuantumChests(GTRegistrate registrate, String name, int... tiers) { + return registerTieredMachines(registrate, name, + (holder, tier) -> new QuantumChestMachine(holder, tier, + tier == MAX ? Long.MAX_VALUE : 4_000_000 * (long) Math.pow(2, tier - 1)), + (tier, builder) -> builder.langValue(toEnglishName(name) + " " + LVT[tier]) + .blockProp(BlockBehaviour.Properties::dynamicShape) + .rotationState(RotationState.ALL) + .allowExtendedFacing(true) + .model(createTieredHullMachineModel(GTCEu.id("block/machine/template/quantum/quantum_chest")) + .andThen( + b -> b.addDynamicRenderer(DynamicRenderHelper::createQuantumChestRender))) + .hasBER(true) + .tooltipBuilder(CHEST_TOOLTIPS) + .tooltips(Component.translatable("gtceu.machine.quantum_chest.tooltip"), + Component.translatable("gtceu.universal.tooltip.item_storage_total", + FormattingUtil.formatNumbers(tier == MAX ? Long.MAX_VALUE : + 4_000_000 * (long) Math.pow(2, tier - 1)))) + .register(), + tiers); + } + ////////////////////////////////////// // ********** Misc **********// ////////////////////////////////////// @@ -421,12 +596,23 @@ public static MultiblockMachineDefinition registerMultiblockTank(String name, St Supplier valve, @Nullable PropertyFluidFilter filter, BiConsumer rendererSetup) { - MultiblockMachineBuilder builder = REGISTRATE + return registerMultiblockTank(REGISTRATE, name, displayName, capacity, casing, valve, filter, rendererSetup); + } + + public static MultiblockMachineDefinition registerMultiblockTank(GTRegistrate registrate, String name, + String displayName, int capacity, + Supplier casing, + Supplier valve, + @Nullable PropertyFluidFilter filter, + BiConsumer rendererSetup) { + MultiblockMachineBuilder builder = registrate .multiblock(name, holder -> new MultiblockTankMachine(holder, capacity, filter)) .langValue(displayName) .tooltips( Component.translatable("gtceu.machine.multiblock.tank.tooltip"), - Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity", capacity)) + Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity", capacity), + (filter != null) ? Component.translatable("gtceu.fluid_pipe.max_temperature", + filter.getMaxFluidTemperature()) : null) .rotationState(RotationState.ALL) .recipeType(DUMMY_RECIPES) .pattern(definition -> FactoryBlockPattern.start() @@ -445,10 +631,17 @@ public static MultiblockMachineDefinition registerMultiblockTank(String name, St public static MachineDefinition registerTankValve(String name, String displayName, boolean isMetal, BiConsumer, ResourceLocation> rendererSetup) { - MachineBuilder builder = REGISTRATE + return registerTankValve(REGISTRATE, name, displayName, isMetal, rendererSetup); + } + + public static MachineDefinition registerTankValve(GTRegistrate registrate, String name, String displayName, + boolean isMetal, + BiConsumer, ResourceLocation> rendererSetup) { + MachineBuilder builder = registrate .machine(name, holder -> new TankValvePartMachine(holder, isMetal)) .langValue(displayName) - .tooltips(Component.translatable("gtceu.machine.tank_valve.tooltip")) + .tooltips(Component.translatable("gtceu.machine.tank_valve.tooltip"), + Component.translatable("gtceu.part_sharing.disabled")) .rotationState(RotationState.ALL); rendererSetup.accept(builder, GTCEu.id("block/multiblock/tank_valve")); return builder.register(); @@ -458,9 +651,16 @@ public static MultiblockMachineDefinition[] registerTieredMultis(String name, BiFunction factory, BiFunction builder, int... tiers) { + return registerTieredMultis(REGISTRATE, name, factory, builder, tiers); + } + + public static MultiblockMachineDefinition[] registerTieredMultis(GTRegistrate registrate, String name, + BiFunction factory, + BiFunction builder, + int... tiers) { MultiblockMachineDefinition[] definitions = new MultiblockMachineDefinition[GTValues.TIER_COUNT]; for (int tier : tiers) { - var register = REGISTRATE + var register = registrate .multiblock(GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + name, holder -> factory.apply(holder, tier)) .tier(tier); @@ -474,8 +674,18 @@ public static MultiblockMachineDefinition registerLargeBoiler(String name, Suppl Supplier fireBox, ResourceLocation texture, BoilerFireboxType firebox, int maxTemperature, int heatSpeed) { + return registerLargeBoiler(REGISTRATE, name, casing, pipe, fireBox, texture, firebox, maxTemperature, + heatSpeed); + } + + public static MultiblockMachineDefinition registerLargeBoiler(GTRegistrate registrate, String name, + Supplier casing, + Supplier pipe, + Supplier fireBox, + ResourceLocation texture, BoilerFireboxType firebox, + int maxTemperature, int heatSpeed) { // spotless:off - return REGISTRATE + return registrate .multiblock("%s_large_boiler".formatted(name), holder -> new LargeBoilerMachine(holder, maxTemperature, heatSpeed)) .langValue("Large %s Boiler".formatted(FormattingUtil.toEnglishName(name))) @@ -514,8 +724,10 @@ public static MultiblockMachineDefinition registerLargeBoiler(String name, Suppl .recoveryItems( () -> new ItemLike[] { GTMaterialItems.MATERIAL_ITEMS.get(TagPrefix.dustTiny, GTMaterials.Ash).get() }) - .renderer(() -> new LargeBoilerRenderer(texture, firebox, - GTCEu.id("block/multiblock/generator/large_%s_boiler".formatted(name)))) + .modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE) + .model(createWorkableCasingMachineModel(texture, + GTCEu.id("block/multiblock/generator/large_%s_boiler".formatted(name))) + .andThen(b -> b.addDynamicRenderer(() -> DynamicRenderHelper.makeBoilerPartRender(firebox, casing)))) .tooltips( Component.translatable("gtceu.multiblock.large_boiler.max_temperature", maxTemperature + 274, maxTemperature), @@ -533,7 +745,17 @@ public static MultiblockMachineDefinition registerLargeCombustionEngine(String n Supplier intake, ResourceLocation casingTexture, ResourceLocation overlayModel) { - return REGISTRATE.multiblock(name, holder -> new LargeCombustionEngineMachine(holder, tier)) + return registerLargeCombustionEngine(REGISTRATE, name, tier, casing, gear, intake, casingTexture, overlayModel); + } + + public static MultiblockMachineDefinition registerLargeCombustionEngine(GTRegistrate registrate, + String name, int tier, + Supplier casing, + Supplier gear, + Supplier intake, + ResourceLocation casingTexture, + ResourceLocation overlayModel) { + return registrate.multiblock(name, holder -> new LargeCombustionEngineMachine(holder, tier)) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.COMBUSTION_GENERATOR_FUELS) .generator(true) @@ -551,8 +773,9 @@ public static MultiblockMachineDefinition registerLargeCombustionEngine(String n .or(autoAbilities(true, true, false))) .where('D', ability(PartAbility.OUTPUT_ENERGY, - Stream.of(ULV, LV, MV, HV, EV, IV, LuV, ZPM, UV, UHV).filter(t -> t >= tier) - .mapToInt(Integer::intValue).toArray()) + IntStream.of(ULV, LV, MV, HV, EV, IV, LuV, ZPM, UV, UHV) + .filter(t -> t >= tier) + .toArray()) .addTooltips(Component.translatable("gtceu.multiblock.pattern.error.limited.1", GTValues.VN[tier]))) .where('A', @@ -563,7 +786,7 @@ public static MultiblockMachineDefinition registerLargeCombustionEngine(String n .recoveryItems( () -> new ItemLike[] { GTMaterialItems.MATERIAL_ITEMS.get(TagPrefix.dustTiny, GTMaterials.Ash).get() }) - .workableCasingRenderer(casingTexture, overlayModel) + .workableCasingModel(casingTexture, overlayModel) .tooltips( Component.translatable("gtceu.universal.tooltip.base_production_eut", V[tier]), Component.translatable("gtceu.universal.tooltip.uses_per_hour_lubricant", @@ -581,7 +804,17 @@ public static MultiblockMachineDefinition registerLargeTurbine(String name, int Supplier gear, ResourceLocation casingTexture, ResourceLocation overlayModel) { - return registerLargeTurbine(name, tier, recipeType, casing, gear, casingTexture, overlayModel, true); + return registerLargeTurbine(REGISTRATE, name, tier, recipeType, casing, gear, casingTexture, overlayModel); + } + + public static MultiblockMachineDefinition registerLargeTurbine(GTRegistrate registrate, + String name, int tier, GTRecipeType recipeType, + Supplier casing, + Supplier gear, + ResourceLocation casingTexture, + ResourceLocation overlayModel) { + return registerLargeTurbine(registrate, name, tier, recipeType, casing, gear, casingTexture, overlayModel, + true); } public static MultiblockMachineDefinition registerLargeTurbine(String name, int tier, GTRecipeType recipeType, @@ -590,7 +823,18 @@ public static MultiblockMachineDefinition registerLargeTurbine(String name, int ResourceLocation casingTexture, ResourceLocation overlayModel, boolean needsMuffler) { - return REGISTRATE.multiblock(name, holder -> new LargeTurbineMachine(holder, tier)) + return registerLargeTurbine(REGISTRATE, name, tier, recipeType, casing, gear, casingTexture, overlayModel, + needsMuffler); + } + + public static MultiblockMachineDefinition registerLargeTurbine(GTRegistrate registrate, + String name, int tier, GTRecipeType recipeType, + Supplier casing, + Supplier gear, + ResourceLocation casingTexture, + ResourceLocation overlayModel, + boolean needsMuffler) { + return registrate.multiblock(name, holder -> new LargeTurbineMachine(holder, tier)) .rotationState(RotationState.ALL) .recipeType(recipeType) .generator(true) @@ -626,7 +870,7 @@ public static MultiblockMachineDefinition registerLargeTurbine(String name, int .recoveryItems( () -> new ItemLike[] { GTMaterialItems.MATERIAL_ITEMS.get(TagPrefix.dustTiny, GTMaterials.Ash).get() }) - .workableCasingRenderer(casingTexture, overlayModel) + .workableCasingModel(casingTexture, overlayModel) .tooltips( Component.translatable("gtceu.universal.tooltip.base_production_eut", V[tier] * 2), Component.translatable("gtceu.multiblock.turbine.efficiency_tooltip", VNF[tier])) @@ -660,6 +904,15 @@ public static Component defaultEnvironmentRequirement() { } }; + public static BiConsumer> CHEST_TOOLTIPS = (stack, list) -> { + if (stack.hasTag()) { + ItemStack itemStack = ItemStack.of(stack.getOrCreateTagElement("stored")); + long storedAmount = stack.getOrCreateTag().getLong("storedAmount"); + list.add(1, Component.translatable("gtceu.universal.tooltip.item_stored", itemStack.getHoverName(), + FormattingUtil.formatNumbers(storedAmount))); + } + }; + public static Component[] workableTiered(int tier, long voltage, long energyCapacity, GTRecipeType recipeType, long tankCapacity, boolean input) { List tooltipComponents = new ArrayList<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java index f2743c0e2f9..dab4fdf4129 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java @@ -12,15 +12,18 @@ import com.gregtechceu.gtceu.api.machine.multiblock.CoilWorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.pattern.FactoryBlockPattern; import com.gregtechceu.gtceu.api.pattern.MultiblockShapeInfo; import com.gregtechceu.gtceu.api.pattern.Predicates; import com.gregtechceu.gtceu.api.pattern.TraceabilityPredicate; -import com.gregtechceu.gtceu.client.renderer.machine.*; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderHelper; import com.gregtechceu.gtceu.client.util.TooltipHelper; import com.gregtechceu.gtceu.common.block.BoilerFireboxType; import com.gregtechceu.gtceu.common.data.*; import com.gregtechceu.gtceu.common.machine.multiblock.electric.*; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.BedrockOreMinerMachine; import com.gregtechceu.gtceu.common.machine.multiblock.primitive.CharcoalPileIgniterMachine; import com.gregtechceu.gtceu.common.machine.multiblock.primitive.CokeOvenMachine; import com.gregtechceu.gtceu.common.machine.multiblock.primitive.PrimitiveBlastFurnaceMachine; @@ -39,6 +42,8 @@ import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.DoorBlock; import net.minecraft.world.level.block.state.properties.DoubleBlockHalf; +import net.minecraftforge.client.model.generators.BlockModelBuilder; +import net.minecraftforge.client.model.generators.ConfiguredModel; import appeng.api.networking.pathing.ChannelMode; import appeng.core.AEConfig; @@ -54,8 +59,10 @@ import static com.gregtechceu.gtceu.common.data.GTBlocks.*; import static com.gregtechceu.gtceu.common.data.GTMachines.*; import static com.gregtechceu.gtceu.common.data.GTMaterials.DrillingFluid; +import static com.gregtechceu.gtceu.common.data.GTRecipeModifiers.*; import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.DUMMY_RECIPES; import static com.gregtechceu.gtceu.common.data.machines.GTMachineUtils.*; +import static com.gregtechceu.gtceu.common.data.models.GTMachineModels.*; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; import static com.gregtechceu.gtceu.utils.FormattingUtil.toRomanNumeral; @@ -99,7 +106,7 @@ public class GTMultiMachines { .where('#', Predicates.air()) .where('Y', Predicates.controller(blocks(definition.getBlock()))) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_coke_bricks"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_coke_bricks"), GTCEu.id("block/multiblock/coke_oven")) .register(); @@ -107,16 +114,19 @@ public class GTMultiMachines { .multiblock("primitive_blast_furnace", PrimitiveBlastFurnaceMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.PRIMITIVE_BLAST_FURNACE_RECIPES) - .renderer(() -> new PrimitiveBlastFurnaceRenderer(GTCEu.id("block/casings/solid/machine_primitive_bricks"), - GTCEu.id("block/multiblock/primitive_blast_furnace"))) - .hasTESR(true) + .model(createWorkableCasingMachineModel(GTCEu.id("block/casings/solid/machine_primitive_bricks"), + GTCEu.id("block/multiblock/primitive_blast_furnace")) + .andThen(b -> b.addDynamicRenderer(DynamicRenderHelper::createPBFLavaRender))) + .hasBER(true) .appearanceBlock(CASING_PRIMITIVE_BRICKS) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXX", "XXX", "XXX", "XXX") - .aisle("XXX", "X#X", "X#X", "X#X") + .aisle("XXX", "X&X", "X#X", "X#X") .aisle("XXX", "XYX", "XXX", "XXX") .where('X', blocks(CASING_PRIMITIVE_BRICKS.get())) .where('#', Predicates.air()) + .where('&', Predicates.air() + .or(Predicates.custom(bws -> GTUtil.isBlockSnow(bws.getBlockState()), null))) .where('Y', Predicates.controller(blocks(definition.getBlock()))) .build()) .register(); @@ -125,7 +135,7 @@ public class GTMultiMachines { .multiblock("electric_blast_furnace", CoilWorkableElectricMultiblockMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.BLAST_RECIPES) - .recipeModifier(GTRecipeModifiers::ebfOverclock) + .recipeModifiers(GTRecipeModifiers::ebfOverclock, BATCH_MODE) .appearanceBlock(CASING_INVAR_HEATPROOF) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXX", "CCC", "CCC", "XXX") @@ -164,22 +174,21 @@ public class GTMultiMachines { .recoveryItems( () -> new ItemLike[] { GTMaterialItems.MATERIAL_ITEMS.get(TagPrefix.dustTiny, GTMaterials.Ash).get() }) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_heatproof"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_heatproof"), GTCEu.id("block/multiblock/electric_blast_furnace")) .tooltips(Component.translatable("gtceu.machine.electric_blast_furnace.tooltip.0"), Component.translatable("gtceu.machine.electric_blast_furnace.tooltip.1"), Component.translatable("gtceu.machine.electric_blast_furnace.tooltip.2")) .additionalDisplay((controller, components) -> { + // spotless:off if (controller instanceof CoilWorkableElectricMultiblockMachine coilMachine && controller.isFormed()) { components.add(Component.translatable("gtceu.multiblock.blast_furnace.max_temperature", - Component - .translatable( - FormattingUtil - .formatNumbers(coilMachine.getCoilType().getCoilTemperature() + - 100L * Math.max(0, coilMachine.getTier() - GTValues.MV)) + - "K") + Component.translatable( + FormattingUtil.formatNumbers(coilMachine.getCoilType().getCoilTemperature() + + 100L * Math.max(0, coilMachine.getTier() - GTValues.MV)) + "K") .setStyle(Style.EMPTY.withColor(ChatFormatting.RED)))); } + // spotless:on }) .register(); @@ -189,7 +198,7 @@ public class GTMultiMachines { ConfigHolder.INSTANCE.gameplay.environmentalHazards) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.LARGE_CHEMICAL_RECIPES) - .recipeModifiers(GTRecipeModifiers.DEFAULT_ENVIRONMENT_REQUIREMENT, GTRecipeModifiers.OC_PERFECT_SUBTICK) + .recipeModifiers(DEFAULT_ENVIRONMENT_REQUIREMENT, OC_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_PTFE_INERT) .pattern(definition -> { var casing = blocks(CASING_PTFE_INERT.get()).setMinGlobalLimited(10); @@ -247,7 +256,7 @@ public class GTMultiMachines { .build()); return shapeInfo; }) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_inert_ptfe"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_inert_ptfe"), GTCEu.id("block/multiblock/large_chemical_reactor")) .register(); @@ -255,7 +264,7 @@ public class GTMultiMachines { .multiblock("implosion_compressor", WorkableElectricMultiblockMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.IMPLOSION_RECIPES) - .recipeModifiers(GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_STEEL_SOLID) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXX", "XXX", "XXX") @@ -267,7 +276,7 @@ public class GTMultiMachines { .or(Predicates.autoAbilities(true, true, false))) .where('#', Predicates.air()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_solid_steel"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_solid_steel"), GTCEu.id("block/multiblock/implosion_compressor")) .register(); @@ -275,7 +284,7 @@ public class GTMultiMachines { .multiblock("pyrolyse_oven", CoilWorkableElectricMultiblockMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.PYROLYSE_RECIPES) - .recipeModifiers(GTRecipeModifiers::pyrolyseOvenOverclock) + .recipeModifiers(GTRecipeModifiers::pyrolyseOvenOverclock, BATCH_MODE) .appearanceBlock(MACHINE_CASING_ULV) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXX", "XXX", "XXX") @@ -313,7 +322,7 @@ public class GTMultiMachines { coil -> shapeInfo.add(builder.shallowCopy().where('C', coil.getValue().get()).build())); return shapeInfo; }) - .workableCasingRenderer(GTCEu.id("block/casings/voltage/ulv/side"), + .workableCasingModel(GTCEu.id("block/casings/voltage/ulv/side"), GTCEu.id("block/multiblock/pyrolyse_oven")) .tooltips(Component.translatable("gtceu.machine.pyrolyse_oven.tooltip.1")) .additionalDisplay((controller, components) -> { @@ -328,7 +337,7 @@ public class GTMultiMachines { .multiblock("multi_smelter", CoilWorkableElectricMultiblockMachine::new) .rotationState(RotationState.ALL) .recipeTypes(GTRecipeTypes.FURNACE_RECIPES, GTRecipeTypes.ALLOY_SMELTER_RECIPES) - .recipeModifiers(GTRecipeModifiers::multiSmelterParallel) + .recipeModifiers(GTRecipeModifiers::multiSmelterParallel, BATCH_MODE) .appearanceBlock(CASING_INVAR_HEATPROOF) .tooltips(Component.translatable("gtceu.machine.available_recipe_map_2.tooltip", Component.translatable("gtceu.electric_furnace"), Component.translatable("gtceu.alloy_smelter"))) @@ -367,7 +376,7 @@ public class GTMultiMachines { .recoveryItems( () -> new ItemLike[] { GTMaterialItems.MATERIAL_ITEMS.get(TagPrefix.dustTiny, GTMaterials.Ash).get() }) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_heatproof"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_heatproof"), GTCEu.id("block/multiblock/multi_furnace")) .additionalDisplay((controller, components) -> { if (controller instanceof CoilWorkableElectricMultiblockMachine coilMachine && controller.isFormed()) { @@ -383,7 +392,7 @@ public class GTMultiMachines { .multiblock("cracker", CoilWorkableElectricMultiblockMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.CRACKING_RECIPES) - .recipeModifier(GTRecipeModifiers::crackerOverclock) + .recipeModifiers(GTRecipeModifiers::crackerOverclock, BATCH_MODE) .appearanceBlock(CASING_STAINLESS_CLEAN) .pattern(definition -> FactoryBlockPattern.start() .aisle("HCHCH", "HCHCH", "HCHCH") @@ -417,7 +426,7 @@ public class GTMultiMachines { coil -> shapeInfo.add(builder.shallowCopy().where('C', coil.getValue().get()).build())); return shapeInfo; }) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_clean_stainless_steel"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_clean_stainless_steel"), GTCEu.id("block/multiblock/cracking_unit")) .tooltips(Component.translatable("gtceu.machine.cracker.tooltip.1")) .additionalDisplay((controller, components) -> { @@ -432,7 +441,7 @@ public class GTMultiMachines { .multiblock("distillation_tower", DistillationTowerMachine::new) .rotationState(RotationState.NON_Y_AXIS) .recipeType(GTRecipeTypes.DISTILLATION_RECIPES) - .recipeModifiers(GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_STAINLESS_CLEAN) .pattern(definition -> { TraceabilityPredicate exportPredicate = abilities(PartAbility.EXPORT_FLUIDS_1X); @@ -494,8 +503,8 @@ public class GTMultiMachines { return shapeInfos; }) .allowExtendedFacing(false) - .partSorter(Comparator.comparingInt(a -> a.self().getPos().getY())) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_clean_stainless_steel"), + .partSorter(Comparator.comparingInt(p -> p.self().getPos().getY())) + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_clean_stainless_steel"), GTCEu.id("block/multiblock/distillation_tower")) .register(); @@ -503,7 +512,7 @@ public class GTMultiMachines { .multiblock("vacuum_freezer", WorkableElectricMultiblockMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.VACUUM_RECIPES) - .recipeModifiers(GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_ALUMINIUM_FROSTPROOF) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXX", "XXX", "XXX") @@ -515,7 +524,7 @@ public class GTMultiMachines { .or(Predicates.autoAbilities(true, false, false))) .where('#', Predicates.air()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_frost_proof"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_frost_proof"), GTCEu.id("block/multiblock/vacuum_freezer")) .register(); @@ -524,8 +533,7 @@ public class GTMultiMachines { .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.ASSEMBLY_LINE_RECIPES) .alwaysTryModifyRecipe(true) - .recipeModifiers(GTRecipeModifiers.DEFAULT_ENVIRONMENT_REQUIREMENT, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(DEFAULT_ENVIRONMENT_REQUIREMENT, OC_NON_PERFECT) .appearanceBlock(CASING_STEEL_SOLID) .pattern(definition -> FactoryBlockPattern.start(BACK, UP, RIGHT) .aisle("FIF", "RTR", "SAG", "#Y#") @@ -551,7 +559,8 @@ public class GTMultiMachines { .where('D', dataHatchPredicate(blocks(CASING_GRATE.get()))) .where('#', Predicates.any()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_solid_steel"), + .partSorter(AssemblyLineMachine::partSorter) + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_solid_steel"), GTCEu.id("block/multiblock/assembly_line")) .register(); @@ -572,7 +581,19 @@ public class GTMultiMachines { .where('#', Predicates.any()) .build()) .allowExtendedFacing(false) - .sidedWorkableCasingRenderer("block/casings/pump_deck", GTCEu.id("block/multiblock/primitive_pump")) + .modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE) + .model(createSidedWorkableCasingMachineModel(GTCEu.id("block/casings/pump_deck"), + GTCEu.id("block/multiblock/primitive_pump")) + .andThen(builder -> { + builder.replaceForAllStates((state, models) -> { + for (int i = 0; i < models.length; i++) { + models[i] = ConfiguredModel.builder() + .modelFile(models[i].model).uvLock(true) + .buildLast(); + } + return models; + }); + })) .register(); public static final MultiblockMachineDefinition STEAM_GRINDER = REGISTRATE @@ -593,7 +614,7 @@ public class GTMultiMachines { .or(Predicates.abilities(PartAbility.STEAM_EXPORT_ITEMS).setPreviewCount(1)) .or(Predicates.abilities(PartAbility.STEAM).setExactLimit(1))) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks"), GTCEu.id("block/multiblock/steam_grinder")) .register(); @@ -617,9 +638,12 @@ public class GTMultiMachines { .where('F', blocks(FIREBOX_BRONZE.get()) .or(Predicates.abilities(PartAbility.STEAM).setExactLimit(1))) .build()) - .renderer(() -> new LargeBoilerRenderer(GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks"), - BoilerFireboxType.BRONZE_FIREBOX, - GTCEu.id("block/multiblock/steam_oven"))) + .modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE) + .model(createWorkableCasingMachineModel(GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks"), + GTCEu.id("block/multiblock/steam_oven")) + .andThen(b -> b.addDynamicRenderer( + () -> DynamicRenderHelper.makeBoilerPartRender( + BoilerFireboxType.BRONZE_FIREBOX, CASING_BRONZE_BRICKS)))) .register(); public static final MultiblockMachineDefinition[] FUSION_REACTOR = registerTieredMultis("fusion_reactor", @@ -627,8 +651,8 @@ public class GTMultiMachines { .rotationState(RotationState.ALL) .langValue("Fusion Reactor Computer MK %s".formatted(toRomanNumeral(tier - 5))) .recipeType(GTRecipeTypes.FUSION_RECIPES) - .recipeModifiers(GTRecipeModifiers.DEFAULT_ENVIRONMENT_REQUIREMENT, - FusionReactorMachine::recipeModifier) + .recipeModifiers(DEFAULT_ENVIRONMENT_REQUIREMENT, + FusionReactorMachine::recipeModifier, BATCH_MODE) .tooltips( Component.translatable("gtceu.machine.fusion_reactor.capacity", FusionReactorMachine.calculateEnergyStorageFactor(tier, 16) / 1000000L), @@ -708,9 +732,11 @@ public class GTMultiMachines { shapeInfos.add(baseBuilder.build()); return shapeInfos; }) - .renderer(() -> new FusionReactorRenderer(FusionReactorMachine.getCasingType(tier).getTexture(), - GTCEu.id("block/multiblock/fusion_reactor"))) - .hasTESR(true) + .modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE) + .model(createWorkableCasingMachineModel(FusionReactorMachine.getCasingType(tier).getTexture(), + GTCEu.id("block/multiblock/fusion_reactor")) + .andThen(b -> b.addDynamicRenderer(DynamicRenderHelper::createFusionRingRender))) + .hasBER(true) .register(), LuV, ZPM, UV); @@ -742,7 +768,7 @@ public class GTMultiMachines { .where('F', blocks(FluidDrillMachine.getFrameState(tier))) .where('#', any()) .build()) - .workableCasingRenderer(FluidDrillMachine.getBaseTexture(tier), + .workableCasingModel(FluidDrillMachine.getBaseTexture(tier), GTCEu.id("block/multiblock/fluid_drilling_rig")) .register(), MV, HV, EV); @@ -769,9 +795,25 @@ public class GTMultiMachines { .where('#', any()) .build()) .allowExtendedFacing(true) - .renderer(() -> new LargeMinerRenderer( - MinerRenderer.MATERIALS_TO_CASING_MODELS.get(LargeMinerMachine.getMaterial(tier)), - GTCEu.id("block/multiblock/large_miner"))) + .modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE) + .model(createWorkableCasingMachineModel( + MATERIALS_TO_CASING_TEXTURES.get(LargeMinerMachine.getMaterial(tier)), + GTCEu.id("block/multiblock/large_miner")) + .andThen((ctx, prov, modelBuilder) -> { + // replace the parent model for the formed large miner + modelBuilder.replaceForAllStates((state, models) -> { + if (!state.getValue(GTMachineModelProperties.IS_FORMED)) { + return models; + } + + var parentModel = prov.models() + .getExistingFile(GTCEu.id("block/machine/large_miner_active")); + for (ConfiguredModel model : models) { + ((BlockModelBuilder) model.model).parent(parentModel); + } + return models; + }); + })) .tooltips( Component.translatable("gtceu.machine.large_miner.%s.tooltip" .formatted(VN[tier].toLowerCase(Locale.ROOT))), @@ -870,7 +912,7 @@ public class GTMultiMachines { }) .allowExtendedFacing(false) .allowFlip(false) - .workableCasingRenderer(GTCEu.id("block/casings/cleanroom/plascrete"), + .workableCasingModel(GTCEu.id("block/casings/cleanroom/plascrete"), GTCEu.id("block/multiblock/cleanroom")) .register(); @@ -930,7 +972,7 @@ public class GTMultiMachines { .or(ActiveTransformerMachine.getHatchPredicates())) .where('C', blocks(GTBlocks.SUPERCONDUCTING_COIL.get())) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/hpca/high_power_casing"), + .workableCasingModel(GTCEu.id("block/casings/hpca/high_power_casing"), GTCEu.id("block/multiblock/data_bank")) .register(); @@ -1001,7 +1043,7 @@ public class GTMultiMachines { return shapeInfo; }) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_palladium_substation"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_palladium_substation"), GTCEu.id("block/multiblock/power_substation")) .register(); @@ -1024,7 +1066,7 @@ public class GTMultiMachines { .build()) .allowFlip(false) .allowExtendedFacing(false) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks"), GTCEu.id("block/multiblock/charcoal_pile_igniter")) .register(); @@ -1059,7 +1101,7 @@ public class GTMultiMachines { .where('F', blocks(BedrockOreMinerMachine.getFrameState(tier))) .where('#', any()) .build()) - .workableCasingRenderer(BedrockOreMinerMachine.getBaseTexture(tier), + .workableCasingModel(BedrockOreMinerMachine.getBaseTexture(tier), GTCEu.id("block/multiblock/bedrock_ore_miner")) .register(), MV, HV, EV); @@ -1067,23 +1109,41 @@ public class GTMultiMachines { // Multiblock Tanks public static final MachineDefinition WOODEN_TANK_VALVE = GTMachineUtils.registerTankValve( "wooden_tank_valve", "Wooden Tank Valve", false, - (builder, overlay) -> builder.sidedWorkableCasingRenderer("block/casings/wood_wall", overlay)); + (builder, overlay) -> builder.sidedWorkableCasingModel(GTCEu.id("block/casings/wood_wall"), overlay)); public static final MultiblockMachineDefinition WOODEN_MULTIBLOCK_TANK = registerMultiblockTank( "wooden_multiblock_tank", "Wooden Multiblock Tank", 250 * 1000, CASING_WOOD_WALL, WOODEN_TANK_VALVE::getBlock, new PropertyFluidFilter(340, false, false, false, false), - (builder, overlay) -> builder.sidedWorkableCasingRenderer("block/casings/wood_wall", overlay)); + (builder, overlay) -> builder.sidedWorkableCasingModel(GTCEu.id("block/casings/wood_wall"), overlay)); public static final MachineDefinition STEEL_TANK_VALVE = GTMachineUtils.registerTankValve( "steel_tank_valve", "Steel Tank Valve", true, - (builder, overlay) -> builder.workableCasingRenderer( + (builder, overlay) -> builder.workableCasingModel( GTCEu.id("block/casings/solid/machine_casing_solid_steel"), overlay)); public static final MultiblockMachineDefinition STEEL_MULTIBLOCK_TANK = registerMultiblockTank( "steel_multiblock_tank", "Steel Multiblock Tank", 1000 * 1000, CASING_STEEL_SOLID, STEEL_TANK_VALVE::getBlock, null, - (builder, overlay) -> builder.workableCasingRenderer( + (builder, overlay) -> builder.workableCasingModel( GTCEu.id("block/casings/solid/machine_casing_solid_steel"), overlay)); + public static final MultiblockMachineDefinition CENTRAL_MONITOR = REGISTRATE + .multiblock("central_monitor", CentralMonitorMachine::new) + .rotationState(RotationState.ALL) + .recipeType(DUMMY_RECIPES) + .appearanceBlock(CASING_ALUMINIUM_FROSTPROOF) + .pattern((definition) -> FactoryBlockPattern.start() + .aisle("BCB", "BBB", "BBB", "BBB") + .where('C', Predicates.controller(Predicates.blocks(definition.get()))) + .where('B', CentralMonitorMachine.getMultiPredicate()) + .build()) + .modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE) + .model(createWorkableCasingMachineModel( + GTCEu.id("block/casings/solid/machine_casing_frost_proof"), + GTCEu.id("block/multiblock/central_monitor")) + .andThen(b -> b.addDynamicRenderer(DynamicRenderHelper::createCentralMonitorRender))) + .hasBER(true) + .register(); + public static void init() {} } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java index aa1c8f47aaf..453436cd61f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java @@ -8,11 +8,11 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.pattern.FactoryBlockPattern; import com.gregtechceu.gtceu.api.pattern.MultiblockShapeInfo; import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; -import com.gregtechceu.gtceu.client.renderer.machine.HPCAPartRenderer; -import com.gregtechceu.gtceu.client.renderer.machine.OverlayTieredActiveMachineRenderer; import com.gregtechceu.gtceu.client.util.TooltipHelper; import com.gregtechceu.gtceu.common.data.GTMachines; import com.gregtechceu.gtceu.common.data.GTMaterials; @@ -25,36 +25,36 @@ import com.gregtechceu.gtceu.common.machine.multiblock.part.ObjectHolderMachine; import com.gregtechceu.gtceu.common.machine.multiblock.part.OpticalComputationHatchMachine; import com.gregtechceu.gtceu.common.machine.multiblock.part.OpticalDataHatchMachine; -import com.gregtechceu.gtceu.common.machine.multiblock.part.hpca.HPCABridgePartMachine; -import com.gregtechceu.gtceu.common.machine.multiblock.part.hpca.HPCAComputationPartMachine; -import com.gregtechceu.gtceu.common.machine.multiblock.part.hpca.HPCACoolerPartMachine; -import com.gregtechceu.gtceu.common.machine.multiblock.part.hpca.HPCAEmptyPartMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.part.hpca.*; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.data.lang.LangHandler; import com.gregtechceu.gtceu.utils.FormattingUtil; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Blocks; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; import java.util.function.BiConsumer; import java.util.function.Function; +import javax.annotation.ParametersAreNonnullByDefault; + import static com.gregtechceu.gtceu.api.GTValues.*; import static com.gregtechceu.gtceu.api.pattern.Predicates.*; import static com.gregtechceu.gtceu.common.data.GTBlocks.*; import static com.gregtechceu.gtceu.common.data.GTMachines.CREATIVE_TOOLTIPS; +import static com.gregtechceu.gtceu.common.data.models.GTMachineModels.*; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; @SuppressWarnings("unused") -@net.minecraft.MethodsReturnNonnullByDefault -@javax.annotation.ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +@ParametersAreNonnullByDefault public class GTResearchMachines { public static final MultiblockMachineDefinition RESEARCH_STATION = REGISTRATE @@ -62,7 +62,7 @@ public class GTResearchMachines { .rotationState(RotationState.NON_Y_AXIS) .recipeType(GTRecipeTypes.RESEARCH_STATION_RECIPES) .appearanceBlock(ADVANCED_COMPUTER_CASING) - .tooltipBuilder((s, l) -> l.addAll(LangHandler.getMultiLang("gtceu.machine.research_station.tooltip"))) + .tooltips(LangHandler.getMultiLang("gtceu.machine.research_station.tooltip")) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXX", "VVV", "PPP", "PPP", "PPP", "VVV", "XXX") .aisle("XXX", "VAV", "AAA", "AAA", "AAA", "VAV", "XXX") @@ -105,7 +105,7 @@ public class GTResearchMachines { COMPUTER_CASING.getDefaultState()) .where('H', GTResearchMachines.OBJECT_HOLDER, Direction.SOUTH) .build()) - .sidedWorkableCasingRenderer("block/casings/hpca/advanced_computer_casing", + .sidedWorkableCasingModel(GTCEu.id("block/casings/hpca/advanced_computer_casing"), GTCEu.id("block/multiblock/research_station")) .register(); @@ -114,8 +114,11 @@ public class GTResearchMachines { .tier(ZPM) .rotationState(RotationState.ALL) .abilities(PartAbility.OBJECT_HOLDER) - .renderer(() -> new OverlayTieredActiveMachineRenderer(ZPM, GTCEu.id("block/machine/part/object_holder"), - GTCEu.id("block/machine/part/object_holder_active"))) + .modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE) + .model(createWorkableTieredHullMachineModel(GTCEu.id("block/machines/object_holder")) + .andThen((ctx, prov, model) -> { + model.addReplaceableTextures("bottom", "top", "side"); + })) .register(); public static final MachineDefinition DATA_BANK = REGISTRATE.multiblock("data_bank", DataBankMachine::new) @@ -145,7 +148,7 @@ public class GTResearchMachines { .or(abilities(PartAbility.INPUT_ENERGY).setMinGlobalLimited(1).setMaxGlobalLimited(2, 1)) .or(autoAbilities(true, false, false))) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/hpca/high_power_casing"), + .workableCasingModel(GTCEu.id("block/casings/hpca/high_power_casing"), GTCEu.id("block/multiblock/data_bank")) .register(); @@ -184,7 +187,7 @@ public class GTResearchMachines { .where('M', GTMachines.MAINTENANCE_HATCH, Direction.NORTH) .where('E', GTMachines.ENERGY_INPUT_HATCH[LuV], Direction.NORTH) .build()) - .sidedWorkableCasingRenderer("block/casings/hpca/computer_casing", + .sidedWorkableCasingModel(GTCEu.id("block/casings/hpca/computer_casing"), GTCEu.id("block/multiblock/network_switch")) .register(); @@ -196,8 +199,7 @@ public class GTResearchMachines { // good API addition for packdevs .appearanceBlock(COMPUTER_CASING) .recipeType(GTRecipeTypes.DUMMY_RECIPES) - .tooltipBuilder((s, l) -> l - .addAll(LangHandler.getMultiLang("gtceu.machine.high_performance_computation_array.tooltip"))) + .tooltips(LangHandler.getMultiLang("gtceu.machine.high_performance_computation_array.tooltip")) .pattern(definition -> FactoryBlockPattern.start() .aisle("AA", "CC", "CC", "CC", "AA") .aisle("VA", "XV", "XV", "XV", "VA") @@ -286,7 +288,7 @@ public class GTResearchMachines { return shapeInfo; }) - .sidedWorkableCasingRenderer("block/casings/hpca/computer_casing", + .sidedWorkableCasingModel(GTCEu.id("block/casings/hpca/computer_casing"), GTCEu.id("block/multiblock/hpca")) .register(); @@ -297,22 +299,42 @@ public class GTResearchMachines { public static final MachineDefinition COMPUTATION_HATCH_TRANSMITTER = registerDataHatch( "computation_transmitter_hatch", "Computation Data Transmission Hatch", ZPM, (holder) -> new OpticalComputationHatchMachine(holder, true), - "computation_data_hatch", PartAbility.COMPUTATION_DATA_TRANSMISSION).register(); + "computation_data_hatch", PartAbility.COMPUTATION_DATA_TRANSMISSION) + .tooltips(Component.translatable("gtceu.part_sharing.disabled")) + .register(); public static final MachineDefinition COMPUTATION_HATCH_RECEIVER = registerDataHatch( "computation_receiver_hatch", "Computation Data Reception Hatch", ZPM, (holder) -> new OpticalComputationHatchMachine(holder, false), - "computation_data_hatch", PartAbility.COMPUTATION_DATA_RECEPTION).register(); + "computation_data_hatch", PartAbility.COMPUTATION_DATA_RECEPTION) + .tooltips(Component.translatable("gtceu.part_sharing.disabled")) + .register(); public static final MachineDefinition DATA_HATCH_TRANSMITTER = registerDataHatch( "data_transmitter_hatch", "Optical Data Transmission Hatch", LuV, (holder) -> new OpticalDataHatchMachine(holder, true), - "optical_data_hatch", PartAbility.OPTICAL_DATA_TRANSMISSION).register(); + "optical_data_hatch", PartAbility.OPTICAL_DATA_TRANSMISSION) + .tooltips(Component.translatable("gtceu.part_sharing.disabled")) + .register(); public static final MachineDefinition DATA_HATCH_RECEIVER = registerDataHatch( "data_receiver_hatch", "Optical Data Reception Hatch", LuV, (holder) -> new OpticalDataHatchMachine(holder, false), - "optical_data_hatch", PartAbility.OPTICAL_DATA_RECEPTION).register(); + "optical_data_hatch", PartAbility.OPTICAL_DATA_RECEPTION) + .tooltips(Component.translatable("gtceu.part_sharing.disabled")) + .register(); + + public static final MachineDefinition BASIC_DATA_ACCESS_HATCH = REGISTRATE + .machine("basic_data_access_hatch", (holder) -> new DataAccessHatchMachine(holder, HV, false)) + .langValue("Basic Data Access Hatch") + .tier(HV) + .rotationState(RotationState.ALL) + .abilities(PartAbility.DATA_ACCESS) + .tooltips(Component.translatable("gtceu.machine.data_access_hatch.tooltip.0"), + Component.translatable("gtceu.machine.data_access_hatch.tooltip.1", 4), + Component.translatable("gtceu.part_sharing.disabled")) + .overlayTieredHullModel("data_access_hatch") + .register(); public static final MachineDefinition DATA_ACCESS_HATCH = REGISTRATE .machine("data_access_hatch", (holder) -> new DataAccessHatchMachine(holder, EV, false)) @@ -322,8 +344,8 @@ public class GTResearchMachines { .abilities(PartAbility.DATA_ACCESS) .tooltips(Component.translatable("gtceu.machine.data_access_hatch.tooltip.0"), Component.translatable("gtceu.machine.data_access_hatch.tooltip.1", 9), - Component.translatable("gtceu.universal.disabled")) - .overlayTieredHullRenderer("data_access_hatch") + Component.translatable("gtceu.part_sharing.disabled")) + .overlayTieredHullModel("data_access_hatch") .register(); public static final MachineDefinition ADVANCED_DATA_ACCESS_HATCH = REGISTRATE @@ -334,8 +356,8 @@ public class GTResearchMachines { .abilities(PartAbility.DATA_ACCESS) .tooltips(Component.translatable("gtceu.machine.data_access_hatch.tooltip.0"), Component.translatable("gtceu.machine.data_access_hatch.tooltip.1", 16), - Component.translatable("gtceu.universal.disabled")) - .overlayTieredHullRenderer("data_access_hatch") + Component.translatable("gtceu.part_sharing.disabled")) + .overlayTieredHullModel("data_access_hatch") .register(); public static final MachineDefinition CREATIVE_DATA_ACCESS_HATCH = REGISTRATE @@ -347,9 +369,9 @@ public class GTResearchMachines { .tooltipBuilder((s, list) -> { list.add(Component.translatable("gtceu.machine.data_access_hatch.tooltip.0")); CREATIVE_TOOLTIPS.accept(s, list); - list.add(Component.translatable("gtceu.universal.enabled")); + list.add(Component.translatable("gtceu.part_sharing.enabled")); }) - .overlayTieredHullRenderer("data_access_hatch_creative") + .overlayTieredHullModel("data_access_hatch_creative") .register(); ////////////////////////////////////// @@ -362,7 +384,9 @@ public class GTResearchMachines { public static final MachineDefinition HPCA_EMPTY_COMPONENT = registerHPCAPart( "hpca_empty_component", "Empty HPCA Component", - HPCAEmptyPartMachine::new, "empty", null, null, false).register(); + HPCAEmptyPartMachine::new, "empty", false) + .tooltips(Component.translatable("gtceu.part_sharing.disabled")) + .register(); public static final MachineDefinition HPCA_COMPUTATION_COMPONENT = registerHPCAPart( "hpca_computation_component", "HPCA Computation Component", holder -> new HPCAComputationPartMachine(holder, false), "computation", false) @@ -370,7 +394,8 @@ public class GTResearchMachines { Component.translatable("gtceu.machine.hpca.component_general.upkeep_eut", GTValues.VA[GTValues.EV]), Component.translatable("gtceu.machine.hpca.component_general.max_eut", GTValues.VA[GTValues.LuV]), Component.translatable("gtceu.machine.hpca.component_type.computation_cwut", 4), - Component.translatable("gtceu.machine.hpca.component_type.computation_cooling", 2)) + Component.translatable("gtceu.machine.hpca.component_type.computation_cooling", 2), + Component.translatable("gtceu.part_sharing.disabled")) .tooltipBuilder(OVERHEAT_TOOLTIPS) .register(); public static final MachineDefinition HPCA_ADVANCED_COMPUTATION_COMPONENT = registerHPCAPart( @@ -380,14 +405,16 @@ public class GTResearchMachines { Component.translatable("gtceu.machine.hpca.component_general.upkeep_eut", GTValues.VA[GTValues.IV]), Component.translatable("gtceu.machine.hpca.component_general.max_eut", GTValues.VA[GTValues.ZPM]), Component.translatable("gtceu.machine.hpca.component_type.computation_cwut", 16), - Component.translatable("gtceu.machine.hpca.component_type.computation_cooling", 4)) + Component.translatable("gtceu.machine.hpca.component_type.computation_cooling", 4), + Component.translatable("gtceu.part_sharing.disabled")) .tooltipBuilder(OVERHEAT_TOOLTIPS) .register(); public static final MachineDefinition HPCA_HEAT_SINK_COMPONENT = registerHPCAPart( "hpca_heat_sink_component", "HPCA Heat Sink Component", - holder -> new HPCACoolerPartMachine(holder, false), "heat_sink", null, null, false) + holder -> new HPCACoolerPartMachine(holder, false), "heat_sink", false) .tooltips(Component.translatable("gtceu.machine.hpca.component_type.cooler_passive"), - Component.translatable("gtceu.machine.hpca.component_type.cooler_cooling", 1)) + Component.translatable("gtceu.machine.hpca.component_type.cooler_cooling", 1), + Component.translatable("gtceu.part_sharing.disabled")) .register(); public static final MachineDefinition HPCA_ACTIVE_COOLER_COMPONENT = registerHPCAPart( "hpca_active_cooler_component", "HPCA Active Cooling Component", @@ -396,13 +423,15 @@ public class GTResearchMachines { Component.translatable("gtceu.machine.hpca.component_type.cooler_active"), Component.translatable("gtceu.machine.hpca.component_type.cooler_active_coolant", 8, GTMaterials.PCBCoolant.getLocalizedName()), - Component.translatable("gtceu.machine.hpca.component_type.cooler_cooling", 2)) + Component.translatable("gtceu.machine.hpca.component_type.cooler_cooling", 2), + Component.translatable("gtceu.part_sharing.disabled")) .register(); public static final MachineDefinition HPCA_BRIDGE_COMPONENT = registerHPCAPart( "hpca_bridge_component", "HPCA Bridge Component", HPCABridgePartMachine::new, "bridge", false) .tooltips(Component.translatable("gtceu.machine.hpca.component_type.bridge"), - Component.translatable("gtceu.machine.hpca.component_general.max_eut", GTValues.VA[GTValues.IV])) + Component.translatable("gtceu.machine.hpca.component_general.max_eut", GTValues.VA[GTValues.IV]), + Component.translatable("gtceu.part_sharing.disabled")) .register(); @NotNull @@ -414,7 +443,7 @@ private static MachineBuilder registerDataHatch(String name, .tier(tier) .rotationState(RotationState.ALL) .abilities(abilities) - .overlayTieredHullRenderer(model); + .overlayTieredHullModel(model); } private static MachineBuilder registerHPCAPart(String name, String displayName, @@ -424,35 +453,11 @@ private static MachineBuilder registerHPCAPart(String name, S .langValue(displayName) .rotationState(RotationState.ALL) .abilities(PartAbility.HPCA_COMPONENT) - .renderer(() -> new HPCAPartRenderer( - isAdvanced, - GTCEu.id("block/overlay/machine/hpca/" + texture), - GTCEu.id("block/overlay/machine/hpca/" + (isAdvanced ? "damaged_advanced" : "damaged")))); - } - - @SuppressWarnings("SameParameterValue") - private static MachineBuilder registerHPCAPart(String name, - String displayName, - Function constructor, - String texture, - @Nullable String activeTexture, - @Nullable String damagedTexture, - boolean isAdvanced) { - return REGISTRATE.machine(name, constructor) - .langValue(displayName) - .rotationState(RotationState.ALL) - .abilities(PartAbility.HPCA_COMPONENT) - .renderer(() -> new HPCAPartRenderer( - isAdvanced, + .modelProperty(GTMachineModelProperties.IS_HPCA_PART_DAMAGED, false) + .modelProperty(GTMachineModelProperties.IS_ACTIVE, false) + .model(createHPCAPartModel(isAdvanced, GTCEu.id("block/overlay/machine/hpca/" + texture), - activeTexture == null ? null : GTCEu.id("block/overlay/machine/hpca/" + activeTexture), - activeTexture == null ? null : - GTCEu.id("block/overlay/machine/hpca/" + activeTexture + "_emissive"), - damagedTexture == null ? null : GTCEu.id("block/overlay/machine/hpca/" + damagedTexture), - damagedTexture == null ? null : - GTCEu.id("block/overlay/machine/hpca/" + damagedTexture + "_active"), - damagedTexture == null ? null : - GTCEu.id("block/overlay/machine/hpca/" + damagedTexture + "_emissive"))); + GTCEu.id("block/overlay/machine/hpca/damaged" + (isAdvanced ? "_advanced" : "")))); } public static void init() {} diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java index 418578a2204..d006d0cd977 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.BlastProperty.GasTier; import com.gregtechceu.gtceu.api.data.chemical.material.properties.HazardProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; @@ -256,8 +257,8 @@ public static void register() { .ingot() .liquid(new FluidBuilder().temperature(1099)) .color(0x20FFFF).secondaryColor(0x429393).iconSet(METALLIC) - .appendFlags(STD_METAL, GENERATE_LONG_ROD, GENERATE_FINE_WIRE, GENERATE_SPRING, GENERATE_FOIL, - GENERATE_FRAME) + .appendFlags(STD_METAL, GENERATE_LONG_ROD, GENERATE_FINE_WIRE, GENERATE_SPRING, GENERATE_SPRING_SMALL, + GENERATE_FOIL, GENERATE_FRAME) .element(GTElements.Eu) .cableProperties(V[UHV], 2, 32) .fluidPipeProperties(7750, 300, true) @@ -861,6 +862,8 @@ public static void register() { .element(GTElements.Ti) .toolStats(ToolProperty.Builder.of(8.0F, 6.0F, 1536, 3) .enchantability(14).build()) + .armorStats(ArmorProperty.Builder.of(48, new int[] { 4, 9, 7, 4 }) + .enchantability(18).toughness(5.0f).knockbackResistance(0.4f).build()) .rotorStats(130, 115, 3.0f, 1600) .fluidPipeProperties(2426, 150, true) .blast(b -> b.temp(1941, GasTier.MID) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java index 234a34527e8..445024d2f4d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.BlastProperty.GasTier; import com.gregtechceu.gtceu.api.data.chemical.material.properties.HazardProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; @@ -105,6 +106,8 @@ public static void register() { .components(Tin, 1, Copper, 3) .toolStats(ToolProperty.Builder.of(3.0F, 2.0F, 192, 2) .enchantability(18).addTypes(GTToolType.MORTAR).build()) + .armorStats(ArmorProperty.Builder.of(17, new int[] { 3, 7, 6, 2 }) + .enchantability(8).build()) .rotorStats(115, 105, 2.5f, 192) .fluidPipeProperties(1696, 20, true) .buildAndRegister(); @@ -628,6 +631,8 @@ public static void register() { .toolStats(ToolProperty.Builder.of(5.0F, 3.0F, 512, 3) .addTypes(GTToolType.MORTAR) .enchantability(14).build()) + .armorStats(ArmorProperty.Builder.of(19, new int[] { 3, 7, 5, 2 }) + .enchantability(14).build()) .rotorStats(130, 105, 3.0f, 512) .fluidPipeProperties(1855, 50, true) .cableProperties(V[EV], 2, 2) @@ -733,12 +738,13 @@ public static void register() { .components(Lead, 1, Molybdenum, 1, Oxygen, 4) .buildAndRegister(); - YellowLimonite = new Material.Builder(GTCEu.id("yellow_limonite")) + Limonite = new Material.Builder(GTCEu.id("yellow_limonite")) .dust().ore() .color(0xf5e315).secondaryColor(0xc06f33).iconSet(METALLIC) .flags(DECOMPOSITION_BY_CENTRIFUGING, BLAST_FURNACE_CALCITE_DOUBLE) .components(Iron, 1, Hydrogen, 1, Oxygen, 2) .buildAndRegister(); + YellowLimonite = Limonite; YttriumBariumCuprate = new Material.Builder(GTCEu.id("yttrium_barium_cuprate")) .ingot() @@ -884,6 +890,7 @@ public static void register() { MagnesiumChloride = new Material.Builder(GTCEu.id("magnesium_chloride")) .dust(1) .color(0xeee4e9).secondaryColor(0xD40D5C) + .flags(DISABLE_DECOMPOSITION) .components(Magnesium, 1, Chlorine, 2) .buildAndRegister(); @@ -943,6 +950,7 @@ public static void register() { SodiumBicarbonate = new Material.Builder(GTCEu.id("sodium_bicarbonate")) .dust(1) .color(0xFFFFFF).secondaryColor(0xa7d2df).iconSet(ROUGH) + .flags(DISABLE_DECOMPOSITION) .components(Sodium, 1, Hydrogen, 1, Carbon, 1, Oxygen, 3) .buildAndRegister(); @@ -1603,7 +1611,7 @@ public static void register() { .buildAndRegister(); FormicAcid = new Material.Builder(GTCEu.id("formic_acid")) - .gas() + .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) .color(0xa6a6a6) .components(Carbon, 1, Hydrogen, 2, Oxygen, 2) .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.CHEMICAL_BURNS) @@ -1666,5 +1674,10 @@ public static void register() { .components(Hydrogen, 2, Oxygen, 2) .hazard(HazardProperty.HazardTrigger.ANY, GTMedicalConditions.CHEMICAL_BURNS, true) .buildAndRegister(); + + IlmeniteSlag = new Material.Builder(GTCEu.id("ilmenite_slag")) + .dust() + .color(0x8B0000).iconSet(SAND) + .buildAndRegister(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/GTFoods.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/GTFoods.java index 12c370772be..2149b466219 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/GTFoods.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/GTFoods.java @@ -4,11 +4,6 @@ import net.minecraft.world.effect.MobEffects; import net.minecraft.world.food.FoodProperties; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote GTFoods - */ public class GTFoods { public final static FoodProperties CHOCOLATE = new FoodProperties.Builder() diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/HigherDegreeMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/HigherDegreeMaterials.java index b7b7b80dabe..ae1b67b4aaa 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/HigherDegreeMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/HigherDegreeMaterials.java @@ -102,7 +102,8 @@ public static void register() { .ingot(0) .liquid(new FluidBuilder().temperature(1400)) .color(0xc55252).secondaryColor(0xC80000).iconSet(METALLIC) - .appendFlags(STD_METAL, GENERATE_FINE_WIRE, GENERATE_BOLT_SCREW, DISABLE_DECOMPOSITION) + .appendFlags(STD_METAL, GENERATE_FINE_WIRE, GENERATE_BOLT_SCREW, GENERATE_SPRING_SMALL, + DISABLE_DECOMPOSITION) .components(Copper, 1, Redstone, 4) .cableProperties(GTValues.V[0], 1, 0) .buildAndRegister(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/MaterialFlagAddition.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/MaterialFlagAddition.java index 733f32db739..52334c037c7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/MaterialFlagAddition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/MaterialFlagAddition.java @@ -103,7 +103,7 @@ public static void register() { oreProp.setOreByProducts(Topaz); oreProp = Goethite.getProperty(PropertyKey.ORE); - oreProp.setOreByProducts(Malachite, YellowLimonite); + oreProp.setOreByProducts(Malachite, Limonite); oreProp.setSeparatedInto(Iron); oreProp.setDirectSmeltResult(Iron); @@ -164,8 +164,9 @@ public static void register() { oreProp.setOreByProducts(GarnetYellow, Calcium); oreProp = Ilmenite.getProperty(PropertyKey.ORE); - oreProp.setOreByProducts(Iron, Rutile); + oreProp.setOreByProducts(Iron, Rutile, Rutile, IlmeniteSlag); oreProp.setSeparatedInto(Iron); + oreProp.setWashedIn(SodiumPersulfate); oreProp = Bauxite.getProperty(PropertyKey.ORE); oreProp.setOreByProducts(Grossular, Rutile, Gallium); @@ -255,7 +256,7 @@ public static void register() { oreProp = Uraninite.getProperty(PropertyKey.ORE); oreProp.setOreByProducts(Uraninite, Thorium, Silver); - oreProp = YellowLimonite.getProperty(PropertyKey.ORE); + oreProp = Limonite.getProperty(PropertyKey.ORE); oreProp.setOreByProducts(Nickel, Goethite, CobaltOxide); oreProp.setSeparatedInto(Iron); oreProp.setWashedIn(SodiumPersulfate); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/SecondDegreeMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/SecondDegreeMaterials.java index 8fc176d81df..9c2a9c26213 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/SecondDegreeMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/SecondDegreeMaterials.java @@ -394,11 +394,11 @@ public static void register() { .color(0xc7c7c7).secondaryColor(0x212121).iconSet(FLINT) .flags(NO_SMASHING, MORTAR_GRINDABLE, DECOMPOSITION_BY_CENTRIFUGING) .components(SiliconDioxide, 1) - .toolStats(ToolProperty.Builder.of(1.5F, 1.0F, 64, 2) + .toolStats(ToolProperty.Builder.of(0.0F, 1.0F, 64, 1) .types(GTToolType.MORTAR, GTToolType.KNIFE, GTToolType.AXE, GTToolType.PICKAXE, GTToolType.HOE, GTToolType.SWORD, GTToolType.SHOVEL) .enchantability(5).ignoreCraftingTools() - .enchantment(Enchantments.FIRE_ASPECT, 2).build()) + .enchantment(Enchantments.FIRE_ASPECT, 1).build()) .buildAndRegister(); Air = new Material.Builder(GTCEu.id("air")) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java index f3bdc21fdc6..3b82ac64e7e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java @@ -358,7 +358,7 @@ public static void register() { Netherite = new Material.Builder(GTCEu.id("netherite")) .ingot().color(0x4b4042).secondaryColor(0x474447) - .toolStats(ToolProperty.Builder.of(10.0F, 14.0F, 900, 4) + .toolStats(ToolProperty.Builder.of(10.0F, 4.0F, 2032, 4) .enchantability(21).build()) .buildAndRegister(); @@ -443,7 +443,7 @@ public static void register() { Paper = new Material.Builder(GTCEu.id("paper")) .dust(0) - .color(0xFAFAFA).secondaryColor(0x878787).iconSet(FINE) + .color(0xF9F9F9).secondaryColor(0xECECEC).iconSet(DULL) .flags(GENERATE_PLATE, FLAMMABLE, NO_SMELTING, NO_SMASHING, MORTAR_GRINDABLE, EXCLUDE_PLATE_COMPRESSOR_RECIPE) .buildAndRegister(); @@ -573,5 +573,31 @@ public static void register() { .color(0xfabf29) .flags(NO_SMELTING) .buildAndRegister(); + + BauxiteSlurry = new Material.Builder(GTCEu.id("bauxite_slurry")) + .fluid() + .color(0x051650) + .buildAndRegister(); + + CrackedBauxiteSlurry = new Material.Builder(GTCEu.id("cracked_bauxite_slurry")) + .liquid(new FluidBuilder() + .temperature(775)) + .color(0x052C50) + .buildAndRegister(); + + BauxiteSludge = new Material.Builder(GTCEu.id("bauxite_sludge")) + .fluid() + .color(0x563D2D) + .buildAndRegister(); + + DecalcifiedBauxiteSludge = new Material.Builder(GTCEu.id("decalcified_bauxite_sludge")) + .fluid() + .color(0x6F2DA8) + .buildAndRegister(); + + BauxiteSlag = new Material.Builder(GTCEu.id("bauxite_slag")) + .dust() + .color(0x6F2DA8).iconSet(SAND) + .buildAndRegister(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java new file mode 100644 index 00000000000..1e2b6b4b43e --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java @@ -0,0 +1,742 @@ +package com.gregtechceu.gtceu.common.data.models; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.block.IMachineBlock; +import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; +import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; +import com.gregtechceu.gtceu.client.model.machine.overlays.EnergyIOOverlay; +import com.gregtechceu.gtceu.client.model.machine.overlays.HPCAOverlay; +import com.gregtechceu.gtceu.client.model.machine.overlays.WorkableOverlays; +import com.gregtechceu.gtceu.common.data.GTMaterials; +import com.gregtechceu.gtceu.common.machine.electric.ChargerMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.part.DiodePartMachine; +import com.gregtechceu.gtceu.data.model.builder.MachineModelBuilder; + +import net.minecraft.Util; +import net.minecraft.core.Direction; +import net.minecraft.data.models.blockstates.*; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.client.model.generators.*; + +import com.google.common.collect.ImmutableMap; +import com.tterrag.registrate.providers.DataGenContext; +import com.tterrag.registrate.util.nullness.NonNullBiConsumer; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import org.jetbrains.annotations.Nullable; + +import java.util.Locale; + +import static com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties.*; +import static com.gregtechceu.gtceu.client.model.machine.overlays.EnergyIOOverlay.*; +import static com.gregtechceu.gtceu.common.data.models.GTModels.*; + +public class GTMachineModels { + + public static final String OVERLAY_PREFIX = "overlay_"; + public static final String EMISSIVE_SUFFIX = "_emissive"; + + // spotless:off + public static final ResourceLocation SIDED_SIDED_OVERLAY_MODEL = GTCEu.id("block/machine/template/sided/sided"); + public static final ResourceLocation SIDED_SINGLE_OVERLAY_MODEL = GTCEu.id("block/machine/template/sided/single"); + public static final ResourceLocation CUBE_ALL_SIDED_OVERLAY_MODEL = GTCEu.id("block/machine/template/cube_all/sided"); + public static final ResourceLocation CUBE_ALL_SINGLE_OVERLAY_MODEL = GTCEu.id("block/machine/template/cube_all/single"); + + public static final Int2ObjectMap TIERED_HULL_MODELS = Util.make(new Int2ObjectOpenHashMap<>(), map -> { + for (int tier : GTValues.ALL_TIERS) { + String vn = GTValues.VN[tier].toLowerCase(Locale.ROOT); + map.put(tier, GTCEu.id("block/casings/voltage/" + vn)); + } + map.defaultReturnValue(GTCEu.id("block/casings/voltage/lv")); + }); + public static final ResourceLocation LP_STEAM_HULL_MODEL = GTCEu.id("block/casings/steam/bricked_bronze"); + public static final ResourceLocation HP_STEAM_HULL_MODEL = GTCEu.id("block/casings/steam/bricked_steel"); + + public static final ResourceLocation HATCH_PART_MODEL = GTCEu.id("block/machine/template/part/hatch_machine"); + public static final ResourceLocation HATCH_PART_COLOR_RING_MODEL = GTCEu.id("block/machine/template/part/hatch_machine_color_ring"); + public static final ResourceLocation HATCH_PART_EMISSIVE_MODEL = GTCEu.id("block/machine/template/part/hatch_machine_emissive"); + public static final ResourceLocation HATCH_PART_EMISSIVE_COLOR_RING_MODEL = GTCEu.id("block/machine/template/part/hatch_machine_emissive_color_ring"); + // spotless:on + + // region generic models + + public static MachineBuilder.ModelInitializer createBasicMachineModel(ResourceLocation baseModel) { + return (ctx, prov, builder) -> { + var model = prov.models().getExistingFile(baseModel); + builder.forAllStatesModels(state -> model); + }; + } + + public static MachineBuilder.ModelInitializer createBasicReplaceableTextureMachineModel(ResourceLocation baseModel) { + return (ctx, prov, builder) -> { + var model = prov.models().getExistingFile(baseModel); + builder.forAllStatesModels(state -> model); + builder.addReplaceableTextures("bottom", "top", "side"); + }; + } + + public static MachineBuilder.ModelInitializer createTieredHullMachineModel(ResourceLocation parentModel) { + return (ctx, prov, builder) -> { + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(parentModel)); + tieredHullTextures(model, builder.getOwner().getTier()); + + builder.forAllStatesModels(state -> model); + }; + } + + public static MachineBuilder.ModelInitializer createOverlayTieredHullMachineModel(ResourceLocation overlayModel) { + return (ctx, prov, builder) -> { + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(overlayModel)); + tieredHullTextures(model, builder.getOwner().getTier()); + builder.forAllStatesModels(state -> model); + + builder.addReplaceableTextures("bottom", "top", "side"); + }; + } + + public static MachineBuilder.ModelInitializer createOverlayCasingMachineModel(ResourceLocation baseCasingTexture, + ResourceLocation overlayModel) { + return (ctx, prov, builder) -> { + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(overlayModel)); + model.texture("all", baseCasingTexture); + + builder.forAllStatesModels(state -> model); + builder.addReplaceableTextures("all"); + }; + } + + public static MachineBuilder.ModelInitializer createColorOverlayTieredHullMachineModel(ResourceLocation overlay, + @Nullable ResourceLocation pipeOverlay, + @Nullable ResourceLocation emissiveOverlay) { + return (ctx, prov, builder) -> { + builder.forAllStatesModels(state -> { + BlockModelBuilder model = colorOverlayHullModel(overlay, pipeOverlay, emissiveOverlay, state, + prov.models()); + return tieredHullTextures(model, builder.getOwner().getTier()); + }); + + builder.addReplaceableTextures("bottom", "top", "side"); + }; + } + + public static MachineBuilder.ModelInitializer createSingleOverlayTieredHullMachineModel(ResourceLocation overlayTexture, + ResourceLocation emissiveOverlayTexture) { + return (ctx, prov, builder) -> { + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(SIDED_SINGLE_OVERLAY_MODEL)) + .texture("overlay", overlayTexture) + .texture("overlay_emissive", emissiveOverlayTexture); + tieredHullTextures(model, builder.getOwner().getTier()); + builder.forAllStatesModels(state -> model); + + builder.addReplaceableTextures("bottom", "top", "side"); + }; + } + + public static MachineBuilder.ModelInitializer createWorkableTieredHullMachineModel(ResourceLocation overlayDir) { + return (ctx, prov, builder) -> { + WorkableOverlays overlays = WorkableOverlays.get(overlayDir, prov.getExistingFileHelper()); + + builder.forAllStates(state -> { + RecipeLogic.Status status = state.getValue(RECIPE_LOGIC_STATUS); + + BlockModelBuilder model = prov.models().nested().parent(tieredHullModel(prov.models(), builder)); + return addWorkableOverlays(overlays, status, model); + }); + }; + } + + public static MachineBuilder.ModelInitializer createOverlaySteamHullMachineModel(ResourceLocation overlayModel) { + return (ctx, prov, builder) -> { + builder.forAllStatesModels(state -> { + boolean steel = state.getOptionalValue(IS_STEEL_MACHINE).orElse(false); + + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(overlayModel)); + steamCasingTextures(model, steel); + return model; + }); + + builder.addReplaceableTextures("bottom", "top", "side"); + }; + } + + public static MachineBuilder.ModelInitializer createColorOverlaySteamHullMachineModel(ResourceLocation overlay, + @Nullable ResourceLocation pipeOverlay, + @Nullable ResourceLocation emissiveOverlay) { + return (ctx, prov, builder) -> { + builder.forAllStatesModels(state -> { + BlockModelBuilder model = colorOverlayHullModel(overlay, pipeOverlay, emissiveOverlay, state, + prov.models()); + steamCasingTextures(model, state.getOptionalValue(IS_STEEL_MACHINE).orElse(false)); + return model; + }); + + builder.addReplaceableTextures("bottom", "top", "side"); + }; + } + + public static final ResourceLocation VENT_OVERLAY = GTCEu.id("block/overlay/machine/overlay_steam_vent"); + + // spotless:off + public static MachineBuilder.ModelInitializer createWorkableSteamHullMachineModel(boolean highPressure, ResourceLocation overlayDir) { + return (ctx, prov, builder) -> { + WorkableOverlays overlays = WorkableOverlays.get(overlayDir, prov.getExistingFileHelper()); + ModelFile parent = steamHullModel(prov.models(), highPressure); + + makeWorkableOverlayPart(prov.models(), builder, parent, overlays, RecipeLogic.Status.IDLE); + makeWorkableOverlayPart(prov.models(), builder, parent, overlays, RecipeLogic.Status.WORKING); + makeWorkableOverlayPart(prov.models(), builder, parent, overlays, RecipeLogic.Status.WAITING); + makeWorkableOverlayPart(prov.models(), builder, parent, overlays, RecipeLogic.Status.SUSPEND); + + if (!builder.getOwner().defaultRenderState().hasProperty(VENT_DIRECTION)) { + return; + } + + for (RelativeDirection relative : RelativeDirection.VALUES) { + Direction dir = relative.global; + builder.part().modelFile(prov.models().getExistingFile(VENT_OVERLAY)) + .rotationX(dir == Direction.DOWN ? 90 : dir == Direction.UP ? 270 : 0) + .rotationY(dir.getAxis().isVertical() ? 0 : ((int) dir.toYRot() + 180) % 360) + .addModel() + .condition(VENT_DIRECTION, relative); + } + }; + } + // spotless:on + + private static void makeWorkableOverlayPart(BlockModelProvider models, + MachineModelBuilder builder, ModelFile parentModel, + WorkableOverlays overlays, RecipeLogic.Status status) { + BlockModelBuilder model = models.nested().parent(parentModel); + addWorkableOverlays(overlays, status, model); + builder.part(model).condition(RECIPE_LOGIC_STATUS, status); + } + + public static MachineBuilder.ModelInitializer createWorkableCasingMachineModel(ResourceLocation baseCasingTexture, + ResourceLocation overlayDir) { + return (ctx, prov, builder) -> { + WorkableOverlays overlays = WorkableOverlays.get(overlayDir, prov.getExistingFileHelper()); + + builder.forAllStates(state -> { + RecipeLogic.Status status = state.getValue(RECIPE_LOGIC_STATUS); + + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(CUBE_ALL_SIDED_OVERLAY_MODEL)) + .texture("all", baseCasingTexture); + return addWorkableOverlays(overlays, status, model); + }); + builder.addTextureOverride("all", baseCasingTexture); + }; + } + + // spotless:off + public static MachineBuilder.ModelInitializer createSidedOverlayCasingMachineModel(ResourceLocation baseCasingTexture, + ResourceLocation overlayModel) { + return (ctx, prov, builder) -> { + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(overlayModel)); + casingTextures(model, baseCasingTexture); + builder.forAllStatesModels(state -> model); + + builder.addReplaceableTextures("bottom", "top", "side"); + }; + } + + public static MachineBuilder.ModelInitializer createSidedWorkableCasingMachineModel(ResourceLocation baseCasingTexture, + ResourceLocation overlayDir) { + return (ctx, prov, builder) -> { + WorkableOverlays overlays = WorkableOverlays.get(overlayDir, prov.getExistingFileHelper()); + + builder.forAllStates(state -> { + RecipeLogic.Status status = state.getValue(RECIPE_LOGIC_STATUS); + + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(SIDED_SIDED_OVERLAY_MODEL)); + casingTextures(model, baseCasingTexture); + return addWorkableOverlays(overlays, status, model); + }); + + var texturePath = baseCasingTexture; + if (!texturePath.getPath().endsWith("/")) { + texturePath = texturePath.withSuffix("/"); + } + builder.addTextureOverride("bottom", texturePath.withSuffix("bottom")); + builder.addTextureOverride("top", texturePath.withSuffix("top")); + builder.addTextureOverride("side", texturePath.withSuffix("side")); + }; + } + + // endregion + + // region per-machine models + + // spotless:off + public static final String OVERLAY_FLUID_HATCH_TEX = "overlay_fluid_hatch"; + public static final String OVERLAY_FLUID_HATCH_HALF_PX_TEX = "overlay_fluid_hatch_half_px_out"; + public static final String OVERLAY_ITEM_HATCH = "overlay_item_hatch"; + // spotless:on + + public static final ResourceLocation GENERATOR_MODEL = GTCEu.id("block/machine/template/generator_machine"); + + public static MachineBuilder.ModelInitializer createSimpleGeneratorModel(ResourceLocation overlayDir) { + return (ctx, prov, builder) -> { + WorkableOverlays overlays = WorkableOverlays.get(overlayDir, prov.getExistingFileHelper()); + + builder.forAllStatesModels(state -> { + RecipeLogic.Status status = state.getValue(RECIPE_LOGIC_STATUS); + + BlockModelBuilder model = prov.models().nested().parent(prov.models().getExistingFile(GENERATOR_MODEL)); + tieredHullTextures(model, builder.getOwner().getTier()); + addWorkableOverlays(overlays, status, model); + + return model; + }); + }; + } + + public static MachineBuilder.ModelInitializer createBatteryBufferModel(int inventorySize) { + return (ctx, prov, builder) -> { + var overlay = OUT_OVERLAYS_FOR_AMP.get(inventorySize); + + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(TRANSFORMER_LIKE)) + .texture("overlay_in_io", overlay.getIoPart()) + .texture("overlay_in_tinted", overlay.getTintedPart()) + .texture("overlay_out_io", BLANK_TEXTURE); + tieredHullTextures(model, builder.getOwner().getTier()); + + builder.forAllStatesModels(state -> model); + }; + } + + // spotless:off + public static final ResourceLocation CHARGER_IDLE = GTCEu.id("block/machines/charger/overlay_charger_idle"); + public static final ResourceLocation CHARGER_RUNNING = GTCEu.id("block/machines/charger/overlay_charger_running"); + public static final ResourceLocation CHARGER_RUNNING_EMISSIVE = GTCEu.id("block/machines/charger/overlay_charger_running_emissive"); + public static final ResourceLocation CHARGER_FINISHED = GTCEu.id("block/machines/charger/overlay_charger_finished"); + public static final ResourceLocation CHARGER_FINISHED_EMISSIVE = GTCEu.id("block/machines/charger/overlay_charger_finished_emissive"); + + public static MachineBuilder.ModelInitializer createChargerModel() { + return (ctx, prov, builder) -> { + builder.forAllStatesModels(renderState -> { + ChargerMachine.State state = renderState.getValue(CHARGER_STATE); + + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(SIDED_SIDED_OVERLAY_MODEL)); + tieredHullTextures(model, builder.getOwner().getTier()); + + switch (state) { + case IDLE -> { + model.texture("overlay_front", CHARGER_IDLE); + } + case RUNNING -> { + model.texture("overlay_front", CHARGER_RUNNING); + model.texture("overlay_front_emissive", CHARGER_RUNNING_EMISSIVE); + } + case FINISHED -> { + model.texture("overlay_front", CHARGER_FINISHED); + model.texture("overlay_front_emissive", CHARGER_FINISHED_EMISSIVE); + } + } + return model; + }); + }; + } + // spotless:on + + public static final ResourceLocation TRANSFORMER_LIKE = GTCEu.id("block/machine/template/transformer_like_machine"); + + public static final ResourceLocation CONVERTER_FE_IN = GTCEu.id("block/overlay/converter/converter_native_in"); + public static final ResourceLocation CONVERTER_FE_OUT = GTCEu.id("block/overlay/converter/converter_native_out"); + + public static final ResourceLocation CONVERTER_FE_IN_EMISSIVE = GTCEu + .id("block/overlay/converter/converter_native_in_emissive"); + public static final ResourceLocation CONVERTER_FE_OUT_EMISSIVE = GTCEu + .id("block/overlay/converter/converter_native_out_emissive"); + + public static MachineBuilder.ModelInitializer createConverterModel(int amperage) { + return (ctx, prov, builder) -> { + final EnergyIOOverlay energyIn = IN_OVERLAYS_FOR_AMP.get(amperage); + final EnergyIOOverlay energyOut = OUT_OVERLAYS_FOR_AMP.get(amperage); + + BlockModelBuilder euToFeModel = prov.models().nested() + .parent(prov.models().getExistingFile(TRANSFORMER_LIKE)) + .texture("overlay_in_io", energyIn.getIoPart()) + .texture("overlay_in_tinted", energyIn.getTintedPart()) + .texture("overlay_in_io_emissive", energyIn.getIoPartEmissive()) + .texture("overlay_out_io_emissive", CONVERTER_FE_OUT_EMISSIVE) + .texture("overlay_out_io", CONVERTER_FE_OUT); + tieredHullTextures(euToFeModel, builder.getOwner().getTier()); + + BlockModelBuilder feToEuModel = prov.models().nested() + .parent(prov.models().getExistingFile(TRANSFORMER_LIKE)) + .texture("overlay_in_io", energyOut.getIoPart()) + .texture("overlay_in_tinted", energyOut.getTintedPart()) + .texture("overlay_in_io_emissive", energyOut.getIoPartEmissive()) + .texture("overlay_out_io_emissive", CONVERTER_FE_IN_EMISSIVE) + .texture("overlay_out_io", CONVERTER_FE_IN); + tieredHullTextures(feToEuModel, builder.getOwner().getTier()); + + builder.partialState() + .with(IS_FE_TO_EU, false) + .setModel(euToFeModel) + .partialState() + .with(IS_FE_TO_EU, true) + .setModel(feToEuModel) + .end(); + }; + } + + public static MachineBuilder.ModelInitializer createCrateModel(boolean wooden) { + return (ctx, prov, builder) -> { + String modelPath = "block/machine/template/crate/" + (wooden ? "wooden" : "metal") + "_crate"; + ModelFile baseModel = prov.models().getExistingFile(GTCEu.id(modelPath)); + ModelFile tapedModel = prov.models().getExistingFile(GTCEu.id(modelPath + "_taped")); + + builder.forAllStatesModels(state -> { + if (state.getOptionalValue(IS_TAPED).orElse(false)) { + return tapedModel; + } else { + return baseModel; + } + }); + }; + } + + public static MachineBuilder.ModelInitializer createDiodeModel() { + return (ctx, prov, builder) -> { + builder.forAllStatesModels(renderState -> { + DiodePartMachine.AmpMode mode = renderState.getValue(DIODE_AMP_MODE); + final EnergyIOOverlay energyIn = IN_OVERLAYS_FOR_AMP.get(mode.getAmpValue()); + final EnergyIOOverlay energyOut = OUT_OVERLAYS_FOR_AMP.get(mode.getAmpValue()); + + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(TRANSFORMER_LIKE)) + .texture("overlay_in_io_emissive", energyIn.getIoPartEmissive()) + .texture("overlay_in_io", energyIn.getIoPart()) + .texture("overlay_in_tinted", energyIn.getTintedPart()) + .texture("overlay_out_io_emissive", energyOut.getIoPartEmissive()) + .texture("overlay_out_io", energyOut.getIoPart()) + .texture("overlay_out_tinted", energyOut.getTintedPart()); + tieredHullTextures(model, builder.getOwner().getTier()); + return model; + }); + + builder.addReplaceableTextures("bottom", "top", "side"); + }; + } + + public static MachineBuilder.ModelInitializer createTransformerModel(int baseAmp) { + return (ctx, prov, builder) -> { + builder.forAllStatesModels(renderState -> { + boolean transformUp = renderState.getValue(IS_TRANSFORM_UP); + EnergyIOOverlay frontFace = (transformUp ? OUT_OVERLAYS_FOR_AMP : IN_OVERLAYS_FOR_AMP) + .get(baseAmp); + EnergyIOOverlay otherFace = (transformUp ? IN_OVERLAYS_FOR_AMP : OUT_OVERLAYS_FOR_AMP) + .get(baseAmp * 4); + + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(TRANSFORMER_LIKE)) + .texture("overlay_in_io", frontFace.getIoPart()) + .texture("overlay_in_io_emissive", frontFace.getIoPartEmissive()) + .texture("overlay_in_tinted", frontFace.getTintedPart()) + .texture("overlay_out_io_emissive", otherFace.getIoPartEmissive()) + .texture("overlay_out_tinted", otherFace.getTintedPart()); + tieredHullTextures(model, builder.getOwner().getTier()); + return model; + }); + }; + } + + // spotless:off + public static final ResourceLocation ROTOR_HOLDER_BLOCK = GTCEu.id("block/machine/template/rotor_holder/block"); + public static final ResourceLocation ROTOR_HOLDER_OVERLAY = GTCEu.id("block/machine/template/rotor_holder/overlay"); + public static final ResourceLocation ROTOR_HOLDER_ROTOR_IDLE = GTCEu.id("block/machine/template/rotor_holder/rotor_idle"); + public static final ResourceLocation ROTOR_HOLDER_ROTOR_SPINNING = GTCEu.id("block/machine/template/rotor_holder/rotor_spinning"); + // spotless:on + + public static MachineBuilder.ModelInitializer createRotorHolderModel() { + return (ctx, prov, builder) -> { + BlockModelProvider models = prov.models(); + var blockModel = prov.models().nested() + .parent(prov.models().getExistingFile(ROTOR_HOLDER_BLOCK)); + tieredHullTextures(blockModel, builder.getOwner().getTier()); + + builder.part(blockModel).end(); + builder.part(ROTOR_HOLDER_OVERLAY).condition(IS_FORMED, true).end(); + + makeRotorHolderState(builder, models, ROTOR_HOLDER_ROTOR_IDLE, false, false); + makeRotorHolderState(builder, models, ROTOR_HOLDER_ROTOR_IDLE.withSuffix(EMISSIVE_SUFFIX), false, true); + makeRotorHolderState(builder, models, ROTOR_HOLDER_ROTOR_SPINNING, true, false); + makeRotorHolderState(builder, models, ROTOR_HOLDER_ROTOR_SPINNING.withSuffix(EMISSIVE_SUFFIX), true, true); + + builder.addReplaceableTextures("bottom", "top", "side"); + }; + } + + private static void makeRotorHolderState(MachineModelBuilder builder, + BlockModelProvider provider, ResourceLocation model, + boolean spinning, boolean emissive) { + builder.partialState() + .with(IS_FORMED, true) + .with(HAS_ROTOR, true) + .with(IS_ROTOR_SPINNING, spinning) + .with(IS_EMISSIVE_ROTOR, emissive) + .setModel(provider.getExistingFile(model)); + } + + public static final ImmutableMap MATERIALS_TO_CASING_TEXTURES = Util.make(() -> { + ImmutableMap.Builder builder = ImmutableMap.builder(); + builder.put(GTMaterials.Bronze, GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks")); + builder.put(GTMaterials.Invar, GTCEu.id("block/casings/solid/machine_casing_heatproof")); + builder.put(GTMaterials.Aluminium, GTCEu.id("block/casings/solid/machine_casing_frost_proof")); + builder.put(GTMaterials.Steel, GTCEu.id("block/casings/solid/machine_casing_solid_steel")); + builder.put(GTMaterials.StainlessSteel, GTCEu.id("block/casings/solid/machine_casing_clean_stainless_steel")); + builder.put(GTMaterials.Titanium, GTCEu.id("block/casings/solid/machine_casing_stable_titanium")); + builder.put(GTMaterials.TungstenSteel, GTCEu.id("block/casings/solid/machine_casing_robust_tungstensteel")); + builder.put(GTMaterials.Polytetrafluoroethylene, GTCEu.id("block/casings/solid/machine_casing_inert_ptfe")); + builder.put(GTMaterials.HSSE, GTCEu.id("block/casings/solid/machine_casing_sturdy_hsse")); + + return builder.build(); + }); + + // spotless:off + public static MachineBuilder.ModelInitializer createWorldAcceleratorModel(ResourceLocation beModeModelPath, ResourceLocation rtModeModelPath) { + return (ctx, prov, builder) -> { + WorkableOverlays rtOverlays = WorkableOverlays.get(rtModeModelPath, prov.getExistingFileHelper()); + WorkableOverlays beOverlays = WorkableOverlays.get(beModeModelPath, prov.getExistingFileHelper()); + + builder.forAllStates(state -> { + boolean rtMode = state.getValue(IS_RANDOM_TICK_MODE); + WorkableOverlays overlays = rtMode ? rtOverlays : beOverlays; + + boolean active = state.getValue(IS_ACTIVE); + boolean workingEnabled = state.getValue(IS_WORKING_ENABLED); + RecipeLogic.Status status = active ? + workingEnabled ? + RecipeLogic.Status.WORKING : + RecipeLogic.Status.SUSPEND : + RecipeLogic.Status.IDLE; + + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(SIDED_SIDED_OVERLAY_MODEL)); + tieredHullTextures(model, builder.getOwner().getTier()); + + return addWorkableOverlays(overlays, status, model); + }); + }; + } + + public static final ResourceLocation MAINTENANCE_TAPED_OVERLAY = GTCEu.id("block/overlay/machine/overlay_maintenance_taped"); + // spotless:on + + public static MachineBuilder.ModelInitializer createMaintenanceModel(ResourceLocation overlayModel) { + return (ctx, prov, builder) -> { + builder.forAllStatesModels(state -> { + var baseModel = prov.models().nested() + .parent(prov.models().getExistingFile(overlayModel)); + tieredHullTextures(baseModel, builder.getOwner().getTier()); + + if (state.getValue(IS_TAPED)) { + baseModel.texture("overlay_2", MAINTENANCE_TAPED_OVERLAY); + } + return baseModel; + }); + + builder.addReplaceableTextures("bottom", "top", "side"); + }; + } + + // spotless:off + public static final ResourceLocation HPCA_PART_MODEL = GTCEu.id("block/machine/template/part/hpca_part_machine"); + public static final ResourceLocation COMPUTER_CASING_TEXTURE = GTCEu.id("block/casings/hpca/computer_casing/"); + public static final ResourceLocation ADVANCED_COMPUTER_CASING_TEXTURE = GTCEu.id("block/casings/hpca/advanced_computer_casing/"); + + public static MachineBuilder.ModelInitializer createHPCAPartModel(boolean advanced, + ResourceLocation normalTexture, + ResourceLocation damagedTexture) { + return (ctx, prov, builder) -> { + ResourceLocation textures = advanced ? ADVANCED_COMPUTER_CASING_TEXTURE : COMPUTER_CASING_TEXTURE; + HPCAOverlay overlay = HPCAOverlay.get(normalTexture, damagedTexture, prov.getExistingFileHelper()); + + var baseModel = prov.models().withExistingParent(ctx.getName() + "_base", HPCA_PART_MODEL); + casingTexture(baseModel, "bottom", textures); + casingTexture(baseModel, "top", textures); + casingTexture(baseModel, "front", textures); + casingTexture(baseModel, "back", textures); + casingTexture(baseModel, "side", textures); + + builder.forAllStatesModels(state -> { + boolean damaged = state.getValue(IS_HPCA_PART_DAMAGED); + boolean active = state.getValue(IS_ACTIVE); + + return prov.models().nested().parent(baseModel) + .texture("overlay", overlay.getTexture(active, damaged)) + .texture("overlay_emissive", overlay.getEmissiveTexture(active, damaged)); + }); + }; + } + + public static final ResourceLocation OVERLAY_SCREEN_TEXTURE = GTCEu.id("block/overlay/machine/overlay_screen"); + public static final ResourceLocation OVERLAY_QTANK_EMISSIVE_TEXTURE = GTCEu.id("block/overlay/machine/overlay_qtank_emissive"); + + public static MachineBuilder.ModelInitializer createFisherModel() { + return (ctx, prov, builder) -> { + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(GTCEu.id("block/overlay/2_layer/top_emissive"))) + .texture("overlay", OVERLAY_SCREEN_TEXTURE) + .texture("overlay_emissive", OVERLAY_QTANK_EMISSIVE_TEXTURE); + tieredHullTextures(model, builder.getOwner().getTier()); + + builder.forAllStatesModels(state -> model); + }; + } + + public static MachineBuilder.ModelInitializer createItemCollectorModel(ResourceLocation overlayDir) { + return (ctx, prov, builder) -> { + WorkableOverlays overlays = WorkableOverlays.get(overlayDir, prov.getExistingFileHelper()); + + builder.forAllStates(state -> { + boolean active = state.getValue(IS_ACTIVE); + boolean workingEnabled = state.getValue(IS_WORKING_ENABLED); + RecipeLogic.Status status = active ? + workingEnabled ? + RecipeLogic.Status.WORKING : + RecipeLogic.Status.SUSPEND : + RecipeLogic.Status.IDLE; + + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(SIDED_SIDED_OVERLAY_MODEL)); + tieredHullTextures(model, builder.getOwner().getTier()); + + return addWorkableOverlays(overlays, status, model); + }); + }; + } + + // endregion + + // region helper functions + + public static NonNullBiConsumer, GTBlockstateProvider> createMachineModel(MachineBuilder.ModelInitializer modelInitializer) { + return (ctx, prov) -> { + Block block = ctx.getEntry(); + if (!(block instanceof IMachineBlock machineBlock)) { + throw new IllegalArgumentException( + "passed block must be a machine block, is " + block.getClass().getName()); + } + MachineDefinition definition = machineBlock.getDefinition(); + + String modelLocation = ctx.getId().withPrefix("block/machine/").toString(); + MachineModelBuilder builder = prov.models().getBuilder(modelLocation) + .customLoader(MachineModelBuilder.begin(definition)); + modelInitializer.configureModel(ctx, prov, builder); + final BlockModelBuilder model = builder.end(); + model.parent(prov.models().getExistingFile(prov.mcLoc("block/block"))); + + var generator = prov.multiVariantGenerator(block, + Variant.variant().with(VariantProperties.MODEL, model.getLocation())); + PropertyDispatch dispatch = GTBlockstateProvider.createFacingDispatch(definition); + if (dispatch != null) { + generator.with(dispatch); + } + }; + } + // spotless:on + + public static ConfiguredModel[] addWorkableOverlays(WorkableOverlays overlays, RecipeLogic.Status status, + BlockModelBuilder model) { + for (var entry : overlays.getTextures().entrySet()) { + var face = entry.getKey(); + var textures = entry.getValue(); + + ResourceLocation overlay = textures.getTexture(status); + ResourceLocation overlayEmissive = textures.getEmissiveTexture(status); + + if (overlay != BLANK_TEXTURE) { + model.texture(OVERLAY_PREFIX + face.getName(), overlay); + } + if (overlayEmissive != BLANK_TEXTURE) { + model.texture(OVERLAY_PREFIX + face.getName() + EMISSIVE_SUFFIX, overlayEmissive); + } + } + return ConfiguredModel.builder().modelFile(model).build(); + } + + public static BlockModelBuilder colorOverlayHullModel(ResourceLocation overlay, + @Nullable ResourceLocation pipeOverlay, + @Nullable ResourceLocation emissiveOverlay, + MachineRenderState state, BlockModelProvider models) { + ResourceLocation parent; + if (state.getOptionalValue(IS_PAINTED).orElse(false)) { + parent = emissiveOverlay != null ? HATCH_PART_EMISSIVE_COLOR_RING_MODEL : HATCH_PART_COLOR_RING_MODEL; + } else { + parent = emissiveOverlay != null ? HATCH_PART_EMISSIVE_MODEL : HATCH_PART_MODEL; + } + BlockModelBuilder model = models.nested().parent(models.getExistingFile(parent)) + .texture("overlay", overlay); + if (emissiveOverlay != null) { + model.texture("overlay_emissive", emissiveOverlay); + } + if (pipeOverlay != null) { + model.texture("overlay_pipe", pipeOverlay); + } + return model; + } + + public static ModelFile tieredHullModel(BlockModelProvider models, + MachineModelBuilder builder) { + return tieredHullModel(models, builder.getOwner().getTier()); + } + + public static ModelFile tieredHullModel(BlockModelProvider models, int tier) { + return models.getExistingFile(TIERED_HULL_MODELS.get(tier)); + } + + public static ModelFile steamHullModel(BlockModelProvider models, boolean highPressure) { + return models.getExistingFile(highPressure ? HP_STEAM_HULL_MODEL : LP_STEAM_HULL_MODEL); + } + + public static ResourceLocation getTieredHullTexture(int tier) { + return GTCEu.id("block/casings/voltage/%s/".formatted(GTValues.VN[tier].toLowerCase(Locale.ROOT))); + } + + public static BlockModelBuilder tieredHullTextures(BlockModelBuilder model, int tier) { + return casingTextures(model, getTieredHullTexture(tier)); + } + + public static ResourceLocation getSteamCasingTexture(boolean steel) { + return GTCEu.id("block/casings/steam/%s/".formatted(steel ? "steel" : "bronze")); + } + + public static BlockModelBuilder steamCasingTextures(BlockModelBuilder model, boolean steel) { + return casingTextures(model, getSteamCasingTexture(steel)); + } + + public static void casingTexture(BlockModelBuilder model, String key, ResourceLocation texturePath) { + model.texture(key, texturePath.withSuffix(key)); + } + + public static BlockModelBuilder casingTextures(BlockModelBuilder model, ResourceLocation texturePath) { + if (!texturePath.getPath().endsWith("/")) { + texturePath = texturePath.withSuffix("/"); + } + casingTexture(model, "bottom", texturePath); + casingTexture(model, "top", texturePath); + casingTexture(model, "side", texturePath); + return model; + } + + // endregion +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/models/GTModels.java b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTModels.java new file mode 100644 index 00000000000..c33890e76d7 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTModels.java @@ -0,0 +1,332 @@ +package com.gregtechceu.gtceu.common.data.models; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.GTCEuAPI; +import com.gregtechceu.gtceu.api.block.*; +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; +import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; +import com.gregtechceu.gtceu.api.fluids.GTFluid; +import com.gregtechceu.gtceu.api.fluids.store.FluidStorage; +import com.gregtechceu.gtceu.api.fluids.store.FluidStorageKey; +import com.gregtechceu.gtceu.api.machine.multiblock.IBatteryData; +import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; +import com.gregtechceu.gtceu.common.block.*; +import com.gregtechceu.gtceu.core.MixinHelpers; +import com.gregtechceu.gtceu.data.pack.GTDynamicResourcePack; + +import net.minecraft.client.Minecraft; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.GsonHelper; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.material.Fluid; +import net.minecraftforge.client.model.generators.*; + +import com.google.gson.JsonObject; +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 java.io.BufferedReader; +import java.io.IOException; + +public class GTModels { + + public static final ResourceLocation BLANK_TEXTURE = GTCEu.id("block/void"); + + // region BLOCK MODELS + + public static NonNullBiConsumer, GTBlockstateProvider> createModelBlockState(ResourceLocation modelLocation) { + return (ctx, prov) -> { + prov.simpleBlock(ctx.getEntry(), prov.models().getExistingFile(modelLocation)); + }; + } + + public static void createCrossBlockState(DataGenContext ctx, + RegistrateBlockstateProvider prov) { + prov.simpleBlock(ctx.getEntry(), prov.models().cross(ctx.getName(), prov.blockTexture(ctx.getEntry()))); + } + + public static < + T extends Item> NonNullBiConsumer, RegistrateItemModelProvider> overrideModel(ResourceLocation predicate, + int modelNumber) { + if (modelNumber <= 0) return NonNullBiConsumer.noop(); + return (ctx, prov) -> { + var rootModel = prov.generated(ctx::getEntry, prov.modLoc("item/%s/1".formatted(prov.name(ctx)))); + for (int i = 0; i < modelNumber; i++) { + var subModelBuilder = prov.getBuilder("item/" + prov.name(ctx::getEntry) + "/" + i) + .parent(new ModelFile.UncheckedModelFile("item/generated")); + subModelBuilder.texture("layer0", prov.modLoc("item/%s/%d".formatted(prov.name(ctx), i + 1))); + + rootModel = rootModel.override().predicate(predicate, i / 100f) + .model(new ModelFile.UncheckedModelFile(prov.modLoc("item/%s/%d".formatted(prov.name(ctx), i)))) + .end(); + } + }; + } + + public static void createTextureModel(DataGenContext ctx, RegistrateItemModelProvider prov, + ResourceLocation texture) { + prov.generated(ctx, texture); + } + + public static void rubberTreeSaplingModel(DataGenContext context, + RegistrateItemModelProvider provider) { + provider.generated(context, provider.modLoc("block/" + provider.name(context))); + } + + public static NonNullBiConsumer, RegistrateBlockstateProvider> lampModel(DyeColor color, + boolean border) { + return (ctx, prov) -> { + final String borderPart = (border ? "" : "_borderless"); + ModelFile parentOn = prov.models().getExistingFile(prov.modLoc("block/lamp" + borderPart)); + ModelFile parentOff = prov.models().getExistingFile(prov.modLoc("block/lamp" + borderPart + "_off")); + + prov.getVariantBuilder(ctx.getEntry()) + .forAllStates(state -> { + if (state.getValue(LampBlock.LIGHT)) { + ModelBuilder model = prov.models() + .getBuilder(ctx.getName() + + (state.getValue(GTBlockStateProperties.BLOOM) ? "_bloom" : "")) + .parent(parentOn); + if (border) { + model.texture("active", "block/lamps/" + color.getName()); + if (state.getValue(GTBlockStateProperties.BLOOM)) { + model.texture("active_overlay", "block/lamps/" + color.getName() + "_emissive"); + } else { + model.texture("active_overlay", "block/lamps/" + color.getName()); + } + } else { + if (state.getValue(GTBlockStateProperties.BLOOM)) { + model.texture("active", + "block/lamps/" + color.getName() + "_borderless_emissive"); + } else { + model.texture("active", + "block/lamps/" + color.getName() + "_borderless"); + } + } + return ConfiguredModel.builder() + .modelFile(model) + .build(); + } else { + return ConfiguredModel.builder() + .modelFile(prov.models() + .getBuilder(ctx.getName() + "_off") + .parent(parentOff) + .texture("inactive", + "block/lamps/" + color.getName() + "_off" + borderPart)) + .build(); + } + }); + }; + } + + public static NonNullBiConsumer, RegistrateBlockstateProvider> randomRotatedModel(ResourceLocation texturePath) { + return (ctx, prov) -> { + Block block = ctx.getEntry(); + ModelFile cubeAll = prov.models().cubeAll(ctx.getName(), texturePath); + ModelFile cubeMirroredAll = prov.models().singleTexture(ctx.getName() + "_mirrored", + prov.mcLoc(ModelProvider.BLOCK_FOLDER + "/cube_mirrored_all"), "all", texturePath); + ConfiguredModel[] models = ConfiguredModel.builder() + .modelFile(cubeAll) + .rotationY(0) + .nextModel() + .modelFile(cubeAll) + .rotationY(180) + .nextModel() + .modelFile(cubeMirroredAll) + .rotationY(0) + .nextModel() + .modelFile(cubeMirroredAll) + .rotationY(180) + .build(); + prov.simpleBlock(block, models); + }; + } + + public static NonNullBiConsumer, RegistrateBlockstateProvider> createSidedCasingModel(ResourceLocation texture) { + return (ctx, prov) -> { + prov.simpleBlock(ctx.getEntry(), prov.models().cubeBottomTop(ctx.getName(), + texture.withSuffix("/side"), + texture.withSuffix("/bottom"), + texture.withSuffix("/top"))); + }; + } + + public static NonNullBiConsumer, GTBlockstateProvider> cubeAllModel(ResourceLocation texture) { + return (ctx, prov) -> { + prov.simpleBlock(ctx.getEntry(), prov.models().cubeAll(ctx.getName(), texture)); + }; + } + + public static NonNullBiConsumer, RegistrateBlockstateProvider> createMachineCasingModel(String tierName) { + return (ctx, prov) -> { + prov.simpleBlock(ctx.getEntry(), + prov.models() + .withExistingParent("%s_machine_casing".formatted(tierName), + GTCEu.id("block/cube/tinted/bottom_top")) + .texture("bottom", GTCEu.id("block/casings/voltage/%s/bottom".formatted(tierName))) + .texture("top", GTCEu.id("block/casings/voltage/%s/top".formatted(tierName))) + .texture("side", GTCEu.id("block/casings/voltage/%s/side".formatted(tierName)))); + }; + } + + public static NonNullBiConsumer, RegistrateBlockstateProvider> createHermeticCasingModel(String tierName) { + return (ctx, prov) -> { + prov.simpleBlock(ctx.getEntry(), prov.models() + .withExistingParent("%s_hermetic_casing".formatted(tierName), GTCEu.id("block/hermetic_casing")) + .texture("bot_bottom", GTCEu.id("block/casings/voltage/%s/bottom".formatted(tierName))) + .texture("bot_top", GTCEu.id("block/casings/voltage/%s/top".formatted(tierName))) + .texture("bot_side", GTCEu.id("block/casings/voltage/%s/side".formatted(tierName)))); + }; + } + + public static NonNullBiConsumer, RegistrateBlockstateProvider> createSteamCasingModel(String material) { + return (ctx, prov) -> { + prov.simpleBlock(ctx.getEntry(), prov.models().cubeBottomTop(ctx.getName(), + GTCEu.id("block/casings/steam/%s/side".formatted(material)), + GTCEu.id("block/casings/steam/%s/bottom".formatted(material)), + GTCEu.id("block/casings/steam/%s/top".formatted(material)))); + }; + } + + public static NonNullBiConsumer, RegistrateBlockstateProvider> createCoilModel(ICoilType coilType) { + return (ctx, prov) -> { + String name = ctx.getName(); + ActiveBlock block = ctx.getEntry(); + ModelFile inactive = prov.models().cubeAll(name, coilType.getTexture()); + ModelFile active = prov.models().withExistingParent(name + "_active", GTCEu.id("block/cube_2_layer/all")) + .texture("bot_all", coilType.getTexture()) + .texture("top_all", coilType.getTexture().withSuffix("_bloom")); + prov.getVariantBuilder(block) + .partialState().with(GTBlockStateProperties.ACTIVE, false).modelForState().modelFile(inactive) + .addModel() + .partialState().with(GTBlockStateProperties.ACTIVE, true).modelForState().modelFile(active) + .addModel(); + }; + } + + public static NonNullBiConsumer, RegistrateBlockstateProvider> createBatteryBlockModel(IBatteryData batteryData) { + return (ctx, prov) -> { + prov.simpleBlock(ctx.getEntry(), prov.models().cubeBottomTop(ctx.getName(), + GTCEu.id("block/casings/battery/" + batteryData.getBatteryName() + "/side"), + GTCEu.id("block/casings/battery/" + batteryData.getBatteryName() + "/top"), + GTCEu.id("block/casings/battery/" + batteryData.getBatteryName() + "/top"))); + }; + } + + public static NonNullBiConsumer, RegistrateBlockstateProvider> createFusionCasingModel(IFusionCasingType casingType) { + return (ctx, prov) -> { + String name = ctx.getName(); + ActiveBlock block = ctx.getEntry(); + ModelFile inactive = prov.models().cubeAll(name, casingType.getTexture()); + ModelFile active = prov.models().withExistingParent(name + "_active", GTCEu.id("block/cube_2_layer/all")) + .texture("bot_all", casingType.getTexture()) + .texture("top_all", new ResourceLocation(casingType.getTexture() + "_bloom")); + prov.getVariantBuilder(block) + .partialState().with(GTBlockStateProperties.ACTIVE, false).modelForState().modelFile(inactive) + .addModel() + .partialState().with(GTBlockStateProperties.ACTIVE, true).modelForState().modelFile(active) + .addModel(); + }; + } + + public static NonNullBiConsumer, RegistrateBlockstateProvider> createCleanroomFilterModel(IFilterType type) { + return (ctx, prov) -> { + prov.simpleBlock(ctx.getEntry(), prov.models() + .cubeAll(ctx.getName(), GTCEu.id("block/casings/cleanroom/" + type.getSerializedName()))); + }; + } + + public static NonNullBiConsumer, RegistrateBlockstateProvider> createActiveModel(ResourceLocation modelPath) { + return (ctx, prov) -> { + ActiveBlock block = ctx.getEntry(); + ModelFile inactive = prov.models().getExistingFile(modelPath); + ModelFile active = prov.models().getExistingFile(modelPath.withSuffix("_active")); + prov.getVariantBuilder(block) + .partialState().with(GTBlockStateProperties.ACTIVE, false).modelForState().modelFile(inactive) + .addModel() + .partialState().with(GTBlockStateProperties.ACTIVE, true).modelForState().modelFile(active) + .addModel(); + }; + } + + public static NonNullBiConsumer, RegistrateBlockstateProvider> createFireboxModel(BoilerFireboxType type) { + return (ctx, prov) -> { + String name = ctx.getName(); + ActiveBlock block = ctx.getEntry(); + ModelFile inactive = prov.models().cubeBottomTop(name, type.side(), type.bottom(), type.top()); + ModelFile active = prov.models().withExistingParent(name + "_active", GTCEu.id("block/fire_box_active")) + .texture("side", type.side()) + .texture("bottom", type.bottom()) + .texture("top", type.top()); + prov.getVariantBuilder(block) + .partialState().with(GTBlockStateProperties.ACTIVE, false) + .modelForState().modelFile(inactive).addModel() + .partialState().with(GTBlockStateProperties.ACTIVE, true) + .modelForState().modelFile(active).addModel(); + }; + } + + // endregion + + // region RUNTIME GEN + + /** + * register fluid models for materials + */ + public static void registerMaterialFluidModels() { + for (var material : GTCEuAPI.materialManager.getRegisteredMaterials()) { + var fluidProperty = material.getProperty(PropertyKey.FLUID); + if (fluidProperty == null) continue; + MaterialIconSet iconSet = material.getMaterialIconSet(); + + for (FluidStorageKey key : FluidStorageKey.allKeys()) { + FluidStorage storage = fluidProperty.getStorage(); + // fluid block models. + FluidStorage.FluidEntry fluidEntry = storage.getEntry(key); + if (fluidEntry != null && fluidEntry.getBuilder() != null) { + if (fluidEntry.getBuilder().still() == null) { + ResourceLocation foundTexture = key.getIconType().getBlockTexturePath(iconSet, false); + fluidEntry.getBuilder().still(foundTexture); + } + if (fluidEntry.getBuilder().flowing() == null) { + fluidEntry.getBuilder().flowing(fluidEntry.getBuilder().still()); + } + MixinHelpers.addFluidTexture(material, fluidEntry); + } + + // bucket models. + Fluid fluid = storage.get(key); + if (fluid instanceof GTFluid gtFluid) { + // read the base bucket model JSON + JsonObject original; + try (BufferedReader reader = Minecraft.getInstance().getResourceManager() + .openAsReader(GTCEu.id("models/item/bucket/bucket.json"))) { + original = GsonHelper.parse(reader, true); + } catch (IOException e) { + throw new RuntimeException(e); + } + + JsonObject newJson = original.deepCopy(); + newJson.addProperty("fluid", BuiltInRegistries.FLUID.getKey(gtFluid).toString()); + if (gtFluid.getFluidType().isLighterThanAir()) { + newJson.addProperty("flip_gas", true); + } + if (gtFluid.getFluidType().getLightLevel() > 0) { + newJson.addProperty("apply_fluid_luminosity", true); + } + + GTDynamicResourcePack.addItemModel(BuiltInRegistries.ITEM.getKey(gtFluid.getBucket()), newJson); + } + } + } + } + + // endregion +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/fluid/potion/BottleItemFluidHandler.java b/src/main/java/com/gregtechceu/gtceu/common/fluid/potion/BottleItemFluidHandler.java new file mode 100644 index 00000000000..536db05f0d1 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/fluid/potion/BottleItemFluidHandler.java @@ -0,0 +1,25 @@ +package com.gregtechceu.gtceu.common.fluid.potion; + +import com.gregtechceu.gtceu.api.misc.forge.FilteredFluidHandlerItemStackSimple; +import com.gregtechceu.gtceu.data.recipe.CustomTags; + +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.alchemy.PotionUtils; +import net.minecraftforge.fluids.FluidStack; + +import org.jetbrains.annotations.NotNull; + +public class BottleItemFluidHandler extends FilteredFluidHandlerItemStackSimple { + + public BottleItemFluidHandler(@NotNull ItemStack container) { + super(container, PotionFluidHelper.BOTTLE_AMOUNT, s -> s.getFluid().is(CustomTags.POTION_FLUIDS)); + } + + @Override + protected void setFluid(FluidStack fluid) { + if (!fluid.isEmpty()) { + container = PotionUtils.setPotion(new ItemStack(Items.POTION), PotionUtils.getPotion(fluid.getTag())); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/fluid/potion/PotionFluidHelper.java b/src/main/java/com/gregtechceu/gtceu/common/fluid/potion/PotionFluidHelper.java index 57fe115bb54..4b69bba7acd 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/fluid/potion/PotionFluidHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/common/fluid/potion/PotionFluidHelper.java @@ -2,7 +2,7 @@ import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; import com.gregtechceu.gtceu.common.data.GTFluids; -import com.gregtechceu.gtceu.core.mixins.StrictNBTIngredientAccessor; +import com.gregtechceu.gtceu.core.mixins.forge.StrictNBTIngredientAccessor; import com.gregtechceu.gtceu.utils.FormattingUtil; import com.gregtechceu.gtceu.utils.GTMath; @@ -37,7 +37,6 @@ import java.util.List; import java.util.Map; import java.util.function.Consumer; -import java.util.stream.Stream; public class PotionFluidHelper { @@ -60,7 +59,8 @@ public static FluidIngredient potionIngredient(Potion potion, int amount) { public static FluidIngredient getPotionFluidIngredientFrom(Ingredient potion, int amount) { if (potion instanceof StrictNBTIngredientAccessor strict) { - return FluidIngredient.of(Stream.of(GTFluids.POTION.get()), amount, strict.getStack().getTag()); + return FluidIngredient.fromValue(new FluidIngredient.FluidValue(GTFluids.POTION.get()), + amount, strict.getStack().getTag()); } List fluids = new ArrayList<>(); @@ -70,7 +70,7 @@ public static FluidIngredient getPotionFluidIngredientFrom(Ingredient potion, in fluids.add(fluidStack); } } - return FluidIngredient.of(fluids.toArray(FluidStack[]::new)); + return FluidIngredient.of(fluids); } public static FluidStack getFluidFromPotionItem(ItemStack stack, int amount) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/fluid/potion/PotionItemFluidHandler.java b/src/main/java/com/gregtechceu/gtceu/common/fluid/potion/PotionItemFluidHandler.java new file mode 100644 index 00000000000..21ea6b62ec4 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/fluid/potion/PotionItemFluidHandler.java @@ -0,0 +1,25 @@ +package com.gregtechceu.gtceu.common.fluid.potion; + +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.capability.templates.FluidHandlerItemStackSimple; + +import org.jetbrains.annotations.NotNull; + +public class PotionItemFluidHandler extends FluidHandlerItemStackSimple.SwapEmpty { + + public PotionItemFluidHandler(ItemStack potion) { + super(potion, new ItemStack(Items.GLASS_BOTTLE), PotionFluidHelper.BOTTLE_AMOUNT); + } + + @Override + protected void setFluid(FluidStack fluid) { + // no-op + } + + @Override + public @NotNull FluidStack getFluid() { + return PotionFluidHelper.getFluidFromPotionItem(getContainer(), PotionFluidHelper.BOTTLE_AMOUNT); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java index c0ffbc0b2a8..a445af5c425 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java @@ -1,13 +1,11 @@ package com.gregtechceu.gtceu.common.item; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.blockentity.IPaintable; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; -import com.gregtechceu.gtceu.api.blockentity.PipeBlockEntity; import com.gregtechceu.gtceu.api.item.component.IAddInformation; import com.gregtechceu.gtceu.api.item.component.IDurabilityBar; import com.gregtechceu.gtceu.api.item.component.IInteractionItem; +import com.gregtechceu.gtceu.api.pipenet.IPipeNode; import com.gregtechceu.gtceu.common.data.GTSoundEntries; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.data.recipe.CustomTags; @@ -42,24 +40,17 @@ import net.minecraftforge.common.Tags; import net.minecraftforge.common.util.TriPredicate; -import appeng.api.util.AECableType; import appeng.api.util.AEColor; import appeng.blockentity.networking.CableBusBlockEntity; import com.google.common.collect.ImmutableMap; -import org.apache.commons.lang3.tuple.Pair; +import it.unimi.dsi.fastutil.ints.IntIntPair; import org.jetbrains.annotations.Nullable; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.function.BiPredicate; import java.util.function.Supplier; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote ColorSprayBehaviour - */ public class ColorSprayBehaviour implements IDurabilityBar, IInteractionItem, IAddInformation { // vanilla @@ -73,8 +64,10 @@ public class ColorSprayBehaviour implements IDurabilityBar, IInteractionItem, IA private static final ImmutableMap SHULKER_BOX_MAP; private static final ImmutableMap CANDLE_MAP; - private static ResourceLocation getId(String modid, DyeColor color, String postfix) { - return new ResourceLocation(modid, "%s_%s".formatted(color.getSerializedName(), postfix)); + @SuppressWarnings("deprecation") + private static Block getBlock(DyeColor color, String postfix) { + ResourceLocation id = new ResourceLocation("minecraft", color.getSerializedName() + "_" + postfix); + return BuiltInRegistries.BLOCK.get(id); } static { @@ -89,36 +82,15 @@ private static ResourceLocation getId(String modid, DyeColor color, String postf ImmutableMap.Builder candleBuilder = ImmutableMap.builder(); for (DyeColor color : DyeColor.values()) { - // if there are > 16 colors (vanilla end) & tinted is loaded, use tinted blocks - if (color.ordinal() > 15 && GTCEu.isModLoaded(GTValues.MODID_TINTED)) { - glassBuilder.put(color, - BuiltInRegistries.BLOCK.get(getId(GTValues.MODID_TINTED, color, "stained_glass"))); - glassPaneBuilder.put(color, - BuiltInRegistries.BLOCK.get(getId(GTValues.MODID_TINTED, color, "stained_glass_pane"))); - terracottaBuilder.put(color, - BuiltInRegistries.BLOCK.get(getId(GTValues.MODID_TINTED, color, "terracotta"))); - woolBuilder.put(color, BuiltInRegistries.BLOCK.get(getId(GTValues.MODID_TINTED, color, "wool"))); - carpetBuilder.put(color, BuiltInRegistries.BLOCK.get(getId(GTValues.MODID_TINTED, color, "carpet"))); - concreteBuilder.put(color, - BuiltInRegistries.BLOCK.get(getId(GTValues.MODID_TINTED, color, "concrete"))); - concretePowderBuilder.put(color, - BuiltInRegistries.BLOCK.get(getId(GTValues.MODID_TINTED, color, "concrete_powder"))); - shulkerBoxBuilder.put(color, - BuiltInRegistries.BLOCK.get(getId(GTValues.MODID_TINTED, color, "shulker_box"))); - candleBuilder.put(color, BuiltInRegistries.BLOCK.get(getId(GTValues.MODID_TINTED, color, "candle"))); - } else { - glassBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("minecraft", color, "stained_glass"))); - glassPaneBuilder.put(color, - BuiltInRegistries.BLOCK.get(getId("minecraft", color, "stained_glass_pane"))); - terracottaBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("minecraft", color, "terracotta"))); - woolBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("minecraft", color, "wool"))); - carpetBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("minecraft", color, "carpet"))); - concreteBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("minecraft", color, "concrete"))); - concretePowderBuilder.put(color, - BuiltInRegistries.BLOCK.get(getId("minecraft", color, "concrete_powder"))); - shulkerBoxBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("minecraft", color, "shulker_box"))); - candleBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("minecraft", color, "candle"))); - } + glassBuilder.put(color, getBlock(color, "stained_glass")); + glassPaneBuilder.put(color, getBlock(color, "stained_glass_pane")); + terracottaBuilder.put(color, getBlock(color, "terracotta")); + woolBuilder.put(color, getBlock(color, "wool")); + carpetBuilder.put(color, getBlock(color, "carpet")); + concreteBuilder.put(color, getBlock(color, "concrete")); + concretePowderBuilder.put(color, getBlock(color, "concrete_powder")); + shulkerBoxBuilder.put(color, getBlock(color, "shulker_box")); + candleBuilder.put(color, getBlock(color, "candle")); } GLASS_MAP = glassBuilder.build(); GLASS_PANE_MAP = glassPaneBuilder.build(); @@ -129,13 +101,12 @@ private static ResourceLocation getId(String modid, DyeColor color, String postf CONCRETE_POWDER_MAP = concretePowderBuilder.build(); SHULKER_BOX_MAP = shulkerBoxBuilder.build(); CANDLE_MAP = candleBuilder.build(); - } private final Supplier empty; private final DyeColor color; public final int totalUses; - private final Pair durabilityBarColors; + private final IntIntPair durabilityBarColors; public ColorSprayBehaviour(Supplier empty, int totalUses, int color) { this.empty = empty; @@ -160,12 +131,12 @@ public int getMaxDurability(ItemStack stack) { @Override public int getBarColor(ItemStack stack) { float f = Math.max(0.0F, getDurabilityForDisplay(stack)); - return mixColors(f, durabilityBarColors.getLeft(), durabilityBarColors.getRight()); + return mixColors(f, durabilityBarColors.leftInt(), durabilityBarColors.rightInt()); } @Nullable @Override - public Pair getDurabilityColorsForDisplay(ItemStack itemStack) { + public IntIntPair getDurabilityColorsForDisplay(ItemStack itemStack) { return durabilityBarColors; } @@ -199,35 +170,35 @@ public InteractionResult onItemUseFirst(ItemStack itemStack, UseOnContext contex var level = context.getLevel(); var pos = context.getClickedPos(); - int maxBlocksToRecolor = Math.max(1, - player != null && player.isShiftKeyDown() ? ConfigHolder.INSTANCE.tools.sprayCanChainLength : 1); + if (player == null) { + return InteractionResult.PASS; + } + + int maxBlocksToRecolor = player.isShiftKeyDown() ? ConfigHolder.INSTANCE.tools.sprayCanChainLength : 1; - if (player != null) { - var first = level.getBlockEntity(pos); - if (first == null || !handleSpecialBlockEntities(first, maxBlocksToRecolor, context)) { - handleBlocks(pos, maxBlocksToRecolor, context); - } - GTSoundEntries.SPRAY_CAN_TOOL.play(level, null, player.position(), 1.0f, 1.0f); - return InteractionResult.SUCCESS; + var first = level.getBlockEntity(pos); + if (first == null || !handleSpecialBlockEntities(first, maxBlocksToRecolor, context)) { + handleBlocks(pos, maxBlocksToRecolor, context); } - return InteractionResult.PASS; + GTSoundEntries.SPRAY_CAN_TOOL.play(level, null, player.position(), 1.0f, 1.0f); + return InteractionResult.SUCCESS; } private static boolean paintPaintable(IPaintable paintable, DyeColor color) { if (color == null) { - if (paintable.getPaintingColor() == -1) { + if (!paintable.isPainted()) { return false; } - paintable.setPaintingColor(-1); - } else if (paintable.getPaintingColor() != color.getTextColor()) { - paintable.setPaintingColor(color.getTextColor()); + paintable.setPaintingColor(IPaintable.UNPAINTED_COLOR); + } else if (paintable.getPaintingColor() != color.getMapColor().col) { + paintable.setPaintingColor(color.getMapColor().col); } else { return false; } return true; } - @SuppressWarnings("rawtypes") + @SuppressWarnings({ "rawtypes", "DataFlowIssue" }) private boolean handleSpecialBlockEntities(BlockEntity first, int limit, UseOnContext context) { var player = context.getPlayer(); if (player == null) { @@ -240,50 +211,23 @@ private boolean handleSpecialBlockEntities(BlockEntity first, int limit, UseOnCo if (c.getColor() == ae2Color) { continue; } - c.recolourBlock(null, ae2Color, player); + c.recolourBlock(context.getClickedFace(), ae2Color, player); if (!useItemDurability(player, context.getHand(), context.getItemInHand(), ItemStack.EMPTY)) { break; } } - } else if (first instanceof PipeBlockEntity pipe) { - var collected = BreadthFirstBlockSearch.conditionalBlockEntitySearch(PipeBlockEntity.class, pipe, + } else if (first instanceof IPipeNode pipe) { + var collected = BreadthFirstBlockSearch.conditionalSearch(IPipeNode.class, pipe, + first.getLevel(), IPipeNode::getPipePos, gtPipePredicate, limit, limit * 6); - for (var c : collected) { - if (!paintPaintable(c, color)) { - continue; - } - if (!useItemDurability(context.getPlayer(), context.getHand(), context.getItemInHand(), - ItemStack.EMPTY)) { - break; - } - } - } else if (first instanceof MetaMachineBlockEntity mmbe) { - var collected = BreadthFirstBlockSearch.conditionalBlockEntitySearch(MetaMachineBlockEntity.class, mmbe, - gtMetaMachinePredicate, limit, limit * 6); - for (var c : collected) { - if (!paintPaintable(c.getMetaMachine(), color)) { - continue; - } - if (!useItemDurability(context.getPlayer(), context.getHand(), context.getItemInHand(), - ItemStack.EMPTY)) { - break; - } - } - - } else if (first instanceof IPaintable) { - var collected = BreadthFirstBlockSearch.conditionalBlockEntitySearch(BlockEntity.class, first, - paintablePredicateWrapper, limit, limit * 6); - for (var c : collected) { - if (!paintPaintable((IPaintable) c, color)) { - continue; - } - if (!useItemDurability(context.getPlayer(), context.getHand(), context.getItemInHand(), - ItemStack.EMPTY)) { - break; - } - } - } else if (first instanceof ShulkerBoxBlockEntity shulkerBoxBE) { - var tag = shulkerBoxBE.saveWithFullMetadata(); + paintPaintables(collected, context); + } else if (first instanceof IPaintable paintable) { + var collected = BreadthFirstBlockSearch.conditionalSearch(IPaintable.class, paintable, + first.getLevel(), p -> ((BlockEntity) p).getBlockPos(), + paintablePredicate, limit, limit * 6); + paintPaintables(collected, context); + } else if (first instanceof ShulkerBoxBlockEntity shulkerBox) { + var tag = shulkerBox.saveWithoutMetadata(); var level = first.getLevel(); var pos = first.getBlockPos(); recolorBlockNoState(SHULKER_BOX_MAP, color, level, pos, Blocks.SHULKER_BOX); @@ -319,13 +263,25 @@ private void handleBlocks(BlockPos start, int limit, UseOnContext context) { } } - private boolean tryPaintBlock(Level world, BlockPos pos) { - var blockState = world.getBlockState(pos); + private void paintPaintables(Set paintables, UseOnContext context) { + for (var c : paintables) { + if (!paintPaintable(c, color)) { + continue; + } + // noinspection DataFlowIssue + if (!useItemDurability(context.getPlayer(), context.getHand(), context.getItemInHand(), ItemStack.EMPTY)) { + break; + } + } + } + + private boolean tryPaintBlock(Level level, BlockPos pos) { + var blockState = level.getBlockState(pos); var block = blockState.getBlock(); if (color == null) { - return tryStripBlockColor(world, pos, block); + return tryStripBlockColor(level, pos, block); } - return recolorBlockState(world, pos, color) || tryPaintSpecialBlock(world, pos, block); + return recolorBlockState(level, pos, color) || tryPaintSpecialBlock(level, pos, block); } @SuppressWarnings({ "rawtypes", "unchecked" }) @@ -340,6 +296,7 @@ private static boolean recolorBlockState(Level level, BlockPos pos, DyeColor col return false; } + @SuppressWarnings("RedundantIfStatement") private boolean tryPaintSpecialBlock(Level world, BlockPos pos, Block block) { if (block.defaultBlockState().is(Tags.Blocks.GLASS)) { if (recolorBlockNoState(GLASS_MAP, this.color, world, pos, Blocks.GLASS)) { @@ -389,18 +346,19 @@ private static boolean recolorBlockNoState(Map map, DyeColor co } @SuppressWarnings({ "rawtypes", "unchecked" }) - private static boolean recolorBlockNoState(Map map, DyeColor color, Level world, BlockPos pos, - Block _default) { - Block newBlock = map.getOrDefault(color, _default); - BlockState old = world.getBlockState(pos); - if (newBlock == Blocks.AIR) newBlock = _default; + private static boolean recolorBlockNoState(Map map, @Nullable DyeColor color, + Level level, BlockPos pos, Block defaultBlock) { + Block newBlock = map.getOrDefault(color, defaultBlock); + if (newBlock == Blocks.AIR) newBlock = defaultBlock; + + BlockState old = level.getBlockState(pos); if (newBlock != null && newBlock != old.getBlock()) { BlockState state = newBlock.defaultBlockState(); for (Property property : old.getProperties()) { + if (!state.hasProperty(property)) continue; state.setValue(property, old.getValue(property)); } - world.setBlock(pos, state, 3); - world.sendBlockUpdated(pos, old, state, 3); + level.setBlockAndUpdate(pos, state); return true; } return false; @@ -410,31 +368,31 @@ private static boolean recolorBlockNoState(Map map, DyeColor co private static boolean tryStripBlockColor(Level world, BlockPos pos, Block block) { // MC special cases if (block instanceof StainedGlassBlock) { - world.setBlock(pos, Blocks.GLASS.defaultBlockState(), 3); + world.setBlockAndUpdate(pos, Blocks.GLASS.defaultBlockState()); return true; } if (block instanceof StainedGlassPaneBlock) { - world.setBlock(pos, Blocks.GLASS_PANE.defaultBlockState(), 3); + world.setBlockAndUpdate(pos, Blocks.GLASS_PANE.defaultBlockState()); return true; } if (block.defaultBlockState().is(BlockTags.TERRACOTTA) && block != Blocks.TERRACOTTA) { - world.setBlock(pos, Blocks.TERRACOTTA.defaultBlockState(), 3); + world.setBlockAndUpdate(pos, Blocks.TERRACOTTA.defaultBlockState()); return true; } if (block.defaultBlockState().is(BlockTags.WOOL) && block != Blocks.WHITE_WOOL) { - world.setBlock(pos, Blocks.WHITE_WOOL.defaultBlockState(), 3); + world.setBlockAndUpdate(pos, Blocks.WHITE_WOOL.defaultBlockState()); return true; } if (block.defaultBlockState().is(BlockTags.WOOL_CARPETS) && block != Blocks.WHITE_CARPET) { - world.setBlock(pos, Blocks.WHITE_CARPET.defaultBlockState(), 3); + world.setBlockAndUpdate(pos, Blocks.WHITE_CARPET.defaultBlockState()); return true; } if (block.defaultBlockState().is(CustomTags.CONCRETE_BLOCK) && block != Blocks.WHITE_CONCRETE) { - world.setBlock(pos, Blocks.WHITE_CONCRETE.defaultBlockState(), 3); + world.setBlockAndUpdate(pos, Blocks.WHITE_CONCRETE.defaultBlockState()); return true; } if (block.defaultBlockState().is(CustomTags.CONCRETE_POWDER_BLOCK) && block != Blocks.WHITE_CONCRETE_POWDER) { - world.setBlock(pos, Blocks.WHITE_CONCRETE_POWDER.defaultBlockState(), 3); + world.setBlockAndUpdate(pos, Blocks.WHITE_CONCRETE_POWDER.defaultBlockState()); return true; } if (block.defaultBlockState().is(BlockTags.CANDLES) && block != Blocks.WHITE_CANDLE) { @@ -495,37 +453,23 @@ public static void setUsesLeft(ItemStack itemStack, int usesLeft) { tagCompound.putInt("UsesLeft", usesLeft); } - private static final BiPredicate paintablePredicate = (parent, child) -> { + private static final TriPredicate paintablePredicate = (parent, child, dir) -> { + if (parent == null) return true; if (!parent.getClass().equals(child.getClass())) { return false; } return parent.getPaintingColor() == child.getPaintingColor(); }; - private static final TriPredicate paintablePredicateWrapper = (parent, child, - direction) -> { - if (parent == null && child instanceof IPaintable) return true; - return parent instanceof IPaintable pp && child instanceof IPaintable pc && paintablePredicate.test(pp, pc); - }; - @SuppressWarnings("rawtypes") - private static final TriPredicate gtPipePredicate = (parent, child, - direction) -> { + private static final TriPredicate gtPipePredicate = (parent, child, direction) -> { if (parent == null) return true; - if (!paintablePredicate.test(parent, child)) { + if (!paintablePredicate.test(parent, child, direction)) { return false; } return parent.isConnected(direction) && child.isConnected(direction.getOpposite()); }; - private static final TriPredicate gtMetaMachinePredicate = (parent, - child, - direction) -> { - if (parent == null) return true; - return paintablePredicate.test(parent.getMetaMachine(), child.getMetaMachine()) && - parent.getMetaMachine().getDefinition().equals(child.getMetaMachine().getDefinition()); - }; - private static class AE2CallWrapper { static Set collect(BlockEntity first, int limit) { @@ -542,13 +486,9 @@ static boolean isAE2Cable(BlockEntity be) { static boolean ae2CablePredicate(CableBusBlockEntity parent, CableBusBlockEntity child, Direction direction) { if (parent == null) return true; var childDirection = direction.getOpposite(); - if (parent.getPart(direction) != null || parent.getCableConnectionType(direction) == AECableType.NONE || - child.getPart(childDirection) != null || - child.getCableConnectionType(childDirection) == AECableType.NONE || - parent.getColor() != child.getColor()) { - return false; - } - return true; + return parent.getPart(direction) == null && parent.getCableConnectionType(direction).isValid() && + child.getPart(childDirection) == null && child.getCableConnectionType(childDirection).isValid() && + parent.getColor() == child.getColor(); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/ConsumedBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/ConsumedBehaviour.java index 8c9affd49d1..feca36f1270 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/ConsumedBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/ConsumedBehaviour.java @@ -6,11 +6,6 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote ConsumedBehaviour - */ public abstract class ConsumedBehaviour { public final int totalUses; diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/CoverPlaceBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/CoverPlaceBehavior.java index dc67b2d6a0e..af77e5db840 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/CoverPlaceBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/CoverPlaceBehavior.java @@ -19,11 +19,6 @@ import java.util.function.BooleanSupplier; import java.util.function.Predicate; -/** - * @author KilaBash - * @date 2023/2/24 - * @implNote CoverBehavior - */ public record CoverPlaceBehavior(CoverDefinition coverDefinition) implements IInteractionItem { @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/DataItemBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/DataItemBehavior.java index 5d58201d4c3..86f46137601 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/DataItemBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/DataItemBehavior.java @@ -1,42 +1,63 @@ package com.gregtechceu.gtceu.common.item; import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; +import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; +import com.gregtechceu.gtceu.api.capability.ICoverable; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.item.component.IAddInformation; import com.gregtechceu.gtceu.api.item.component.IDataItem; import com.gregtechceu.gtceu.api.item.component.IInteractionItem; import com.gregtechceu.gtceu.api.machine.feature.IDataStickInteractable; import com.gregtechceu.gtceu.api.recipe.GTRecipe; -import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.common.machine.owner.MachineOwner; +import com.gregtechceu.gtceu.utils.GTStringUtils; import com.gregtechceu.gtceu.utils.ResearchManager; import net.minecraft.ChatFormatting; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; -import com.mojang.datafixers.util.Pair; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; +import lombok.Getter; import org.jetbrains.annotations.Nullable; import java.util.Collection; import java.util.List; +@SuppressWarnings("ClassCanBeRecord") public class DataItemBehavior implements IInteractionItem, IAddInformation, IDataItem { private final boolean requireDataBank; + @Getter + private final int capacity; - public DataItemBehavior() { - this.requireDataBank = false; + public DataItemBehavior(boolean requireDataBank, int capacity) { + this.requireDataBank = requireDataBank; + this.capacity = capacity; } - public DataItemBehavior(boolean requireDataBank) { - this.requireDataBank = requireDataBank; + @Override + public InteractionResultHolder use(Item item, Level level, Player player, InteractionHand usedHand) { + if (player.isShiftKeyDown()) { + ItemStack stack = player.getItemInHand(usedHand); + stack.getOrCreateTag().putString("boundPlayerName", Component.Serializer.toJson(player.getDisplayName())); + int perm = 0; + while (player.hasPermissions(perm)) perm++; + stack.getOrCreateTag().putInt("boundPlayerPermLevel", perm - 1); + stack.getOrCreateTag().putString("boundPlayerUUID", player.getStringUUID()); + return new InteractionResultHolder<>(InteractionResult.SUCCESS, stack); + } + return IInteractionItem.super.use(item, level, player, usedHand); } @Override @@ -47,7 +68,28 @@ public boolean requireDataBank() { @Override public void appendHoverText(ItemStack stack, @Nullable Level level, List tooltipComponents, TooltipFlag isAdvanced) { - Pair researchData = ResearchManager.readResearchId(stack); + if (stack.getOrCreateTag().contains("boundPlayerName")) { + MutableComponent name = Component.Serializer.fromJson(stack.getOrCreateTag().getString("boundPlayerName")); + tooltipComponents.add(Component.translatable("gtceu.tooltip.player_bind", name)); + } + if (stack.getOrCreateTag().contains("targetX")) { + tooltipComponents.add(Component.translatable( + "gtceu.tooltip.wireless_transmitter_bind", + Component.literal("" + stack.getOrCreateTag().getInt("targetX")).withStyle(ChatFormatting.GOLD), + Component.literal("" + stack.getOrCreateTag().getInt("targetY")).withStyle(ChatFormatting.GOLD), + Component.literal("" + stack.getOrCreateTag().getInt("targetZ")).withStyle(ChatFormatting.GOLD), + Component.literal(stack.getOrCreateTag().getString("face")).withStyle(ChatFormatting.DARK_PURPLE))); + } + if (stack.getOrCreateTag().contains("computer_monitor_cover_config")) { + tooltipComponents.add(Component.translatable("gtceu.tooltip.computer_monitor_config")); + } + if (stack.getOrCreateTag().contains("computer_monitor_cover_data")) { + tooltipComponents.add( + Component.translatable("gtceu.tooltip.computer_monitor_data", + GTStringUtils.toComponent( + stack.getOrCreateTag().getList("computer_monitor_cover_data", Tag.TAG_STRING)))); + } + ResearchManager.ResearchItem researchData = ResearchManager.readResearchId(stack); if (researchData == null) { if (stack.getOrCreateTag().contains("pos", Tag.TAG_INT_ARRAY) && stack.hasTag()) { int[] posArray = stack.getOrCreateTag().getIntArray("pos"); @@ -58,7 +100,7 @@ public void appendHoverText(ItemStack stack, @Nullable Level level, List recipes = researchData.getFirst().getDataStickEntry(researchData.getSecond()); + Collection recipes = researchData.recipeType().getDataStickEntry(researchData.researchId()); if (recipes != null && !recipes.isEmpty()) { tooltipComponents.add(Component.translatable("behavior.data_item.assemblyline.title")); Collection added = new ObjectOpenHashSet<>(); @@ -81,6 +123,18 @@ public void appendHoverText(ItemStack stack, @Nullable Level level, List> DEFAULT_FACADES = GTMemoizer.memoize(() -> { + List states = new ArrayList<>(); + states.add(Blocks.STONE.defaultBlockState()); + states.add(GTBlocks.COIL_CUPRONICKEL.getDefaultState()); + states.add(Blocks.GLASS.defaultBlockState()); + + return states; + }); + @Override public void fillItemCategory(Item item, CreativeModeTab category, NonNullList items) { - List validFacades = ImmutableList.of(new ItemStack(Blocks.STONE), - GTBlocks.COIL_CUPRONICKEL.asStack(), new ItemStack(Blocks.GLASS)); - for (ItemStack facadeStack : validFacades) { + for (BlockState facadeState : DEFAULT_FACADES.get()) { ItemStack resultStack = item.getDefaultInstance(); - setFacadeStack(resultStack, facadeStack); + setFacadeState(resultStack, facadeState); items.add(resultStack); } } - public static void setFacadeStack(ItemStack itemStack, ItemStack facadeStack) { - facadeStack = facadeStack.copy(); - facadeStack.setCount(1); - if (!isValidFacade(facadeStack)) { - facadeStack = new ItemStack(Blocks.STONE); + public static void setFacadeState(ItemStack itemStack, BlockState facadeState) { + if (!isValidFacade(facadeState)) { + facadeState = Blocks.STONE.defaultBlockState(); } - if (!itemStack.hasTag()) { - itemStack.setTag(new CompoundTag()); - } - var tagCompound = Objects.requireNonNull(itemStack.getTag()); - tagCompound.put("Facade", facadeStack.save(new CompoundTag())); + var tagCompound = itemStack.getOrCreateTag(); + Tag stateTag = BlockState.CODEC.encodeStart(NbtOps.INSTANCE, facadeState) + .result().orElse(new CompoundTag()); + tagCompound.put("Facade", stateTag); } public static boolean isValidFacade(ItemStack itemStack) { if (!(itemStack.getItem() instanceof BlockItem blockItem)) { return false; } - var rawBlockState = blockItem.getBlock().defaultBlockState(); - return !rawBlockState.hasBlockEntity() && rawBlockState.getRenderShape() == RenderShape.MODEL; + return isValidFacade(blockItem.getBlock().defaultBlockState()); + } + + public static boolean isValidFacade(BlockState state) { + return !state.hasBlockEntity() && state.getRenderShape() == RenderShape.MODEL; + } + + public static BlockState getFacadeState(ItemStack itemStack) { + BlockState nullableState = getFacadeStateNullable(itemStack); + if (nullableState == null) { + return Blocks.STONE.defaultBlockState(); + } + return nullableState; } - public static ItemStack getFacadeStack(ItemStack itemStack) { - ItemStack unsafeStack = getFacadeStackUnsafe(itemStack); - if (unsafeStack == null) { - return new ItemStack(Blocks.STONE); + public static BlockState getFacadeStateNullable(ItemStack itemStack) { + if (itemStack.getItem() instanceof BlockItem blockItem) { + return blockItem.getBlock().defaultBlockState(); } - return unsafeStack; + + BlockState unsafeState = getFacadeStateUnsafe(itemStack); + if (unsafeState == null) { + // backwards support + ItemStack unsafeStack = getFacadeStackUnsafe(itemStack); + if (unsafeStack.getItem() instanceof BlockItem blockItem) { + return blockItem.getBlock().defaultBlockState(); + } + + return null; + } + return unsafeState; } @Nullable - private static ItemStack getFacadeStackUnsafe(ItemStack itemStack) { + private static BlockState getFacadeStateUnsafe(ItemStack itemStack) { var tagCompound = itemStack.getTag(); if (tagCompound == null || !tagCompound.contains("Facade", Tag.TAG_COMPOUND)) { return null; } + return BlockState.CODEC.parse(NbtOps.INSTANCE, tagCompound.getCompound("Facade")) + .result().orElse(null); + } + + @SuppressWarnings("DeprecatedIsStillUsed") + @Deprecated + @NotNull + private static ItemStack getFacadeStackUnsafe(ItemStack itemStack) { + var tagCompound = itemStack.getTag(); + if (tagCompound == null || !tagCompound.contains("Facade", Tag.TAG_COMPOUND)) { + return ItemStack.EMPTY; + } ItemStack facadeStack = ItemStack.of(tagCompound.getCompound("Facade")); if (facadeStack.isEmpty() || !isValidFacade(facadeStack)) { - return null; + return ItemStack.EMPTY; } return facadeStack; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/FluidFilterBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/FluidFilterBehaviour.java index 8a786bbe9f8..e816afb4ccf 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/FluidFilterBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/FluidFilterBehaviour.java @@ -15,11 +15,6 @@ import java.util.function.Function; -/** - * @author KilaBash - * @date 2023/3/13 - * @implNote FluidFilterBehaviour - */ public record FluidFilterBehaviour(Function filterCreator) implements IItemUIFactory { @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/IntCircuitBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/IntCircuitBehaviour.java index e49e65d5e75..5e2a1566377 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/IntCircuitBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/IntCircuitBehaviour.java @@ -33,11 +33,6 @@ import java.util.List; -/** - * @author KilaBash - * @date 2023/2/23 - * @implNote IntCircuitBehaviour - */ public class IntCircuitBehaviour implements IItemUIFactory, IAddInformation { public static final int CIRCUIT_MAX = 32; diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/ItemFilterBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/ItemFilterBehaviour.java index 5e5f738abd4..aac74875106 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/ItemFilterBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/ItemFilterBehaviour.java @@ -15,11 +15,6 @@ import java.util.function.Function; -/** - * @author KilaBash - * @date 2023/3/13 - * @implNote ItemFilterBehaviour - */ public record ItemFilterBehaviour(Function filterCreator) implements IItemUIFactory { @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/ItemFluidContainer.java b/src/main/java/com/gregtechceu/gtceu/common/item/ItemFluidContainer.java index 44da6f5fe39..90f569afed2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/ItemFluidContainer.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/ItemFluidContainer.java @@ -7,11 +7,6 @@ import net.minecraftforge.fluids.FluidUtil; import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; -/** - * @author KilaBash - * @date 2023/2/23 - * @implNote ItemFluidContainer - */ public class ItemFluidContainer implements IRecipeRemainder { @Override @@ -20,9 +15,7 @@ public ItemStack getRecipeRemained(ItemStack itemStack) { var drained = handler.drain(FluidType.BUCKET_VOLUME, FluidAction.SIMULATE); if (drained.getAmount() != FluidType.BUCKET_VOLUME) return ItemStack.EMPTY; handler.drain(FluidType.BUCKET_VOLUME, FluidAction.EXECUTE); - var copy = handler.getContainer(); - copy.setTag(null); - return copy; + return handler.getContainer(); }).orElse(itemStack); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java index e45be2aeff6..e74f2978267 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java @@ -1,7 +1,7 @@ package com.gregtechceu.gtceu.common.item; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.block.IMachineBlock; +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; import com.gregtechceu.gtceu.api.blockentity.PipeBlockEntity; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.IElectricItem; @@ -213,7 +213,7 @@ public int addScannerInfo(Player player, Level level, BlockPos pos, DisplayMode list.add(Component.translatable("behavior.portable_scanner.machine_front_facing", machine.getFrontFacing().getSerializedName())); list.add(Component.translatable("behavior.portable_scanner.machine_upwards_facing", - machineBlockEntity.self().getBlockState().getValue(IMachineBlock.UPWARDS_FACING_PROPERTY) + machineBlockEntity.self().getBlockState().getValue(GTBlockStateProperties.UPWARDS_FACING) .getSerializedName())); } @@ -330,21 +330,16 @@ public int addScannerInfo(Player player, Level level, BlockPos pos, DisplayMode list.addAll(recipeLogic.getFancyTooltip()); } else if (recipe != null) { list.add(Component.translatable("behavior.portable_scanner.divider")); - var EUt = RecipeHelper.getInputEUt(recipe); - var isInput = true; - if (EUt == 0) { - isInput = false; - EUt = RecipeHelper.getOutputEUt(recipe); - } + var EUt = RecipeHelper.getRealEUtWithIO(recipe); list.add(Component.translatable( - isInput ? "behavior.portable_scanner.workable_consumption" : + EUt.isInput() ? "behavior.portable_scanner.workable_consumption" : "behavior.portable_scanner.workable_production", - Component.translatable(FormattingUtil.formatNumbers(EUt)) + // TODO is this supposed to show voltage or total EU/t? + Component.translatable(FormattingUtil.formatNumbers(EUt.getTotalEU())) .withStyle(ChatFormatting.RED), - // TODO: Change number once there is multi amp behavior Component.translatable( - FormattingUtil.formatNumbers(1)) + FormattingUtil.formatNumbers(EUt.amperage())) .withStyle(ChatFormatting.RED))); } } @@ -403,7 +398,7 @@ else if (machine instanceof IDataInfoProvider) var fluidInfo = ProspectorMode.FluidInfo .fromVeinWorldEntry(veinData.getFluidVeinWorldEntry(chunkX, chunkZ)); var packet = new SPacketProspectBedrockFluid(level.dimension(), pos, fluidInfo); - GTNetwork.NETWORK.sendToPlayer(packet, (ServerPlayer) player); + GTNetwork.sendToPlayer((ServerPlayer) player, packet); if (player.isCreative()) { list.add(Component.translatable("behavior.portable_scanner.bedrock_fluid.amount", diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/ProspectorScannerBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/ProspectorScannerBehavior.java index 76f94969e9a..f0a393bd457 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/ProspectorScannerBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/ProspectorScannerBehavior.java @@ -33,11 +33,6 @@ import java.util.List; import java.util.Objects; -/** - * @author KilaBash - * @date 2023/7/10 - * @implNote ProspectorScannerBehavior - */ public class ProspectorScannerBehavior implements IItemUIFactory, IInteractionItem, IAddInformation { private final int radius; diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/TooltipBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/TooltipBehavior.java index 2224b110a77..df6d1faec04 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/TooltipBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/TooltipBehavior.java @@ -13,11 +13,6 @@ import java.util.List; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/2/23 - * @implNote TooltipBehavior - */ public class TooltipBehavior implements IAddInformation { private final Consumer> tooltips; diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/TurbineRotorBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/TurbineRotorBehaviour.java index 71eab6401d4..482519ee168 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/TurbineRotorBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/TurbineRotorBehaviour.java @@ -22,11 +22,6 @@ import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.turbineBlade; -/** - * @author KilaBash - * @date 2023/7/10 - * @implNote TurbineRotorBehaviour - */ public class TurbineRotorBehaviour implements IMaterialPartItem, ISubItemHandler { @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/AdvancedNanoMuscleSuite.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/AdvancedNanoMuscleSuite.java index 241955a76c8..c1f0190a701 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/armor/AdvancedNanoMuscleSuite.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/AdvancedNanoMuscleSuite.java @@ -25,17 +25,17 @@ import net.minecraftforge.api.distmarker.OnlyIn; import com.mojang.datafixers.util.Pair; +import it.unimi.dsi.fastutil.ints.IntList; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.Iterator; import java.util.List; public class AdvancedNanoMuscleSuite extends NanoMuscleSuite implements IJetpack { // A replacement for checking the current world time, to get around the gamerule that stops it private long timer = 0L; - private List, List>> inventoryIndexMap; + private List, IntList>> inventoryIndexMap; public AdvancedNanoMuscleSuite(int energyPerUse, long capacity, int tier) { super(ArmorItem.Type.CHESTPLATE, energyPerUse, capacity, tier); @@ -103,10 +103,10 @@ public void onArmorTick(Level world, Player player, @NotNull ItemStack item) { if (inventoryIndexMap != null && !inventoryIndexMap.isEmpty()) { // Charge all inventory slots for (int i = 0; i < inventoryIndexMap.size(); i++) { - Pair, List> inventoryMap = inventoryIndexMap.get(i); - Iterator inventoryIterator = inventoryMap.getSecond().iterator(); + Pair, IntList> inventoryMap = inventoryIndexMap.get(i); + var inventoryIterator = inventoryMap.getSecond().iterator(); while (inventoryIterator.hasNext()) { - int slot = inventoryIterator.next(); + int slot = inventoryIterator.nextInt(); IElectricItem chargable = GTCapabilityHelper.getElectricItem(inventoryMap.getFirst().get(slot)); // Safety check the null, it should not actually happen. Also don't try and charge itself @@ -143,6 +143,7 @@ public void onArmorTick(Level world, Player player, @NotNull ItemStack item) { @Override public void addInfo(ItemStack itemStack, List lines) { + super.addInfo(itemStack, lines); CompoundTag data = itemStack.getOrCreateTag(); Component state; boolean enabled = !data.contains("enabled") || data.getBoolean("enabled"); @@ -160,8 +161,6 @@ public void addInfo(ItemStack itemStack, List lines) { state = hover ? Component.translatable("metaarmor.hud.status.enabled") : Component.translatable("metaarmor.hud.status.disabled"); lines.add(Component.translatable("metaarmor.hud.hover_mode", state)); - - super.addInfo(itemStack, lines); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/AdvancedQuarkTechSuite.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/AdvancedQuarkTechSuite.java index 4b52258fa40..42d4eceabcf 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/armor/AdvancedQuarkTechSuite.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/AdvancedQuarkTechSuite.java @@ -26,16 +26,16 @@ import net.minecraftforge.api.distmarker.OnlyIn; import com.mojang.datafixers.util.Pair; +import it.unimi.dsi.fastutil.ints.IntList; import org.jetbrains.annotations.NotNull; -import java.util.Iterator; import java.util.List; public class AdvancedQuarkTechSuite extends QuarkTechSuite implements IJetpack { // A replacement for checking the current world time, to get around the gamerule that stops it private long timer = 0L; - private List, List>> inventoryIndexMap; + private List, IntList>> inventoryIndexMap; public AdvancedQuarkTechSuite(int energyPerUse, long capacity, int tier) { super(ArmorItem.Type.CHESTPLATE, energyPerUse, capacity, tier); @@ -108,10 +108,10 @@ public void onArmorTick(Level world, Player player, ItemStack item) { if (inventoryIndexMap != null && !inventoryIndexMap.isEmpty()) { // Charge all inventory slots for (int i = 0; i < inventoryIndexMap.size(); i++) { - Pair, List> inventoryMap = inventoryIndexMap.get(i); - Iterator inventoryIterator = inventoryMap.getSecond().iterator(); + Pair, IntList> inventoryMap = inventoryIndexMap.get(i); + var inventoryIterator = inventoryMap.getSecond().iterator(); while (inventoryIterator.hasNext()) { - int slot = inventoryIterator.next(); + int slot = inventoryIterator.nextInt(); IElectricItem chargable = GTCapabilityHelper.getElectricItem(inventoryMap.getFirst().get(slot)); // Safety check the null, it should not actually happen. Also don't try and charge itself @@ -149,6 +149,7 @@ public void onArmorTick(Level world, Player player, ItemStack item) { @Override public void addInfo(ItemStack itemStack, List lines) { + super.addInfo(itemStack, lines); CompoundTag data = itemStack.getOrCreateTag(); Component state; boolean enabled = !data.contains("enabled") || data.getBoolean("enabled"); @@ -166,7 +167,6 @@ public void addInfo(ItemStack itemStack, List lines) { state = hover ? Component.translatable("metaarmor.hud.status.enabled") : Component.translatable("metaarmor.hud.status.disabled"); lines.add(Component.translatable("metaarmor.hud.hover_mode", state)); - super.addInfo(itemStack, lines); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTArmorItem.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTArmorItem.java new file mode 100644 index 00000000000..f6943a7d0ed --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTArmorItem.java @@ -0,0 +1,76 @@ +package com.gregtechceu.gtceu.common.item.armor; + +import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; +import com.gregtechceu.gtceu.client.renderer.item.ArmorItemRenderer; + +import com.lowdragmc.lowdraglib.Platform; + +import net.minecraft.client.color.item.ItemColor; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Objects; + +public class GTArmorItem extends ArmorItem { + + public final Material material; + public final ArmorProperty armorProperty; + + public GTArmorItem(ArmorMaterial armorMaterial, ArmorItem.Type type, Properties properties, + Material material, ArmorProperty armorProperty) { + super(armorMaterial, type, properties); + this.material = material; + this.armorProperty = armorProperty; + if (Platform.isClient()) { + ArmorItemRenderer.create(this, type); + } + } + + @OnlyIn(Dist.CLIENT) + public static ItemColor tintColor() { + return (itemStack, index) -> { + // TODO utilize 2nd material color + if (index == 0 && itemStack.getItem() instanceof GTArmorItem item) { + Material material = item.material; + return material.getLayerARGB(index); + } + return -1; + }; + } + + @Override + public @NotNull String getDescriptionId() { + return "item.gtceu.armor." + type.getName(); + } + + @Override + public @NotNull Component getDescription() { + return Component.translatable(getDescriptionId(), material.getLocalizedName()); + } + + @Override + public Component getName(ItemStack stack) { + return this.getDescription(); + } + + @Override + public @Nullable String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) { + ResourceLocation id = armorProperty.getCustomTextureGetter() + .getCustomTexture(stack, entity, slot, Objects.equals(type, "overlay")); + if (id != null) { + return id.toString(); + } + return null; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTDyeableArmorItem.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTDyeableArmorItem.java new file mode 100644 index 00000000000..ea66da0be66 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTDyeableArmorItem.java @@ -0,0 +1,20 @@ +package com.gregtechceu.gtceu.common.item.armor; + +import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; +import com.gregtechceu.gtceu.client.renderer.item.ArmorItemRenderer; + +import com.lowdragmc.lowdraglib.Platform; + +import net.minecraft.world.item.*; + +public class GTDyeableArmorItem extends GTArmorItem implements DyeableLeatherItem { + + public GTDyeableArmorItem(ArmorMaterial armorMaterial, ArmorItem.Type type, Item.Properties properties, + Material material, ArmorProperty armorProperty) { + super(armorMaterial, type, properties, material, armorProperty); + if (Platform.isClient()) { + ArmorItemRenderer.create(this, type); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/IJetpack.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/IJetpack.java index faef8f6f3da..295e735e400 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/armor/IJetpack.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/IJetpack.java @@ -1,7 +1,7 @@ package com.gregtechceu.gtceu.common.item.armor; import com.gregtechceu.gtceu.api.item.armor.ArmorUtils; -import com.gregtechceu.gtceu.utils.input.KeyBind; +import com.gregtechceu.gtceu.utils.input.SyncedKeyMappings; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleTypes; @@ -76,8 +76,8 @@ default void performFlying(@NotNull Player player, boolean flightEnabled, boolea return; } - boolean flyKeyDown = KeyBind.VANILLA_JUMP.isKeyDown(player); - boolean descendKeyDown = KeyBind.VANILLA_SNEAK.isKeyDown(player); + boolean flyKeyDown = SyncedKeyMappings.VANILLA_JUMP.isKeyDown(player); + boolean descendKeyDown = SyncedKeyMappings.VANILLA_SNEAK.isKeyDown(player); double currentAccel = getVerticalAcceleration() * (deltaY < 0.3D ? 2.5D : 1.0D); if (!player.onGround() && player.getSleepingPos().isEmpty() && canUseEnergy(stack, getEnergyPerUse())) { @@ -121,10 +121,18 @@ default void performFlying(@NotNull Player player, boolean flightEnabled, boolea // Make sure they aren't using elytra movement if (!player.isFallFlying()) { Vec3 movement = new Vec3(0, 0, 0); - if (KeyBind.VANILLA_FORWARD.isKeyDown(player)) movement = movement.add(0, 0, speedForward); - if (KeyBind.VANILLA_BACKWARD.isKeyDown(player)) movement = movement.add(0, 0, -speedSideways * 0.8f); - if (KeyBind.VANILLA_LEFT.isKeyDown(player)) movement = movement.add(speedSideways, 0, 0); - if (KeyBind.VANILLA_RIGHT.isKeyDown(player)) movement = movement.add(-speedSideways, 0, 0); + if (SyncedKeyMappings.VANILLA_FORWARD.isKeyDown(player)) { + movement = movement.add(0, 0, speedForward); + } + if (SyncedKeyMappings.VANILLA_BACKWARD.isKeyDown(player)) { + movement = movement.add(0, 0, -speedSideways * 0.8f); + } + if (SyncedKeyMappings.VANILLA_LEFT.isKeyDown(player)) { + movement = movement.add(speedSideways, 0, 0); + } + if (SyncedKeyMappings.VANILLA_RIGHT.isKeyDown(player)) { + movement = movement.add(-speedSideways, 0, 0); + } var dist = movement.length(); if (dist >= 1.0E-7) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/NanoMuscleSuite.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/NanoMuscleSuite.java index eff73b53b0e..0a22daffc42 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/armor/NanoMuscleSuite.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/NanoMuscleSuite.java @@ -121,12 +121,13 @@ public boolean handleUnblockableDamage(LivingEntity entity, @NotNull ItemStack a */ @Override - public void damageArmor(LivingEntity entity, ItemStack itemStack, DamageSource source, int damage, - EquipmentSlot equipmentSlot) { + public int damageArmor(LivingEntity entity, ItemStack itemStack, DamageSource source, int damage, + EquipmentSlot equipmentSlot) { IElectricItem item = GTCapabilityHelper.getElectricItem(itemStack); if (item != null) { - item.discharge((long) energyPerUse / 10 * damage, item.getTier(), true, false, false); + item.discharge(energyPerUse / 10L * damage, item.getTier(), true, false, false); } + return super.damageArmor(entity, itemStack, source, damage, equipmentSlot); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/PowerlessJetpack.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/PowerlessJetpack.java index 13d8d41fcb7..9a96613c7aa 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/armor/PowerlessJetpack.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/PowerlessJetpack.java @@ -32,9 +32,9 @@ import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; import net.minecraftforge.fluids.capability.templates.FluidHandlerItemStack; +import it.unimi.dsi.fastutil.ints.IntIntPair; import it.unimi.dsi.fastutil.objects.AbstractObject2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; -import org.apache.commons.lang3.tuple.Pair; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -219,7 +219,7 @@ public static class Behaviour implements IDurabilityBar, IItemComponent, ISubIte IInteractionItem, IComponentCapability { public final int maxCapacity; - private final Pair durabilityBarColors; + private final IntIntPair durabilityBarColors; public Behaviour(int internalCapacity) { this.maxCapacity = internalCapacity; @@ -235,7 +235,7 @@ public float getDurabilityForDisplay(@NotNull ItemStack itemStack) { @Nullable @Override - public Pair getDurabilityColorsForDisplay(ItemStack itemStack) { + public IntIntPair getDurabilityColorsForDisplay(ItemStack itemStack) { return durabilityBarColors; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/QuarkTechSuite.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/QuarkTechSuite.java index 5503ea95456..af016575c6b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/armor/QuarkTechSuite.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/QuarkTechSuite.java @@ -8,6 +8,7 @@ import com.gregtechceu.gtceu.common.data.GTItems; import com.gregtechceu.gtceu.core.IFireImmuneEntity; import com.gregtechceu.gtceu.utils.input.KeyBind; +import com.gregtechceu.gtceu.utils.input.SyncedKeyMappings; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; @@ -34,16 +35,16 @@ import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandlerModifiable; +import it.unimi.dsi.fastutil.objects.Reference2IntMap; +import it.unimi.dsi.fastutil.objects.Reference2IntOpenHashMap; import org.jetbrains.annotations.NotNull; -import java.util.IdentityHashMap; import java.util.LinkedList; import java.util.List; -import java.util.Map; public class QuarkTechSuite extends ArmorLogicSuite implements IStepAssist { - public static final Map potionRemovalCost = new IdentityHashMap<>(); + public static final Reference2IntMap potionRemovalCost = new Reference2IntOpenHashMap<>(); private float charge = 0.0F; private static final byte RUNNING_TIMER = 10; // .5 seconds private static final byte JUMPING_TIMER = 10; // .5 seconds @@ -127,9 +128,9 @@ public void onArmorTick(Level world, Player player, ItemStack itemStack) { if (player.isOnFire()) player.extinguishFire(); } else if (type == ArmorItem.Type.LEGGINGS) { boolean canUseEnergy = item.canUse(energyPerUse / 100); - boolean sprinting = KeyBind.VANILLA_FORWARD.isKeyDown(player) && player.isSprinting(); - boolean jumping = KeyBind.VANILLA_JUMP.isKeyDown(player); - boolean sneaking = KeyBind.VANILLA_SNEAK.isKeyDown(player); + boolean sprinting = SyncedKeyMappings.VANILLA_FORWARD.isKeyDown(player) && player.isSprinting(); + boolean jumping = SyncedKeyMappings.VANILLA_JUMP.isKeyDown(player); + boolean sneaking = SyncedKeyMappings.VANILLA_SNEAK.isKeyDown(player); if (canUseEnergy && sprinting) { if (runningTimer == 0) { @@ -158,7 +159,7 @@ public void onArmorTick(Level world, Player player, ItemStack itemStack) { data.putByte("runningTimer", runningTimer); } else if (type == ArmorItem.Type.BOOTS) { boolean canUseEnergy = item.canUse(energyPerUse / 100); - boolean jumping = KeyBind.VANILLA_JUMP.isKeyDown(player); + boolean jumping = SyncedKeyMappings.VANILLA_JUMP.isKeyDown(player); boolean boostedJump = data.contains("boostedJump") && data.getBoolean("boostedJump"); if (boostedJumpTimer == 0 && KeyBind.BOOTS_ENABLE.isKeyDown(player)) { boostedJump = !boostedJump; @@ -252,8 +253,8 @@ public boolean supplyFood(@NotNull IElectricItem item, Player player) { public static void removeNegativeEffects(@NotNull IElectricItem item, Player player) { for (MobEffectInstance effect : new LinkedList<>(player.getActiveEffects())) { MobEffect potion = effect.getEffect(); - Integer cost = potionRemovalCost.get(potion); - if (cost != null) { + int cost = potionRemovalCost.getOrDefault(potion, -1); + if (cost != -1) { cost = cost * (effect.getAmplifier() + 1); if (item.canUse(cost)) { item.discharge(cost, item.getTier(), true, false, false); @@ -297,13 +298,13 @@ public static void removeNegativeEffects(@NotNull IElectricItem item, Player pla */ @Override - public void damageArmor(LivingEntity entity, ItemStack itemStack, DamageSource source, int damage, - EquipmentSlot equipmentSlot) { + public int damageArmor(LivingEntity entity, ItemStack itemStack, DamageSource source, int damage, + EquipmentSlot equipmentSlot) { IElectricItem item = GTCapabilityHelper.getElectricItem(itemStack); - if (item == null) { - return; + if (item != null) { + item.discharge(energyPerUse / 100L * damage, item.getTier(), true, false, false); } - item.discharge(energyPerUse / 100L * damage, item.getTier(), true, false, false); + return super.damageArmor(entity, itemStack, source, damage, equipmentSlot); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/modules/ImageModuleBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/modules/ImageModuleBehaviour.java new file mode 100644 index 00000000000..5841da19ffd --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/item/modules/ImageModuleBehaviour.java @@ -0,0 +1,43 @@ +package com.gregtechceu.gtceu.common.item.modules; + +import com.gregtechceu.gtceu.api.gui.GuiTextures; +import com.gregtechceu.gtceu.api.item.component.IMonitorModuleItem; +import com.gregtechceu.gtceu.client.renderer.monitor.IMonitorRenderer; +import com.gregtechceu.gtceu.client.renderer.monitor.MonitorImageRenderer; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.CentralMonitorMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.monitor.MonitorGroup; +import com.gregtechceu.gtceu.common.network.GTNetwork; +import com.gregtechceu.gtceu.common.network.packets.SCPacketMonitorGroupNBTChange; + +import com.lowdragmc.lowdraglib.gui.widget.ButtonWidget; +import com.lowdragmc.lowdraglib.gui.widget.TextFieldWidget; +import com.lowdragmc.lowdraglib.gui.widget.Widget; +import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; + +import net.minecraft.world.item.ItemStack; + +public class ImageModuleBehaviour implements IMonitorModuleItem { + + @Override + public IMonitorRenderer getRenderer(ItemStack stack, CentralMonitorMachine machine, MonitorGroup group) { + return new MonitorImageRenderer(stack.getOrCreateTag().getString("url")); + } + + @Override + public Widget createUIWidget(ItemStack stack, CentralMonitorMachine machine, MonitorGroup group) { + WidgetGroup builder = new WidgetGroup(); + TextFieldWidget textField = new TextFieldWidget(0, 0, 100, 10, null, null); + textField.setCurrentString(stack.getOrCreateTag().getString("url")); + + ButtonWidget saveButton = new ButtonWidget(-40, 22, 20, 20, click -> { + if (!click.isRemote) return; + + stack.getOrCreateTag().putString("url", textField.getCurrentString()); + GTNetwork.sendToServer(new SCPacketMonitorGroupNBTChange(stack, group, machine)); + }); + saveButton.setButtonTexture(GuiTextures.BUTTON_CHECK); + builder.addWidget(textField); + builder.addWidget(saveButton); + return builder; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/modules/TextModuleBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/modules/TextModuleBehaviour.java new file mode 100644 index 00000000000..aed515a5ce6 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/item/modules/TextModuleBehaviour.java @@ -0,0 +1,112 @@ +package com.gregtechceu.gtceu.common.item.modules; + +import com.gregtechceu.gtceu.api.gui.GuiTextures; +import com.gregtechceu.gtceu.api.item.component.IMonitorModuleItem; +import com.gregtechceu.gtceu.api.placeholder.MultiLineComponent; +import com.gregtechceu.gtceu.api.placeholder.PlaceholderContext; +import com.gregtechceu.gtceu.api.placeholder.PlaceholderHandler; +import com.gregtechceu.gtceu.client.renderer.monitor.IMonitorRenderer; +import com.gregtechceu.gtceu.client.renderer.monitor.MonitorTextRenderer; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.CentralMonitorMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.monitor.MonitorGroup; +import com.gregtechceu.gtceu.common.network.GTNetwork; +import com.gregtechceu.gtceu.common.network.packets.SCPacketMonitorGroupNBTChange; + +import com.lowdragmc.lowdraglib.gui.widget.ButtonWidget; +import com.lowdragmc.lowdraglib.gui.widget.TextFieldWidget; +import com.lowdragmc.lowdraglib.gui.widget.Widget; +import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; +import com.lowdragmc.lowdraglib.gui.widget.codeeditor.CodeEditorWidget; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.nbt.Tag; +import net.minecraft.network.chat.Component; +import net.minecraft.util.Mth; +import net.minecraft.world.item.ItemStack; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Supplier; + +public class TextModuleBehaviour implements IMonitorModuleItem { + + private void updateText(ItemStack stack, CentralMonitorMachine machine, MonitorGroup group) { + StringBuilder formatStringLines = new StringBuilder(); + ListTag tag = stack.getOrCreateTag().getList("formatStringLines", StringTag.TAG_STRING); + for (Tag value : tag) { + formatStringLines.append(value.getAsString()).append('\n'); + } + MultiLineComponent text = PlaceholderHandler.processPlaceholders( + formatStringLines.toString(), + new PlaceholderContext( + machine.getLevel(), + group.getTarget(machine.getLevel()), + group.getTargetCoverSide(), + group.getPlaceholderSlotsHandler(), + group.getTargetCover(machine.getLevel()), + null)); + stack.getOrCreateTag().put("text", text.toTag()); + } + + @Override + public void tick(ItemStack stack, CentralMonitorMachine machine, MonitorGroup group) { + this.updateText(stack, machine, group); + } + + @Override + public IMonitorRenderer getRenderer(ItemStack stack, CentralMonitorMachine machine, MonitorGroup group) { + return new MonitorTextRenderer( + MultiLineComponent.fromTag(stack.getOrCreateTag().getList("text", Tag.TAG_STRING)).toImmutable(), + Math.max(stack.getOrCreateTag().getDouble("scale"), .0001)); + } + + @Override + public Widget createUIWidget(ItemStack stack, CentralMonitorMachine machine, MonitorGroup group) { + WidgetGroup builder = new WidgetGroup(); + CodeEditorWidget editor = new CodeEditorWidget(0, 0, 120, 80); + TextFieldWidget scaleInput = new TextFieldWidget( + -50, 47, + 40, 10, + null, + null); + ButtonWidget saveButton = new ButtonWidget(-40, 22, 20, 20, click -> { + if (!click.isRemote) return; + ListTag listTag = new ListTag(); + editor.getLines().forEach(line -> listTag.add(StringTag.valueOf(line))); + CompoundTag tag2 = stack.getOrCreateTag(); + tag2.put("formatStringLines", listTag); + try { + tag2.putDouble("scale", Double.parseDouble(scaleInput.getCurrentString())); + } catch (NumberFormatException ignored) {} + stack.setTag(tag2); + GTNetwork.sendToServer(new SCPacketMonitorGroupNBTChange(stack, group, machine)); + }); + saveButton.setButtonTexture(GuiTextures.BUTTON_CHECK); + List tmp = new ArrayList<>(); + Supplier scaleInputSupplier = () -> { + if (tmp.isEmpty()) tmp.add(true); + else scaleInput.setTextSupplier(null); + if (!stack.getOrCreateTag().contains("scale")) { + stack.getOrCreateTag().putDouble("scale", 1); + GTNetwork.sendToServer(new SCPacketMonitorGroupNBTChange(stack, group, machine)); + return "1"; + } + return String.valueOf(Mth.clamp(stack.getOrCreateTag().getDouble("scale"), .0001, 1000)); + }; + scaleInput.setTextSupplier(scaleInputSupplier); + scaleInput.setHoverTooltips(Component.translatable("gtceu.gui.central_monitor.text_scale")); + ListTag tag = stack.getOrCreateTag().getList("formatStringLines", Tag.TAG_STRING); + List formatStringLines = new ArrayList<>(); + for (Tag line : tag) formatStringLines.add(line.getAsString()); + editor.setLines(formatStringLines); + builder.addWidget(editor); + builder.addWidget(saveButton); + Widget placeholderReference = PlaceholderHandler.getPlaceholderHandlerUI(""); + builder.addWidget(scaleInput); + placeholderReference.setSelfPosition(-100, -50); + builder.addWidget(placeholderReference); + return builder; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/ToolEventHandlers.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/ToolEventHandlers.java index 4c7ea817002..9dc9039ad1f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/ToolEventHandlers.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/ToolEventHandlers.java @@ -36,6 +36,7 @@ import org.jetbrains.annotations.NotNull; +import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; @@ -135,6 +136,7 @@ public static List onHarvestDrops(Player player, ItemStack tool, Serv } } if (behaviorTag.getBoolean(ToolHelper.RELOCATE_MINED_BLOCKS_KEY)) { + drops = new ArrayList<>(drops); Iterator dropItr = drops.iterator(); while (dropItr.hasNext()) { ItemStack dropStack = dropItr.next(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/AOEConfigUIBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/AOEConfigUIBehavior.java index 611ce38d463..261f013aff3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/AOEConfigUIBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/AOEConfigUIBehavior.java @@ -24,7 +24,7 @@ public class AOEConfigUIBehavior implements IToolUIBehavior { @Override public boolean openUI(@NotNull Player player, @NotNull InteractionHand hand) { - return player.isShiftKeyDown() && getMaxAoEDefinition(player.getItemInHand(hand)) != AoESymmetrical.none(); + return player.isShiftKeyDown() && !getMaxAoEDefinition(player.getItemInHand(hand)).isZero(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/BlockRotatingBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/BlockRotatingBehavior.java index 7d645ec0a3e..df33c4c90df 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/BlockRotatingBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/BlockRotatingBehavior.java @@ -57,19 +57,22 @@ public InteractionResult onItemUseFirst(ItemStack stack, UseOnContext context) { return InteractionResult.FAIL; } - if (!player.isShiftKeyDown()) { + if (player == null || !player.isShiftKeyDown()) { // Special cases for vanilla blocks where the default rotation behavior is less than ideal ICustomRotationBehavior behavior = CustomBlockRotations.getCustomRotation(b); if (behavior != null) { if (behavior.customRotate(state, level, pos, retraceBlock(level, player, pos))) { - ToolHelper.onActionDone(player, level, context.getHand()); - return InteractionResult.SUCCESS; + ToolHelper.onActionDone(player, stack, level, context.getClickLocation()); + return InteractionResult.sidedSuccess(level.isClientSide); } - } else if (state.rotate(player.getDirection().getClockWise() == context.getClickedFace() ? - Rotation.CLOCKWISE_90 : Rotation.COUNTERCLOCKWISE_90) != state) { - ToolHelper.onActionDone(player, level, context.getHand()); - return InteractionResult.SUCCESS; - } + } else { + Rotation rot = player == null || player.getDirection().getClockWise() == context.getClickedFace() ? + Rotation.CLOCKWISE_90 : Rotation.COUNTERCLOCKWISE_90; + if (state.rotate(level, pos, rot) != state) { + ToolHelper.onActionDone(player, stack, level, context.getClickLocation()); + return InteractionResult.sidedSuccess(level.isClientSide); + } + } } return InteractionResult.PASS; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/EntityDamageBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/EntityDamageBehavior.java index 6f6eea4f41c..0b38112fed9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/EntityDamageBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/EntityDamageBehavior.java @@ -10,13 +10,13 @@ import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.Level; +import it.unimi.dsi.fastutil.objects.Object2FloatMap; +import it.unimi.dsi.fastutil.objects.Object2FloatMaps; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; -import java.util.Map; -import java.util.function.Function; /** * Add to tools to have them deal bonus damage to specific mobs. @@ -24,38 +24,37 @@ */ public class EntityDamageBehavior implements IToolBehavior { - private final List> shouldDoBonusList = new ArrayList<>(); + private final List shouldDoBonusList = new ArrayList<>(); private final String mobType; public EntityDamageBehavior(float bonus, Class... entities) { this(null, bonus, entities); } - public EntityDamageBehavior(Map, Float> entities) { - this(null, entities); + public EntityDamageBehavior(Object2FloatMap> entityDamageMap) { + this(null, entityDamageMap); } public EntityDamageBehavior(String mobType, float bonus, Class... entities) { this.mobType = mobType; for (Class entity : entities) { - shouldDoBonusList.add(e -> entity.isAssignableFrom(e.getClass()) ? bonus : 0); + shouldDoBonusList.add(damageForClass(entity, bonus)); } } - public EntityDamageBehavior(String mobType, Map, Float> entities) { + public EntityDamageBehavior(String mobType, Object2FloatMap> entityDamageMap) { this.mobType = mobType; - for (Map.Entry, Float> entry : entities.entrySet()) { + for (var entry : Object2FloatMaps.fastIterable(entityDamageMap)) { Class entity = entry.getKey(); - float bonus = entry.getValue(); - shouldDoBonusList.add(e -> entity.isAssignableFrom(e.getClass()) ? bonus : 0); + float bonus = entry.getFloatValue(); + shouldDoBonusList.add(damageForClass(entity, bonus)); } } @Override public void hitEntity(@NotNull ItemStack stack, @NotNull LivingEntity target, @NotNull LivingEntity attacker) { - float damageBonus = shouldDoBonusList.stream().map(func -> func.apply(target)).filter(f -> f > 0).findFirst() - .orElse(0f); + float damageBonus = getDamageBonus(target); if (damageBonus != 0f) { DamageSource source = attacker instanceof Player player ? attacker.damageSources().playerAttack(player) : attacker.damageSources().mobAttack(attacker); @@ -63,6 +62,14 @@ public void hitEntity(@NotNull ItemStack stack, @NotNull LivingEntity target, } } + private float getDamageBonus(@NotNull LivingEntity target) { + for (EntityDamageFunction func : shouldDoBonusList) { + float f = func.damageFor(target); + if (f > 0) return f; + } + return 0f; + } + @Override public void addInformation(@NotNull ItemStack stack, @Nullable Level world, @NotNull List tooltip, @NotNull TooltipFlag flag) { @@ -71,4 +78,14 @@ public void addInformation(@NotNull ItemStack stack, @Nullable Level world, @Not Component.translatable("item.gtceu.tool.behavior.damage_boost_" + mobType))); } } + + @FunctionalInterface + private interface EntityDamageFunction { + + float damageFor(LivingEntity e); + } + + static EntityDamageFunction damageForClass(Class clazz, float damage) { + return e -> clazz.isAssignableFrom(e.getClass()) ? damage : 0; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/GrassPathBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/GrassPathBehavior.java index 9714f106d83..dbd835286ad 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/GrassPathBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/GrassPathBehavior.java @@ -9,7 +9,6 @@ import net.minecraft.network.chat.Component; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -18,107 +17,79 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.HitResult; import net.minecraftforge.common.ToolActions; -import com.google.common.collect.ImmutableSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.Set; public class GrassPathBehavior implements IToolBehavior { - public static final GrassPathBehavior INSTANCE = create(); + public static final GrassPathBehavior INSTANCE = new GrassPathBehavior(); protected GrassPathBehavior() {/**/} - protected static GrassPathBehavior create() { - return new GrassPathBehavior(); - } - @NotNull @Override public InteractionResult onItemUse(UseOnContext context) { - if (context.getClickedFace() == Direction.DOWN) - return InteractionResult.PASS; + if (context.getClickedFace() == Direction.DOWN) return InteractionResult.PASS; Level level = context.getLevel(); Player player = context.getPlayer(); BlockPos pos = context.getClickedPos(); - InteractionHand hand = context.getHand(); - - ItemStack stack = player.getItemInHand(hand); + ItemStack stack = context.getItemInHand(); AoESymmetrical aoeDefinition = ToolHelper.getAoEDefinition(stack); - Set blocks; + List blocks; // only attempt to till if the center block is tillable - if (level.getBlockState(pos.above()).isAir() && isBlockPathConvertible(stack, level, player, pos, context)) { - if (aoeDefinition == AoESymmetrical.none()) { - blocks = ImmutableSet.of(pos); + if (level.isEmptyBlock(pos.above()) && isBlockPathConvertible(context)) { + if (aoeDefinition.isZero()) { + blocks = List.of(pos); } else { - HitResult rayTraceResult = ToolHelper.getPlayerDefaultRaytrace(player); - - if (rayTraceResult == null) - return InteractionResult.PASS; - if (rayTraceResult.getType() != HitResult.Type.BLOCK) - return InteractionResult.PASS; - if (!(rayTraceResult instanceof BlockHitResult blockHitResult)) - return InteractionResult.PASS; - if (blockHitResult.getDirection() == null) - return InteractionResult.PASS; - - blocks = getPathConvertibleBlocks(stack, aoeDefinition, level, player, rayTraceResult); - blocks.add(blockHitResult.getBlockPos()); + blocks = getPathConvertibleBlocks(aoeDefinition, context); + blocks.add(0, context.getClickedPos()); } - } else + } else { return InteractionResult.PASS; + } boolean pathed = false; for (BlockPos blockPos : blocks) { - BlockState newState = getFlattened(level.getBlockState(blockPos), - new UseOnContext(player, hand, context.getHitResult().withPosition(blockPos))); - if (newState == null) { - continue; - } + UseOnContext posContext = new UseOnContext(level, player, context.getHand(), stack, + context.getHitResult().withPosition(blockPos)); + BlockState newState = getFlattened(level.getBlockState(blockPos), posContext); + if (newState == null) continue; pathed |= level.setBlock(blockPos, newState, Block.UPDATE_ALL); - if (!player.isCreative()) { - ToolHelper.damageItem(context.getItemInHand(), context.getPlayer()); - } - if (stack.isEmpty()) - break; + + ToolHelper.damageItem(stack, player); + if (stack.isEmpty()) break; } if (pathed) { - level.playSound(null, player.getX(), player.getY(), player.getZ(), SoundEvents.SHOVEL_FLATTEN, - SoundSource.PLAYERS, 1.0F, 1.0F); - player.swing(hand); - return InteractionResult.SUCCESS; + level.playSound(player, blocks.get(0), SoundEvents.SHOVEL_FLATTEN, SoundSource.BLOCKS, 1.0F, 1.0F); + return InteractionResult.sidedSuccess(level.isClientSide); } - return InteractionResult.PASS; } - public static Set getPathConvertibleBlocks(ItemStack stack, AoESymmetrical aoeDefinition, Level world, - Player player, HitResult rayTraceResult) { - return ToolHelper.iterateAoE(stack, aoeDefinition, world, player, rayTraceResult, - GrassPathBehavior.INSTANCE::isBlockPathConvertible); + public static List getPathConvertibleBlocks(AoESymmetrical aoeDefinition, UseOnContext context) { + return ToolHelper.iterateAoE(aoeDefinition, GrassPathBehavior::isBlockPathConvertible, context); } - protected boolean isBlockPathConvertible(ItemStack stack, Level level, Player player, BlockPos pos, - UseOnContext context) { - if (level.getBlockState(pos.above()).isAir()) { + protected static boolean isBlockPathConvertible(UseOnContext context) { + Level level = context.getLevel(); + BlockPos pos = context.getClickedPos(); + if (level.isEmptyBlock(pos.above())) { BlockState state = level.getBlockState(pos); - BlockState newState = state.getToolModifiedState(context, ToolActions.SHOVEL_FLATTEN, false); + BlockState newState = state.getToolModifiedState(context, ToolActions.SHOVEL_FLATTEN, true); return newState != null && newState != state; } return false; } - protected BlockState getFlattened(BlockState unFlattenedState, UseOnContext context) { - return unFlattenedState.getToolModifiedState(context, ToolActions.SHOVEL_FLATTEN, false); + protected static BlockState getFlattened(BlockState state, UseOnContext context) { + return state.getToolModifiedState(context, ToolActions.SHOVEL_FLATTEN, false); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HarvestCropsBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HarvestCropsBehavior.java index 7b5912f4a12..b65bfc9ea46 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HarvestCropsBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HarvestCropsBehavior.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.common.item.tool.behavior; -import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.item.tool.ToolHelper; import com.gregtechceu.gtceu.api.item.tool.aoe.AoESymmetrical; import com.gregtechceu.gtceu.api.item.tool.behavior.IToolBehavior; @@ -8,9 +7,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; @@ -19,15 +16,12 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.CropBlock; import net.minecraft.world.level.block.LevelEvent; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.HitResult; +import net.minecraft.world.level.block.state.BlockState; -import com.google.common.collect.ImmutableSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.Set; public class HarvestCropsBehavior implements IToolBehavior { @@ -38,102 +32,69 @@ protected HarvestCropsBehavior() {/**/} @NotNull @Override public InteractionResult onItemUse(UseOnContext context) { - if (context.getLevel().isClientSide) { - return InteractionResult.PASS; - } - - Player player = context.getPlayer(); BlockPos pos = context.getClickedPos(); - InteractionHand hand = context.getHand(); - - ItemStack stack = player.getItemInHand(hand); - + ItemStack stack = context.getItemInHand(); AoESymmetrical aoeDefinition = ToolHelper.getAoEDefinition(stack); - Set blocks; - - if (aoeDefinition == AoESymmetrical.none()) { - blocks = ImmutableSet.of(pos); + List blocks; + if (aoeDefinition.isZero()) { + blocks = List.of(pos); } else { - HitResult rayTraceResult = ToolHelper.getPlayerDefaultRaytrace(player); - - if (rayTraceResult == null) return InteractionResult.PASS; - if (rayTraceResult.getType() != HitResult.Type.BLOCK) return InteractionResult.PASS; - if (!(rayTraceResult instanceof BlockHitResult blockHitResult)) - return InteractionResult.PASS; - if (blockHitResult.getDirection() == null) - return InteractionResult.PASS; - - blocks = ToolHelper.iterateAoE(stack, aoeDefinition, player.level(), player, rayTraceResult, - HarvestCropsBehavior::isBlockCrops); - if (isBlockCrops(stack, context.getLevel(), player, blockHitResult.getBlockPos(), context)) { - blocks.add(blockHitResult.getBlockPos()); + blocks = ToolHelper.iterateAoE(aoeDefinition, HarvestCropsBehavior::isBlockCrops, context); + if (isBlockCrops(context)) { + blocks.add(0, context.getClickedPos()); } } boolean harvested = false; for (BlockPos blockPos : blocks) { - if (harvestBlockRoutine(stack, blockPos, player)) { - harvested = true; - } + harvested |= harvestBlockRoutine(blockPos, context); + if (stack.isEmpty()) break; } - - return harvested ? InteractionResult.SUCCESS : InteractionResult.PASS; + return harvested ? InteractionResult.sidedSuccess(context.getLevel().isClientSide) : InteractionResult.PASS; } - private static boolean isBlockCrops(ItemStack stack, Level world, Player player, BlockPos pos, - @Nullable UseOnContext context) { - if (world.getBlockState(pos.above()).isAir()) { - Block block = world.getBlockState(pos).getBlock(); + private static boolean isBlockCrops(UseOnContext context) { + Level level = context.getLevel(); + BlockPos pos = context.getClickedPos(); + if (level.getBlockState(pos.above()).isAir()) { + Block block = level.getBlockState(pos).getBlock(); return block instanceof CropBlock; } return false; } - private static boolean harvestBlockRoutine(ItemStack stack, BlockPos pos, Player player) { - var level = player.level(); - var blockState = level.getBlockState(pos); - var block = blockState.getBlock(); - var cropBlock = (CropBlock) block; - final var seed = cropBlock.getCloneItemStack(level, pos, blockState).getItem(); + private static boolean harvestBlockRoutine(BlockPos pos, UseOnContext context) { + Level level = context.getLevel(); + ItemStack stack = context.getItemInHand(); + Player player = context.getPlayer(); + + BlockState blockState = level.getBlockState(pos); + if (!(blockState.getBlock() instanceof CropBlock cropBlock)) return false; + + ItemStack seed = blockState.getCloneItemStack(context.getHitResult().withPosition(pos), level, pos, player); if (cropBlock.isMaxAge(blockState)) { - var drops = Block.getDrops(blockState, (ServerLevel) level, pos, null); - var iterator = drops.listIterator(); - while (iterator.hasNext()) { - var drop = iterator.next(); - if (drop.is(seed)) { - drop.shrink(1); - if (drop.isEmpty()) { - iterator.remove(); + if (!level.isClientSide) { + var drops = Block.getDrops(blockState, (ServerLevel) level, pos, null); + boolean removedSeed = false; + for (ItemStack drop : drops) { + if (!removedSeed && ItemStack.isSameItemSameTags(drop, seed)) { + drop.shrink(1); + removedSeed = true; + if (drop.isEmpty()) continue; } - break; + Block.popResource(level, pos, drop); } } - dropListOfItems(level, pos, drops); level.levelEvent(LevelEvent.PARTICLES_DESTROY_BLOCK, pos, Block.getId(blockState)); - level.setBlock(pos, cropBlock.getStateForAge(0), Block.UPDATE_ALL); - if (!player.isCreative()) { - ToolHelper.damageItem(stack, player); - } + level.setBlock(pos, cropBlock.getStateForAge(0), Block.UPDATE_ALL_IMMEDIATE); + ToolHelper.damageItem(stack, player); return true; } return false; } - private static void dropListOfItems(Level world, BlockPos pos, List drops) { - for (ItemStack stack : drops) { - float f = 0.7F; - double offX = (GTValues.RNG.nextFloat() * f) + (1.0F - f) * 0.5D; - double offY = (GTValues.RNG.nextFloat() * f) + (1.0F - f) * 0.5D; - double offZ = (GTValues.RNG.nextFloat() * f) + (1.0F - f) * 0.5D; - ItemEntity entityItem = new ItemEntity(world, pos.getX() + offX, pos.getY() + offY, pos.getZ() + offZ, - stack); - entityItem.setDefaultPickUpDelay(); - world.addFreshEntity(entityItem); - } - } - @Override public void addInformation(@NotNull ItemStack stack, @Nullable Level world, @NotNull List tooltip, @NotNull TooltipFlag flag) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HoeGroundBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HoeGroundBehavior.java index b43c0e319c6..cd41d323450 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HoeGroundBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HoeGroundBehavior.java @@ -9,7 +9,6 @@ import net.minecraft.network.chat.Component; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -19,16 +18,12 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.gameevent.GameEvent; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.HitResult; import net.minecraftforge.common.ToolActions; -import com.google.common.collect.ImmutableSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.Set; /** * Used to allow a tool to hoe the ground, only if it cannot extend the @@ -37,91 +32,70 @@ */ public class HoeGroundBehavior implements IToolBehavior { - public static final HoeGroundBehavior INSTANCE = create(); + public static final HoeGroundBehavior INSTANCE = new HoeGroundBehavior(); protected HoeGroundBehavior() {/**/} - protected static HoeGroundBehavior create() { - return new HoeGroundBehavior(); - } - @NotNull @Override public InteractionResult onItemUse(UseOnContext context) { if (context.getClickedFace() == Direction.DOWN) return InteractionResult.PASS; - Level world = context.getLevel(); + Level level = context.getLevel(); Player player = context.getPlayer(); BlockPos pos = context.getClickedPos(); - InteractionHand hand = context.getHand(); - - ItemStack stack = player.getItemInHand(hand); + ItemStack stack = context.getItemInHand(); AoESymmetrical aoeDefinition = ToolHelper.getAoEDefinition(stack); - Set blocks; + List blocks; // only attempt to till if the center block is tillable - if (isBlockTillable(stack, world, player, pos, context)) { - if (aoeDefinition == AoESymmetrical.none()) { - blocks = ImmutableSet.of(pos); + if (isBlockTillable(context)) { + if (aoeDefinition.isZero()) { + blocks = List.of(pos); } else { - HitResult rayTraceResult = ToolHelper.getPlayerDefaultRaytrace(player); - - if (rayTraceResult == null) return InteractionResult.PASS; - if (rayTraceResult.getType() != HitResult.Type.BLOCK) return InteractionResult.PASS; - if (!(rayTraceResult instanceof BlockHitResult blockHitResult)) - return InteractionResult.PASS; - if (blockHitResult.getDirection() == null) - return InteractionResult.PASS; - - blocks = getTillableBlocks(stack, aoeDefinition, world, player, blockHitResult); - if (isBlockTillable(stack, world, player, blockHitResult.getBlockPos(), context)) { - blocks.add(blockHitResult.getBlockPos()); - } + blocks = getTillableBlocks(aoeDefinition, context); + blocks.add(0, context.getClickedPos()); } - } else return InteractionResult.PASS; + } else { + return InteractionResult.PASS; + } boolean tilled = false; for (BlockPos blockPos : blocks) { - BlockState state = world.getBlockState(blockPos); - tilled |= tillGround(new UseOnContext(player, hand, context.getHitResult().withPosition(blockPos)), state); - if (!player.isCreative()) { - ToolHelper.damageItem(context.getItemInHand(), context.getPlayer()); - } - if (stack.isEmpty()) - break; + UseOnContext posContext = new UseOnContext(level, player, context.getHand(), stack, + context.getHitResult().withPosition(blockPos)); + tilled |= tillGround(posContext); + + ToolHelper.damageItem(stack, player); + if (stack.isEmpty()) break; } if (tilled) { - world.playSound(null, player.getX(), player.getY(), player.getZ(), SoundEvents.HOE_TILL, - SoundSource.PLAYERS, 1.0F, 1.0F); - player.swing(hand); - return InteractionResult.SUCCESS; + level.playSound(player, blocks.get(0), SoundEvents.HOE_TILL, SoundSource.BLOCKS, 1.0F, 1.0F); + return InteractionResult.sidedSuccess(level.isClientSide); } - return InteractionResult.PASS; } - public static Set getTillableBlocks(ItemStack stack, AoESymmetrical aoeDefinition, Level world, - Player player, HitResult rayTraceResult) { - return ToolHelper.iterateAoE(stack, aoeDefinition, world, player, rayTraceResult, - HoeGroundBehavior.INSTANCE::isBlockTillable); + public static List getTillableBlocks(AoESymmetrical aoeDefinition, UseOnContext context) { + return ToolHelper.iterateAoE(aoeDefinition, HoeGroundBehavior::isBlockTillable, context); } - protected boolean isBlockTillable(ItemStack stack, Level world, Player player, BlockPos pos, UseOnContext context) { - if (world.getBlockState(pos.above()).isAir()) { - BlockState state = world.getBlockState(pos); - BlockState newState = state.getToolModifiedState(context, ToolActions.HOE_TILL, false); - return newState != null && newState != state; - } - return false; + protected static boolean isBlockTillable(UseOnContext context) { + BlockState state = context.getLevel().getBlockState(context.getClickedPos()); + BlockState newState = state.getToolModifiedState(context, ToolActions.HOE_TILL, true); + return newState != null && newState != state; } - protected boolean tillGround(UseOnContext context, BlockState state) { + protected boolean tillGround(UseOnContext context) { + Level level = context.getLevel(); + BlockPos pos = context.getClickedPos(); + BlockState state = level.getBlockState(pos); + BlockState newState = state.getToolModifiedState(context, ToolActions.HOE_TILL, false); if (newState != null && newState != state) { - context.getLevel().gameEvent(GameEvent.BLOCK_CHANGE, context.getClickedPos(), - GameEvent.Context.of(context.getPlayer(), state)); - return context.getLevel().setBlock(context.getClickedPos(), newState, Block.UPDATE_ALL_IMMEDIATE); + level.gameEvent(GameEvent.BLOCK_CHANGE, pos, GameEvent.Context.of(context.getPlayer(), newState)); + return level.setBlock(pos, newState, Block.UPDATE_ALL_IMMEDIATE); } return false; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LighterBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LighterBehavior.java index 0139e2af524..72e07cc5c39 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LighterBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LighterBehavior.java @@ -1,42 +1,50 @@ package com.gregtechceu.gtceu.common.item.tool.behavior; -import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.item.component.IAddInformation; import com.gregtechceu.gtceu.api.item.component.IDurabilityBar; import com.gregtechceu.gtceu.api.item.component.IInteractionItem; import com.gregtechceu.gtceu.common.block.explosive.GTExplosiveBlock; +import com.gregtechceu.gtceu.common.block.explosive.IndustrialTNTBlock; +import com.gregtechceu.gtceu.common.block.explosive.PowderbarrelBlock; import com.gregtechceu.gtceu.utils.GradientUtil; import net.minecraft.advancements.CriteriaTriggers; import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.monster.Creeper; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.*; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.gameevent.GameEvent; +import net.minecraft.world.level.material.FluidState; import net.minecraftforge.common.capabilities.ForgeCapabilities; +import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandlerItem; -import org.apache.commons.lang3.tuple.Pair; +import it.unimi.dsi.fastutil.ints.IntIntPair; +import it.unimi.dsi.fastutil.objects.Reference2BooleanMap; +import it.unimi.dsi.fastutil.objects.Reference2BooleanOpenHashMap; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; import java.util.List; - -import javax.annotation.Nullable; +import java.util.function.Supplier; import static net.minecraft.world.level.block.AbstractCandleBlock.LIT; @@ -44,28 +52,22 @@ public class LighterBehavior implements IDurabilityBar, IInteractionItem, IAddIn public static final String LIGHTER_OPEN = "lighterOpen"; private static final String USES_LEFT = "usesLeft"; - private static final Pair DURABILITY_BAR_COLORS = GradientUtil.getGradient(0xF07F1D, 10); - private final ResourceLocation overrideLocation; + private static final IntIntPair DURABILITY_BAR_COLORS = GradientUtil.getGradient(0xF07F1D, 10); private final boolean usesFluid; private final boolean hasMultipleUses; private final boolean canOpen; - private Item destroyItem = Items.AIR; + private Supplier destroyItem = () -> ItemStack.EMPTY; private int maxUses = 0; - public LighterBehavior(boolean useFluid, boolean hasMultipleUses, boolean canOpen) { - this(null, useFluid, hasMultipleUses, canOpen); - } - - public LighterBehavior(boolean useFluid, boolean hasMultipleUses, boolean canOpen, Item destroyItem, int maxUses) { - this(null, useFluid, hasMultipleUses, canOpen); + public LighterBehavior(boolean useFluid, boolean hasMultipleUses, boolean canOpen, Supplier destroyItem, + int maxUses) { + this(useFluid, hasMultipleUses, canOpen); this.maxUses = maxUses; this.destroyItem = destroyItem; } - public LighterBehavior(@Nullable ResourceLocation overrideLocation, boolean useFluid, boolean hasMultipleUses, - boolean canOpen) { - this.overrideLocation = overrideLocation; + public LighterBehavior(boolean useFluid, boolean hasMultipleUses, boolean canOpen) { this.usesFluid = useFluid; this.hasMultipleUses = hasMultipleUses; this.canOpen = canOpen; @@ -84,107 +86,82 @@ public InteractionResultHolder use(Item item, Level level, Player pla @Override public InteractionResult onItemUseFirst(ItemStack itemStack, UseOnContext context) { - // ItemStack itemStack = player.getItemInHand(usedHand); CompoundTag tag = itemStack.getOrCreateTag(); + Level level = context.getLevel(); Player player = context.getPlayer(); BlockPos pos = context.getClickedPos(); - BlockState state = context.getLevel().getBlockState(pos); + Direction clickedFace = context.getClickedFace(); + BlockState state = level.getBlockState(pos); Block block = state.getBlock(); - BlockPos offset = pos.offset(context.getClickedFace().getNormal()); - - if ((!canOpen || (tag.getBoolean(LIGHTER_OPEN)) && !player.isCrouching())) { - if (block instanceof TntBlock tnt && consumeFuel(player, itemStack)) { - tnt.onCaughtFire(null, context.getLevel(), pos, null, player); - context.getLevel().setBlock(pos, Blocks.AIR.defaultBlockState(), - Block.UPDATE_ALL_IMMEDIATE); - player.level().playSound(null, player.getOnPos(), SoundEvents.FLINTANDSTEEL_USE, SoundSource.PLAYERS, - 1.0F, - GTValues.RNG.nextFloat() * 0.4F + 0.8F); - return InteractionResult.SUCCESS; - } - if (block instanceof GTExplosiveBlock explosive && consumeFuel(player, itemStack)) { - explosive.explode(context.getLevel(), pos, player); - context.getLevel().setBlock(pos, Blocks.AIR.defaultBlockState(), - Block.UPDATE_ALL_IMMEDIATE); - player.level().playSound(null, player.getOnPos(), SoundEvents.FLINTANDSTEEL_USE, SoundSource.PLAYERS, - 1.0F, - GTValues.RNG.nextFloat() * 0.4F + 0.8F); - return InteractionResult.SUCCESS; - } - if (block instanceof CandleBlock) { - if (CandleBlock.canLight(state) && !CandleBlock.isLit(state) && consumeFuel(player, itemStack)) { - context.getLevel().setBlock(pos, state.setValue(LIT, true), Block.UPDATE_ALL_IMMEDIATE); - player.level().playSound(null, player.getOnPos(), SoundEvents.FLINTANDSTEEL_USE, - SoundSource.PLAYERS, 1.0F, - GTValues.RNG.nextFloat() * 0.4F + 0.8F); - return InteractionResult.SUCCESS; - } else return InteractionResult.PASS; - } - if (block instanceof CandleCakeBlock) { - if (CandleCakeBlock.canLight(state) && !CandleCakeBlock.isLit(state) && - consumeFuel(player, itemStack)) { - context.getLevel().setBlock(pos, state.setValue(LIT, true), Block.UPDATE_ALL_IMMEDIATE); - player.level().playSound(null, player.getOnPos(), SoundEvents.FLINTANDSTEEL_USE, - SoundSource.PLAYERS, 1.0F, - GTValues.RNG.nextFloat() * 0.4F + 0.8F); - return InteractionResult.SUCCESS; - } else return InteractionResult.PASS; - } - if (block instanceof CampfireBlock) { - if (CampfireBlock.canLight(state) && !CampfireBlock.isLitCampfire(state) && - consumeFuel(player, itemStack)) { - context.getLevel().setBlock(pos, state.setValue(LIT, true), Block.UPDATE_ALL_IMMEDIATE); - player.level().playSound(null, player.getOnPos(), SoundEvents.FLINTANDSTEEL_USE, - SoundSource.PLAYERS, 1.0F, - GTValues.RNG.nextFloat() * 0.4F + 0.8F); - return InteractionResult.SUCCESS; - } else return InteractionResult.PASS; + + if ((!canOpen || tag.getBoolean(LIGHTER_OPEN)) && (player == null || !player.isShiftKeyDown())) { + // check if it's "tnt-like" in that it implements the same method for igniting it + if (classImplementsOnCaughtFire(block.getClass())) { + if (!consumeFuel(player, itemStack)) return InteractionResult.PASS; + + state.onCaughtFire(level, pos, clickedFace, player); + FluidState fluidState = level.getFluidState(pos); + level.setBlock(pos, fluidState.createLegacyBlock(), Block.UPDATE_ALL_IMMEDIATE); + return InteractionResult.sidedSuccess(level.isClientSide); } - if (block instanceof SoulSandBlock && block != Blocks.SOUL_FIRE && consumeFuel(player, itemStack)) { - context.getLevel().setBlock(offset, Blocks.SOUL_FIRE.defaultBlockState(), Block.UPDATE_ALL_IMMEDIATE); - if (!context.getLevel().isClientSide) { - CriteriaTriggers.PLACED_BLOCK.trigger((ServerPlayer) player, offset, itemStack); - } - player.level().playSound(null, player.getOnPos(), SoundEvents.FLINTANDSTEEL_USE, SoundSource.PLAYERS, - 1.0F, - GTValues.RNG.nextFloat() * 0.4F + 0.8F); - return InteractionResult.PASS; + if ((CampfireBlock.canLight(state) || CandleBlock.canLight(state) || CandleCakeBlock.canLight(state))) { + if (!consumeFuel(player, itemStack)) return InteractionResult.PASS; + + level.setBlock(pos, state.setValue(LIT, true), Block.UPDATE_ALL_IMMEDIATE); + level.playSound(player, pos, SoundEvents.FLINTANDSTEEL_USE, SoundSource.BLOCKS, + 1.0F, level.getRandom().nextFloat() * 0.4F + 0.8F); + level.gameEvent(player, GameEvent.BLOCK_CHANGE, pos); + return InteractionResult.sidedSuccess(level.isClientSide); } - if (block == Blocks.SOUL_SOIL && block != Blocks.SOUL_FIRE && consumeFuel(player, itemStack)) { - context.getLevel().setBlock(offset, Blocks.SOUL_FIRE.defaultBlockState(), Block.UPDATE_ALL_IMMEDIATE); - if (!context.getLevel().isClientSide) { - CriteriaTriggers.PLACED_BLOCK.trigger((ServerPlayer) player, offset, itemStack); + + BlockPos offset = pos.relative(clickedFace); + if (BaseFireBlock.canBePlacedAt(level, offset, context.getHorizontalDirection())) { + if (!consumeFuel(player, itemStack)) return InteractionResult.PASS; + + level.playSound(player, offset, SoundEvents.FLINTANDSTEEL_USE, SoundSource.BLOCKS, + 1.0F, level.getRandom().nextFloat() * 0.4F + 0.8F); + BlockState fireState = BaseFireBlock.getState(level, offset); + level.setBlock(offset, fireState, Block.UPDATE_ALL_IMMEDIATE); + level.gameEvent(player, GameEvent.BLOCK_PLACE, pos); + + if (player instanceof ServerPlayer serverPlayer) { + CriteriaTriggers.PLACED_BLOCK.trigger(serverPlayer, offset, itemStack); + itemStack.hurtAndBreak(1, player, p -> p.broadcastBreakEvent(context.getHand())); } - player.level().playSound(null, player.getOnPos(), SoundEvents.FLINTANDSTEEL_USE, SoundSource.PLAYERS, - 1.0F, - GTValues.RNG.nextFloat() * 0.4F + 0.8F); - return InteractionResult.PASS; + return InteractionResult.sidedSuccess(level.isClientSide); } + } + return InteractionResult.PASS; + } - if (context.getLevel().isEmptyBlock(offset) && - BaseFireBlock.canBePlacedAt(context.getLevel(), offset, context.getHorizontalDirection()) && - block != Blocks.FIRE && block != Blocks.SOUL_FIRE && consumeFuel(player, itemStack)) { - context.getLevel().setBlock(offset, Blocks.FIRE.defaultBlockState(), Block.UPDATE_ALL_IMMEDIATE); - if (!context.getLevel().isClientSide) { - CriteriaTriggers.PLACED_BLOCK.trigger((ServerPlayer) player, offset, itemStack); + @Override + public InteractionResult interactLivingEntity(ItemStack stack, Player player, + LivingEntity interactionTarget, InteractionHand usedHand) { + CompoundTag tag = stack.getOrCreateTag(); + Level level = player.level(); + + if ((!canOpen || tag.getBoolean(LIGHTER_OPEN)) && !player.isShiftKeyDown()) { + if (interactionTarget instanceof Creeper creeper) { + if (!consumeFuel(player, stack)) return InteractionResult.PASS; + level.playSound(player, creeper, SoundEvents.FLINTANDSTEEL_USE, SoundSource.BLOCKS, + 1.0F, level.getRandom().nextFloat() * 0.4F + 0.8F); + if (!level.isClientSide) { + creeper.ignite(); } - player.level().playSound(null, player.getOnPos(), SoundEvents.FLINTANDSTEEL_USE, SoundSource.PLAYERS, - 1.0F, - GTValues.RNG.nextFloat() * 0.4F + 0.8F); - return InteractionResult.SUCCESS; + return InteractionResult.sidedSuccess(level.isClientSide); } } return InteractionResult.PASS; } - public boolean consumeFuel(Player player, ItemStack stack) { + public boolean consumeFuel(@Nullable Player player, ItemStack stack) { if (player != null && player.isCreative()) return true; - int usesLeft = getUsesLeft(stack); + int usesLeft = getUsesLeft(stack) - 1; - if (usesLeft - 1 >= 0) { - setUsesLeft(player, stack, usesLeft - 1); + if (usesLeft >= 0) { + setUsesLeft(player, stack, usesLeft); return true; } return false; @@ -192,43 +169,39 @@ public boolean consumeFuel(Player player, ItemStack stack) { private int getUsesLeft(ItemStack stack) { if (usesFluid) { - IFluidHandlerItem fluidHandlerItem = stack.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM, null) - .resolve().orElse(null); - if (fluidHandlerItem == null) - return 0; - - net.minecraftforge.fluids.FluidStack fluid = fluidHandlerItem.drain(Integer.MAX_VALUE, - IFluidHandler.FluidAction.SIMULATE); - return fluid.isEmpty() ? 0 : fluid.getAmount(); - } - if (hasMultipleUses) { + var handler = stack.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM, null).resolve(); + if (handler.isEmpty()) return 0; + + FluidStack fluid = handler.get().drain(Integer.MAX_VALUE, IFluidHandler.FluidAction.SIMULATE); + return fluid.getAmount(); + } else if (hasMultipleUses) { CompoundTag compound = stack.getOrCreateTag(); if (compound.contains(USES_LEFT)) { return compound.getInt(USES_LEFT); } compound.putInt(USES_LEFT, maxUses); - stack.setTag(compound); - return compound.getInt(USES_LEFT); + // no need to get the value from the tag here when we set it just above + return maxUses; + } else { + return stack.getCount(); } - return stack.getCount(); } - private void setUsesLeft(Player player, @NotNull ItemStack stack, int usesLeft) { + private void setUsesLeft(Player player, @NotNull ItemStack stack, final int usesLeft) { if (usesFluid) { - IFluidHandlerItem fluidHandlerItem = stack.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM, null) - .resolve().orElse(null); - if (fluidHandlerItem != null) { - - net.minecraftforge.fluids.FluidStack fluid = fluidHandlerItem.drain(Integer.MAX_VALUE, - IFluidHandler.FluidAction.SIMULATE); + stack.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM).ifPresent(handler -> { + FluidStack fluid = handler.drain(Integer.MAX_VALUE, IFluidHandler.FluidAction.SIMULATE); if (!fluid.isEmpty()) { - fluidHandlerItem.drain(fluid.getAmount() - usesLeft, IFluidHandler.FluidAction.EXECUTE); + handler.drain(fluid.getAmount() - usesLeft, IFluidHandler.FluidAction.EXECUTE); } - } + }); } else if (hasMultipleUses) { - if (usesLeft == 0) { - stack.setCount(0); - player.addItem(new ItemStack(destroyItem)); + if (usesLeft <= 0) { + stack.shrink(1); + ItemStack brokenStack = this.destroyItem.get(); + if (!player.addItem(brokenStack)) { + player.drop(brokenStack, true); + } } else { stack.getOrCreateTag().putInt(USES_LEFT, usesLeft); } @@ -240,17 +213,16 @@ private void setUsesLeft(Player player, @NotNull ItemStack stack, int usesLeft) @Override public float getDurabilityForDisplay(ItemStack stack) { if (usesFluid) { - IFluidHandlerItem fluidHandlerItem = stack.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM, null) - .resolve().orElse(null); - if (fluidHandlerItem == null) - return 0.0f; + var handler = stack.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM, null).resolve(); + if (handler.isEmpty()) return 0.0f; - net.minecraftforge.fluids.FluidStack fluid = fluidHandlerItem.getFluidInTank(0); - return fluid.isEmpty() ? 0.0f : (float) fluid.getAmount() / (float) fluidHandlerItem.getTankCapacity(0); + FluidStack fluid = handler.get().getFluidInTank(0); + return (float) fluid.getAmount() / (float) handler.get().getTankCapacity(0); } else if (hasMultipleUses) { return (float) getUsesLeft(stack) / (float) maxUses; + } else { + return 0.0f; } - return 0.0f; } @Override @@ -264,7 +236,7 @@ public boolean showEmptyBar(ItemStack itemStack) { } @Override - public @Nullable Pair getDurabilityColorsForDisplay(ItemStack itemStack) { + public @Nullable IntIntPair getDurabilityColorsForDisplay(ItemStack itemStack) { if (hasMultipleUses && usesFluid) { return DURABILITY_BAR_COLORS; } @@ -272,7 +244,7 @@ public boolean showEmptyBar(ItemStack itemStack) { } @Override - public void appendHoverText(ItemStack stack, @org.jetbrains.annotations.Nullable Level level, + public void appendHoverText(ItemStack stack, @Nullable Level level, List tooltipComponents, TooltipFlag isAdvanced) { tooltipComponents.add(Component .translatable(usesFluid ? "behaviour.lighter.fluid.tooltip" : "behaviour.lighter.tooltip.description")); @@ -281,4 +253,66 @@ public void appendHoverText(ItemStack stack, @org.jetbrains.annotations.Nullable tooltipComponents.add(Component.translatable("behaviour.lighter.uses", getUsesLeft(stack))); } } + + private static boolean defaultsCacheInit = false; + private static final Reference2BooleanMap> IMPLS_CACHE = new Reference2BooleanOpenHashMap<>(); + + /** + * This is the simplest way I could figure out to check if a block can "catch fire" like TNT does (i.e. explode.), + * whilst still placing a fire block if the block can't do that. + *

+ * Most modded TNTs implement this method in one way or another, but don't have tags or extend {@link TntBlock}. + * + * @author screret + */ + private static boolean classImplementsOnCaughtFire(Class clazz) { + if (!defaultsCacheInit) { + defaultsCacheInit = true; + initCacheDefaults(); + } + // first, check if class is cached + if (IMPLS_CACHE.containsKey(clazz)) { + return IMPLS_CACHE.getBoolean(clazz); + } else { + // then, cached superclasses + for (Class cls = clazz; cls != Block.class; cls = cls.getSuperclass()) { + if (IMPLS_CACHE.containsKey(cls)) { + boolean val = IMPLS_CACHE.getBoolean(cls); + IMPLS_CACHE.put(clazz, val); + return val; + } + } + } + boolean exists; + + // finally, actually check if the method exists. + try { + // find the method and check its modifiers. + Method onCaughtFire = clazz.getDeclaredMethod("onCaughtFire", + BlockState.class, Level.class, BlockPos.class, Direction.class, LivingEntity.class); + int modifiers = onCaughtFire.getModifiers(); + // the method is implemented if it's: 1. not a default method, 2. public, 3. not static, 4. not abstract + exists = !onCaughtFire.getDeclaringClass().isInterface() && Modifier.isPublic(modifiers) && + !Modifier.isStatic(modifiers) && !Modifier.isAbstract(modifiers); + + IMPLS_CACHE.put(onCaughtFire.getDeclaringClass(), exists); + } catch (NoSuchMethodException e) { + exists = false; + } + IMPLS_CACHE.put(clazz, exists); + return exists; + } + + private static void initCacheDefaults() { + // self-test & default caching + if (!classImplementsOnCaughtFire(TntBlock.class)) { + throw new AssertionError("TntBlock doesn't implement IForgeBlock#onCaughtFire!" + + "Something is seriously wrong!" + + "Maybe check if the method name changed?"); + } + classImplementsOnCaughtFire(GTExplosiveBlock.class); + // expected subclasses of GTExplosiveBlock + classImplementsOnCaughtFire(IndustrialTNTBlock.class); + classImplementsOnCaughtFire(PowderbarrelBlock.class); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LogStripBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LogStripBehavior.java index 9c03bf4d06c..b5ef7127e1c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LogStripBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LogStripBehavior.java @@ -8,7 +8,6 @@ import net.minecraft.network.chat.Component; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -17,99 +16,72 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.HitResult; import net.minecraftforge.common.ToolActions; -import com.google.common.collect.ImmutableSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.Set; public class LogStripBehavior implements IToolBehavior { - public static final LogStripBehavior INSTANCE = create(); + public static final LogStripBehavior INSTANCE = new LogStripBehavior(); protected LogStripBehavior() {/**/} - protected static LogStripBehavior create() { - return new LogStripBehavior(); - } - @NotNull @Override public InteractionResult onItemUse(UseOnContext context) { Level level = context.getLevel(); Player player = context.getPlayer(); BlockPos pos = context.getClickedPos(); - InteractionHand hand = context.getHand(); - ItemStack stack = player.getItemInHand(hand); + ItemStack stack = context.getItemInHand(); AoESymmetrical aoeDefinition = ToolHelper.getAoEDefinition(stack); - Set blocks; + List blocks; // only attempt to strip if the center block is strippable - if (isBlockStrippable(stack, level, player, pos, context)) { - if (aoeDefinition == AoESymmetrical.none()) { - blocks = ImmutableSet.of(pos); + if (isBlockStrippable(context)) { + if (aoeDefinition.isZero()) { + blocks = List.of(pos); } else { - HitResult rayTraceResult = ToolHelper.getPlayerDefaultRaytrace(player); - - if (rayTraceResult == null) - return InteractionResult.PASS; - if (rayTraceResult.getType() != HitResult.Type.BLOCK) - return InteractionResult.PASS; - if (!(rayTraceResult instanceof BlockHitResult blockHitResult)) - return InteractionResult.PASS; - if (blockHitResult.getDirection() == null) - return InteractionResult.PASS; - - blocks = getStrippableBlocks(stack, aoeDefinition, level, player, rayTraceResult); - blocks.add(blockHitResult.getBlockPos()); + blocks = getStrippableBlocks(aoeDefinition, context); + blocks.add(context.getClickedPos()); } - } else + } else { return InteractionResult.PASS; + } boolean stripped = false; for (BlockPos blockPos : blocks) { - stripped |= level.setBlock(blockPos, - getStripped(level.getBlockState(blockPos), - new UseOnContext(player, hand, context.getHitResult().withPosition(blockPos))), - Block.UPDATE_ALL); - if (!player.isCreative()) { - ToolHelper.damageItem(context.getItemInHand(), context.getPlayer()); - } - if (stack.isEmpty()) - break; + UseOnContext posContext = new UseOnContext(level, player, context.getHand(), stack, + context.getHitResult().withPosition(blockPos)); + BlockState newState = getStripped(level.getBlockState(blockPos), posContext); + stripped |= level.setBlock(blockPos, newState, Block.UPDATE_ALL); + + ToolHelper.damageItem(stack, player); + if (stack.isEmpty()) break; } if (stripped) { - level.playSound(null, player.getX(), player.getY(), player.getZ(), SoundEvents.AXE_STRIP, - SoundSource.PLAYERS, 1.0F, 1.0F); - player.swing(hand); - return InteractionResult.SUCCESS; + level.playSound(player, blocks.get(0), SoundEvents.AXE_STRIP, SoundSource.BLOCKS, 1.0F, 1.0F); + return InteractionResult.sidedSuccess(level.isClientSide); } - return InteractionResult.PASS; } - public static Set getStrippableBlocks(ItemStack stack, AoESymmetrical aoeDefinition, Level Level, - Player player, HitResult rayTraceResult) { - return ToolHelper.iterateAoE(stack, aoeDefinition, Level, player, rayTraceResult, - LogStripBehavior.INSTANCE::isBlockStrippable); + public static List getStrippableBlocks(AoESymmetrical aoeDefinition, UseOnContext context) { + return ToolHelper.iterateAoE(aoeDefinition, LogStripBehavior::isBlockStrippable, context); } - protected boolean isBlockStrippable(ItemStack stack, Level level, Player player, BlockPos pos, - UseOnContext context) { - BlockState state = level.getBlockState(pos); - BlockState newState = state.getToolModifiedState(context, ToolActions.AXE_STRIP, false); + protected static boolean isBlockStrippable(UseOnContext context) { + BlockState state = context.getLevel().getBlockState(context.getClickedPos()); + BlockState newState = state.getToolModifiedState(context, ToolActions.AXE_STRIP, true); return newState != null && newState != state; } - protected BlockState getStripped(BlockState unscrapedState, UseOnContext context) { - return unscrapedState.getToolModifiedState(context, ToolActions.AXE_STRIP, false); + protected BlockState getStripped(BlockState state, UseOnContext context) { + return state.getToolModifiedState(context, ToolActions.AXE_STRIP, false); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/MetaMachineConfigCopyBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/MetaMachineConfigCopyBehaviour.java index 62827d41b6a..2d52bb34cec 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/MetaMachineConfigCopyBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/MetaMachineConfigCopyBehaviour.java @@ -1,18 +1,25 @@ package com.gregtechceu.gtceu.common.item.tool.behavior; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; +import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.item.component.IAddInformation; import com.gregtechceu.gtceu.api.item.component.IInteractionItem; +import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputFluid; import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputItem; import com.gregtechceu.gtceu.api.machine.feature.IMufflableMachine; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.machine.owner.MachineOwner; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.screens.Screen; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NumericTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.nbt.Tag; +import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -24,12 +31,17 @@ import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; +import it.unimi.dsi.fastutil.booleans.BooleanConsumer; +import joptsimple.internal.Strings; import org.jetbrains.annotations.Nullable; import java.util.List; +import java.util.function.Consumer; public class MetaMachineConfigCopyBehaviour implements IInteractionItem, IAddInformation { + public static final String NONE_DIRECTION = "null"; + public static final String CONFIG_DATA = "config_data"; public static final String ORIGINAL_FRONT = "front"; public static final String ITEM_CONFIG = "item"; @@ -39,57 +51,48 @@ public class MetaMachineConfigCopyBehaviour implements IInteractionItem, IAddInf public static final String INPUT_FROM_OUTPUT_SIDE = "in_from_out"; public static final String MUFFLED = "muffled"; - public static int directionToInt(@Nullable Direction direction) { - return direction == null ? 0 : direction.ordinal() + 1; - } - - public static Direction intToDirection(int ordinal) { - return ordinal <= 0 || ordinal > Direction.values().length ? null : Direction.values()[ordinal - 1]; + public static final Component ENABLED = Component.translatable("cover.voiding.label.enabled") + .withStyle(ChatFormatting.GREEN); + public static final Component DISABLED = Component.translatable("cover.voiding.label.disabled") + .withStyle(ChatFormatting.RED); + + public static final Component[] DIRECTION_TOOLTIPS = { + Component.translatable("gtceu.direction.tooltip.up").withStyle(ChatFormatting.YELLOW), + Component.translatable("gtceu.direction.tooltip.down").withStyle(ChatFormatting.YELLOW), + Component.translatable("gtceu.direction.tooltip.left").withStyle(ChatFormatting.YELLOW), + Component.translatable("gtceu.direction.tooltip.right").withStyle(ChatFormatting.YELLOW), + Component.translatable("gtceu.direction.tooltip.front").withStyle(ChatFormatting.YELLOW), + Component.translatable("gtceu.direction.tooltip.back").withStyle(ChatFormatting.YELLOW), + }; + + public static String directionToString(@Nullable Direction direction) { + if (direction == null) return NONE_DIRECTION; + return direction.getSerializedName(); } - public static Component relativeDirectionComponent(Direction origFront, Direction origDirection) { - if (origFront == origDirection) { - return Component.translatable("gtceu.direction.tooltip.front").withStyle(ChatFormatting.YELLOW); - } - if (Direction.UP == origDirection) { - return Component.translatable("gtceu.direction.tooltip.up").withStyle(ChatFormatting.YELLOW); + public static @Nullable Direction tagToDirection(@Nullable Tag tag) { + if (tag instanceof StringTag string) { + String name = string.getAsString(); + if (Strings.isNullOrEmpty(name) || NONE_DIRECTION.equalsIgnoreCase(name)) return null; + return Direction.byName(name); + } else if (tag instanceof NumericTag number) { + // backwards compatibility + int ordinal = number.getAsInt(); + return ordinal <= 0 || ordinal > Direction.values().length ? null : Direction.values()[ordinal - 1]; } - if (Direction.DOWN == origDirection) { - return Component.translatable("gtceu.direction.tooltip.down").withStyle(ChatFormatting.YELLOW); - } - var face = origFront; - int i; - for (i = 0; i < 3; i++) { - face = face.getClockWise(); - if (face == origDirection) break; - } - return switch (i) { - case 0 -> Component.translatable("gtceu.direction.tooltip.right").withStyle(ChatFormatting.YELLOW); - case 1 -> Component.translatable("gtceu.direction.tooltip.back").withStyle(ChatFormatting.YELLOW); - case 2 -> Component.translatable("gtceu.direction.tooltip.left").withStyle(ChatFormatting.YELLOW); - default -> Component.literal(""); - }; + return null; } - public static Direction getRelativeDirection(Direction originalFront, Direction currentFacing, Direction face) { - if ((currentFacing == null || originalFront == null) || (currentFacing == originalFront) || - (face == Direction.UP || face == Direction.DOWN)) - return face; - - Direction newFace = originalFront; - int i; - for (i = 0; i < 4 && newFace != currentFacing; i++) newFace = newFace.getClockWise(); - - newFace = face; - for (int j = 0; j < i; j++) newFace = newFace.getClockWise(); - return newFace; + public static Component relativeDirectionComponent(Direction origFront, Direction origDirection) { + RelativeDirection relative = RelativeDirection.findRelativeOf(origFront, origDirection); + return DIRECTION_TOOLTIPS[relative.ordinal()]; } @Override public InteractionResultHolder use(Item item, Level level, Player player, InteractionHand usedHand) { var stack = player.getItemInHand(usedHand); if (player.isShiftKeyDown()) { - stack.setTag(null); + stack.removeTagKey(CONFIG_DATA); return InteractionResultHolder.success(stack); } return IInteractionItem.super.use(item, level, player, usedHand); @@ -97,39 +100,35 @@ public InteractionResultHolder use(Item item, Level level, Player pla @Override public InteractionResult onItemUseFirst(ItemStack stack, UseOnContext context) { - if (context.getLevel().getBlockEntity(context.getClickedPos()) instanceof MetaMachineBlockEntity blockEntity) { + // spotless:off + if (context.getLevel().getBlockEntity(context.getClickedPos()) instanceof IMachineBlockEntity blockEntity) { var machine = blockEntity.getMetaMachine(); if (!MachineOwner.canOpenOwnerMachine(context.getPlayer(), machine)) { return InteractionResult.FAIL; } - if (context.isSecondaryUseActive()) + if (context.isSecondaryUseActive()) { return handleCopy(stack, machine); - else if (stack.hasTag() && stack.getTag().contains(CONFIG_DATA)) + } else if (stack.getTagElement(CONFIG_DATA) != null) { return handlePaste(stack, machine); - } else - if (context.isSecondaryUseActive() && context.getLevel().getBlockState(context.getClickedPos()).isAir()) { - stack.setTag(null); - return InteractionResult.SUCCESS; } + } else if (context.isSecondaryUseActive() && context.getLevel().getBlockState(context.getClickedPos()).isAir()) { + stack.removeTagKey(CONFIG_DATA); + return InteractionResult.SUCCESS; + } + // spotless:on return InteractionResult.SUCCESS; } public static InteractionResult handleCopy(ItemStack stack, MetaMachine machine) { CompoundTag configData = new CompoundTag(); - configData.putInt(ORIGINAL_FRONT, directionToInt(machine.getFrontFacing())); + configData.putString(ORIGINAL_FRONT, directionToString(machine.getFrontFacing())); if (machine instanceof IAutoOutputItem autoOutputItem && autoOutputItem.getOutputFacingItems() != null) { - CompoundTag itemTag = new CompoundTag(); - itemTag.putInt(DIRECTION, directionToInt(autoOutputItem.getOutputFacingItems())); - itemTag.putBoolean(AUTO, autoOutputItem.isAutoOutputItems()); - itemTag.putBoolean(INPUT_FROM_OUTPUT_SIDE, autoOutputItem.isAllowInputFromOutputSideItems()); - configData.put(ITEM_CONFIG, itemTag); + configData.put(ITEM_CONFIG, copyOutputConfig(autoOutputItem.getOutputFacingItems(), + autoOutputItem.isAutoOutputItems(), autoOutputItem.isAllowInputFromOutputSideItems())); } if (machine instanceof IAutoOutputFluid autoOutputFluid && autoOutputFluid.getOutputFacingFluids() != null) { - CompoundTag fluidTag = new CompoundTag(); - fluidTag.putInt(DIRECTION, directionToInt(autoOutputFluid.getOutputFacingFluids())); - fluidTag.putBoolean(AUTO, autoOutputFluid.isAutoOutputFluids()); - fluidTag.putBoolean(INPUT_FROM_OUTPUT_SIDE, autoOutputFluid.isAllowInputFromOutputSideFluids()); - configData.put(FLUID_CONFIG, fluidTag); + configData.put(FLUID_CONFIG, copyOutputConfig(autoOutputFluid.getOutputFacingFluids(), + autoOutputFluid.isAutoOutputFluids(), autoOutputFluid.isAllowInputFromOutputSideFluids())); } if (machine instanceof IMufflableMachine mufflableMachine) { configData.putBoolean(MUFFLED, mufflableMachine.isMuffled()); @@ -141,23 +140,18 @@ public static InteractionResult handleCopy(ItemStack stack, MetaMachine machine) } public static InteractionResult handlePaste(ItemStack stack, MetaMachine machine) { - if (!stack.hasTag() || !stack.getTag().contains(CONFIG_DATA)) return InteractionResult.PASS; - CompoundTag root = stack.getOrCreateTag(); - CompoundTag configData = root.getCompound(CONFIG_DATA); - Direction originalFront = intToDirection(configData.getInt(ORIGINAL_FRONT)); + CompoundTag configData = stack.getTagElement(CONFIG_DATA); + if (configData == null) return InteractionResult.PASS; + Direction originalFront = tagToDirection(configData.get(ORIGINAL_FRONT)); if (configData.contains(ITEM_CONFIG) && machine instanceof IAutoOutputItem autoOutputItem) { - CompoundTag itemData = configData.getCompound(ITEM_CONFIG); - autoOutputItem.setOutputFacingItems(getRelativeDirection(originalFront, machine.getFrontFacing(), - intToDirection(itemData.getInt(DIRECTION)))); - autoOutputItem.setAutoOutputItems(itemData.getBoolean(AUTO)); - autoOutputItem.setAllowInputFromOutputSideItems(itemData.getBoolean(INPUT_FROM_OUTPUT_SIDE)); + pasteOutputConfig(originalFront, machine.getFrontFacing(), configData.getCompound(ITEM_CONFIG), + autoOutputItem::setOutputFacingItems, autoOutputItem::setAutoOutputItems, + autoOutputItem::setAllowInputFromOutputSideItems); } if (configData.contains(FLUID_CONFIG) && machine instanceof IAutoOutputFluid autoOutputFluid) { - CompoundTag fluidData = configData.getCompound(FLUID_CONFIG); - autoOutputFluid.setOutputFacingFluids(getRelativeDirection(originalFront, machine.getFrontFacing(), - intToDirection(fluidData.getInt(DIRECTION)))); - autoOutputFluid.setAutoOutputFluids(fluidData.getBoolean(AUTO)); - autoOutputFluid.setAllowInputFromOutputSideFluids(fluidData.getBoolean(INPUT_FROM_OUTPUT_SIDE)); + pasteOutputConfig(originalFront, machine.getFrontFacing(), configData.getCompound(FLUID_CONFIG), + autoOutputFluid::setOutputFacingFluids, autoOutputFluid::setAutoOutputFluids, + autoOutputFluid::setAllowInputFromOutputSideFluids); } if (configData.contains(MUFFLED) && machine instanceof IMufflableMachine mufflableMachine) { mufflableMachine.setMuffled(configData.getBoolean(MUFFLED)); @@ -170,54 +164,53 @@ public void appendHoverText(ItemStack stack, @Nullable Level level, List cap : GTRegistries.RECIPE_CAPABILITIES) { + if (!data.contains(cap.name)) continue; + var configData = data.getCompound(cap.name); + var component = cap.getColoredName(); + addConfigTypeTooltips(tooltipComponents, component, configData, origFront); } } + if (data.contains(MUFFLED)) { + tooltipComponents.add(Component.translatable("behaviour.setting.muffled.tooltip", + data.getBoolean(MUFFLED) ? ENABLED : DISABLED)); + } } else { tooltipComponents.add(Component.translatable("item.toggle.advanced.info.tooltip")); } } + + private static void addConfigTypeTooltips(List tooltip, Component baseComponent, + CompoundTag data, Direction origFront) { + tooltip.add(Component.translatable("behaviour.setting.output.direction.tooltip", + baseComponent, relativeDirectionComponent(origFront, tagToDirection(data.get(DIRECTION))))); + tooltip.add(Component.translatable("behaviour.setting.item_auto_output.tooltip", baseComponent, + data.getBoolean(AUTO) ? ENABLED : DISABLED)); + tooltip.add(Component.translatable("behaviour.setting.allow.input.from.output.tooltip", baseComponent, + data.getBoolean(INPUT_FROM_OUTPUT_SIDE) ? ENABLED : DISABLED)); + } + + private static CompoundTag copyOutputConfig(Direction outputSide, boolean autoOutput, + boolean allowInputFromOutputSide) { + CompoundTag tag = new CompoundTag(); + tag.putString(DIRECTION, directionToString(outputSide)); + tag.putBoolean(AUTO, autoOutput); + tag.putBoolean(INPUT_FROM_OUTPUT_SIDE, allowInputFromOutputSide); + return tag; + } + + private static void pasteOutputConfig(Direction originalFront, Direction currentFront, CompoundTag data, + Consumer outputSide, BooleanConsumer autoOutput, + BooleanConsumer allowInputFromOutputSide) { + outputSide.accept(RelativeDirection.getActualDirection(originalFront, currentFront, + tagToDirection(data.get(DIRECTION)))); + autoOutput.accept(data.getBoolean(AUTO)); + allowInputFromOutputSide.accept(data.getBoolean(INPUT_FROM_OUTPUT_SIDE)); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/PlungerBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/PlungerBehavior.java index 48766c72a6f..154473063f9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/PlungerBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/PlungerBehavior.java @@ -9,6 +9,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.UseOnContext; @@ -43,21 +44,20 @@ public boolean shouldOpenUIAfterUse(UseOnContext context) { @Override public InteractionResult onItemUseFirst(ItemStack stack, UseOnContext context) { - if (context.getPlayer() == null || !context.getPlayer().isShiftKeyDown()) { + Player player = context.getPlayer(); + Level level = context.getLevel(); + if (player != null && !player.isShiftKeyDown()) { return InteractionResult.PASS; } IFluidHandler fluidHandler; - - if (context.getLevel() - .getBlockEntity(context.getClickedPos()) instanceof IMachineBlockEntity metaMachineBlockEntity) { - fluidHandler = metaMachineBlockEntity.getMetaMachine().getFluidHandlerCap(context.getClickedFace(), false); + if (level.getBlockEntity(context.getClickedPos()) instanceof IMachineBlockEntity mmbe) { + fluidHandler = mmbe.getMetaMachine().getFluidHandlerCap(context.getClickedFace(), false); } else { - fluidHandler = FluidUtil - .getFluidHandler(context.getLevel(), context.getClickedPos(), context.getClickedFace()).resolve() + // noinspection DataFlowIssue + fluidHandler = FluidUtil.getFluidHandler(level, context.getClickedPos(), context.getClickedFace()) .orElse(null); } - if (fluidHandler == null) { return InteractionResult.PASS; } @@ -65,8 +65,8 @@ public InteractionResult onItemUseFirst(ItemStack stack, UseOnContext context) { FluidStack drained = fluidHandler.drain(FluidType.BUCKET_VOLUME, IFluidHandler.FluidAction.SIMULATE); if (!drained.isEmpty()) { fluidHandler.drain(FluidType.BUCKET_VOLUME, IFluidHandler.FluidAction.EXECUTE); - ToolHelper.onActionDone(context.getPlayer(), context.getLevel(), context.getHand()); - return InteractionResult.CONSUME; + ToolHelper.onActionDone(player, stack, level, context.getClickLocation()); + return InteractionResult.sidedSuccess(level.isClientSide); } return InteractionResult.PASS; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/RotateRailBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/RotateRailBehavior.java index 0132624f368..db2576decf8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/RotateRailBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/RotateRailBehavior.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.api.item.tool.ToolHelper; import com.gregtechceu.gtceu.api.item.tool.behavior.IToolBehavior; +import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionResult; import net.minecraft.world.item.ItemStack; @@ -28,12 +29,13 @@ protected RotateRailBehavior() {/**/} @NotNull @Override public InteractionResult onItemUseFirst(ItemStack stack, UseOnContext context) { - BlockState state = context.getLevel().getBlockState(context.getClickedPos()); + Level level = context.getLevel(); + BlockPos pos = context.getClickedPos(); + BlockState state = level.getBlockState(pos); if (state.getBlock() instanceof BaseRailBlock) { - if (context.getLevel().setBlock(context.getClickedPos(), state.rotate(Rotation.CLOCKWISE_90), - Block.UPDATE_ALL)) { - ToolHelper.onActionDone(context.getPlayer(), context.getLevel(), context.getHand()); - return InteractionResult.SUCCESS; + if (level.setBlock(pos, state.rotate(level, pos, Rotation.CLOCKWISE_90), Block.UPDATE_ALL)) { + ToolHelper.onActionDone(context.getPlayer(), stack, level, context.getClickLocation()); + return InteractionResult.sidedSuccess(level.isClientSide); } } return InteractionResult.PASS; diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ScrapeBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ScrapeBehavior.java index b6ef0098ea1..60bb928a3f6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ScrapeBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ScrapeBehavior.java @@ -8,7 +8,6 @@ import net.minecraft.network.chat.Component; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -18,102 +17,72 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.LevelEvent; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.HitResult; import net.minecraftforge.common.ToolActions; -import com.google.common.collect.ImmutableSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.Set; public class ScrapeBehavior implements IToolBehavior { - public static final ScrapeBehavior INSTANCE = create(); + public static final ScrapeBehavior INSTANCE = new ScrapeBehavior(); protected ScrapeBehavior() {/**/} - protected static ScrapeBehavior create() { - return new ScrapeBehavior(); - } - @NotNull @Override public InteractionResult onItemUse(UseOnContext context) { Level level = context.getLevel(); Player player = context.getPlayer(); BlockPos pos = context.getClickedPos(); - InteractionHand hand = context.getHand(); - - ItemStack stack = player.getItemInHand(hand); + ItemStack stack = context.getItemInHand(); AoESymmetrical aoeDefinition = ToolHelper.getAoEDefinition(stack); - Set blocks; + List blocks; // only attempt to strip if the center block is strippable - if (isBlockScrapable(stack, level, player, pos, context)) { - if (aoeDefinition == AoESymmetrical.none()) { - blocks = ImmutableSet.of(pos); + if (isBlockScrapable(context)) { + if (aoeDefinition.isZero()) { + blocks = List.of(pos); } else { - HitResult rayTraceResult = ToolHelper.getPlayerDefaultRaytrace(player); - - if (rayTraceResult == null) - return InteractionResult.PASS; - if (rayTraceResult.getType() != HitResult.Type.BLOCK) - return InteractionResult.PASS; - if (!(rayTraceResult instanceof BlockHitResult blockHitResult)) - return InteractionResult.PASS; - if (blockHitResult.getDirection() == null) - return InteractionResult.PASS; - - blocks = getScrapableBlocks(stack, aoeDefinition, level, player, rayTraceResult); - blocks.add(blockHitResult.getBlockPos()); + blocks = getScrapableBlocks(aoeDefinition, context); + blocks.add(0, context.getClickedPos()); } - } else + } else { return InteractionResult.PASS; + } - boolean pathed = false; + boolean scraped = false; for (BlockPos blockPos : blocks) { - pathed |= level.setBlock(blockPos, - getScraped(level.getBlockState(blockPos), - new UseOnContext(player, hand, context.getHitResult().withPosition(blockPos))), - Block.UPDATE_ALL); + UseOnContext posContext = new UseOnContext(level, player, context.getHand(), stack, + context.getHitResult().withPosition(blockPos)); + BlockState newState = getScraped(level.getBlockState(blockPos), posContext); + scraped |= level.setBlock(blockPos, newState, Block.UPDATE_ALL); level.levelEvent(player, LevelEvent.PARTICLES_SCRAPE, blockPos, 0); - if (!player.isCreative()) { - ToolHelper.damageItem(context.getItemInHand(), context.getPlayer()); - } - if (stack.isEmpty()) - break; - } - if (pathed) { - level.playSound(null, player.getX(), player.getY(), player.getZ(), SoundEvents.AXE_WAX_OFF, - SoundSource.PLAYERS, 1.0F, 1.0F); - player.swing(hand); - return InteractionResult.SUCCESS; + ToolHelper.damageItem(stack, player); + if (stack.isEmpty()) break; } + if (scraped) { + level.playSound(player, blocks.get(0), SoundEvents.AXE_WAX_OFF, SoundSource.BLOCKS, 1.0F, 1.0F); + return InteractionResult.sidedSuccess(level.isClientSide); + } return InteractionResult.PASS; } - public static Set getScrapableBlocks(ItemStack stack, AoESymmetrical aoeDefinition, Level Level, - Player player, HitResult rayTraceResult) { - return ToolHelper.iterateAoE(stack, aoeDefinition, Level, player, rayTraceResult, - ScrapeBehavior.INSTANCE::isBlockScrapable); + public static List getScrapableBlocks(AoESymmetrical aoeDefinition, UseOnContext context) { + return ToolHelper.iterateAoE(aoeDefinition, ScrapeBehavior::isBlockScrapable, context); } - protected boolean isBlockScrapable(ItemStack stack, Level level, Player player, BlockPos pos, - UseOnContext context) { - BlockState state = level.getBlockState(pos); - BlockState newState = state.getToolModifiedState(context, ToolActions.AXE_SCRAPE, false); + protected static boolean isBlockScrapable(UseOnContext context) { + BlockState state = context.getLevel().getBlockState(context.getClickedPos()); + BlockState newState = state.getToolModifiedState(context, ToolActions.AXE_SCRAPE, true); return newState != null && newState != state; } - protected BlockState getScraped(BlockState unscrapedState, UseOnContext context) { - // just assume it exists. - BlockState newState = unscrapedState.getToolModifiedState(context, ToolActions.AXE_SCRAPE, false); - return newState != null ? newState : unscrapedState; + protected BlockState getScraped(BlockState state, UseOnContext context) { + return state.getToolModifiedState(context, ToolActions.AXE_SCRAPE, false); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ToolModeSwitchBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ToolModeSwitchBehavior.java index 6c7f70e1c54..45cbc153921 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ToolModeSwitchBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ToolModeSwitchBehavior.java @@ -80,5 +80,13 @@ public enum WrenchModeType { WrenchModeType(Component name) { this.name = name; } + + public boolean isItem() { + return this == ITEM || this == BOTH; + } + + public boolean isFluid() { + return this == FLUID || this == BOTH; + } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/WaxOffBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/WaxOffBehavior.java index 325be349a09..fe449e53f20 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/WaxOffBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/WaxOffBehavior.java @@ -8,7 +8,6 @@ import net.minecraft.network.chat.Component; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -18,100 +17,74 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.LevelEvent; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.HitResult; +import net.minecraft.world.level.gameevent.GameEvent; import net.minecraftforge.common.ToolActions; -import com.google.common.collect.ImmutableSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.Set; public class WaxOffBehavior implements IToolBehavior { - public static final WaxOffBehavior INSTANCE = create(); + public static final WaxOffBehavior INSTANCE = new WaxOffBehavior(); protected WaxOffBehavior() {/**/} - protected static WaxOffBehavior create() { - return new WaxOffBehavior(); - } - @NotNull @Override public InteractionResult onItemUse(UseOnContext context) { Level level = context.getLevel(); Player player = context.getPlayer(); BlockPos pos = context.getClickedPos(); - InteractionHand hand = context.getHand(); - - ItemStack stack = player.getItemInHand(hand); + ItemStack stack = context.getItemInHand(); AoESymmetrical aoeDefinition = ToolHelper.getAoEDefinition(stack); - Set blocks; + List blocks; // only attempt to strip if the center block is strippable - if (isBlockUnWaxable(stack, level, player, pos, context)) { - if (aoeDefinition == AoESymmetrical.none()) { - blocks = ImmutableSet.of(pos); + if (isBlockUnwaxable(context)) { + if (aoeDefinition.isZero()) { + blocks = List.of(pos); } else { - HitResult rayTraceResult = ToolHelper.getPlayerDefaultRaytrace(player); - - if (rayTraceResult == null) - return InteractionResult.PASS; - if (rayTraceResult.getType() != HitResult.Type.BLOCK) - return InteractionResult.PASS; - if (!(rayTraceResult instanceof BlockHitResult blockHitResult)) - return InteractionResult.PASS; - if (blockHitResult.getDirection() == null) - return InteractionResult.PASS; - - blocks = getUnWaxableBlocks(stack, aoeDefinition, level, player, rayTraceResult); - blocks.add(blockHitResult.getBlockPos()); + blocks = getUnwaxableBlocks(aoeDefinition, context); + blocks.add(0, context.getClickedPos()); } - } else + } else { return InteractionResult.PASS; + } - boolean pathed = false; + boolean unwaxed = false; for (BlockPos blockPos : blocks) { - pathed |= level.setBlock(blockPos, - getUnWaxed(level.getBlockState(blockPos), - new UseOnContext(player, hand, context.getHitResult().withPosition(blockPos))), - Block.UPDATE_ALL); + UseOnContext posContext = new UseOnContext(level, player, context.getHand(), stack, + context.getHitResult().withPosition(blockPos)); + BlockState newState = getUnwaxed(level.getBlockState(blockPos), posContext); + unwaxed |= level.setBlock(blockPos, newState, Block.UPDATE_ALL); level.levelEvent(player, LevelEvent.PARTICLES_WAX_OFF, blockPos, 0); - if (!player.isCreative()) { - ToolHelper.damageItem(context.getItemInHand(), context.getPlayer()); - } - if (stack.isEmpty()) - break; - } + level.gameEvent(GameEvent.BLOCK_CHANGE, pos, GameEvent.Context.of(player, newState)); - if (pathed) { - level.playSound(null, player.getX(), player.getY(), player.getZ(), SoundEvents.AXE_WAX_OFF, - SoundSource.PLAYERS, 1.0F, 1.0F); - player.swing(hand); - return InteractionResult.SUCCESS; + ToolHelper.damageItem(stack, player); + if (stack.isEmpty()) break; } + if (unwaxed) { + level.playSound(player, blocks.get(0), SoundEvents.AXE_WAX_OFF, SoundSource.BLOCKS, 1.0F, 1.0F); + return InteractionResult.sidedSuccess(level.isClientSide); + } return InteractionResult.PASS; } - public static Set getUnWaxableBlocks(ItemStack stack, AoESymmetrical aoeDefinition, Level Level, - Player player, HitResult rayTraceResult) { - return ToolHelper.iterateAoE(stack, aoeDefinition, Level, player, rayTraceResult, - WaxOffBehavior.INSTANCE::isBlockUnWaxable); + public static List getUnwaxableBlocks(AoESymmetrical aoeDefinition, UseOnContext context) { + return ToolHelper.iterateAoE(aoeDefinition, WaxOffBehavior::isBlockUnwaxable, context); } - protected boolean isBlockUnWaxable(ItemStack stack, Level level, Player player, BlockPos pos, - UseOnContext context) { - BlockState state = level.getBlockState(pos); - BlockState newState = state.getToolModifiedState(context, ToolActions.AXE_WAX_OFF, false); + protected static boolean isBlockUnwaxable(UseOnContext context) { + BlockState state = context.getLevel().getBlockState(context.getClickedPos()); + BlockState newState = state.getToolModifiedState(context, ToolActions.AXE_WAX_OFF, true); return newState != null && newState != state; } - protected BlockState getUnWaxed(BlockState unscrapedState, UseOnContext context) { - return unscrapedState.getToolModifiedState(context, ToolActions.AXE_WAX_OFF, false); + protected BlockState getUnwaxed(BlockState state, UseOnContext context) { + return state.getToolModifiedState(context, ToolActions.AXE_WAX_OFF, false); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/AirScrubberMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/AirScrubberMachine.java index 844a879b34c..34333331774 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/AirScrubberMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/AirScrubberMachine.java @@ -127,7 +127,7 @@ public boolean onWorking() { if (zone.strength() <= 0) { if (serverLevel.hasChunk(chunkPos.x, chunkPos.z)) { LevelChunk chunk = serverLevel.getChunk(chunkPos.x, chunkPos.z); - GTNetwork.NETWORK.sendToTrackingChunk(new SPacketRemoveHazardZone(chunkPos), chunk); + GTNetwork.sendToAllPlayersTrackingChunk(chunk, new SPacketRemoveHazardZone(chunkPos)); } return null; } else return zone; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java index 81a0033b9e8..2b2ea3648d9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.IControllable; import com.gregtechceu.gtceu.api.capability.IElectricItem; +import com.gregtechceu.gtceu.api.capability.IMonitorComponent; import com.gregtechceu.gtceu.api.capability.compat.FeCompat; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; @@ -17,6 +18,7 @@ import com.gregtechceu.gtceu.utils.GTUtil; import com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup; +import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; import com.lowdragmc.lowdraglib.gui.widget.Widget; import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; @@ -28,7 +30,6 @@ import net.minecraftforge.energy.IEnergyStorage; import lombok.Getter; -import lombok.Setter; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; @@ -36,15 +37,10 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/10 - * @implNote BatteryBufferMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class BatteryBufferMachine extends TieredEnergyMachine - implements IControllable, IFancyUIMachine, IMachineLife { + implements IControllable, IFancyUIMachine, IMachineLife, IMonitorComponent { public static final long AMPS_PER_BATTERY = 2L; @@ -53,7 +49,6 @@ public class BatteryBufferMachine extends TieredEnergyMachine @Persisted @Getter - @Setter private boolean isWorkingEnabled; @Getter private final int inventorySize; @@ -148,6 +143,12 @@ public Widget createUIWidget() { // ****** Battery Logic ******// ////////////////////////////////////// + @Override + public void setWorkingEnabled(boolean workingEnabled) { + isWorkingEnabled = workingEnabled; + energyContainer.checkOutputSubscription(); + } + private List getNonFullBatteries() { List batteries = new ArrayList<>(); for (int i = 0; i < batteryInventory.getSlots(); i++) { @@ -205,6 +206,11 @@ public void onMachineRemoved() { clearInventory(batteryInventory); } + @Override + public IGuiTexture getComponentIcon() { + return GuiTextures.BUTTON_CHECK; // temporary + } + protected class EnergyBatteryTrait extends NotifiableEnergyContainer { protected EnergyBatteryTrait(int inventorySize) { @@ -214,6 +220,16 @@ protected EnergyBatteryTrait(int inventorySize) { this.setSideOutputCondition(side -> side == getFrontFacing() && isWorkingEnabled()); } + @Override + public void checkOutputSubscription() { + if (isWorkingEnabled()) { + super.checkOutputSubscription(); + } else if (outputSubs != null) { + outputSubs.unsubscribe(); + outputSubs = null; + } + } + @Override public void serverTick() { var outFacing = getFrontFacing(); @@ -247,6 +263,7 @@ public void serverTick() { changed = true; } energy -= charged; + energyOutputPerSec += charged; } if (changed) { @@ -305,6 +322,7 @@ public long acceptEnergyFromNetwork(@Nullable Direction side, long voltage, long changed = true; } energy -= charged; + energyInputPerSec += charged; } if (changed) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java index 36e153d15cb..d04b1099b89 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java @@ -59,11 +59,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author h3tr - * @date 2023/7/15 - * @implNote BlockBreakerMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class BlockBreakerMachine extends TieredEnergyMachine @@ -437,8 +432,8 @@ protected static EditableUI createTemplate(int // ******* Rendering ********// ////////////////////////////////////// @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.WRENCH)) { if (!player.isShiftKeyDown()) { if (!hasFrontFacing() || side != getFrontFacing()) { @@ -476,8 +471,7 @@ protected InteractionResult onWrenchClick(Player playerIn, InteractionHand hand, // remove the output facing when wrenching the current one to disable it setOutputFacingItems(null); } - playerIn.swing(hand); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } return super.onWrenchClick(playerIn, hand, gridSide, hitResult); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java index d8a52218e2e..5ba95ae38d3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java @@ -9,6 +9,7 @@ import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler; import com.gregtechceu.gtceu.config.ConfigHolder; @@ -25,6 +26,8 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.Direction; +import net.minecraft.util.StringRepresentable; +import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraftforge.energy.IEnergyStorage; import lombok.Getter; @@ -36,11 +39,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author lucifer_ll - * @date 2023/7/12 - * @implNote ChargerMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class ChargerMachine extends TieredEnergyMachine implements IControllable, IFancyUIMachine, IMachineLife { @@ -50,12 +48,22 @@ public class ChargerMachine extends TieredEnergyMachine implements IControllable protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(ChargerMachine.class, TieredEnergyMachine.MANAGED_FIELD_HOLDER); - public enum State { - IDLE, - RUNNING, - FINISHED + public enum State implements StringRepresentable { + + IDLE("idle"), + RUNNING("running"), + FINISHED("finished"); + + @Getter + private final String serializedName; + + State(String name) { + this.serializedName = name; + } } + public static final EnumProperty STATE_PROPERTY = GTMachineModelProperties.CHARGER_STATE; + @Persisted @Getter @Setter @@ -181,6 +189,7 @@ private List getNonFullElectricItem() { private void changeState(State newState) { if (state != newState) { state = newState; + setRenderState(getRenderState().setValue(GTMachineModelProperties.CHARGER_STATE, newState)); } } @@ -228,19 +237,20 @@ public long acceptEnergyFromNetwork(@Nullable Direction side, long voltage, long long distributed = energy / electricItems.size(); boolean changed = false; - var charged = 0L; for (var electricItem : electricItems) { + long charged = 0; if (electricItem instanceof IElectricItem item) { - charged += item.charge(Math.min(distributed, GTValues.V[item.getTier()] * AMPS_PER_ITEM), + charged = item.charge(Math.min(distributed, GTValues.V[item.getTier()] * AMPS_PER_ITEM), getTier(), true, false); } else if (electricItem instanceof IEnergyStorage energyStorage) { - energy += FeCompat.insertEu(energyStorage, + charged = FeCompat.insertEu(energyStorage, Math.min(distributed, GTValues.V[getTier()] * AMPS_PER_ITEM), false); } if (charged > 0) { changed = true; } energy -= charged; + energyInputPerSec += charged; } if (changed) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java index 9f62034eb6b..0a2e4f57c08 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java @@ -6,6 +6,7 @@ import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; import com.gregtechceu.gtceu.common.machine.trait.ConverterTrait; @@ -20,8 +21,11 @@ import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.phys.BlockHitResult; +import org.jetbrains.annotations.Nullable; + import java.util.Set; import javax.annotation.ParametersAreNonnullByDefault; @@ -33,6 +37,8 @@ public class ConverterMachine extends TieredEnergyMachine { protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(ConverterMachine.class, TieredEnergyMachine.MANAGED_FIELD_HOLDER); + public static final BooleanProperty FE_TO_EU_PROPERTY = GTMachineModelProperties.IS_FE_TO_EU; + public ConverterMachine(IMachineBlockEntity holder, int tier, int amps, Object... args) { super(holder, tier, args, amps); } @@ -107,8 +113,8 @@ public boolean isFacingValid(Direction facing) { } @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.SOFT_MALLET)) { return this.isFeToEu() ? GuiTextures.TOOL_SWITCH_CONVERTER_NATIVE : GuiTextures.TOOL_SWITCH_CONVERTER_EU; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java index 0b7213b429e..234bf29d9d7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java @@ -69,11 +69,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author h3tr - * @date 2023/7/13 - * @implNote FisherMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class FisherMachine extends TieredEnergyMachine @@ -497,8 +492,8 @@ protected static EditableUI createTemplate(int inven // ******* Rendering ********// ////////////////////////////////////// @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.WRENCH)) { if (!player.isShiftKeyDown()) { if (!hasFrontFacing() || side != getFrontFacing()) { @@ -536,8 +531,7 @@ protected InteractionResult onWrenchClick(Player playerIn, InteractionHand hand, // remove the output facing when wrenching the current one to disable it setOutputFacingItems(null); } - playerIn.swing(hand); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } return super.onWrenchClick(playerIn, hand, gridSide, hitResult); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/HullMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/HullMachine.java index e68d1bf7951..4f5c9d06f9e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/HullMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/HullMachine.java @@ -2,12 +2,15 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.capability.IMonitorComponent; +import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.multiblock.part.MultiblockPartMachine; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredPartMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; import com.gregtechceu.gtceu.integration.ae2.machine.trait.GridNodeHostTrait; +import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; @@ -24,7 +27,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class HullMachine extends TieredPartMachine { +public class HullMachine extends TieredPartMachine implements IMonitorComponent { protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(HullMachine.class, MultiblockPartMachine.MANAGED_FIELD_HOLDER); @@ -110,4 +113,9 @@ public int tintColor(int index) { } return super.tintColor(index); } + + @Override + public IGuiTexture getComponentIcon() { + return GuiTextures.BUTTON_CHECK; // temporary (until there's a texture that is not fully 16x16 for this) + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java index f09baefe92d..3da4764c093 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java @@ -18,6 +18,7 @@ import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputItem; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler; import com.gregtechceu.gtceu.common.data.GTItems; @@ -65,11 +66,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author h3tr - * @date 2023/7/13 - * @implNote FisherMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class ItemCollectorMachine extends TieredEnergyMachine @@ -83,6 +79,7 @@ public class ItemCollectorMachine extends TieredEnergyMachine private static final double MOTION_MULTIPLIER = 0.04; private static final int BASE_EU_CONSUMPTION = 6; + @Nullable @Getter @Persisted @DescSynced @@ -225,6 +222,7 @@ public void onMachineRemoved() { public void updateCollectionSubscription() { if (drainEnergy(true) && isWorkingEnabled) { collectionSubs = subscribeServerTick(collectionSubs, this::update); + setActive(true); active = true; } else if (collectionSubs != null) { collectionSubs.unsubscribe(); @@ -233,13 +231,17 @@ public void updateCollectionSubscription() { } } + public void setActive(boolean active) { + this.active = active; + setRenderState(getRenderState().setValue(GTMachineModelProperties.IS_ACTIVE, active)); + } + public void update() { if (drainEnergy(false)) { if (aabb == null || rangeDirty) { rangeDirty = false; - BlockPos pos1, pos2; - pos1 = getPos().offset(-range, 0, -range); - pos2 = getPos().offset(range, 2, range); + BlockPos pos1 = getPos().offset(-range, 0, -range); + BlockPos pos2 = getPos().offset(range, 2, range); this.aabb = AABB.of(BoundingBox.fromCorners(pos1, pos2)); } moveItemsInRange(); @@ -360,8 +362,9 @@ protected void autoOutput() { } protected void chargeBattery() { - if (!energyContainer.dischargeOrRechargeEnergyContainers(chargerInventory, 0, false)) + if (!energyContainer.dischargeOrRechargeEnergyContainers(chargerInventory, 0, false)) { updateBatterySubscription(); + } } @Override @@ -503,8 +506,8 @@ protected static EditableUI createTemplate(in // ******* Rendering ********// ////////////////////////////////////// @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.WRENCH)) { if (!player.isShiftKeyDown()) { if (!hasFrontFacing() || side != getFrontFacing()) { @@ -543,8 +546,7 @@ protected InteractionResult onWrenchClick(Player playerIn, InteractionHand hand, // remove the output facing when wrenching the current one to disable it setOutputFacingItems(null); } - playerIn.swing(hand); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } return super.onWrenchClick(playerIn, hand, gridSide, hitResult); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java index 06a40d0d372..3e3d14f65bc 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java @@ -47,6 +47,7 @@ import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import lombok.Getter; import lombok.Setter; +import org.jetbrains.annotations.Nullable; import java.util.ArrayDeque; import java.util.ArrayList; @@ -55,14 +56,8 @@ import java.util.Queue; import java.util.Set; -import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/22 - * @implNote PumpMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class PumpMachine extends TieredEnergyMachine implements IAutoOutputFluid, IUIMachine, IMachineLife { @@ -594,8 +589,8 @@ public ModularUI createUI(Player entityPlayer) { // ******* Rendering ********// ////////////////////////////////////// @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.WRENCH)) { if (player.isShiftKeyDown()) { if (hasFrontFacing() && side != this.getFrontFacing() && isFacingValid(side)) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java index 789f3b70188..0e8cf1afcb3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.capability.IControllable; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; @@ -17,6 +18,7 @@ import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.phys.BlockHitResult; import lombok.Getter; @@ -24,17 +26,15 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/10 - * @implNote TransformerMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class TransformerMachine extends TieredEnergyMachine implements IControllable { protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(TransformerMachine.class, TieredEnergyMachine.MANAGED_FIELD_HOLDER); + + public static final BooleanProperty TRANSFORM_UP_PROPERTY = GTMachineModelProperties.IS_TRANSFORM_UP; + @Persisted @DescSynced @Getter @@ -63,7 +63,6 @@ public ManagedFieldHolder getFieldHolder() { @SuppressWarnings("unused") private void onTransformUpdated(boolean newValue, boolean oldValue) { - scheduleRenderUpdate(); updateEnergyContainer(newValue); } @@ -122,6 +121,7 @@ public void setTransformUp(boolean isTransformUp) { if (this.isTransformUp != isTransformUp && !isRemote()) { this.isTransformUp = isTransformUp; updateEnergyContainer(isTransformUp); + setRenderState(getRenderState().setValue(GTMachineModelProperties.IS_TRANSFORM_UP, isTransformUp)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java index 24d2d80d8c1..7fa52a713dd 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java @@ -10,6 +10,7 @@ import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; import com.gregtechceu.gtceu.common.data.machines.GTMachineUtils; import com.gregtechceu.gtceu.config.ConfigHolder; @@ -32,6 +33,7 @@ import net.minecraft.world.level.block.entity.BlockEntityTicker; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.phys.BlockHitResult; import it.unimi.dsi.fastutil.objects.Object2BooleanFunction; @@ -39,18 +41,13 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import lombok.Getter; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; -/** - * @author h3tr - * @date 2024/2/08 - * @implNote WorldAcceleratorMachine - */ - public class WorldAcceleratorMachine extends TieredEnergyMachine implements IControllable { private static final Map> blacklistedClasses = new Object2ObjectOpenHashMap<>(); @@ -60,6 +57,8 @@ public class WorldAcceleratorMachine extends TieredEnergyMachine implements ICon // Hard-coded blacklist for blockentities private static final List blockEntityClassNamesBlackList = new ArrayList<>(); + public static final BooleanProperty RANDOM_TICK_PROPERTY = GTMachineModelProperties.IS_RANDOM_TICK_MODE; + protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( WorldAcceleratorMachine.class, TieredEnergyMachine.MANAGED_FIELD_HOLDER); private static final long blockEntityAmperage = 6; @@ -108,10 +107,12 @@ public void updateSubscription() { if (isWorkingEnabled && drainEnergy(true)) { tickSubs = subscribeServerTick(tickSubs, this::update); active = true; + setRenderState(getRenderState().setValue(GTMachineModelProperties.IS_ACTIVE, true)); } else if (tickSubs != null) { tickSubs.unsubscribe(); tickSubs = null; active = false; + setRenderState(getRenderState().setValue(GTMachineModelProperties.IS_ACTIVE, false)); } } @@ -216,12 +217,13 @@ public void onUnload() { public void setWorkingEnabled(boolean workingEnabled) { isWorkingEnabled = workingEnabled; + setRenderState(getRenderState().setValue(GTMachineModelProperties.IS_WORKING_ENABLED, isWorkingEnabled)); updateSubscription(); } @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.SOFT_MALLET)) { return isWorkingEnabled ? GuiTextures.TOOL_PAUSE : GuiTextures.TOOL_START; } @@ -247,6 +249,7 @@ protected InteractionResult onSoftMalletClick(Player playerIn, InteractionHand h BlockHitResult hitResult) { if (!isRemote()) { isRandomTickMode = !isRandomTickMode; + setRenderState(getRenderState().setValue(GTMachineModelProperties.IS_RANDOM_TICK_MODE, isRandomTickMode)); playerIn.sendSystemMessage(Component.translatable(isRandomTickMode ? "gtceu.machine.world_accelerator.mode_entity" : "gtceu.machine.world_accelerator.mode_tile")); scheduleRenderUpdate(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ActiveTransformerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ActiveTransformerMachine.java index 483fbdf6c2d..2ad53abea17 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ActiveTransformerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ActiveTransformerMachine.java @@ -28,13 +28,13 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.block.Block; +import it.unimi.dsi.fastutil.longs.Long2ObjectMap; import it.unimi.dsi.fastutil.longs.Long2ObjectMaps; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.Comparator; import java.util.List; -import java.util.Map; import static com.gregtechceu.gtceu.api.pattern.Predicates.abilities; @@ -84,7 +84,8 @@ public void onStructureFormed() { // capture all energy containers List powerInput = new ArrayList<>(); List powerOutput = new ArrayList<>(); - Map ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", Long2ObjectMaps::emptyMap); + Long2ObjectMap ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", + Long2ObjectMaps::emptyMap); for (IMultiPart part : getPrioritySortedParts()) { IO io = ioMap.getOrDefault(part.self().getPos().asLong(), IO.BOTH); @@ -98,9 +99,9 @@ public void onStructureFormed() { .map(IEnergyContainer.class::cast) .toList(); - if (handlerList.getHandlerIO() == IO.IN) { + if (handlerList.getHandlerIO().support(IO.IN)) { powerInput.addAll(containers); - } else if (handlerList.getHandlerIO() == IO.OUT) { + } else if (handlerList.getHandlerIO().support(IO.OUT)) { powerOutput.addAll(containers); } @@ -122,7 +123,7 @@ public void onStructureFormed() { @NotNull private List getPrioritySortedParts() { - return getParts().stream().sorted(Comparator.comparing(part -> { + return getParts().stream().sorted(Comparator.comparingInt(part -> { if (part instanceof MetaMachine partMachine) { Block partBlock = partMachine.getBlockState().getBlock(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java index 84836a0b056..19f56eaa1d2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java @@ -5,6 +5,8 @@ import com.gregtechceu.gtceu.api.capability.recipe.IRecipeHandler; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; +import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.api.recipe.GTRecipe; @@ -13,7 +15,6 @@ import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; -import net.minecraft.core.BlockPos; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraftforge.fluids.FluidStack; @@ -23,10 +24,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.Collections; -import java.util.Comparator; -import java.util.Optional; -import java.util.function.Function; +import java.util.*; public class AssemblyLineMachine extends WorkableElectricMultiblockMachine { @@ -57,14 +55,9 @@ public boolean beforeWorking(@Nullable GTRecipe recipe) { return checkFluidInputs(recipe); } - @Override - public void onStructureFormed() { - getDefinition().setPartSorter(Comparator.comparing(it -> multiblockPartSorter().apply(it.self().getPos()))); - super.onStructureFormed(); - } - - private Function multiblockPartSorter() { - return RelativeDirection.RIGHT.getSorter(getFrontFacing(), getUpwardsFacing(), isFlipped()); + public static Comparator partSorter(MultiblockControllerMachine mc) { + return Comparator.comparing(p -> p.self().getPos(), + RelativeDirection.RIGHT.getSorter(mc.getFrontFacing(), mc.getUpwardsFacing(), mc.isFlipped())); } private boolean checkItemInputs(@NotNull GTRecipe recipe) { @@ -81,6 +74,7 @@ private boolean checkItemInputs(@NotNull GTRecipe recipe) { .map(ItemStack.class::cast) .filter(s -> !s.isEmpty()) .findFirst()) + .dropWhile(Optional::isEmpty) .limit(inputsSize) .map(o -> o.orElse(ItemStack.EMPTY)) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java index fe4b1b77a49..af8040bc18f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java @@ -5,8 +5,8 @@ import com.gregtechceu.gtceu.api.capability.IEnergyContainer; import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; +import com.gregtechceu.gtceu.api.data.worldgen.bedrockore.WeightedMaterial; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; @@ -30,15 +30,9 @@ import lombok.Getter; import java.util.List; -import java.util.Map; import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author Screret - * @date 2023/7/12 - * @implNote BedrockOreMinerMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class BedrockOreMinerMachine extends WorkableElectricMultiblockMachine implements ITieredMachine { @@ -81,9 +75,9 @@ public void addDisplayText(List textList) { // Ore names textList.add(Component.translatable("gtceu.multiblock.ore_rig.drilled_ores_list") .withStyle(ChatFormatting.GREEN)); - List> drilledOres = getRecipeLogic().getVeinMaterials(); + List drilledOres = getRecipeLogic().getVeinMaterials(); for (var entry : drilledOres) { - Component fluidInfo = entry.getValue().getLocalizedName().withStyle(ChatFormatting.GREEN); + Component fluidInfo = entry.material().getLocalizedName().withStyle(ChatFormatting.GREEN); textList.add(Component.translatable("gtceu.multiblock.ore_rig.drilled_ore_entry", fluidInfo) .withStyle(ChatFormatting.GRAY)); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java new file mode 100644 index 00000000000..25ae5f29b93 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java @@ -0,0 +1,682 @@ +package com.gregtechceu.gtceu.common.machine.multiblock.electric; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; +import com.gregtechceu.gtceu.api.capability.IMonitorComponent; +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.gui.GuiTextures; +import com.gregtechceu.gtceu.api.gui.widget.IntInputWidget; +import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; +import com.gregtechceu.gtceu.api.item.IComponentItem; +import com.gregtechceu.gtceu.api.item.component.IItemComponent; +import com.gregtechceu.gtceu.api.item.component.IMonitorModuleItem; +import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.feature.IDataInfoProvider; +import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; +import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockDisplayText; +import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; +import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; +import com.gregtechceu.gtceu.api.machine.multiblock.WorkableMultiblockMachine; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; +import com.gregtechceu.gtceu.api.misc.EnergyContainerList; +import com.gregtechceu.gtceu.api.pattern.*; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; +import com.gregtechceu.gtceu.common.data.GTBlocks; +import com.gregtechceu.gtceu.common.data.GTMachines; +import com.gregtechceu.gtceu.common.item.PortableScannerBehavior; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.monitor.MonitorGroup; +import com.gregtechceu.gtceu.common.machine.trait.CentralMonitorLogic; +import com.gregtechceu.gtceu.common.network.GTNetwork; +import com.gregtechceu.gtceu.common.network.packets.SCPacketMonitorGroupNBTChange; +import com.gregtechceu.gtceu.data.lang.LangHandler; +import com.gregtechceu.gtceu.utils.GTStringUtils; +import com.gregtechceu.gtceu.utils.GTUtil; + +import com.lowdragmc.lowdraglib.gui.texture.*; +import com.lowdragmc.lowdraglib.gui.widget.*; +import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; +import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; +import com.lowdragmc.lowdraglib.syncdata.annotation.RequireRerender; +import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; + +import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.network.chat.Component; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraftforge.items.IItemHandler; + +import lombok.Getter; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.awt.*; +import java.util.*; +import java.util.List; +import java.util.function.Consumer; +import java.util.stream.Stream; + +import javax.annotation.ParametersAreNonnullByDefault; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +public class CentralMonitorMachine extends WorkableElectricMultiblockMachine + implements IMonitorComponent, IDataInfoProvider, IMachineLife { + + public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(CentralMonitorMachine.class, + WorkableMultiblockMachine.MANAGED_FIELD_HOLDER); + + @Persisted + @DescSynced + @Getter + private int leftDist = 0, rightDist = 0, upDist = 0, downDist = 0; + @Persisted + @DescSynced + @Getter + @RequireRerender + private final List monitorGroups = new ArrayList<>(); + private final Set selectedComponents = new HashSet<>(); + private final List selectedTargets = new ArrayList<>(); + + private MultiblockState patternFindingState; + + private static TraceabilityPredicate MULTI_PREDICATE = null; + + public CentralMonitorMachine(IMachineBlockEntity holder) { + super(holder); + } + + public static TraceabilityPredicate getMultiPredicate() { + if (MULTI_PREDICATE == null) { + MULTI_PREDICATE = Predicates.abilities(PartAbility.INPUT_ENERGY) + .setMinGlobalLimited(1).setMaxGlobalLimited(2).setPreviewCount(1) + .or(Predicates.abilities(PartAbility.DATA_ACCESS).setPreviewCount(1) + .or(Predicates.machines(GTMachines.BATTERY_BUFFER_4).setPreviewCount(0)) + .or(Predicates.machines(GTMachines.BATTERY_BUFFER_16).setPreviewCount(0)) + .setMaxGlobalLimited(4)) + .or(Predicates.machines(GTMachines.HULL)) + .or(Predicates.machines(GTMachines.MONITOR)) + .or(Predicates.blocks(GTBlocks.CASING_ALUMINIUM_FROSTPROOF.get())); + } + return MULTI_PREDICATE; + } + + @Override + public ManagedFieldHolder getFieldHolder() { + return MANAGED_FIELD_HOLDER; + } + + @Override + public void onStructureInvalid() { + super.onStructureInvalid(); + this.clearPatternFindingState(); + } + + @Override + public CentralMonitorLogic getRecipeLogic() { + return (CentralMonitorLogic) super.getRecipeLogic(); + } + + @Override + protected RecipeLogic createRecipeLogic(Object... args) { + return new CentralMonitorLogic(this); + } + + public @Nullable EnergyContainerList getFormedEnergyContainer() { + return this.energyContainer; + } + + public void tick() { + Level level = getLevel(); + if (level == null) { + return; + } + + for (MonitorGroup group : monitorGroups) { + ItemStack stack = group.getItemStackHandler().getStackInSlot(0); + if (stack.isEmpty() || !(stack.getItem() instanceof IComponentItem componentItem)) { + continue; + } + + for (IItemComponent component : componentItem.getComponents()) { + if (!(component instanceof IMonitorModuleItem module)) { + continue; + } + module.tick(stack, this, group); + GTNetwork.sendToAllPlayersTrackingChunk(level.getChunkAt(getPos()), + new SCPacketMonitorGroupNBTChange(stack, group, this)); + } + } + } + + @Override + public void onUnload() { + super.onUnload(); + this.clearPatternFindingState(); + } + + protected void clearPatternFindingState() { + if (this.patternFindingState != null) + this.patternFindingState.clean(); + this.patternFindingState = null; + } + + protected MultiblockState getPatternFindingState() { + if (this.patternFindingState == null) { + this.patternFindingState = new MultiblockState(getLevel(), getPos()); + this.patternFindingState.clean(); + } + return this.patternFindingState; + } + + public boolean isValidMonitorBlock(Level level, BlockPos pos) { + if (level.isOutsideBuildHeight(pos)) return false; + + MultiblockState state = getPatternFindingState(); + if (!state.update(pos, getMultiPredicate())) { + return false; + } + state.io = IO.BOTH; + + return Stream.concat(state.predicate.common.stream(), state.predicate.limited.stream()) + .anyMatch(predicate -> predicate.test(state)); + } + + public void updateStructureDimensions() { + Level level = getLevel(); + if (level == null) return; + + Direction front = getFrontFacing(); + Direction spin = getUpwardsFacing(); + + Direction left = RelativeDirection.LEFT.getRelative(front, spin, false); + Direction right = RelativeDirection.RIGHT.getRelative(front, spin, false); + Direction up = RelativeDirection.UP.getRelative(front, spin, false); + Direction down = RelativeDirection.DOWN.getRelative(front, spin, false); + BlockPos.MutableBlockPos posLeft = getPos().mutable().move(left); + BlockPos.MutableBlockPos posRight = getPos().mutable().move(right); + BlockPos.MutableBlockPos posUp = getPos().mutable().move(up); + BlockPos.MutableBlockPos posDown = getPos().mutable().move(down); + this.leftDist = 0; + this.rightDist = 0; + this.upDist = 0; + this.downDist = 0; + + while (isValidMonitorBlock(level, posLeft)) { + posLeft.move(left); + leftDist++; + } + while (isValidMonitorBlock(level, posRight)) { + posRight.move(right); + rightDist++; + } + while (isValidMonitorBlockRow(level, posUp, leftDist, rightDist, left, right)) { + posUp.move(up); + upDist++; + } + while (isValidMonitorBlockRow(level, posDown, leftDist, rightDist, left, right)) { + posDown.move(down); + downDist++; + } + } + + private boolean isValidMonitorBlockRow(Level level, BlockPos pos, int leftDist, int rightDist, Direction left, + Direction right) { + BlockPos.MutableBlockPos mutable = pos.mutable(); + mutable.move(left, leftDist); + for (int i = 0; i < leftDist + rightDist; i++) { + if (!isValidMonitorBlock(level, mutable)) return false; + mutable.move(right); + } + return isValidMonitorBlock(level, mutable); + } + + @Override + public BlockPattern getPattern() { + updateStructureDimensions(); + if (leftDist + rightDist < 1 || upDist + downDist < 1) { + leftDist = 3; + rightDist = 0; + upDist = 1; + downDist = 1; + } + + StringBuilder[] pattern = new StringBuilder[upDist + downDist + 1]; + for (int i = 0; i < upDist + downDist + 1; i++) { + pattern[i] = new StringBuilder(leftDist + rightDist + 1); + for (int j = 0; j < leftDist + rightDist + 1; j++) { + if (i == downDist && j == rightDist) + pattern[i].append('C'); // controller + else + pattern[i].append('B'); // any valid block + } + } + + String[] aisle = new String[upDist + downDist + 1]; + for (int i = 0; i < upDist + downDist + 1; i++) { + aisle[i] = pattern[i].toString(); + } + + return FactoryBlockPattern.start() + .aisle(aisle) + .where('B', getMultiPredicate()) + .where('C', Predicates.controller(Predicates.blocks(this.getDefinition().get()))) + .build(); + } + + public BlockPos toRelative(BlockPos pos) { + Direction front = getFrontFacing(); + Direction spin = getUpwardsFacing(); + boolean flipped = isFlipped(); + Direction right = RelativeDirection.RIGHT.getRelative(front, spin, flipped); + Direction up = RelativeDirection.UP.getRelative(front, spin, flipped); + + BlockPos tmp = getPos().mutable().move(right, rightDist).move(up, upDist); + + return new BlockPos(Math.abs(tmp.get(right.getAxis()) - pos.get(right.getAxis())), + Math.abs(tmp.get(up.getAxis()) - pos.get(up.getAxis())), + 0); + } + + @Nullable + public IMonitorComponent getComponent(int row, int col) { + Level level = getLevel(); + if (level == null) return null; + + Direction front = getFrontFacing(); + Direction spin = getUpwardsFacing(); + boolean flipped = isFlipped(); + + Direction left = RelativeDirection.LEFT.getRelative(front, spin, flipped); + Direction up = RelativeDirection.UP.getRelative(front, spin, flipped); + + col = leftDist + rightDist - col; + BlockPos pos = getPos().relative(left, leftDist - col).relative(up, upDist - row); + + return GTCapabilityHelper.getMonitorComponent(level, pos, null); + } + + public boolean isMonitor(int row, int col) { + IMonitorComponent component = this.getComponent(row, col); + if (component == null) return false; + return component.isMonitor(); + } + + private IGuiTexture getComponentTexture(int row, int col) { + if (row < 0 || col < 0 || row > downDist + upDist + 1 || col > leftDist + rightDist + 1) + return GuiTextures.BLANK_TRANSPARENT; + IMonitorComponent component = getComponent(row, col); + if (component == null) return GuiTextures.BLANK_TRANSPARENT; + return component.getComponentIcon(); + } + + private boolean isInAnyGroup(IMonitorComponent component) { + return monitorGroups.stream().anyMatch(group -> group.contains(component.getPos())); + } + + @Override + public void addDisplayText(List textList) { + MultiblockDisplayText.builder(textList, isFormed()) + .addWorkingStatusLine(); + getDefinition().getAdditionalDisplay().accept(this, textList); + } + + @Override + public Widget createUIWidget() { + updateStructureDimensions(); + selectedComponents.clear(); + WidgetGroup builder = (WidgetGroup) super.createUIWidget(); + + WidgetGroup main = new WidgetGroup(); + DraggableScrollableWidgetGroup componentSelection = new DraggableScrollableWidgetGroup(0, 10, 200, 110); + main.addWidget(componentSelection); + WidgetGroup options = new WidgetGroup(-100, 20, 60, 20); + WidgetGroup groupConfig = new WidgetGroup(10, 30, 100, 100); + groupConfig.setVisible(false); + + ButtonWidget infoWidget = new ButtonWidget(200, 10, 20, 20, null); + infoWidget.setButtonTexture(GuiTextures.INFO_ICON); + infoWidget.setHoverTooltips( + GTStringUtils.toImmutable(LangHandler.getSingleOrMultiLang("gtceu.central_monitor.info_tooltip"))); + builder.addWidget(infoWidget); + List configGroup = new ArrayList<>(); + configGroup.add(null); + + Consumer openGroupConfig = (group) -> { + configGroup.set(0, group); + if (group == null) { + main.setVisible(true); + groupConfig.setVisible(false); + return; + } + groupConfig.clearAllWidgets(); + groupConfig.addWidget(new LabelWidget(0, 5, () -> { + String currentName = ""; + if (configGroup.get(0) != null) { + currentName = configGroup.get(0).getName(); + } + return Component.translatable("gtceu.central_monitor.gui.currently_editing", currentName).getString(); + })); + for (int i = 0; i < 8; i++) { + SlotWidget slot = new SlotWidget(group.getPlaceholderSlotsHandler(), i, -38, 16 * i + 46); + slot.setHoverTooltips(GTStringUtils + .toImmutable(LangHandler.getMultiLang("gtceu.gui.computer_monitor_cover.slot_tooltip", i + 1))); + groupConfig.addWidget(slot); + } + SlotWidget slot = new SlotWidget( + group.getItemStackHandler(), 0, + 0, 20); + WidgetGroup itemUI = new WidgetGroup(40, 20, 100, 100); + Runnable changeListener = () -> { + if (slot.getLastItem().is(slot.getItem().getItem())) return; + itemUI.clearAllWidgets(); + if (slot.getItem().getItem() instanceof IComponentItem item) { + for (IItemComponent component : item.getComponents()) { + if (component instanceof IMonitorModuleItem module) { + itemUI.addWidget(module.createUIWidget(slot.getItem(), this, group)); + } + } + } + }; + slot.setChangeListener(changeListener); + changeListener.run(); + groupConfig.addWidget(itemUI); + groupConfig.addWidget(slot); + main.setVisible(false); + groupConfig.setVisible(true); + }; + builder.addWidget(groupConfig); + DraggableScrollableWidgetGroup groupList = new DraggableScrollableWidgetGroup(-100, 50, 70, 80); + + List>>> imageButtons = new ArrayList<>(); + Map rightClickCallbacks = new HashMap<>(); + int[] dataSlot = new int[2]; // list to be able to modify it in lambdas + dataSlot[0] = 1; // the slot (index starts from 1) + dataSlot[1] = 9; // amount of slots + IntInputWidget dataSlotInput = new IntInputWidget(120, 20, 60, -20, () -> dataSlot[0], + n -> dataSlot[0] = Mth.clamp(n, 1, dataSlot[1])); + dataSlotInput.setVisible(false); + builder.addWidget(dataSlotInput); + + Consumer addGroupToList = group -> { + ButtonWidget label = new ButtonWidget(20, groupList.widgets.size() * 15 + 5, 60, 10, null); + TextTexture text = new TextTexture(group.getName()); + text.setType(TextTexture.TextType.LEFT); + label.setButtonTexture(text); + label.setOnPressCallback(click -> { + group.getRelativePositions().forEach(pos -> { + BlockPos rel = toRelative(pos); + if (imageButtons.size() - 1 < rel.getY()) return; + if (imageButtons.get(rel.getY()).size() - 1 < rel.getX()) return; + imageButtons.get(rel.getY()).get(rel.getX()).accept(null); + }); + if (group.getTargetRaw() != null) { + rightClickCallbacks.getOrDefault(group.getTargetRaw(), () -> {}).run(); + } + }); + groupList.addWidget(label); + + ButtonWidget configButton = new ButtonWidget( + 0, label.getSelfPositionY() - 3, + 16, 16, + GuiTextures.IO_CONFIG_COVER_SETTINGS, + click -> { + if (configGroup.get(0) == null) { + openGroupConfig.accept(group); + } else { + openGroupConfig.accept(null); + } + }); + groupList.addWidget(configButton); + }; + + monitorGroups.forEach(addGroupToList); + builder.addWidget(groupList); + main.addWidget(options); + ButtonWidget removeFromGroupButton = new ButtonWidget(0, 0, 60, 20, null); + removeFromGroupButton.setButtonTexture(new TextTexture("gtceu.central_monitor.gui.remove_from_group")); + removeFromGroupButton.setVisible(false); + ButtonWidget setTargetButton = new ButtonWidget(0, 15, 60, 20, null); + setTargetButton.setButtonTexture(new TextTexture("gtceu.central_monitor.gui.set_target")); + setTargetButton.setVisible(false); + ButtonWidget createGroupButton = new ButtonWidget(0, 0, 60, 20, null); + createGroupButton.setOnPressCallback(click -> { + MonitorGroup group = new MonitorGroup( + Component.translatable("gtceu.gui.central_monitor.group_default_name", monitorGroups.size() + 1) + .getString()); + for (IMonitorComponent component : selectedComponents) { + if (isInAnyGroup(component)) return; + group.add(component.getPos()); + } + monitorGroups.add(group); + addGroupToList.accept(group); + + createGroupButton.setVisible(false); + removeFromGroupButton.setVisible(true); + Iterator it = selectedComponents.iterator(); + while (it.hasNext()) { + IMonitorComponent c = it.next(); + BlockPos rel = toRelative(c.getPos()); + imageButtons.get(rel.getY()).get(rel.getX()).accept(it); + } + if (!selectedTargets.isEmpty()) { + rightClickCallbacks.getOrDefault(selectedTargets.get(0).getPos(), () -> {}).run(); + } + }); + setTargetButton.setOnPressCallback(click -> { + MonitorGroup group = null; + for (MonitorGroup group2 : monitorGroups) { + for (IMonitorComponent component : selectedComponents) { + if (group2.contains(component.getPos())) { + group = group2; + break; + } + } + if (group != null) break; + } + if (group == null) return; + if (selectedTargets.isEmpty()) group.setTarget(null); + else { + group.setTarget(selectedTargets.get(0).getPos()); + group.setDataSlot(dataSlot[0] - 1); + } + }); + removeFromGroupButton.setOnPressCallback(click -> { + for (MonitorGroup group : monitorGroups) { + for (IMonitorComponent component : selectedComponents) group.remove(component.getPos()); + } + Iterator itg = monitorGroups.iterator(); + while (itg.hasNext()) { + MonitorGroup group = itg.next(); + if (group.isEmpty()) { + clearInventory(group.getItemStackHandler()); + clearInventory(group.getPlaceholderSlotsHandler()); + itg.remove(); + } + } + groupList.clearAllWidgets(); + monitorGroups.forEach(addGroupToList); + + removeFromGroupButton.setVisible(false); + createGroupButton.setVisible(true); + Iterator it = selectedComponents.iterator(); + while (it.hasNext()) { + IMonitorComponent c = it.next(); + BlockPos rel = toRelative(c.getPos()); + if (imageButtons.size() - 1 < rel.getY()) continue; + if (imageButtons.get(rel.getY()).size() - 1 < rel.getX()) continue; + imageButtons.get(rel.getY()).get(rel.getX()).accept(it); + } + if (!selectedTargets.isEmpty()) { + rightClickCallbacks.getOrDefault(selectedTargets.get(0).getPos(), () -> {}).run(); + } + }); + createGroupButton.setButtonTexture(new TextTexture("gtceu.central_monitor.gui.create_group")); + createGroupButton.setVisible(false); + options.addWidget(removeFromGroupButton); + options.addWidget(createGroupButton); + options.addWidget(setTargetButton); + int startX = 20; + int startY = 30; + for (int row = 0; row <= downDist + upDist; row++) { + imageButtons.add(new ArrayList<>()); + for (int col = 0; col <= leftDist + rightDist; col++) { + IGuiTexture texture = getComponentTexture(row, col); + GuiTextureGroup textures = new GuiTextureGroup(texture, new ColorBorderTexture(2, 0xFFFFFF)); + IMonitorComponent component = getComponent(row, col); + if (component == null) { + GTUtil.getLast(imageButtons).add(it -> {}); + continue; + } + ButtonWidget img = new ButtonWidget(startX + (16 * col), startY + (16 * row), 16, 16, textures, null); + Consumer> callback = (it) -> { + if (!component.isMonitor()) return; + if (selectedComponents.contains(component)) { + if (it == null) { + selectedComponents.remove(component); + } else { + it.remove(); + } + + if (!selectedTargets.isEmpty() && selectedTargets.get(0) == component) { + ColorRectTexture rect = new ColorRectTexture(Color.BLUE); + textures.setTextures(rect, texture); + } else { + textures.setTextures(texture); + } + + createGroupButton.setVisible(selectedComponents.stream().noneMatch(this::isInAnyGroup)); + removeFromGroupButton.setVisible(selectedComponents.stream().allMatch(this::isInAnyGroup)); + setTargetButton.setVisible(removeFromGroupButton.isVisible()); + + if (selectedComponents.isEmpty()) { + createGroupButton.setVisible(false); + removeFromGroupButton.setVisible(false); + setTargetButton.setVisible(false); + } + } else { + boolean inAnyGroup = isInAnyGroup(component); + // yes I know this is terrible but if it works don't touch it :) + if (selectedComponents.isEmpty() && !inAnyGroup) createGroupButton.setVisible(true); + if (inAnyGroup) createGroupButton.setVisible(false); + if (selectedComponents.isEmpty() && inAnyGroup) { + removeFromGroupButton.setVisible(true); + setTargetButton.setVisible(true); + } + if (!inAnyGroup) { + removeFromGroupButton.setVisible(false); + setTargetButton.setVisible(false); + } + selectedComponents.add(component); + ColorRectTexture rect = new ColorRectTexture( + (selectedTargets.isEmpty() || selectedTargets.get(0) != component) ? Color.RED : + Color.PINK); + textures.setTextures(rect, texture); + } + if (isInAnyGroup(component)) { + monitorGroups.forEach(group -> { + if (group.contains(component.getPos())) { + img.setHoverTooltips( + Component.translatable("gtceu.gui.central_monitor.group", group.getName())); + } + }); + } else { + img.setHoverTooltips(Component.translatable("gtceu.gui.central_monitor.group", + Component.translatable("gtceu.gui.central_monitor.none"))); + } + }; + Runnable rightClickCallback = () -> { + if (!selectedTargets.isEmpty()) { + if (selectedTargets.get(0) == component) { + selectedTargets.clear(); + if (selectedComponents.contains(component)) { + ColorRectTexture rect = new ColorRectTexture(Color.RED); + textures.setTextures(rect, texture); + } else { + textures.setTextures(texture); + } + dataSlotInput.setVisible(false); + return; + } else { + rightClickCallbacks.get(selectedTargets.get(0).getPos()).run(); + } + } + selectedTargets.add(component); + ColorRectTexture rect; + if (selectedComponents.contains(component)) { + rect = new ColorRectTexture(Color.PINK); + } else { + rect = new ColorRectTexture(Color.BLUE); + } + textures.setTextures(rect, texture); + if (component.getDataItems() != null) { + IItemHandler dataItems = component.getDataItems(); + MonitorGroup selectedGroup = null; + for (MonitorGroup group : monitorGroups) { + for (IMonitorComponent c : selectedComponents) { + if (group.contains(c.getPos())) { + if (selectedGroup == null || selectedGroup == group) { + selectedGroup = group; + } else { + selectedGroup = null; + break; + } + } + } + } + if (selectedGroup != null) { + dataSlot[0] = selectedGroup.getDataSlot() + 1; + } + dataSlot[1] = dataItems.getSlots(); + dataSlotInput.setVisible(true); + } + }; + if (isInAnyGroup(component)) { + monitorGroups.forEach(group -> { + if (group.contains(component.getPos())) img.setHoverTooltips( + Component.translatable("gtceu.gui.central_monitor.group", group.getName())); + }); + } else { + img.setHoverTooltips(Component.translatable("gtceu.gui.central_monitor.group", + Component.translatable("gtceu.gui.central_monitor.none"))); + } + img.setOnPressCallback(click -> { + if (click.button == 0) callback.accept(null); + else if (click.button == 1) rightClickCallback.run(); + }); + componentSelection.addWidget(img); + GTUtil.getLast(imageButtons).add(callback); + rightClickCallbacks.put(component.getPos(), rightClickCallback); + } + } + builder.addWidget(main); + return builder; + } + + @Override + public IGuiTexture getComponentIcon() { + return ResourceTexture.fromSpirit(GTCEu.id("block/multiblock/network_switch/overlay_front_active")); + } + + @Override + public @NotNull List getDebugInfo(Player player, int logLevel, + PortableScannerBehavior.DisplayMode mode) { + return List.of(Component.translatable("gtceu.central_monitor.size", leftDist, rightDist, upDist, downDist)); + } + + @Override + public @NotNull List getDataInfo(PortableScannerBehavior.DisplayMode mode) { + return List.of(Component.translatable("gtceu.central_monitor.size", leftDist, rightDist, upDist, downDist)); + } + + @Override + public void onMachineRemoved() { + for (MonitorGroup group : monitorGroups) { + clearInventory(group.getItemStackHandler()); + clearInventory(group.getPlaceholderSlotsHandler()); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java index 106f7c74822..51ddb521f98 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java @@ -62,6 +62,7 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; +import it.unimi.dsi.fastutil.longs.Long2ObjectMap; import it.unimi.dsi.fastutil.longs.Long2ObjectMaps; import lombok.Getter; import org.jetbrains.annotations.NotNull; @@ -82,7 +83,7 @@ public class CleanroomMachine extends WorkableElectricMultiblockMachine protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(CleanroomMachine.class, WorkableMultiblockMachine.MANAGED_FIELD_HOLDER); - public static final int CLEAN_AMOUNT_THRESHOLD = 90; + public static final int CLEAN_AMOUNT_THRESHOLD = 95; public static final int MIN_CLEAN_AMOUNT = 0; public static final int MIN_RADIUS = 2; @@ -150,11 +151,14 @@ public void onStructureFormed() { this.cleanroomReceivers = ImmutableSet.copyOf(receivers); this.cleanroomReceivers.forEach(receiver -> receiver.setCleanroom(this)); - // max progress is based on the dimensions of the structure: (x^3)-(x^2) + // max progress is based roughly on the dimensions of the structure: ((w * d) ^ .8 * h) // taller cleanrooms take longer than wider ones // minimum of 100 is a 5x5x5 cleanroom: 125-25=100 ticks - this.getRecipeLogic().setDuration((Math.max(100, - ((lDist + rDist + 1) * (bDist + fDist + 1) * hDist) - ((lDist + rDist + 1) * (bDist + fDist + 1))))); + // max sized CR is around 1142 ticks per progression + + var area = (lDist + rDist + 1) * (bDist + fDist + 1); + var duration = Math.pow(area, 0.8) * (hDist + 1); + this.getRecipeLogic().setDuration(Math.max(100, (int) duration)); } @Override @@ -181,7 +185,8 @@ public boolean shouldAddPartToController(IMultiPart part) { protected void initializeAbilities() { List energyContainers = new ArrayList<>(); - Map ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", Long2ObjectMaps::emptyMap); + Long2ObjectMap ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", + Long2ObjectMaps::emptyMap); for (IMultiPart part : getParts()) { if (isPartIgnored(part)) continue; IO io = ioMap.getOrDefault(part.self().getPos().asLong(), IO.BOTH); @@ -201,7 +206,7 @@ protected void initializeAbilities() { } this.inputEnergyContainers = new EnergyContainerList(energyContainers); getRecipeLogic().setEnergyContainer(this.inputEnergyContainers); - this.tier = GTUtil.getFloorTierByVoltage(getMaxVoltage()); + this.tier = Math.min(GTValues.MAX, GTUtil.getFloorTierByVoltage(getMaxVoltage())); } @SuppressWarnings("RedundantIfStatement") // `return false` being a separate statement is better for readability @@ -370,13 +375,15 @@ public BlockPattern getPattern() { c[i] = ceilingLayer[i].toString(); } + var area = (lDist + rDist + 1) * (bDist + fDist + 1); TraceabilityPredicate wallPredicate = states(getCasingState(), getGlassState()); TraceabilityPredicate basePredicate = Predicates.abilities(PartAbility.INPUT_ENERGY).setMinGlobalLimited(1) .setMaxGlobalLimited(2) .or(blocks(GTMachines.MAINTENANCE_HATCH.get(), GTMachines.AUTO_MAINTENANCE_HATCH.get()) .setMinGlobalLimited(ConfigHolder.INSTANCE.machines.enableMaintenance ? 1 : 0) .setMaxGlobalLimited(1)) - .or(abilities(PartAbility.PASSTHROUGH_HATCH).setMaxGlobalLimited(30)); + // limit pass through hatches to a quarter of the floor area + .or(abilities(PartAbility.PASSTHROUGH_HATCH).setMaxGlobalLimited(area / 4)); return FactoryBlockPattern.start(LEFT, FRONT, UP) .aisle(f) @@ -409,7 +416,7 @@ protected BlockState getGlassState() { @NotNull protected static TraceabilityPredicate doorPredicate() { - return Predicates.custom(blockWorldState -> blockWorldState.getBlockState().getBlock() instanceof DoorBlock, + return Predicates.custom(blockWorldState -> blockWorldState.getBlockState().is(CustomTags.CLEANROOM_DOORS), () -> new BlockInfo[] { new BlockInfo(Blocks.IRON_DOOR.defaultBlockState()), new BlockInfo( Blocks.IRON_DOOR.defaultBlockState().setValue(DoorBlock.HALF, DoubleBlockHalf.UPPER)) }); } @@ -506,6 +513,9 @@ public void addDisplayText(List textList) { if (isClean()) textList.add(Component.translatable("gtceu.multiblock.cleanroom.clean_state")); else textList.add(Component.translatable("gtceu.multiblock.cleanroom.dirty_state")); textList.add(Component.translatable("gtceu.multiblock.cleanroom.clean_amount", this.cleanAmount)); + textList.add(Component.translatable("gtceu.multiblock.dimensions.0")); + textList.add(Component.translatable("gtceu.multiblock.dimensions.1", lDist + rDist + 1, hDist + 1, + fDist + bDist + 1)); } else { Component tooltip = Component.translatable("gtceu.multiblock.invalid_structure.tooltip") .withStyle(ChatFormatting.GRAY); @@ -551,4 +561,13 @@ public long getMaxVoltage() { if (inputEnergyContainers == null) return GTValues.LV; return inputEnergyContainers.getInputVoltage(); } + + // Do not allow cleanroom to be paused due to custom recipe logic + @Override + public boolean isWorkingEnabled() { + return true; + } + + @Override + public void setWorkingEnabled(boolean ignored) {} } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java index a13c1933d39..b2da6931fcd 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java @@ -14,6 +14,7 @@ import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; +import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; import com.gregtechceu.gtceu.api.recipe.modifier.ParallelLogic; import com.gregtechceu.gtceu.common.data.GTRecipeTypes; @@ -22,7 +23,6 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.network.chat.Component; -import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; import net.minecraftforge.fluids.capability.templates.VoidFluidHandler; @@ -75,8 +75,6 @@ public DistillationTowerLogic getRecipeLogic() { @Override public void onStructureFormed() { - getDefinition().setPartSorter(Comparator.comparingInt(p -> p.self().getPos().getY())); - getDefinition().setAllowExtendedFacing(false); super.onStructureFormed(); final int startY = getPos().getY() + yOffset; List parts = getParts().stream() @@ -130,24 +128,29 @@ public void onStructureInvalid() { super.onStructureInvalid(); } - public int limitParallel(GTRecipe recipe, int multiplier) { + @Override + public int limitFluidParallel(GTRecipe recipe, int multiplier, boolean tick) { int minMultiplier = 0; int maxMultiplier = multiplier; - var maxAmount = recipe.getOutputContents(FluidRecipeCapability.CAP).stream() + var contents = (tick ? recipe.tickInputs : recipe.inputs).get(FluidRecipeCapability.CAP); + if (contents == null || contents.isEmpty()) return multiplier; + + int maxAmount = contents.stream() .map(Content::getContent) .map(FluidRecipeCapability.CAP::of) .filter(i -> !i.isEmpty()) - .map(i -> i.getStacks()[0]) - .mapToInt(FluidStack::getAmount) + .mapToInt(FluidIngredient::getAmount) .max() .orElse(0); if (maxAmount == 0) return multiplier; + if (multiplier > Integer.MAX_VALUE / maxAmount) { + maxMultiplier = multiplier = Integer.MAX_VALUE / maxAmount; + } while (minMultiplier != maxMultiplier) { - if (multiplier > Integer.MAX_VALUE / maxAmount) multiplier = Integer.MAX_VALUE / maxAmount; - GTRecipe copy = recipe.copy(ContentModifier.multiplier(multiplier), false); + GTRecipe copy = modifyOutputs(recipe, ContentModifier.multiplier(multiplier)); boolean filled = getRecipeLogic().applyFluidOutputs(copy, FluidAction.SIMULATE); int[] bin = ParallelLogic.adjustMultiplier(filled, minMultiplier, multiplier, maxMultiplier); minMultiplier = bin[0]; @@ -157,6 +160,15 @@ public int limitParallel(GTRecipe recipe, int multiplier) { return multiplier; } + private static GTRecipe modifyOutputs(GTRecipe recipe, ContentModifier cm) { + return new GTRecipe(recipe.recipeType, recipe.id, recipe.inputs, cm.applyContents(recipe.outputs), + recipe.tickInputs, cm.applyContents(recipe.tickOutputs), recipe.inputChanceLogics, + recipe.outputChanceLogics, + recipe.tickInputChanceLogics, recipe.tickOutputChanceLogics, recipe.conditions, + recipe.ingredientActions, + recipe.data, recipe.duration, recipe.recipeCategory); + } + public static class DistillationTowerLogic extends RecipeLogic { @Nullable @@ -207,10 +219,9 @@ private ActionResult matchDTRecipe(GTRecipe recipe) { } if (!applyFluidOutputs(recipe, FluidAction.SIMULATE)) { - return ActionResult - .fail(Component.translatable("gtceu.recipe_logic.insufficient_out") - .append(": ") - .append(FluidRecipeCapability.CAP.getName())); + return ActionResult.fail(Component.translatable("gtceu.recipe_logic.insufficient_out") + .append(": ") + .append(FluidRecipeCapability.CAP.getName()), FluidRecipeCapability.CAP, IO.OUT); } return ActionResult.SUCCESS; @@ -257,7 +268,7 @@ protected ActionResult handleRecipeIO(GTRecipe recipe, IO io) { return ActionResult.fail(Component.translatable("gtceu.recipe_logic.insufficient_out") .append(": ") - .append(FluidRecipeCapability.CAP.getName())); + .append(FluidRecipeCapability.CAP.getName()), FluidRecipeCapability.CAP, IO.OUT); } private boolean applyFluidOutputs(GTRecipe recipe, FluidAction action) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FluidDrillMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FluidDrillMachine.java index 5b657b84b7e..647f0faa3b6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FluidDrillMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FluidDrillMachine.java @@ -34,11 +34,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/7/12 - * @implNote FluidDrillMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class FluidDrillMachine extends WorkableElectricMultiblockMachine implements ITieredMachine { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FusionReactorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FusionReactorMachine.java index 180105ca28d..3b14be3ad8b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FusionReactorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FusionReactorMachine.java @@ -12,7 +12,6 @@ import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; -import com.gregtechceu.gtceu.api.machine.multiblock.WorkableMultiblockMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; import com.gregtechceu.gtceu.api.misc.EnergyContainerList; import com.gregtechceu.gtceu.api.recipe.GTRecipe; @@ -35,18 +34,17 @@ import net.minecraft.network.chat.Component; import net.minecraft.world.level.block.Block; +import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import it.unimi.dsi.fastutil.longs.Long2IntAVLTreeMap; +import it.unimi.dsi.fastutil.longs.Long2IntSortedMap; +import it.unimi.dsi.fastutil.longs.Long2ObjectMap; import it.unimi.dsi.fastutil.longs.Long2ObjectMaps; import lombok.Getter; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.TreeMap; +import java.util.*; import javax.annotation.ParametersAreNonnullByDefault; @@ -60,16 +58,16 @@ public class FusionReactorMachine extends WorkableElectricMultiblockMachine implements ITieredMachine { protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(FusionReactorMachine.class, - WorkableMultiblockMachine.MANAGED_FIELD_HOLDER); + WorkableElectricMultiblockMachine.MANAGED_FIELD_HOLDER); // Standard OC used for Fusion public static final OverclockingLogic FUSION_OC = OverclockingLogic.create(PERFECT_HALF_DURATION_FACTOR, PERFECT_HALF_VOLTAGE_FACTOR, false); // Max EU -> Tier map, used to find minimum tier needed for X EU to start - private static final TreeMap FUSION_ENERGY = new TreeMap<>(); + private static final Long2IntSortedMap FUSION_ENERGY = new Long2IntAVLTreeMap(); // Tier -> Suffix map, i.e. LuV -> MKI - private static final Int2ObjectMap FUSION_NAMES = new Int2ObjectOpenHashMap<>(4); + private static final Int2ObjectMap FUSION_NAMES = new Int2ObjectArrayMap<>(4); // Minimum registered fusion reactor tier private static int MINIMUM_TIER = MAX; @@ -122,7 +120,8 @@ public void onStructureFormed() { super.onStructureFormed(); // capture all energy containers List energyContainers = new ArrayList<>(); - Map ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", Long2ObjectMaps::emptyMap); + Long2ObjectMap ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", + Long2ObjectMaps::emptyMap); for (IMultiPart part : getParts()) { IO io = ioMap.getOrDefault(part.self().getPos().asLong(), IO.BOTH); if (io == IO.NONE || io == IO.OUT) continue; @@ -292,7 +291,7 @@ public static void addEUToStartLabel(GTRecipe recipe, WidgetGroup group) { long euToStart = recipe.data.getLong("eu_to_start"); if (euToStart <= 0) return; int recipeTier = RecipeHelper.getPreOCRecipeEuTier(recipe); - int fusionTier = FUSION_ENERGY.ceilingEntry(euToStart).getValue(); + int fusionTier = findCeilingTier(euToStart); int tier = Math.max(MINIMUM_TIER, Math.max(recipeTier, fusionTier)); group.addWidget(new LabelWidget(-8, group.getSizeHeight() - 10, LocalizationUtils.format("gtceu.recipe.eu_to_start", @@ -310,6 +309,17 @@ public static void registerFusionTier(int tier, @NotNull String name) { MINIMUM_TIER = Math.min(tier, MINIMUM_TIER); } + private static int findCeilingTier(long euToStart) { + long key; + // tail = submap where all keys are >= EU to start + // if tail is empty, then EU is greater than all the EU values, so we choose the last key + // otherwise we want the first key in the tail map + var tail = FUSION_ENERGY.tailMap(euToStart); + if (tail.isEmpty()) key = FUSION_ENERGY.lastLongKey(); + else key = tail.firstLongKey(); + return FUSION_ENERGY.get(key); + } + public static long calculateEnergyStorageFactor(int tier, int energyInputAmount) { return energyInputAmount * (long) Math.pow(2, tier - LuV) * 10000000L; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java index fe5f7f2f1a4..f2b776e41cb 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java @@ -40,6 +40,7 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; +import it.unimi.dsi.fastutil.longs.Long2ObjectMap; import it.unimi.dsi.fastutil.longs.Long2ObjectMaps; import lombok.Getter; import org.jetbrains.annotations.NotNull; @@ -48,7 +49,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.Map; import javax.annotation.ParametersAreNonnullByDefault; @@ -135,7 +135,8 @@ public boolean checkPattern() { private void initializeAbilities() { List energyContainers = new ArrayList<>(); List fluidTanks = new ArrayList<>(); - Map ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", Long2ObjectMaps::emptyMap); + Long2ObjectMap ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", + Long2ObjectMaps::emptyMap); for (IMultiPart part : getParts()) { IO io = ioMap.getOrDefault(part.self().getPos().asLong(), IO.BOTH); if (io == IO.NONE) continue; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java index 5130572eacf..b84bf2bf1b9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java @@ -8,6 +8,7 @@ import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; +import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; import com.lowdragmc.lowdraglib.gui.widget.ImageWidget; import com.lowdragmc.lowdraglib.gui.widget.LabelWidget; @@ -18,6 +19,7 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; @@ -67,6 +69,15 @@ public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Play return InteractionResult.PASS; // Otherwise let MetaMachineBlock.use() open the UI } + @Override + @Nullable + public IFluidHandlerModifiable getFluidHandlerCap(@Nullable Direction side, boolean useCoverCapability) { + if (isFormed) { + return super.getFluidHandlerCap(side, useCoverCapability); + } + return null; + } + ///////////////////////////////////// // *********** GUI ***********// ///////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/PowerSubstationMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/PowerSubstationMachine.java index b822e984959..769161fe634 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/PowerSubstationMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/PowerSubstationMachine.java @@ -36,6 +36,7 @@ import net.minecraft.world.entity.player.Player; import com.google.common.annotations.VisibleForTesting; +import it.unimi.dsi.fastutil.longs.Long2ObjectMap; import it.unimi.dsi.fastutil.longs.Long2ObjectMaps; import lombok.Getter; import org.jetbrains.annotations.NotNull; @@ -77,9 +78,11 @@ public class PowerSubstationMachine extends WorkableMultiblockMachine // Stats tracked for UI display private long netInLastSec; - private long averageInLastSec; + @Getter + private long inputPerSec; private long netOutLastSec; - private long averageOutLastSec; + @Getter + private long outputPerSec; protected ConditionalSubscriptionHandler tickSubscription; @@ -94,7 +97,8 @@ public void onStructureFormed() { super.onStructureFormed(); List inputs = new ArrayList<>(); List outputs = new ArrayList<>(); - Map ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", Long2ObjectMaps::emptyMap); + Long2ObjectMap ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", + Long2ObjectMaps::emptyMap); for (IMultiPart part : getParts()) { IO io = ioMap.getOrDefault(part.self().getPos().asLong(), IO.BOTH); if (io == IO.NONE) continue; @@ -110,9 +114,9 @@ public void onStructureFormed() { .map(IEnergyContainer.class::cast) .toList(); - if (handlerList.getHandlerIO() == IO.IN) { + if (handlerList.getHandlerIO().support(IO.IN)) { inputs.addAll(containers); - } else if (handlerList.getHandlerIO() == IO.OUT) { + } else if (handlerList.getHandlerIO().support(IO.OUT)) { outputs.addAll(containers); } @@ -154,9 +158,9 @@ public void onStructureInvalid() { outputHatches = null; passiveDrain = 0; netInLastSec = 0; - averageInLastSec = 0; + inputPerSec = 0; netOutLastSec = 0; - averageOutLastSec = 0; + outputPerSec = 0; super.onStructureInvalid(); } @@ -166,8 +170,8 @@ protected void transferEnergyTick() { // active here is just used for rendering getRecipeLogic() .setStatus(energyBank.hasEnergy() ? RecipeLogic.Status.WORKING : RecipeLogic.Status.IDLE); - averageInLastSec = netInLastSec / 20; - averageOutLastSec = netOutLastSec / 20; + inputPerSec = netInLastSec; + outputPerSec = netOutLastSec; netInLastSec = 0; netOutLastSec = 0; } @@ -236,28 +240,28 @@ public void addDisplayText(List textList) { textList.add(Component.translatable("gtceu.multiblock.power_substation.passive_drain", passiveDrainComponent.setStyle(STYLE_DARK_RED))); - var avgInComponent = Component.literal(FormattingUtil.formatNumbers(averageInLastSec)); + var avgInComponent = Component.literal(FormattingUtil.formatNumbers(inputPerSec / 20)); textList.add(Component .translatable("gtceu.multiblock.power_substation.average_in", avgInComponent.setStyle(STYLE_GREEN)) .withStyle(Style.EMPTY.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, Component.translatable("gtceu.multiblock.power_substation.average_in_hover"))))); - var avgOutComponent = Component.literal(FormattingUtil.formatNumbers(Math.abs(averageOutLastSec))); + var avgOutComponent = Component.literal(FormattingUtil.formatNumbers(Math.abs(outputPerSec / 20))); textList.add(Component .translatable("gtceu.multiblock.power_substation.average_out", avgOutComponent.setStyle(STYLE_RED)) .withStyle(Style.EMPTY.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, Component.translatable("gtceu.multiblock.power_substation.average_out_hover"))))); - if (averageInLastSec > averageOutLastSec) { + if (inputPerSec > outputPerSec) { BigInteger timeToFillSeconds = energyCapacity.subtract(energyStored) - .divide(BigInteger.valueOf((averageInLastSec - averageOutLastSec) * 20)); + .divide(BigInteger.valueOf(inputPerSec - outputPerSec)); textList.add(Component.translatable("gtceu.multiblock.power_substation.time_to_fill", getTimeToFillDrainText(timeToFillSeconds).setStyle(STYLE_GREEN))); - } else if (averageInLastSec < averageOutLastSec) { + } else if (inputPerSec < outputPerSec) { BigInteger timeToDrainSeconds = energyStored - .divide(BigInteger.valueOf((averageOutLastSec - averageInLastSec) * 20)); + .divide(BigInteger.valueOf(outputPerSec - inputPerSec)); textList.add(Component.translatable("gtceu.multiblock.power_substation.time_to_drain", getTimeToFillDrainText(timeToDrainSeconds).setStyle(STYLE_RED))); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java index 25abd49f5df..9dd22537545 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java @@ -1,8 +1,8 @@ package com.gregtechceu.gtceu.common.machine.multiblock.electric.gcym; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IFluidRenderMulti; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; -import com.gregtechceu.gtceu.api.machine.multiblock.WorkableMultiblockMachine; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; @@ -14,6 +14,8 @@ import net.minecraft.core.Direction; import lombok.Getter; +import lombok.Setter; +import org.jetbrains.annotations.NotNull; import java.util.HashSet; import java.util.Set; @@ -22,15 +24,16 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class LargeChemicalBathMachine extends WorkableElectricMultiblockMachine { +public class LargeChemicalBathMachine extends WorkableElectricMultiblockMachine implements IFluidRenderMulti { protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( - LargeChemicalBathMachine.class, WorkableMultiblockMachine.MANAGED_FIELD_HOLDER); + LargeChemicalBathMachine.class, WorkableElectricMultiblockMachine.MANAGED_FIELD_HOLDER); @Getter + @Setter @DescSynced @RequireRerender - private final Set fluidBlockOffsets = new HashSet<>(); + private @NotNull Set fluidBlockOffsets = new HashSet<>(); public LargeChemicalBathMachine(IMachineBlockEntity holder, Object... args) { super(holder, args); @@ -44,36 +47,35 @@ public ManagedFieldHolder getFieldHolder() { @Override public void onStructureFormed() { super.onStructureFormed(); - saveOffsets(); + IFluidRenderMulti.super.onStructureFormed(); } @Override public void onStructureInvalid() { super.onStructureInvalid(); - fluidBlockOffsets.clear(); + IFluidRenderMulti.super.onStructureInvalid(); } - protected void saveOffsets() { - Direction up = RelativeDirection.UP.getRelativeFacing(getFrontFacing(), getUpwardsFacing(), isFlipped()); + @NotNull + @Override + public Set saveOffsets() { + Direction up = RelativeDirection.UP.getRelative(getFrontFacing(), getUpwardsFacing(), isFlipped()); Direction back = getFrontFacing().getOpposite(); - Direction clockWise; - Direction counterClockWise; - if (up == Direction.UP || up == Direction.DOWN) { - clockWise = getFrontFacing().getClockWise(); - counterClockWise = getFrontFacing().getCounterClockWise(); - } else { - clockWise = Direction.UP; - counterClockWise = Direction.DOWN; - } + Direction clockWise = RelativeDirection.RIGHT.getRelative(getFrontFacing(), getUpwardsFacing(), isFlipped()); + Direction counterClockWise = RelativeDirection.LEFT.getRelative(getFrontFacing(), getUpwardsFacing(), + isFlipped()); BlockPos pos = getPos(); BlockPos center = pos.relative(up); + Set offsets = new HashSet<>(); + for (int i = 0; i < 5; i++) { center = center.relative(back); - fluidBlockOffsets.add(center.subtract(pos)); - fluidBlockOffsets.add(center.relative(clockWise).subtract(pos)); - fluidBlockOffsets.add(center.relative(counterClockWise).subtract(pos)); + offsets.add(center.subtract(pos)); + offsets.add(center.relative(clockWise).subtract(pos)); + offsets.add(center.relative(counterClockWise).subtract(pos)); } + return offsets; } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMacerationTowerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMacerationTowerMachine.java new file mode 100644 index 00000000000..ca3b9877ea9 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMacerationTowerMachine.java @@ -0,0 +1,96 @@ +package com.gregtechceu.gtceu.common.machine.multiblock.electric.gcym; + +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; +import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.TickableSubscription; +import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.phys.AABB; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.ItemHandlerHelper; + +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; + +public class LargeMacerationTowerMachine extends WorkableElectricMultiblockMachine { + + @NotNull + private AABB grindBound = new AABB(BlockPos.ZERO); + @NotNull + private final List handlers = new ArrayList<>(); + + private TickableSubscription hurtSub; + + public LargeMacerationTowerMachine(IMachineBlockEntity holder) { + super(holder); + } + + @Override + public void onStructureFormed() { + super.onStructureFormed(); + updateBounds(); + for (var holder : getCapabilitiesFlat(IO.IN, ItemRecipeCapability.CAP)) { + if (holder instanceof IItemHandler ih) { + handlers.add(ih); + } + } + hurtSub = subscribeServerTick(this::spinWheels); + } + + @Override + public void onStructureInvalid() { + super.onStructureInvalid(); + unsubscribe(hurtSub); + hurtSub = null; + handlers.clear(); + } + + @Override + public void onUnload() { + super.onUnload(); + unsubscribe(hurtSub); + hurtSub = null; + handlers.clear(); + } + + private void updateBounds() { + var fl = RelativeDirection.offsetPos(getPos(), getFrontFacing(), getUpwardsFacing(), isFlipped(), 1, 1, -1); + var br = RelativeDirection.offsetPos(getPos(), getFrontFacing(), getUpwardsFacing(), isFlipped(), 2, -2, -4); + grindBound = new AABB(fl, br); + } + + private void spinWheels() { + if (isRemote() || getLevel() == null) return; + if (getOffsetTimer() % 10 != 0) return; + + List itemEntities = new ArrayList<>(); + for (var entity : getLevel().getEntities(null, grindBound)) { + if (entity instanceof ItemEntity ie) { + itemEntities.add(ie); + } else { + if (recipeLogic.isWorking()) { + entity.hurt(entity.damageSources().cramming(), 2.0f); + } + } + } + + if (handlers.isEmpty()) return; + + for (ItemEntity item : itemEntities) { + if (item.isRemoved()) continue; + for (var holder : handlers) { + item.setItem(ItemHandlerHelper.insertItem(holder, item.getItem(), false)); + if (item.getItem().isEmpty()) { + item.discard(); + break; + } + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java index fccb0e4bb5f..6ea69b2d342 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java @@ -1,8 +1,8 @@ package com.gregtechceu.gtceu.common.machine.multiblock.electric.gcym; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IFluidRenderMulti; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; -import com.gregtechceu.gtceu.api.machine.multiblock.WorkableMultiblockMachine; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; @@ -14,6 +14,8 @@ import net.minecraft.core.Direction; import lombok.Getter; +import lombok.Setter; +import org.jetbrains.annotations.NotNull; import java.util.HashSet; import java.util.Set; @@ -22,15 +24,16 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class LargeMixerMachine extends WorkableElectricMultiblockMachine { +public class LargeMixerMachine extends WorkableElectricMultiblockMachine implements IFluidRenderMulti { protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( - LargeMixerMachine.class, WorkableMultiblockMachine.MANAGED_FIELD_HOLDER); + LargeMixerMachine.class, WorkableElectricMultiblockMachine.MANAGED_FIELD_HOLDER); @Getter + @Setter @DescSynced @RequireRerender - private final Set fluidBlockOffsets = new HashSet<>(); + private @NotNull Set fluidBlockOffsets = new HashSet<>(); public LargeMixerMachine(IMachineBlockEntity holder, Object... args) { super(holder, args); @@ -44,37 +47,36 @@ public ManagedFieldHolder getFieldHolder() { @Override public void onStructureFormed() { super.onStructureFormed(); - saveOffsets(); + IFluidRenderMulti.super.onStructureFormed(); } @Override public void onStructureInvalid() { super.onStructureInvalid(); - fluidBlockOffsets.clear(); + IFluidRenderMulti.super.onStructureInvalid(); } - protected void saveOffsets() { - Direction up = RelativeDirection.UP.getRelativeFacing(getFrontFacing(), getUpwardsFacing(), isFlipped()); + @Override + public @NotNull Set saveOffsets() { + Direction up = RelativeDirection.UP.getRelative(getFrontFacing(), getUpwardsFacing(), isFlipped()); Direction back = getFrontFacing().getOpposite(); - Direction clockWise; - Direction counterClockWise; - if (up == Direction.UP || up == Direction.DOWN) { - clockWise = getFrontFacing().getClockWise(); - counterClockWise = getFrontFacing().getCounterClockWise(); - } else { - clockWise = Direction.UP; - counterClockWise = Direction.DOWN; - } + Direction clockWise = RelativeDirection.RIGHT.getRelative(getFrontFacing(), getUpwardsFacing(), isFlipped()); + Direction counterClockWise = RelativeDirection.LEFT.getRelative(getFrontFacing(), getUpwardsFacing(), + isFlipped()); BlockPos pos = getPos(); BlockPos center = pos.relative(up, 3); + Set offsets = new HashSet<>(); + for (int i = 0; i < 3; i++) { center = center.relative(back); - if (i % 2 == 0) - fluidBlockOffsets.add(center.subtract(pos)); - fluidBlockOffsets.add(center.relative(clockWise).subtract(pos)); - fluidBlockOffsets.add(center.relative(counterClockWise).subtract(pos)); + if (i % 2 == 0) { + offsets.add(center.subtract(pos)); + } + offsets.add(center.relative(clockWise).subtract(pos)); + offsets.add(center.relative(counterClockWise).subtract(pos)); } + return offsets; } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/monitor/MonitorGroup.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/monitor/MonitorGroup.java new file mode 100644 index 00000000000..96a74ea2164 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/monitor/MonitorGroup.java @@ -0,0 +1,124 @@ +package com.gregtechceu.gtceu.common.machine.multiblock.electric.monitor; + +import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; +import com.gregtechceu.gtceu.api.capability.ICoverable; +import com.gregtechceu.gtceu.api.capability.IMonitorComponent; +import com.gregtechceu.gtceu.api.cover.CoverBehavior; +import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.Vec3i; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; + +import it.unimi.dsi.fastutil.ints.IntOpenHashSet; +import it.unimi.dsi.fastutil.ints.IntSet; +import lombok.Getter; +import lombok.Setter; +import org.jetbrains.annotations.Nullable; + +import java.util.*; +import java.util.function.UnaryOperator; + +public class MonitorGroup { + + private final Set monitorPositions = new HashSet<>(); + @Getter + private final String name; + @Getter + private final CustomItemStackHandler itemStackHandler; + @Getter + private final CustomItemStackHandler placeholderSlotsHandler; + @Setter + private @Nullable BlockPos target; + @Setter + @Getter + private @Nullable Direction targetCoverSide; + @Setter + @Getter + private int dataSlot = 0; + + public MonitorGroup(String name) { + this(name, new CustomItemStackHandler(1), new CustomItemStackHandler(8)); + } + + public MonitorGroup(String name, CustomItemStackHandler handler, CustomItemStackHandler placeholderSlotsHandler) { + this.name = name; + this.itemStackHandler = handler; + this.placeholderSlotsHandler = placeholderSlotsHandler; + } + + public void add(BlockPos pos) { + monitorPositions.add(pos); + } + + public void remove(BlockPos pos) { + monitorPositions.remove(pos); + } + + public List getRow(int row, UnaryOperator toRelative) throws IndexOutOfBoundsException { + IntSet yLevelsSet = new IntOpenHashSet(); + for (BlockPos pos : monitorPositions) { + yLevelsSet.add(toRelative.apply(pos).getY()); + } + if (row < 0) row += yLevelsSet.size(); + int y = yLevelsSet.intStream().sorted().toArray()[row]; + List rowPositions = new ArrayList<>(); + for (BlockPos pos : monitorPositions) { + if (toRelative.apply(pos).getY() == y) { + rowPositions.add(toRelative.apply(pos)); + } + } + rowPositions.sort(Comparator.comparingInt(Vec3i::getX)); + return rowPositions; + } + + public boolean contains(BlockPos pos) { + return monitorPositions.contains(pos); + } + + public boolean isEmpty() { + return monitorPositions.isEmpty(); + } + + public Set getRelativePositions() { + return monitorPositions; + } + + public @Nullable CoverBehavior getTargetCover(Level level) { + if (getTarget(level) != null && targetCoverSide != null) { + ICoverable coverable = GTCapabilityHelper.getCoverable(level, getTarget(level), targetCoverSide); + if (coverable != null) return coverable.getCoverAtSide(targetCoverSide); + } + return null; + } + + public @Nullable BlockPos getTargetRaw() { + return target; + } + + public @Nullable BlockPos getTarget(Level level) { + if (target == null) return null; + + IMonitorComponent component = GTCapabilityHelper.getMonitorComponent(level, target, null); + if (component != null && component.getDataItems() != null) { + ItemStack stack = component.getDataItems().getStackInSlot(dataSlot); + CompoundTag tag = stack.getTag(); + if (tag == null) { + return null; + } + int x = tag.getInt("targetX"); + int y = tag.getInt("targetY"); + int z = tag.getInt("targetZ"); + Direction face = Direction.byName(tag.getString("face")); + if (face == null) { + return null; + } + setTargetCoverSide(face); + return new BlockPos(x, y, z); + } + return target; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/DataBankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/DataBankMachine.java index e98d992d4c5..f8f1c104b55 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/DataBankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/DataBankMachine.java @@ -24,13 +24,13 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.block.Block; +import it.unimi.dsi.fastutil.longs.Long2ObjectMap; import it.unimi.dsi.fastutil.longs.Long2ObjectMaps; import lombok.Getter; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; -import java.util.Map; import javax.annotation.ParametersAreNonnullByDefault; @@ -60,7 +60,8 @@ public DataBankMachine(IMachineBlockEntity holder) { public void onStructureFormed() { super.onStructureFormed(); List energyContainers = new ArrayList<>(); - Map ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", Long2ObjectMaps::emptyMap); + Long2ObjectMap ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", + Long2ObjectMaps::emptyMap); for (IMultiPart part : getParts()) { IO io = ioMap.getOrDefault(part.self().getPos().asLong(), IO.BOTH); if (part instanceof IMaintenanceMachine maintenanceMachine) { @@ -162,8 +163,9 @@ public void tick() { if (consumed == energyToConsume) { getRecipeLogic().setStatus(RecipeLogic.Status.WORKING); } else { - getRecipeLogic().setWaiting(Component.translatable("gtceu.recipe_logic.insufficient_in") - .append(": ").append(EURecipeCapability.CAP.getName())); + getRecipeLogic() + .setWaiting(Component.translatable("gtceu.recipe_logic.insufficient_in") + .append(": ").append(EURecipeCapability.CAP.getName())); } } } else { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java index 9d5d9a1c60d..ef5d4b2d71f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java @@ -51,6 +51,7 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; +import it.unimi.dsi.fastutil.longs.Long2ObjectMap; import it.unimi.dsi.fastutil.longs.Long2ObjectMaps; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; @@ -101,7 +102,8 @@ public void onStructureFormed() { List energyContainers = new ArrayList<>(); List coolantContainers = new ArrayList<>(); List componentHatches = new ArrayList<>(); - Map ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", Long2ObjectMaps::emptyMap); + Long2ObjectMap ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", + Long2ObjectMaps::emptyMap); for (IMultiPart part : getParts()) { IO io = ioMap.getOrDefault(part.self().getPos().asLong(), IO.BOTH); if (part instanceof IHPCAComponentHatch componentHatch) { @@ -712,7 +714,7 @@ public ResourceTexture getComponentTexture(int index) { public void tryGatherClientComponents(Level world, BlockPos pos, Direction frontFacing, Direction upwardsFacing, boolean flip) { - Direction relativeUp = RelativeDirection.UP.getRelativeFacing(frontFacing, upwardsFacing, flip); + Direction relativeUp = RelativeDirection.UP.getRelative(frontFacing, upwardsFacing, flip); if (components.isEmpty()) { BlockPos testPos = pos diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java index 9da18e95222..88a93bb3c37 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java @@ -16,6 +16,7 @@ import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.api.recipe.modifier.ModifierFunction; import com.gregtechceu.gtceu.api.recipe.modifier.ParallelLogic; import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifier; @@ -42,11 +43,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/7/9 - * @implNote LargeCombustionEngineMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class LargeCombustionEngineMachine extends WorkableElectricMultiblockMachine implements ITieredMachine { @@ -134,11 +130,11 @@ public static ModifierFunction recipeModifier(@NotNull MetaMachine machine, @Not if (!(machine instanceof LargeCombustionEngineMachine engineMachine)) { return RecipeModifier.nullWrongType(LargeCombustionEngineMachine.class, machine); } - long EUt = RecipeHelper.getOutputEUt(recipe); + EnergyStack EUt = recipe.getOutputEUt(); // has lubricant - if (EUt > 0 && !engineMachine.isIntakesObstructed() && + if (!EUt.isEmpty() && !engineMachine.isIntakesObstructed() && RecipeHelper.matchRecipe(engineMachine, engineMachine.getLubricantRecipe()).isSuccess()) { - int maxParallel = (int) (engineMachine.getOverclockVoltage() / EUt); // get maximum parallel + int maxParallel = (int) (engineMachine.getOverclockVoltage() / EUt.getTotalEU()); // get maximum parallel int actualParallel = ParallelLogic.getParallelAmount(engineMachine, recipe, maxParallel); double eutMultiplier = actualParallel * engineMachine.getProductionBoost(); @@ -193,16 +189,16 @@ public void addDisplayText(List textList) { MultiblockDisplayText.Builder builder = MultiblockDisplayText.builder(textList, isFormed()) .setWorkingStatus(recipeLogic.isWorkingEnabled(), recipeLogic.isActive()); + long lastEUt = recipeLogic.getLastRecipe() != null ? + recipeLogic.getLastRecipe().getOutputEUt().getTotalEU() : 0; if (isExtreme()) { - builder.addEnergyProductionLine(GTValues.V[tier + 1], - recipeLogic.getLastRecipe() != null ? RecipeHelper.getOutputEUt(recipeLogic.getLastRecipe()) : 0); + builder.addEnergyProductionLine(GTValues.V[tier + 1], lastEUt); } else { builder.addEnergyProductionAmpsLine(GTValues.V[tier] * 3, 3); } if (isActive() && isWorkingEnabled()) { - builder.addCurrentEnergyProductionLine( - recipeLogic.getLastRecipe() != null ? RecipeHelper.getOutputEUt(recipeLogic.getLastRecipe()) : 0); + builder.addCurrentEnergyProductionLine(lastEUt); } builder.addFuelNeededLine(getRecipeFluidInputInfo(), recipeLogic.getDuration()); @@ -222,12 +218,12 @@ public String getRecipeFluidInputInfo() { GTRecipe recipe = recipeLogic.getLastRecipe(); if (recipe == null) { Iterator iterator = recipeLogic.searchRecipe(); - recipe = iterator != null && iterator.hasNext() ? iterator.next() : null; + recipe = iterator.hasNext() ? iterator.next() : null; if (recipe == null) return null; } FluidStack requiredFluidInput = RecipeHelper.getInputFluids(recipe).get(0); - long ocAmount = getMaxVoltage() / RecipeHelper.getOutputEUt(recipe); + long ocAmount = getMaxVoltage() / recipe.getOutputEUt().getTotalEU(); int neededAmount = GTMath.saturatedCast(ocAmount * requiredFluidInput.getAmount()); return ChatFormatting.RED + FormattingUtil.formatNumbers(neededAmount) + "mB"; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java index 7c2eb209295..e0e4f4a0208 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.generator; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.capability.ITurbineMachine; import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -10,13 +11,12 @@ import com.gregtechceu.gtceu.api.machine.feature.multiblock.IRotorHolderMachine; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.recipe.GTRecipe; -import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.api.recipe.modifier.ModifierFunction; import com.gregtechceu.gtceu.api.recipe.modifier.ParallelLogic; import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifier; import com.gregtechceu.gtceu.utils.FormattingUtil; -import com.gregtechceu.gtceu.utils.GTUtil; import net.minecraft.ChatFormatting; import net.minecraft.MethodsReturnNonnullByDefault; @@ -31,14 +31,9 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/7/9 - * @implNote LargeCombustionEngineMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class LargeTurbineMachine extends WorkableElectricMultiblockMachine implements ITieredMachine { +public class LargeTurbineMachine extends WorkableElectricMultiblockMachine implements ITieredMachine, ITurbineMachine { public static final int MIN_DURABILITY_TO_WARN = 10; @@ -84,6 +79,54 @@ protected double productionBoost() { return 0; } + @Override + public boolean hasRotor() { + var rotorHolder = getRotorHolder(); + return rotorHolder != null && rotorHolder.hasRotor(); + } + + @Override + public int getRotorSpeed() { + var rotorHolder = getRotorHolder(); + if (rotorHolder != null && rotorHolder.hasRotor()) { + return rotorHolder.getRotorSpeed(); + } + return 0; + } + + @Override + public int getMaxRotorHolderSpeed() { + var rotorHolder = getRotorHolder(); + if (rotorHolder != null && rotorHolder.hasRotor()) { + return rotorHolder.getMaxRotorHolderSpeed(); + } + return 0; + } + + @Override + public int getTotalEfficiency() { + var rotorHolder = getRotorHolder(); + if (rotorHolder != null && rotorHolder.hasRotor()) { + return rotorHolder.getTotalEfficiency(); + } + return -1; + } + + @Override + public long getCurrentProduction() { + return isActive() && recipeLogic.getLastRecipe() != null ? + recipeLogic.getLastRecipe().getOutputEUt().voltage() : 0; + } + + @Override + public int getRotorDurabilityPercent() { + var rotorHolder = getRotorHolder(); + if (rotorHolder != null && rotorHolder.hasRotor()) { + return rotorHolder.getRotorDurabilityPercent(); + } + return -1; + } + ////////////////////////////////////// // ****** Recipe Logic *******// ////////////////////////////////////// @@ -106,14 +149,14 @@ public static ModifierFunction recipeModifier(@NotNull MetaMachine machine, @Not var rotorHolder = turbineMachine.getRotorHolder(); if (rotorHolder == null) return ModifierFunction.NULL; - long EUt = RecipeHelper.getOutputEUt(recipe); + EnergyStack EUt = recipe.getOutputEUt(); long turbineMaxVoltage = turbineMachine.getOverclockVoltage(); double holderEfficiency = rotorHolder.getTotalEfficiency() / 100.0; - if (EUt <= 0 || turbineMaxVoltage <= EUt || holderEfficiency <= 0) return ModifierFunction.NULL; + if (EUt.isEmpty() || turbineMaxVoltage <= EUt.voltage() || holderEfficiency <= 0) return ModifierFunction.NULL; // get the amount of parallel required to match the desired output voltage - int maxParallel = (int) (turbineMaxVoltage / EUt); + int maxParallel = (int) (turbineMaxVoltage / EUt.getTotalEU()); int actualParallel = ParallelLogic.getParallelAmountFast(turbineMachine, recipe, maxParallel); double eutMultiplier = turbineMachine.productionBoost() * actualParallel; @@ -154,9 +197,7 @@ public void addDisplayText(List textList) { rotorHolder.getTotalEfficiency())); long maxProduction = getOverclockVoltage(); - long currentProduction = isActive() && recipeLogic.getLastRecipe() != null ? - RecipeHelper.getOutputEUt(recipeLogic.getLastRecipe()) : 0; - String voltageName = GTValues.VNF[GTUtil.getTierByVoltage(currentProduction)]; + long currentProduction = getCurrentProduction(); if (isActive()) { textList.add(3, Component.translatable("gtceu.multiblock.turbine.energy_per_tick", diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/AutoMaintenanceHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/AutoMaintenanceHatchPartMachine.java index 08e29908131..f505bc85c35 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/AutoMaintenanceHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/AutoMaintenanceHatchPartMachine.java @@ -1,13 +1,14 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; +import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredPartMachine; public class AutoMaintenanceHatchPartMachine extends TieredPartMachine implements IMaintenanceMachine { - public AutoMaintenanceHatchPartMachine(IMachineBlockEntity blockEntity) { - super(blockEntity, 3); + public AutoMaintenanceHatchPartMachine(IMachineBlockEntity holder) { + super(holder, GTValues.HV); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CleaningMaintenanceHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CleaningMaintenanceHatchPartMachine.java index 5af6892bc56..56a22189527 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CleaningMaintenanceHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CleaningMaintenanceHatchPartMachine.java @@ -28,8 +28,8 @@ public class CleaningMaintenanceHatchPartMachine extends AutoMaintenanceHatchPar @Getter private final CleanroomType cleanroomType; - public CleaningMaintenanceHatchPartMachine(IMachineBlockEntity metaTileEntityId, CleanroomType cleanroomType) { - super(metaTileEntityId); + public CleaningMaintenanceHatchPartMachine(IMachineBlockEntity holder, CleanroomType cleanroomType) { + super(holder); this.cleanroomType = cleanroomType; DUMMY_CLEANROOM = DummyCleanroom.createForTypes(Collections.singletonList(cleanroomType)); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java index a68a59a4f72..e4946d9a585 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java @@ -25,11 +25,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/16 - * @implNote CokeOvenHatch - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class CokeOvenHatch extends MultiblockPartMachine { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DataAccessHatchMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DataAccessHatchMachine.java index e174e0eee88..e14e6cf198c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DataAccessHatchMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DataAccessHatchMachine.java @@ -1,7 +1,9 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; +import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.capability.IDataAccessHatch; +import com.gregtechceu.gtceu.api.capability.IMonitorComponent; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.gui.GuiTextures; @@ -14,13 +16,14 @@ import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredPartMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; import com.gregtechceu.gtceu.api.recipe.GTRecipe; -import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.common.item.PortableScannerBehavior; import com.gregtechceu.gtceu.common.machine.multiblock.electric.research.DataBankMachine; import com.gregtechceu.gtceu.common.recipe.condition.ResearchCondition; import com.gregtechceu.gtceu.utils.ItemStackHashStrategy; import com.gregtechceu.gtceu.utils.ResearchManager; +import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; +import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; import com.lowdragmc.lowdraglib.gui.widget.Widget; import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; @@ -32,8 +35,8 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.BlockHitResult; +import net.minecraftforge.items.IItemHandler; -import com.mojang.datafixers.util.Pair; import it.unimi.dsi.fastutil.objects.ObjectOpenCustomHashSet; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import lombok.Getter; @@ -46,7 +49,7 @@ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public class DataAccessHatchMachine extends TieredPartMachine - implements IMachineLife, IDataAccessHatch, IDataInfoProvider { + implements IMachineLife, IDataAccessHatch, IDataInfoProvider, IMonitorComponent { protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( DataAccessHatchMachine.class, MultiblockPartMachine.MANAGED_FIELD_HOLDER); @@ -78,8 +81,7 @@ public void onContentsChanged() { @Override public ItemStack insertItem(int slot, @NotNull ItemStack stack, boolean simulate) { boolean isDataBank = isFormed() && getControllers().first() instanceof DataBankMachine; - if (ResearchManager.isStackDataItem(stack, isDataBank) && - ResearchManager.hasResearchTag(stack)) { + if (ResearchManager.isStackDataItem(stack, isDataBank)) { return super.insertItem(slot, stack, simulate); } return stack; @@ -110,7 +112,12 @@ public boolean shouldOpenUI(Player player, InteractionHand hand, BlockHitResult } protected int getInventorySize() { - return getTier() == GTValues.LuV ? 16 : 9; + return switch (getTier()) { + case GTValues.LuV -> 16; + case GTValues.EV -> 9; + case GTValues.HV -> 4; + default -> 1; + }; } @Override @@ -123,10 +130,11 @@ private void rebuildData(boolean isDataBank) { recipes.clear(); for (int i = 0; i < this.importItems.getSlots(); i++) { ItemStack stack = this.importItems.getStackInSlot(i); - Pair researchData = ResearchManager.readResearchId(stack); + ResearchManager.ResearchItem researchData = ResearchManager.readResearchId(stack); boolean isValid = ResearchManager.isStackDataItem(stack, isDataBank); if (researchData != null && isValid) { - Collection collection = researchData.getFirst().getDataStickEntry(researchData.getSecond()); + Collection collection = researchData.recipeType() + .getDataStickEntry(researchData.researchId()); if (collection != null) { recipes.addAll(collection); } @@ -185,4 +193,14 @@ public GTRecipe modifyRecipe(GTRecipe recipe) { public ManagedFieldHolder getFieldHolder() { return MANAGED_FIELD_HOLDER; } + + @Override + public IGuiTexture getComponentIcon() { + return new ResourceTexture(GTCEu.id("textures/item/data_module.png")).getSubTexture(0, 0, 1, 1 / 13f); + } + + @Override + public IItemHandler getDataItems() { + return importItems.storage; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java index 818f1d6b9d5..7c53ad01d40 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java @@ -5,6 +5,7 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredIOPartMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; @@ -14,9 +15,11 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; +import net.minecraft.util.StringRepresentable; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.phys.BlockHitResult; import lombok.Getter; @@ -30,6 +33,44 @@ public class DiodePartMachine extends TieredIOPartMachine { protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(DiodePartMachine.class, TieredIOPartMachine.MANAGED_FIELD_HOLDER); + // spotless:off + public enum AmpMode implements StringRepresentable { + MODE_1A("1a", 1), + MODE_2A("2a", 2), + MODE_4A("4a", 4), + MODE_8A("8a", 8), + MODE_16A("16a", 16); + + public static final AmpMode[] VALUES = values(); + + @Getter + private final String serializedName; + @Getter + private final int ampValue; + + AmpMode(String serializedName, int ampValue) { + this.serializedName = serializedName; + this.ampValue = ampValue; + } + + public AmpMode cycle() { + return VALUES[(this.ordinal() + 1) % VALUES.length]; + } + + public static AmpMode getByValue(int amps) { + return switch (amps) { + case 2 -> MODE_2A; + case 4 -> MODE_4A; + case 8 -> MODE_8A; + case 16 -> MODE_16A; + default -> MODE_1A; + }; + } + } + + public static final EnumProperty AMP_MODE_PROPERTY = GTMachineModelProperties.DIODE_AMP_MODE; + // spotless:on + public static int MAX_AMPS = 16; @Persisted @@ -78,12 +119,12 @@ protected void reinitializeEnergyContainer() { this.energyContainer.resetBasicInfo(tierVoltage * MAX_AMPS * 2, tierVoltage, amps, tierVoltage, amps); this.energyContainer.setSideInputCondition(s -> s != getFrontFacing()); - this.energyContainer.setSideOutputCondition(s -> s == getFrontFacing()); + this.energyContainer.setSideOutputCondition(s -> s == getFrontFacing() && isWorkingEnabled()); } @Override public int tintColor(int index) { - if (index == 2) { + if (index == 2 || index == 3) { return GTValues.VC[getTier()]; } return super.tintColor(index); @@ -99,10 +140,13 @@ protected InteractionResult onSoftMalletClick(Player playerIn, InteractionHand h BlockHitResult hitResult) { cycleAmpMode(); if (getLevel().isClientSide) { + setRenderState(getRenderState() + .setValue(GTMachineModelProperties.DIODE_AMP_MODE, AmpMode.getByValue(this.amps))); + scheduleRenderUpdate(); - return InteractionResult.CONSUME; + playerIn.sendSystemMessage(Component.translatable("gtceu.machine.diode.message", amps)); + return InteractionResult.SUCCESS; } - playerIn.sendSystemMessage(Component.translatable("gtceu.machine.diode.message", amps)); return InteractionResult.CONSUME; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java index 16d6ad29ced..203c825859a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java @@ -5,7 +5,9 @@ import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; +import com.gregtechceu.gtceu.common.data.GTMachines; import com.gregtechceu.gtceu.utils.GTTransferUtils; import com.lowdragmc.lowdraglib.gui.widget.Widget; @@ -16,6 +18,8 @@ import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.fluids.FluidType; import org.jetbrains.annotations.Nullable; @@ -124,6 +128,34 @@ protected void autoIO() { } } + @Override + public boolean swapIO() { + BlockPos blockPos = getHolder().pos(); + MachineDefinition newDefinition = null; + + if (io == IO.IN) { + newDefinition = GTMachines.DUAL_EXPORT_HATCH[this.getTier()]; + } else if (io == IO.OUT) { + newDefinition = GTMachines.DUAL_IMPORT_HATCH[this.getTier()]; + } + if (newDefinition == null) return false; + + BlockState newBlockState = newDefinition.getBlock().defaultBlockState(); + + getLevel().setBlockAndUpdate(blockPos, newBlockState); + + if (getLevel().getBlockEntity(blockPos) instanceof IMachineBlockEntity newHolder) { + if (newHolder.getMetaMachine() instanceof DualHatchPartMachine newMachine) { + newMachine.setFrontFacing(this.getFrontFacing()); + newMachine.setUpwardsFacing(this.getUpwardsFacing()); + for (int i = 0; i < this.tank.getTanks(); i++) { + newMachine.tank.setFluidInTank(i, this.tank.getFluidInTank(i)); + } + } + } + return true; + } + /////////////////////////////// // ********** GUI ***********// /////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/EnergyHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/EnergyHatchPartMachine.java index b1d953cb6bc..ec969c0d0b8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/EnergyHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/EnergyHatchPartMachine.java @@ -23,11 +23,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/4 - * @implNote EnergyHatchPartMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class EnergyHatchPartMachine extends TieredIOPartMachine implements IExplosionMachine { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java index cf8a2d70e61..dc19d510e2f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; +import com.gregtechceu.gtceu.api.blockentity.IPaintable; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.fancy.ConfiguratorPanel; @@ -7,6 +8,7 @@ import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.gui.widget.ToggleButtonWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.fancyconfigurator.CircuitFancyConfigurator; import com.gregtechceu.gtceu.api.machine.feature.IHasCircuitSlot; @@ -15,6 +17,7 @@ import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredIOPartMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; +import com.gregtechceu.gtceu.common.data.GTMachines; import com.gregtechceu.gtceu.common.item.IntCircuitBehaviour; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.utils.GTTransferUtils; @@ -34,8 +37,13 @@ import net.minecraft.network.chat.Component; import net.minecraft.server.TickTask; import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidType; @@ -45,14 +53,9 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/4 - * @implNote FluidHatchPartMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class FluidHatchPartMachine extends TieredIOPartMachine implements IMachineLife, IHasCircuitSlot { +public class FluidHatchPartMachine extends TieredIOPartMachine implements IMachineLife, IHasCircuitSlot, IPaintable { protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(FluidHatchPartMachine.class, TieredIOPartMachine.MANAGED_FIELD_HOLDER); @@ -126,6 +129,7 @@ public void onLoad() { if (getLevel() instanceof ServerLevel serverLevel) { serverLevel.getServer().tell(new TickTask(0, this::updateTankSubscription)); } + getHandlerList().setColor(getPaintingColor()); tankSubs = tank.addChangedListener(this::updateTankSubscription); } @@ -138,6 +142,11 @@ public void onUnload() { } } + @Override + public void onPaintingColorChanged(int color) { + getHandlerList().setColor(color, true); + } + @Override public void addedToController(IMultiController controller) { if (!controller.allowCircuitSlots()) { @@ -162,6 +171,12 @@ public void removedFromController(IMultiController controller) { setCircuitSlotEnabled(true); } + @Override + public int tintColor(int index) { + if (index == 9) return getRealColor(); + return -1; + } + ////////////////////////////////////// // ******** Auto IO *********// ////////////////////////////////////// @@ -175,12 +190,16 @@ public void onNeighborChanged(Block block, BlockPos fromPos, boolean isMoving) { @Override public void onRotated(Direction oldFacing, Direction newFacing) { super.onRotated(oldFacing, newFacing); - updateTankSubscription(); + updateTankSubscription(newFacing); } protected void updateTankSubscription() { + updateTankSubscription(getFrontFacing()); + } + + protected void updateTankSubscription(Direction newFacing) { if (isWorkingEnabled() && ((io == IO.OUT && !tank.isEmpty()) || io == IO.IN) && - GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getPos(), getFrontFacing())) { + GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getPos(), newFacing)) { autoIOSubs = subscribeServerTick(autoIOSubs, this::autoIO); } else if (autoIOSubs != null) { autoIOSubs.unsubscribe(); @@ -207,6 +226,52 @@ public void setWorkingEnabled(boolean workingEnabled) { updateTankSubscription(); } + @Override + protected InteractionResult onScrewdriverClick(Player playerIn, InteractionHand hand, Direction gridSide, + BlockHitResult hitResult) { + InteractionResult superResult = super.onScrewdriverClick(playerIn, hand, gridSide, hitResult); + if (superResult != InteractionResult.PASS) return superResult; + if (io == IO.BOTH) return InteractionResult.PASS; + if (playerIn.isShiftKeyDown()) { + if (swapIO()) { + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); + } + } + return InteractionResult.PASS; + } + + public boolean swapIO() { + BlockPos blockPos = getHolder().pos(); + MachineDefinition newDefinition = null; + + if (io == IO.IN) { + if (this.slots == 1) newDefinition = GTMachines.FLUID_EXPORT_HATCH[this.getTier()]; + else if (this.slots == 4) newDefinition = GTMachines.FLUID_EXPORT_HATCH_4X[this.getTier()]; + else if (this.slots == 9) newDefinition = GTMachines.FLUID_EXPORT_HATCH_9X[this.getTier()]; + } else if (io == IO.OUT) { + if (this.slots == 1) newDefinition = GTMachines.FLUID_IMPORT_HATCH[this.getTier()]; + else if (this.slots == 4) newDefinition = GTMachines.FLUID_IMPORT_HATCH_4X[this.getTier()]; + else if (this.slots == 9) newDefinition = GTMachines.FLUID_IMPORT_HATCH_9X[this.getTier()]; + } + if (newDefinition == null) return false; + + BlockState newBlockState = newDefinition.getBlock().defaultBlockState(); + + getLevel().setBlockAndUpdate(blockPos, newBlockState); + + if (getLevel().getBlockEntity(blockPos) instanceof IMachineBlockEntity newHolder) { + if (newHolder.getMetaMachine() instanceof FluidHatchPartMachine newMachine) { + newMachine.setFrontFacing(this.getFrontFacing()); + newMachine.setUpwardsFacing(this.getUpwardsFacing()); + newMachine.setPaintingColor(this.getPaintingColor()); + for (int i = 0; i < this.tank.getTanks(); i++) { + newMachine.tank.setFluidInTank(i, this.tank.getFluidInTank(i)); + } + } + } + return true; + } + ////////////////////////////////////// // ********** GUI ***********// ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java index 0376799b39b..8bb9992f24a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java @@ -1,10 +1,12 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; +import com.gregtechceu.gtceu.api.blockentity.IPaintable; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.fancy.ConfiguratorPanel; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.fancyconfigurator.CircuitFancyConfigurator; import com.gregtechceu.gtceu.api.machine.feature.IHasCircuitSlot; @@ -13,6 +15,7 @@ import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredIOPartMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; +import com.gregtechceu.gtceu.common.data.GTMachines; import com.gregtechceu.gtceu.common.item.IntCircuitBehaviour; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.utils.GTTransferUtils; @@ -31,9 +34,15 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.server.TickTask; import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; +import lombok.AccessLevel; import lombok.Getter; import lombok.Setter; import org.jetbrains.annotations.NotNull; @@ -41,14 +50,10 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/4 - * @implNote ItemBusPartMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class ItemBusPartMachine extends TieredIOPartMachine implements IDistinctPart, IMachineLife, IHasCircuitSlot { +public class ItemBusPartMachine extends TieredIOPartMachine + implements IDistinctPart, IMachineLife, IHasCircuitSlot, IPaintable { protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(ItemBusPartMachine.class, TieredIOPartMachine.MANAGED_FIELD_HOLDER); @@ -59,6 +64,7 @@ public class ItemBusPartMachine extends TieredIOPartMachine implements IDistinct protected TickableSubscription autoIOSubs; @Nullable protected ISubscription inventorySubs; + @Getter(AccessLevel.PROTECTED) private boolean hasCircuitSlot = true; @Getter @Setter @@ -124,6 +130,7 @@ public void onLoad() { serverLevel.getServer().tell(new TickTask(0, this::updateInventorySubscription)); } getHandlerList().setDistinct(isDistinct); + getHandlerList().setColor(getPaintingColor()); inventorySubs = getInventory().addChangedListener(this::updateInventorySubscription); } @@ -136,6 +143,11 @@ public void onUnload() { } } + @Override + public void onPaintingColorChanged(int color) { + getHandlerList().setColor(color, true); + } + @Override public void setDistinct(boolean distinct) { isDistinct = (io != IO.OUT && distinct); @@ -167,6 +179,12 @@ public void removedFromController(IMultiController controller) { setCircuitSlotEnabled(true); } + @Override + public int tintColor(int index) { + if (index == 9) return getRealColor(); + return -1; + } + @Override public void loadCustomPersistedData(@NotNull CompoundTag tag) { super.loadCustomPersistedData(tag); @@ -193,12 +211,16 @@ public void onNeighborChanged(Block block, BlockPos fromPos, boolean isMoving) { @Override public void onRotated(Direction oldFacing, Direction newFacing) { super.onRotated(oldFacing, newFacing); - updateInventorySubscription(); + updateInventorySubscription(newFacing); } protected void updateInventorySubscription() { + updateInventorySubscription(getFrontFacing()); + } + + protected void updateInventorySubscription(Direction newFacing) { if (isWorkingEnabled() && ((io == IO.OUT && !getInventory().isEmpty()) || io == IO.IN) && - GTTransferUtils.hasAdjacentItemHandler(getLevel(), getPos(), getFrontFacing())) { + GTTransferUtils.hasAdjacentItemHandler(getLevel(), getPos(), newFacing)) { autoIOSubs = subscribeServerTick(autoIOSubs, this::autoIO); } else if (autoIOSubs != null) { autoIOSubs.unsubscribe(); @@ -225,6 +247,48 @@ public void setWorkingEnabled(boolean workingEnabled) { updateInventorySubscription(); } + @Override + protected InteractionResult onScrewdriverClick(Player playerIn, InteractionHand hand, Direction gridSide, + BlockHitResult hitResult) { + InteractionResult superResult = super.onScrewdriverClick(playerIn, hand, gridSide, hitResult); + if (superResult != InteractionResult.PASS) return superResult; + if (io == IO.BOTH) return InteractionResult.PASS; + if (playerIn.isShiftKeyDown()) { + if (swapIO()) { + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); + } + } + return InteractionResult.PASS; + } + + public boolean swapIO() { + BlockPos blockPos = getHolder().pos(); + MachineDefinition newDefinition = null; + if (io == IO.IN) { + newDefinition = GTMachines.ITEM_EXPORT_BUS[this.getTier()]; + } else if (io == IO.OUT) { + newDefinition = GTMachines.ITEM_IMPORT_BUS[this.getTier()]; + } + + if (newDefinition == null) return false; + BlockState newBlockState = newDefinition.getBlock().defaultBlockState(); + + getLevel().setBlockAndUpdate(blockPos, newBlockState); + + if (getLevel().getBlockEntity(blockPos) instanceof IMachineBlockEntity newHolder) { + if (newHolder.getMetaMachine() instanceof ItemBusPartMachine newMachine) { + // We don't set the circuit or distinct busses, since + // that doesn't make sense on an output bus. + // Furthermore, existing inventory items + // and conveyors will drop to the floor on block override. + newMachine.setFrontFacing(this.getFrontFacing()); + newMachine.setUpwardsFacing(this.getUpwardsFacing()); + newMachine.setPaintingColor(this.getPaintingColor()); + } + } + return true; + } + ////////////////////////////////////// // ********** GUI ***********// ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java index 0d7c00d5b22..0cbc49baad9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; +import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; @@ -12,7 +13,9 @@ import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine; import com.gregtechceu.gtceu.api.machine.multiblock.part.MultiblockPartMachine; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredPartMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.gregtechceu.gtceu.common.data.GTItems; import com.gregtechceu.gtceu.utils.FormattingUtil; @@ -20,7 +23,6 @@ import com.lowdragmc.lowdraglib.gui.widget.*; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; -import com.lowdragmc.lowdraglib.syncdata.annotation.RequireRerender; import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; import net.minecraft.MethodsReturnNonnullByDefault; @@ -49,7 +51,7 @@ import java.util.Arrays; import java.util.List; import java.util.Objects; -import java.util.function.Supplier; +import java.util.function.DoubleSupplier; import javax.annotation.ParametersAreNonnullByDefault; @@ -60,6 +62,7 @@ public class MaintenanceHatchPartMachine extends TieredPartMachine protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( MaintenanceHatchPartMachine.class, MultiblockPartMachine.MANAGED_FIELD_HOLDER); + private static final float MAX_DURATION_MULTIPLIER = 1.1f; private static final float MIN_DURATION_MULTIPLIER = 0.9f; private static final float DURATION_ACTION_AMOUNT = 0.01f; @@ -69,10 +72,8 @@ public class MaintenanceHatchPartMachine extends TieredPartMachine @Persisted private final NotifiableItemStackHandler itemStackHandler; @Getter - @Setter @Persisted @DescSynced - @RequireRerender private boolean isTaped; @Getter @Setter @@ -88,8 +89,8 @@ public class MaintenanceHatchPartMachine extends TieredPartMachine @Nullable protected TickableSubscription maintenanceSubs; - public MaintenanceHatchPartMachine(IMachineBlockEntity metaTileEntityId, boolean isConfigurable) { - super(metaTileEntityId, isConfigurable ? 3 : 1); + public MaintenanceHatchPartMachine(IMachineBlockEntity holder, boolean isConfigurable) { + super(holder, isConfigurable ? GTValues.HV : GTValues.LV); this.isConfigurable = isConfigurable; this.itemStackHandler = createInventory(); this.itemStackHandler.setFilter(itemStack -> itemStack.is(GTItems.DUCT_TAPE.get())); @@ -131,6 +132,13 @@ public void onLoad() { super.onLoad(); if (!isRemote()) { updateMaintenanceSubscription(); + + // fix the model being invalid after the tape property rename + MachineRenderState renderState = getRenderState(); + if (renderState.hasProperty(GTMachineModelProperties.IS_TAPED) && + this.isTaped != renderState.getValue(GTMachineModelProperties.IS_TAPED)) { + setRenderState(renderState.setValue(GTMachineModelProperties.IS_TAPED, this.isTaped)); + } } } @@ -298,6 +306,14 @@ public boolean isFullAuto() { return false; } + @Override + public void setTaped(boolean isTaped) { + if (this.isTaped != isTaped) { + this.isTaped = isTaped; + setRenderState(getRenderState().setValue(GTMachineModelProperties.IS_TAPED, isTaped)); + } + } + @Override public float getTimeMultiplier() { var result = 1f; @@ -369,17 +385,17 @@ public Widget createUIWidget() { return group; } - private static Component getTextWidgetText(String type, Supplier multiplier) { + private static Component getTextWidgetText(String type, DoubleSupplier multiplier) { Component tooltip; - if (multiplier.get() == 1.0) { + if (multiplier.getAsDouble() == 1.0) { tooltip = Component.translatable("gtceu.maintenance.configurable_" + type + ".unchanged_description"); } else { tooltip = Component.translatable("gtceu.maintenance.configurable_" + type + ".changed_description", - FormattingUtil.formatNumber2Places(multiplier.get())); + FormattingUtil.formatNumber2Places(multiplier.getAsDouble())); } return Component .translatable("gtceu.maintenance.configurable_" + type, - FormattingUtil.formatNumber2Places(multiplier.get())) + FormattingUtil.formatNumber2Places(multiplier.getAsDouble())) .setStyle(Style.EMPTY.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, tooltip))); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MufflerPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MufflerPartMachine.java index 9951a230785..aa7cc47d1fb 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MufflerPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MufflerPartMachine.java @@ -5,6 +5,7 @@ import com.gregtechceu.gtceu.api.gui.UITemplate; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; import com.gregtechceu.gtceu.api.machine.feature.IUIMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMufflerMachine; @@ -12,6 +13,7 @@ import com.gregtechceu.gtceu.api.machine.multiblock.part.MultiblockPartMachine; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredPartMachine; import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler; +import com.gregtechceu.gtceu.utils.GTUtil; import com.lowdragmc.lowdraglib.gui.modular.ModularUI; import com.lowdragmc.lowdraglib.gui.widget.LabelWidget; @@ -19,6 +21,7 @@ import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.core.BlockPos; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraftforge.api.distmarker.Dist; @@ -26,16 +29,12 @@ import net.minecraftforge.items.ItemHandlerHelper; import lombok.Getter; +import org.jetbrains.annotations.MustBeInvokedByOverriders; import java.util.stream.IntStream; import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/8 - * @implNote MufflerPartMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class MufflerPartMachine extends TieredPartMachine implements IMufflerMachine, IUIMachine { @@ -48,6 +47,8 @@ public class MufflerPartMachine extends TieredPartMachine implements IMufflerMac @Persisted private final CustomItemStackHandler inventory; + private TickableSubscription snowSubscription; + public MufflerPartMachine(IMachineBlockEntity holder, int tier) { super(holder, tier); this.recoveryChance = Math.max(1, tier * 10); @@ -93,6 +94,36 @@ public void clientTick() { } } + @Override + public void addedToController(IMultiController controller) { + super.addedToController(controller); + if (snowSubscription == null) { + this.snowSubscription = subscribeServerTick(null, this::tryBreakSnow); + } + } + + @MustBeInvokedByOverriders + @Override + public void removedFromController(IMultiController controller) { + super.removedFromController(controller); + if (controllers.isEmpty()) { + unsubscribe(snowSubscription); + snowSubscription = null; + } + } + + private void tryBreakSnow() { + if (getOffsetTimer() % 10 == 0) { + for (IMultiController controller : getControllers()) { + if (controller instanceof IRecipeLogicMachine recipeLogicMachine && + recipeLogicMachine.getRecipeLogic().isWorking()) { + BlockPos mufflerPos = getPos().relative(getFrontFacing()); + GTUtil.tryBreakSnow(getLevel(), mufflerPos, getLevel().getBlockState(mufflerPos), true); + } + } + } + } + ////////////////////////////////////// // ********** GUI ***********// ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/PumpHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/PumpHatchPartMachine.java index aca80322d33..a836518ca0a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/PumpHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/PumpHatchPartMachine.java @@ -50,4 +50,11 @@ public ModularUI createUI(Player entityPlayer) { .setTooltipText("gtceu.gui.fluid_auto_input.tooltip")) .widget(UITemplate.bindPlayerInventory(entityPlayer.getInventory(), GuiTextures.SLOT, 7, 84, true)); } + + // By returning false here, we don't allow shift-clicking + // with a screwdriver to swap the IO. + @Override + public boolean swapIO() { + return false; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ReservoirHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ReservoirHatchPartMachine.java index ba62aa0676c..8602416b9e2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ReservoirHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ReservoirHatchPartMachine.java @@ -61,6 +61,13 @@ protected void autoIO() { } } + // By returning false here, we don't allow shift-clicking + // with a screwdriver to swap the IO. + @Override + public boolean swapIO() { + return false; + } + protected static class InfiniteWaterTank extends CustomFluidTank { private static final CompoundTag EMPTY = new CompoundTag(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/RotorHolderPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/RotorHolderPartMachine.java index d7491f29dbf..bd96c5d59eb 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/RotorHolderPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/RotorHolderPartMachine.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.widget.BlockableSlotWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -21,7 +22,6 @@ import com.lowdragmc.lowdraglib.syncdata.ISubscription; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; -import com.lowdragmc.lowdraglib.syncdata.annotation.RequireRerender; import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; import net.minecraft.MethodsReturnNonnullByDefault; @@ -41,6 +41,8 @@ import javax.annotation.ParametersAreNonnullByDefault; +import static com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties.*; + @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class RotorHolderPartMachine extends TieredPartMachine @@ -60,7 +62,6 @@ public class RotorHolderPartMachine extends TieredPartMachine @Setter @Persisted @DescSynced - @RequireRerender @NotNull public Material rotorMaterial = GTMaterials.NULL; // 0 - no rotor @Nullable @@ -89,8 +90,10 @@ public void onMachineRemoved() { @Override public int tintColor(int index) { - if (index == 2) { - return getRotorMaterial().getMaterialARGB(); + if (index >= 2) { + return getRotorMaterial().getLayerARGB(index - 2); + } else if (index <= -103) { + return getRotorMaterial().getLayerARGB(index + 2); } return super.tintColor(index); } @@ -136,8 +139,17 @@ private void onRotorInventoryChanged() { var rotorBehaviour = TurbineRotorBehaviour.getBehaviour(stack); if (rotorBehaviour != null) { this.rotorMaterial = rotorBehaviour.getPartMaterial(stack); + + boolean emissive = this.rotorMaterial.hasProperty(PropertyKey.ORE) && + this.rotorMaterial.getProperty(PropertyKey.ORE).isEmissive(); + setRenderState(getRenderState() + .setValue(HAS_ROTOR, true) + .setValue(IS_EMISSIVE_ROTOR, emissive)); } else { this.rotorMaterial = GTMaterials.NULL; + setRenderState(getRenderState() + .setValue(HAS_ROTOR, false) + .setValue(IS_EMISSIVE_ROTOR, false)); } } @@ -169,7 +181,7 @@ private void updateRotorSpeed() { public void setRotorSpeed(int rotorSpeed) { if ((this.rotorSpeed > 0 && rotorSpeed <= 0) || (this.rotorSpeed <= 0 && rotorSpeed > 0)) { - scheduleRenderUpdate(); + setRenderState(getRenderState().setValue(IS_ROTOR_SPINNING, rotorSpeed > 0)); } this.rotorSpeed = rotorSpeed; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java index fb1718e85f5..8d39234eb77 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java @@ -19,11 +19,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/4 - * @implNote SteamHatchPartMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class SteamHatchPartMachine extends FluidHatchPartMachine { @@ -55,4 +50,13 @@ public ModularUI createUI(Player entityPlayer) { .widget(UITemplate.bindPlayerInventory(entityPlayer.getInventory(), GuiTextures.SLOT_STEAM.get(IS_STEEL), 7, 84, true)); } + + // By returning false here, we don't allow shift-clicking + // with a screwdriver to swap the IO, since this is a + // hatch that only allows steam in, not + // a steam version of an input/output hatch + @Override + public boolean swapIO() { + return false; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamItemBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamItemBusPartMachine.java index 2d0c3316f61..59280df5e30 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamItemBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamItemBusPartMachine.java @@ -6,12 +6,16 @@ import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; import com.gregtechceu.gtceu.api.gui.widget.ToggleButtonWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.common.data.GTMachines; import com.gregtechceu.gtceu.config.ConfigHolder; import com.lowdragmc.lowdraglib.gui.modular.ModularUI; import com.lowdragmc.lowdraglib.gui.widget.LabelWidget; +import net.minecraft.core.BlockPos; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.state.BlockState; import org.jetbrains.annotations.NotNull; @@ -53,4 +57,32 @@ public ModularUI createUI(@NotNull Player entityPlayer) { return modular; } + + @Override + public boolean swapIO() { + BlockPos blockPos = getHolder().pos(); + MachineDefinition newDefinition = null; + if (io == IO.IN) { + newDefinition = GTMachines.STEAM_EXPORT_BUS; + } else if (io == IO.OUT) { + newDefinition = GTMachines.STEAM_IMPORT_BUS; + } + + if (newDefinition == null) return false; + BlockState newBlockState = newDefinition.getBlock().defaultBlockState(); + + getLevel().setBlockAndUpdate(blockPos, newBlockState); + + if (getLevel().getBlockEntity(blockPos) instanceof IMachineBlockEntity newHolder) { + if (newHolder.getMetaMachine() instanceof SteamItemBusPartMachine newMachine) { + // We don't set the circuit or distinct busses, since + // that doesn't make sense on an output bus. + // Furthermore, existing inventory items + // and conveyors will drop to the floor on block override. + newMachine.setFrontFacing(this.getFrontFacing()); + newMachine.setUpwardsFacing(this.getUpwardsFacing()); + } + } + return true; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/TankValvePartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/TankValvePartMachine.java index 9dc6c30acd0..cb0cdd6fd18 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/TankValvePartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/TankValvePartMachine.java @@ -102,7 +102,7 @@ private void autoIO() { autoIOSubscription.updateSubscription(); } - private Boolean shouldAutoIO() { + private boolean shouldAutoIO() { if (!isFormed()) return false; if (getFrontFacing() != Direction.DOWN) return false; if (tankProxy.isEmpty()) return false; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComponentPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComponentPartMachine.java index 845709c1ba3..aa7e5b57461 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComponentPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComponentPartMachine.java @@ -3,7 +3,10 @@ import com.gregtechceu.gtceu.api.capability.IHPCAComponentHatch; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IMachineModifyDrops; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IWorkableMultiController; import com.gregtechceu.gtceu.api.machine.multiblock.part.MultiblockPartMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.gregtechceu.gtceu.common.data.GTBlocks; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; @@ -82,7 +85,30 @@ public void setDamaged(boolean damaged) { if (this.damaged != damaged) { this.damaged = damaged; markDirty(); + + MachineRenderState state = getRenderState(); + if (state.hasProperty(GTMachineModelProperties.IS_HPCA_PART_DAMAGED)) { + setRenderState(state.setValue(GTMachineModelProperties.IS_HPCA_PART_DAMAGED, damaged)); + } + } + } + + @Override + public boolean beforeWorking(IWorkableMultiController controller) { + MachineRenderState state = getRenderState(); + if (state.hasProperty(GTMachineModelProperties.IS_ACTIVE)) { + setRenderState(state.setValue(GTMachineModelProperties.IS_ACTIVE, true)); + } + return super.beforeWorking(controller); + } + + @Override + public boolean afterWorking(IWorkableMultiController controller) { + MachineRenderState state = getRenderState(); + if (state.hasProperty(GTMachineModelProperties.IS_ACTIVE)) { + setRenderState(state.setValue(GTMachineModelProperties.IS_ACTIVE, false)); } + return super.afterWorking(controller); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/MonitorComponentPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/MonitorComponentPartMachine.java new file mode 100644 index 00000000000..220bd378673 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/MonitorComponentPartMachine.java @@ -0,0 +1,12 @@ +package com.gregtechceu.gtceu.common.machine.multiblock.part.monitor; + +import com.gregtechceu.gtceu.api.capability.IMonitorComponent; +import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.multiblock.part.MultiblockPartMachine; + +public abstract class MonitorComponentPartMachine extends MultiblockPartMachine implements IMonitorComponent { + + public MonitorComponentPartMachine(IMachineBlockEntity holder) { + super(holder); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/MonitorPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/MonitorPartMachine.java new file mode 100644 index 00000000000..4f999166910 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/MonitorPartMachine.java @@ -0,0 +1,33 @@ +package com.gregtechceu.gtceu.common.machine.multiblock.part.monitor; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; + +import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; +import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; + +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.phys.BlockHitResult; + +public class MonitorPartMachine extends MonitorComponentPartMachine { + + public MonitorPartMachine(IMachineBlockEntity holder) { + super(holder); + } + + @Override + public boolean isMonitor() { + return true; + } + + @Override + public IGuiTexture getComponentIcon() { + return ResourceTexture.fromSpirit(GTCEu.id("item/computer_monitor_cover")); + } + + @Override + public boolean shouldOpenUI(Player player, InteractionHand hand, BlockHitResult hit) { + return false; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java index 1cbf95e7e84..1805d16d635 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java @@ -4,42 +4,46 @@ import com.gregtechceu.gtceu.api.capability.IWorkable; import com.gregtechceu.gtceu.api.item.ComponentItem; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableMultiblockMachine; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.pattern.BlockPattern; import com.gregtechceu.gtceu.api.pattern.FactoryBlockPattern; import com.gregtechceu.gtceu.api.pattern.Predicates; import com.gregtechceu.gtceu.api.pattern.TraceabilityPredicate; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.common.data.GTBlocks; import com.gregtechceu.gtceu.common.item.tool.behavior.LighterBehavior; +import com.gregtechceu.gtceu.data.recipe.CustomTags; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; -import com.lowdragmc.lowdraglib.syncdata.annotation.RequireRerender; import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; +import com.lowdragmc.lowdraglib.utils.BlockInfo; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.Holder; +import net.minecraft.core.HolderSet; import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.tags.BlockTags; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.FireChargeItem; -import net.minecraft.world.item.FlintAndSteelItem; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import it.unimi.dsi.fastutil.longs.Long2BooleanMap; +import it.unimi.dsi.fastutil.longs.Long2BooleanOpenHashMap; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; +import org.jetbrains.annotations.NotNull; import java.util.*; @@ -47,27 +51,15 @@ public class CharcoalPileIgniterMachine extends WorkableMultiblockMachine implements IWorkable { - private static final Set WALL_BLOCKS = new ObjectOpenHashSet<>(); - static { - WALL_BLOCKS.add(Blocks.DIRT); - WALL_BLOCKS.add(Blocks.COARSE_DIRT); - WALL_BLOCKS.add(Blocks.PODZOL); - WALL_BLOCKS.add(Blocks.GRASS_BLOCK); - WALL_BLOCKS.add(Blocks.DIRT_PATH); - WALL_BLOCKS.add(Blocks.SAND); - WALL_BLOCKS.add(Blocks.RED_SAND); - - } - protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( CharcoalPileIgniterMachine.class, WorkableMultiblockMachine.MANAGED_FIELD_HOLDER); - private final Collection logPos = new ObjectOpenHashSet<>(); - private static final int MIN_RADIUS = 1; private static final int MIN_DEPTH = 2; + private final Collection logPos = new ObjectOpenHashSet<>(); + @DescSynced private int lDist = 0; @DescSynced @@ -78,12 +70,8 @@ public class CharcoalPileIgniterMachine extends WorkableMultiblockMachine implem private int fDist = 0; @DescSynced private int hDist = 0; - @DescSynced - @RequireRerender - private boolean isActive; - private int progressTime = 0; - private int maxTime = 0; - private TickableSubscription burnLogsSubscription; + + private boolean hasAir = false; public CharcoalPileIgniterMachine(IMachineBlockEntity holder) { super(holder); @@ -92,48 +80,38 @@ public CharcoalPileIgniterMachine(IMachineBlockEntity holder) { @Override public void onStructureFormed() { super.onStructureFormed(); - updateMaxProgessTime(); - burnLogsSubscription = subscribeServerTick(this::tick); - tick(); - } - - @Override - public void onStructureInvalid() { - super.onStructureInvalid(); - resetState(); - this.progressTime = 0; - this.maxTime = 0; - } - - @Override - public ManagedFieldHolder getFieldHolder() { - return MANAGED_FIELD_HOLDER; + hasAir = false; + if (getMultiblockState().getMatchContext().containsKey("logPos")) { + Long2BooleanMap logPositions = getMultiblockState().getMatchContext().get("logPos"); + for (var entry : logPositions.long2BooleanEntrySet()) { + if (entry.getBooleanValue()) { + logPos.add(BlockPos.of(entry.getLongKey())); + } else { + hasAir = true; + } + } + } + this.getRecipeLogic().setDuration(Math.max(1, (int) Math.sqrt(logPos.size() * 240_000))); } @Override - public void onUnload() { - super.onUnload(); - resetState(); - } - - private void resetState() { - unsubscribe(burnLogsSubscription); - isActive = false; + protected @NotNull CharcoalRecipeLogic createRecipeLogic(Object @NotNull... args) { + return new CharcoalRecipeLogic(this); } @Override - public int getProgress() { - return progressTime; + public @NotNull CharcoalRecipeLogic getRecipeLogic() { + return (CharcoalRecipeLogic) super.getRecipeLogic(); } @Override - public int getMaxProgress() { - return maxTime; + public @NotNull ManagedFieldHolder getFieldHolder() { + return MANAGED_FIELD_HOLDER; } @Override public boolean isActive() { - return isActive; + return recipeLogic.isWorking(); } @Override @@ -141,6 +119,9 @@ public boolean isWorkingEnabled() { return true; } + @Override + public void setWorkingEnabled(boolean isWorkingAllowed) {} + @Override public BlockPattern getPattern() { updateDimensions(); @@ -219,33 +200,29 @@ public BlockPattern getPattern() { .aisle(c) .where('S', Predicates.controller(Predicates.blocks(this.getDefinition().get()))) .where('B', Predicates.blocks(Blocks.BRICKS)) - .where('W', wallPredicate()) + .where('W', Predicates.blockTag(CustomTags.CHARCOAL_PILE_IGNITER_WALLS)) .where('L', logPredicate()) .where('A', Predicates.any()) .build(); } - private TraceabilityPredicate wallPredicate() { - return new TraceabilityPredicate(multiblockState -> { - boolean match = false; - for (var b : WALL_BLOCKS) { - if (multiblockState.getBlockState().getBlock() == b) { - match = true; - break; - } - } - return match; - }, null); - } - - private TraceabilityPredicate logPredicate() { + protected static TraceabilityPredicate logPredicate() { return new TraceabilityPredicate(multiblockState -> { - if (multiblockState.getBlockState().is(BlockTags.LOGS_THAT_BURN)) { - logPos.add(multiblockState.getPos()); + BlockState state = multiblockState.getBlockState(); + long pos = multiblockState.getPos().asLong(); + boolean log = state.is(BlockTags.LOGS_THAT_BURN); + if (log || state.isAir()) { + multiblockState.getMatchContext().getOrCreate("logPos", Long2BooleanOpenHashMap::new).put(pos, log); return true; } return false; - }, null); + // copied from PredicateBlockTag to display the preview logs properly + }, () -> BuiltInRegistries.BLOCK.getTag(BlockTags.LOGS_THAT_BURN) + .stream() + .flatMap(HolderSet.Named::stream) + .map(Holder::value) + .map(BlockInfo::fromBlock) + .toArray(BlockInfo[]::new)); } public void updateDimensions() { @@ -253,13 +230,15 @@ public void updateDimensions() { if (level == null) return; Direction front = getFrontFacing(); Direction back = front.getOpposite(); - Direction left = front.getCounterClockWise(); - Direction right = left.getOpposite(); + Direction left = RelativeDirection.LEFT.getRelativeFacing(front, getUpwardsFacing(), false); + Direction right = RelativeDirection.RIGHT.getRelativeFacing(front, getUpwardsFacing(), false); + + BlockPos down = getPos().relative(Direction.DOWN); - BlockPos.MutableBlockPos lPos = getPos().mutable().move(Direction.DOWN); - BlockPos.MutableBlockPos rPos = getPos().mutable().move(Direction.DOWN); - BlockPos.MutableBlockPos fPos = getPos().mutable().move(Direction.DOWN); - BlockPos.MutableBlockPos bPos = getPos().mutable().move(Direction.DOWN); + BlockPos.MutableBlockPos lPos = down.mutable(); + BlockPos.MutableBlockPos rPos = down.mutable(); + BlockPos.MutableBlockPos fPos = down.mutable(); + BlockPos.MutableBlockPos bPos = down.mutable(); BlockPos.MutableBlockPos hPos = getPos().mutable(); int lDist = 0; @@ -295,26 +274,18 @@ public void updateDimensions() { } private static boolean isBlockWall(Level level, BlockPos.MutableBlockPos pos, Direction direction) { - return WALL_BLOCKS.contains(level.getBlockState(pos.move(direction)).getBlock()); + return level.getBlockState(pos.move(direction)).is(CustomTags.CHARCOAL_PILE_IGNITER_WALLS); } private static boolean isBlockFloor(Level level, BlockPos.MutableBlockPos pos) { - return level.getBlockState(pos.move(Direction.DOWN)).getBlock() == Blocks.BRICKS; - } - - public void setActive(boolean active) { - isActive = active; - } - - private void updateMaxProgessTime() { - this.maxTime = Math.max(1, (int) Math.sqrt(logPos.size() * 240_000)); + return level.getBlockState(pos.move(Direction.DOWN)).is(Blocks.BRICKS); } @Override @OnlyIn(Dist.CLIENT) public void clientTick() { super.clientTick(); - if (isActive) { + if (isActive()) { var pos = this.getPos(); var facing = Direction.UP; float xPos = facing.getStepX() * 0.76F + pos.getX() + 0.25F + GTValues.RNG.nextFloat() / 2.0F; @@ -339,67 +310,80 @@ public void clientTick() { } } - public void tick() { - if (isActive && maxTime > 0) { - if (++progressTime == maxTime) { - progressTime = 0; - maxTime = 0; - convertLogBlocks(); - isActive = false; - } - } - } - private void convertLogBlocks() { Level level = getLevel(); for (BlockPos pos : logPos) { - level.setBlock(pos, GTBlocks.BRITTLE_CHARCOAL.getDefaultState(), Block.UPDATE_ALL); + level.setBlockAndUpdate(pos, GTBlocks.BRITTLE_CHARCOAL.getDefaultState()); } logPos.clear(); } @Override - public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, + public InteractionResult onUse(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { - BlockEntity be = world.getBlockEntity(pos); - if (be instanceof IMachineBlockEntity machineBe) { - MetaMachine mte = machineBe.getMetaMachine(); - if (mte instanceof CharcoalPileIgniterMachine cpi && cpi.isFormed()) { - if (world.isClientSide) { - player.swing(hand); - } else if (!cpi.isActive()) { - boolean shouldActivate = false; - ItemStack stack = player.getItemInHand(hand); - if (stack.getItem() instanceof FlintAndSteelItem) { - stack.hurtAndBreak(1, player, p -> p.broadcastBreakEvent(hand)); - getLevel().playSound(null, pos, SoundEvents.FLINTANDSTEEL_USE, SoundSource.PLAYERS, 1.0f, 1.0f); + if (!isFormed() || hasAir) { + return super.onUse(state, level, pos, player, hand, hit); + } + ItemStack stack = player.getItemInHand(hand); + if (!stack.is(CustomTags.TOOLS_IGNITER)) { + return InteractionResult.PASS; + } + if (level.isClientSide && !isActive()) { + return InteractionResult.SUCCESS; + } else if (!isActive()) { + boolean shouldActivate = false; + if (stack.getItem() instanceof ComponentItem compItem) { + for (var component : compItem.getComponents()) { + if (component instanceof LighterBehavior lighter && lighter.consumeFuel(player, stack)) { shouldActivate = true; - } else if (stack.getItem() instanceof FireChargeItem) { - stack.shrink(1); + break; + } + } + } else if (stack.isDamageableItem()) { + stack.hurtAndBreak(1, player, p -> p.broadcastBreakEvent(hand)); + shouldActivate = true; + } else { + stack.shrink(1); + shouldActivate = true; + } - getLevel().playSound(null, pos, SoundEvents.FIRECHARGE_USE, SoundSource.PLAYERS, 1.0f, 1.0f); + if (shouldActivate) { + getRecipeLogic().setStatus(RecipeLogic.Status.WORKING); - shouldActivate = true; - } else if (stack.getItem() instanceof ComponentItem compItem) { - for (var component : compItem.getComponents()) { - if (component instanceof LighterBehavior lighter && lighter.consumeFuel(player, stack)) { - getLevel().playSound(null, pos, SoundEvents.FIRECHARGE_USE, SoundSource.PLAYERS, 1.0f, - 1.0f); - - shouldActivate = true; - break; - } - } - } + level.playSound(null, pos, + stack.is(Items.FIRE_CHARGE) ? SoundEvents.FIRECHARGE_USE : SoundEvents.FLINTANDSTEEL_USE, + SoundSource.BLOCKS, 1.0f, 1.0f); + return InteractionResult.CONSUME; + } + } + return super.onUse(state, level, pos, player, hand, hit); + } - if (shouldActivate) { - cpi.setActive(true); - return InteractionResult.CONSUME; - } + public static class CharcoalRecipeLogic extends RecipeLogic { + + private final CharcoalPileIgniterMachine machine; + + public CharcoalRecipeLogic(CharcoalPileIgniterMachine machine) { + super(machine); + this.machine = machine; + } + + @Override + public void serverTick() { + super.serverTick(); + if (isWorking() && duration > 0) { + if (++progress >= duration) { + progress = 0; + duration = 0; + this.machine.convertLogBlocks(); + setStatus(Status.IDLE); } } } - return super.onUse(state, world, pos, player, hand, hit); + + public void setDuration(int max) { + this.duration = max; + } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java index 2975b1e5a21..4d23df29cb7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java @@ -26,11 +26,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/16 - * @implNote CokeOvenMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class CokeOvenMachine extends PrimitiveWorkableMachine implements IUIMachine { @@ -55,7 +50,7 @@ public ModularUI createUI(Player entityPlayer) { .widget(new TankWidget(exportFluids.getStorages()[0], 134, 13, 20, 58, true, false) .setBackground(GuiTextures.PRIMITIVE_LARGE_FLUID_TANK) .setFillDirection(ProgressTexture.FillDirection.DOWN_TO_UP) - .setShowAmount(false) + .setShowAmountOverlay(false) .setOverlay(GuiTextures.PRIMITIVE_LARGE_FLUID_TANK_OVERLAY)) .widget(UITemplate.bindPlayerInventory(entityPlayer.getInventory(), GuiTextures.PRIMITIVE_SLOT, 7, 84, true)); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java index 60abf7c5cdc..fa933d9fc8f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java @@ -9,14 +9,20 @@ import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.IUIMachine; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IFluidRenderMulti; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.config.ConfigHolder; +import com.gregtechceu.gtceu.utils.GTUtil; import com.lowdragmc.lowdraglib.gui.modular.ModularUI; import com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup; import com.lowdragmc.lowdraglib.gui.widget.LabelWidget; import com.lowdragmc.lowdraglib.gui.widget.ProgressWidget; +import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; +import com.lowdragmc.lowdraglib.syncdata.annotation.RequireRerender; +import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; @@ -26,27 +32,45 @@ import net.minecraft.sounds.SoundSource; import net.minecraft.util.RandomSource; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import lombok.Getter; +import lombok.Setter; +import org.jetbrains.annotations.NotNull; + +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/17 - * @implNote PrimitiveBlastFurnaceMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class PrimitiveBlastFurnaceMachine extends PrimitiveWorkableMachine implements IUIMachine { +public class PrimitiveBlastFurnaceMachine extends PrimitiveWorkableMachine implements IUIMachine, IFluidRenderMulti { + + protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( + PrimitiveBlastFurnaceMachine.class, PrimitiveWorkableMachine.MANAGED_FIELD_HOLDER); private TickableSubscription hurtSubscription; + @Getter + @Setter + @DescSynced + @RequireRerender + private @NotNull Set fluidBlockOffsets = new HashSet<>(); + public PrimitiveBlastFurnaceMachine(IMachineBlockEntity holder, Object... args) { super(holder, args); } + @Override + public ManagedFieldHolder getFieldHolder() { + return MANAGED_FIELD_HOLDER; + } + @Override protected NotifiableItemStackHandler createImportItemHandler(Object... args) { return new NotifiableItemStackHandler(this, getRecipeType().getMaxInputs(ItemRecipeCapability.CAP), IO.IN, @@ -63,18 +87,35 @@ protected NotifiableItemStackHandler createExportItemHandler(Object... args) { public void onUnload() { super.onUnload(); unsubscribe(hurtSubscription); + hurtSubscription = null; } @Override public void onStructureFormed() { super.onStructureFormed(); - this.hurtSubscription = subscribeServerTick(this::hurtEntities); + IFluidRenderMulti.super.onStructureFormed(); } @Override public void onStructureInvalid() { super.onStructureInvalid(); - unsubscribe(hurtSubscription); + IFluidRenderMulti.super.onStructureInvalid(); + } + + @Override + public void notifyStatusChanged(RecipeLogic.Status oldStatus, RecipeLogic.Status newStatus) { + super.notifyStatusChanged(oldStatus, newStatus); + if (newStatus == RecipeLogic.Status.WORKING) { + this.hurtSubscription = subscribeServerTick(this.hurtSubscription, this::hurtEntitiesAndBreakSnow); + } else if (oldStatus == RecipeLogic.Status.WORKING && hurtSubscription != null) { + unsubscribe(hurtSubscription); + hurtSubscription = null; + } + } + + @Override + public @NotNull Set saveOffsets() { + return Collections.singleton(new BlockPos(getFrontFacing().getOpposite().getNormal())); } @Override @@ -88,7 +129,7 @@ public void clientTick() { float yPos = facing.getStepY() * 0.76F + pos.getY() + 0.25F; float zPos = facing.getStepZ() * 0.76F + pos.getZ() + 0.5F; - var up = RelativeDirection.UP.getRelativeFacing(getFrontFacing(), getUpwardsFacing(), isFlipped()); + var up = RelativeDirection.UP.getRelative(getFrontFacing(), getUpwardsFacing(), isFlipped()); var sign = up.getAxisDirection().getStep(); var shouldX = up.getAxis() == Direction.Axis.X; var shouldY = up.getAxis() == Direction.Axis.Y; @@ -135,8 +176,8 @@ public ModularUI createUI(Player entityPlayer) { .widget(new SlotWidget(exportItems.storage, 2, 140, 38, true, false) .setBackgroundTexture( new GuiTextureGroup(GuiTextures.PRIMITIVE_SLOT, GuiTextures.PRIMITIVE_DUST_OVERLAY))) - .widget(UITemplate.bindPlayerInventory(entityPlayer.getInventory(), GuiTextures.PRIMITIVE_SLOT, 7, 84, - true)); + .widget(UITemplate.bindPlayerInventory(entityPlayer.getInventory(), + GuiTextures.PRIMITIVE_SLOT, 7, 84, true)); } @Override @@ -160,17 +201,21 @@ public void animateTick(RandomSource random) { x += horizontalOffset; } if (ConfigHolder.INSTANCE.machines.machineSounds && GTValues.RNG.nextDouble() < 0.1) { - getLevel().playLocalSound(x, y, z, SoundEvents.FURNACE_FIRE_CRACKLE, SoundSource.BLOCKS, 1.0F, 1.0F, - false); + getLevel().playLocalSound(x, y, z, SoundEvents.FURNACE_FIRE_CRACKLE, + SoundSource.BLOCKS, 1.0F, 1.0F, false); } getLevel().addParticle(ParticleTypes.LARGE_SMOKE, x, y, z, 0, 0, 0); getLevel().addParticle(ParticleTypes.FLAME, x, y, z, 0, 0, 0); } } - private void hurtEntities() { + private void hurtEntitiesAndBreakSnow() { BlockPos middlePos = self().getPos().offset(getFrontFacing().getOpposite().getNormal()); - getLevel().getEntities(null, - new AABB(middlePos)).forEach(e -> e.hurt(e.damageSources().lava(), 3.0f)); + getLevel().getEntities(null, new AABB(middlePos)).forEach(e -> e.hurt(e.damageSources().lava(), 3.0f)); + + if (getOffsetTimer() % 10 == 0) { + BlockState state = getLevel().getBlockState(middlePos); + GTUtil.tryBreakSnow(getLevel(), middlePos, state, true); + } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitivePumpMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitivePumpMachine.java index 037a65f09e3..fb2dfd206d5 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitivePumpMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitivePumpMachine.java @@ -55,7 +55,7 @@ private void initializeTank() { for (var handlerList : handlerLists) { var recipeCap = handlerList.getCapability(FluidRecipeCapability.CAP); - if (handlerList.getHandlerIO() == IO.OUT && !recipeCap.isEmpty()) { + if (handlerList.getHandlerIO().support(IO.OUT) && !recipeCap.isEmpty()) { fluidTank = (NotifiableFluidTank) recipeCap.get(0); long tankCapacity = fluidTank.getTankCapacity(0); if (tankCapacity == FluidType.BUCKET_VOLUME) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveWorkableMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveWorkableMachine.java index dd9d4b83f4c..e9ce4022838 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveWorkableMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveWorkableMachine.java @@ -18,11 +18,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/16 - * @implNote PrimitiveWorkableMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class PrimitiveWorkableMachine extends WorkableMultiblockMachine diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/BoilerType.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/BoilerType.java deleted file mode 100644 index 3fd7c2f9e79..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/BoilerType.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.gregtechceu.gtceu.common.machine.multiblock.steam; - -import net.minecraft.world.level.block.state.BlockState; - -import static com.gregtechceu.gtceu.common.data.GTBlocks.*; - -public enum BoilerType { - - BRONZE(800, 1200, - CASING_BRONZE_BRICKS.getDefaultState(), - FIREBOX_BRONZE.getDefaultState(), - CASING_BRONZE_PIPE.getDefaultState()), - - STEEL(1800, 1800, - CASING_STEEL_SOLID.getDefaultState(), - FIREBOX_STEEL.getDefaultState(), - CASING_STEEL_PIPE.getDefaultState()), - - TITANIUM(3200, 2400, - CASING_TITANIUM_STABLE.getDefaultState(), - FIREBOX_TITANIUM.getDefaultState(), - CASING_TITANIUM_PIPE.getDefaultState()), - - TUNGSTENSTEEL(6400, 3000, - CASING_TUNGSTENSTEEL_ROBUST.getDefaultState(), - FIREBOX_TUNGSTENSTEEL.getDefaultState(), - CASING_TUNGSTENSTEEL_PIPE.getDefaultState()); - - // Workable Data - private final int steamPerTick; - private final int ticksToBoiling; - - // Structure Data - public final BlockState casingState; - public final BlockState fireboxState; - public final BlockState pipeState; - - BoilerType(int steamPerTick, int ticksToBoiling, - BlockState casingState, - BlockState fireboxState, - BlockState pipeState) { - this.steamPerTick = steamPerTick; - this.ticksToBoiling = ticksToBoiling; - - this.casingState = casingState; - this.fireboxState = fireboxState; - this.pipeState = pipeState; - } - - public int steamPerTick() { - return steamPerTick; - } - - public int getTicksToBoiling() { - return ticksToBoiling; - } - - public int runtimeBoost(int ticks) { - return switch (this) { - case BRONZE -> ticks * 2; - case STEEL -> ticks * 150 / 100; - case TITANIUM -> ticks * 120 / 100; - case TUNGSTENSTEEL -> ticks; - }; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java index c14bd64fb82..c437dc2778d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java @@ -44,11 +44,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/16 - * @implNote LargeBoilerMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class LargeBoilerMachine extends WorkableMultiblockMachine implements IExplosionMachine, IDisplayUIMachine { @@ -62,8 +57,6 @@ public class LargeBoilerMachine extends WorkableMultiblockMachine implements IEx @Persisted @Getter private int currentTemperature, throttle; - @Getter - private boolean hasNoWater; @Nullable protected TickableSubscription temperatureSubs; private int steamGenerated; @@ -85,14 +78,30 @@ public ManagedFieldHolder getFieldHolder() { ////////////////////////////////////// @Override - public void onLoad() { - super.onLoad(); + public void onStructureFormed() { + super.onStructureFormed(); + if (getLevel() instanceof ServerLevel serverLevel) { + serverLevel.getServer().tell(new TickTask(0, this::updateSteamSubscription)); + } + } + @Override + public void onStructureInvalid() { + super.onStructureInvalid(); if (getLevel() instanceof ServerLevel serverLevel) { serverLevel.getServer().tell(new TickTask(0, this::updateSteamSubscription)); } } + @Override + public void onUnload() { + if (temperatureSubs != null) { + temperatureSubs.unsubscribe(); + temperatureSubs = null; + } + super.onUnload(); + } + protected void updateSteamSubscription() { if (currentTemperature > 0) { temperatureSubs = subscribeServerTick(temperatureSubs, this::updateCurrentTemperature); @@ -113,25 +122,17 @@ protected void updateCurrentTemperature() { currentTemperature -= getCoolDownRate(); } - if (getOffsetTimer() % TICKS_PER_STEAM_GENERATION == 0) { - // drain water + if (isFormed() && getOffsetTimer() % TICKS_PER_STEAM_GENERATION == 0) { var maxDrain = currentTemperature * throttle * TICKS_PER_STEAM_GENERATION / (ConfigHolder.INSTANCE.machines.largeBoilers.steamPerWater * 100); - var drainWater = List.of(FluidIngredient.of(maxDrain, Fluids.WATER)); - List> inputTanks = new ArrayList<>(); - inputTanks.addAll(getCapabilitiesFlat(IO.IN, FluidRecipeCapability.CAP)); - inputTanks.addAll(getCapabilitiesFlat(IO.BOTH, FluidRecipeCapability.CAP)); if (currentTemperature < 100) { steamGenerated = 0; - for (IRecipeHandler tank : inputTanks) { - drainWater = (List) tank.handleRecipe(IO.IN, null, drainWater, true); - this.hasNoWater = !(drainWater == null || drainWater.isEmpty() || - drainWater.get(0).getAmount() > 0); - if (!this.hasNoWater) { - break; - } - } - } else { + } else if (maxDrain > 0) { // if maxDrain is 0 because throttle is too low, skip trying to make steam + // drain water + var drainWater = List.of(FluidIngredient.of(Fluids.WATER, maxDrain)); + List> inputTanks = new ArrayList<>(); + inputTanks.addAll(getCapabilitiesFlat(IO.IN, FluidRecipeCapability.CAP)); + inputTanks.addAll(getCapabilitiesFlat(IO.BOTH, FluidRecipeCapability.CAP)); for (IRecipeHandler tank : inputTanks) { drainWater = (List) tank.handleRecipe(IO.IN, null, drainWater, false); if (drainWater == null || drainWater.isEmpty()) { @@ -141,10 +142,9 @@ protected void updateCurrentTemperature() { var drained = (drainWater == null || drainWater.isEmpty()) ? maxDrain : maxDrain - drainWater.get(0).getAmount(); - boolean hasDrainedWater = drained > 0; steamGenerated = drained * ConfigHolder.INSTANCE.machines.largeBoilers.steamPerWater; - if (hasDrainedWater) { + if (drained > 0) { // fill steam var fillSteam = List.of(FluidIngredient.of(GTMaterials.Steam.getFluid(steamGenerated))); List> outputTanks = new ArrayList<>(); @@ -157,7 +157,7 @@ protected void updateCurrentTemperature() { } // check explosion - if (this.hasNoWater && hasDrainedWater) { + if (drained < maxDrain) { doExplosion(2f); var center = getPos().below().relative(getFrontFacing().getOpposite()); if (GTValues.RNG.nextInt(100) > 80) { @@ -170,8 +170,6 @@ protected void updateCurrentTemperature() { } } } - } else { - this.hasNoWater = !hasDrainedWater; } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/SteamParallelMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/SteamParallelMultiblockMachine.java index a2501b1f60a..6e34aceece9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/SteamParallelMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/SteamParallelMultiblockMachine.java @@ -114,7 +114,7 @@ public static ModifierFunction recipeModifier(@NotNull MetaMachine machine, @Not // Duration = 1.5x base duration // EUt (not steam) = (4/3) * (2/3) * parallels * base EUt, up to a max of 32 EUt - long eut = RecipeHelper.getInputEUt(recipe); + long eut = recipe.getInputEUt().getTotalEU(); int parallelAmount = ParallelLogic.getParallelAmount(machine, recipe, steamMachine.maxParallels); double eutMultiplier = (eut * 0.8888 * parallelAmount <= 32) ? (0.8888 * parallelAmount) : (32.0 / eut); return ModifierFunction.builder() diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java index 2f94299bc14..cbbe5dd31f7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java @@ -29,11 +29,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/15 - * @implNote SteamLiquidBoilerMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class SteamLiquidBoilerMachine extends SteamBoilerMachine { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolarBoiler.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolarBoiler.java index 4f968b21a8e..6cfd39650b2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolarBoiler.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolarBoiler.java @@ -14,6 +14,8 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.entity.player.Player; +import org.jetbrains.annotations.NotNull; + public class SteamSolarBoiler extends SteamBoilerMachine { public SteamSolarBoiler(IMachineBlockEntity holder, boolean isHighPressure, Object... args) { @@ -21,7 +23,7 @@ public SteamSolarBoiler(IMachineBlockEntity holder, boolean isHighPressure, Obje } @Override - public Direction getFrontFacing() { + public @NotNull Direction getFrontFacing() { return Direction.UP; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolidBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolidBoilerMachine.java index 34586a0406d..9e637bfd3b6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolidBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolidBoilerMachine.java @@ -35,11 +35,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/15 - * @implNote SteamSolidBoilerMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class SteamSolidBoilerMachine extends SteamBoilerMachine implements IMachineLife { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java index 3bd451f8e15..19398d8d360 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java @@ -244,8 +244,8 @@ public Widget createUIWidget() { // ******* Rendering ********// /////////////////////////////// @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.SCREWDRIVER)) { if (side == getOutputFacingItems() || side == getOutputFacingFluids()) { return GuiTextures.TOOL_ALLOW_INPUT; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java index 7e546e3ee49..41ef34b3dd1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java @@ -8,6 +8,7 @@ import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.*; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; import com.gregtechceu.gtceu.common.data.GTItems; @@ -28,6 +29,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.phys.BlockHitResult; import lombok.Getter; @@ -35,11 +37,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author h3tR - * @date 2023/3/27 - * @implNote CrateMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class CrateMachine extends MetaMachine implements IUIMachine, IMachineLife, @@ -48,6 +45,8 @@ public class CrateMachine extends MetaMachine implements IUIMachine, IMachineLif public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(CrateMachine.class, MetaMachine.MANAGED_FIELD_HOLDER); + public static final BooleanProperty TAPED_PROPERTY = GTMachineModelProperties.IS_TAPED; + @Override public ManagedFieldHolder getFieldHolder() { return MANAGED_FIELD_HOLDER; @@ -108,7 +107,8 @@ public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Play stack.shrink(1); } isTaped = true; - return InteractionResult.SUCCESS; + setRenderState(getRenderState().setValue(GTMachineModelProperties.IS_TAPED, isTaped)); + return InteractionResult.sidedSuccess(world.isClientSide); } } return IInteractedMachine.super.onUse(state, world, pos, player, hand, hit); @@ -126,6 +126,7 @@ public void onMachinePlaced(@Nullable LivingEntity player, ItemStack stack) { tag.remove("taped"); this.isTaped = false; + setRenderState(getRenderState().setValue(GTMachineModelProperties.IS_TAPED, isTaped)); } stack.setTag(null); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeEnergyContainerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeEnergyContainerMachine.java index 7f16e0bcee8..bbf26fda39f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeEnergyContainerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeEnergyContainerMachine.java @@ -7,6 +7,7 @@ import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.machine.TieredMachine; import com.gregtechceu.gtceu.api.machine.feature.IUIMachine; import com.gregtechceu.gtceu.utils.GTUtil; @@ -32,7 +33,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class CreativeEnergyContainerMachine extends MetaMachine implements ILaserContainer, IUIMachine { +public class CreativeEnergyContainerMachine extends TieredMachine implements ILaserContainer, IUIMachine { public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( CreativeEnergyContainerMachine.class, MetaMachine.MANAGED_FIELD_HOLDER); @@ -54,7 +55,7 @@ public class CreativeEnergyContainerMachine extends MetaMachine implements ILase private boolean doExplosion = false; public CreativeEnergyContainerMachine(IMachineBlockEntity holder) { - super(holder); + super(holder, GTValues.MAX); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java index ca3df71a46c..538afb0d9ba 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java @@ -195,7 +195,6 @@ protected void checkAutoOutput() { } } - @SuppressWarnings("resource") @Override public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { @@ -230,8 +229,8 @@ protected InteractionResult onScrewdriverClick(Player playerIn, InteractionHand // ******* Rendering ********// ////////////////////////////////////// @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.SCREWDRIVER)) { if (side == getOutputFacingFluids()) { return isAutoOutputFluids() ? GuiTextures.TOOL_DISABLE_AUTO_OUTPUT : GuiTextures.TOOL_AUTO_OUTPUT; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java index 324b6138842..266c2e3c0e2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java @@ -282,7 +282,7 @@ public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Play } private static boolean isDoubleHit(UUID uuid) { - return (System.currentTimeMillis() - INTERACTION_LOGGER.getOrDefault(uuid, System.currentTimeMillis())) < 300; + return (System.currentTimeMillis() - INTERACTION_LOGGER.getLong(uuid)) < 300; } @Override @@ -313,8 +313,7 @@ protected InteractionResult onWrenchClick(Player playerIn, InteractionHand hand, } else { setOutputFacingItems(null); } - playerIn.swing(hand); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } return super.onWrenchClick(playerIn, hand, gridSide, hitResult); @@ -426,8 +425,8 @@ public Widget createUIWidget() { // ******* Rendering ********// ////////////////////////////////////// @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.WRENCH)) { if (!player.isShiftKeyDown()) { if (!hasFrontFacing() || side != getFrontFacing()) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java index 4894b634133..0b389279b38 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java @@ -7,10 +7,7 @@ import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.gui.widget.ToggleButtonWidget; import com.gregtechceu.gtceu.api.item.tool.GTToolType; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.TickableSubscription; -import com.gregtechceu.gtceu.api.machine.TieredMachine; +import com.gregtechceu.gtceu.api.machine.*; import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputFluid; import com.gregtechceu.gtceu.api.machine.feature.IDropSaveMachine; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; @@ -52,6 +49,8 @@ import net.minecraftforge.items.IItemHandlerModifiable; import com.mojang.blaze3d.MethodsReturnNonnullByDefault; +import it.unimi.dsi.fastutil.objects.Object2LongArrayMap; +import it.unimi.dsi.fastutil.objects.Object2LongMap; import lombok.Getter; import lombok.Setter; import org.jetbrains.annotations.NotNull; @@ -70,6 +69,8 @@ public class QuantumTankMachine extends TieredMachine implements IAutoOutputFlui public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(QuantumTankMachine.class, MetaMachine.MANAGED_FIELD_HOLDER); + public static Object2LongMap TANK_CAPACITY = new Object2LongArrayMap<>(); + @Getter @Persisted @DescSynced @@ -154,7 +155,6 @@ public void saveCustomPersistedData(@NotNull CompoundTag tag, boolean forDrop) { if (!forDrop) tag.put("lockedFluid", lockedFluid.writeToNBT(new CompoundTag())); tag.put("stored", stored.writeToNBT(new CompoundTag())); tag.putLong("storedAmount", storedAmount); - tag.putLong("maxAmount", maxAmount); } @Override @@ -277,8 +277,7 @@ protected InteractionResult onWrenchClick(Player playerIn, InteractionHand hand, } else { setOutputFacingFluids(null); } - playerIn.swing(hand); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } return super.onWrenchClick(playerIn, hand, gridSide, hitResult); @@ -366,8 +365,8 @@ public Widget createUIWidget() { // ******* Rendering ********// ////////////////////////////////////// @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.WRENCH)) { if (!player.isShiftKeyDown()) { if (!hasFrontFacing() || side != getFrontFacing()) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java index bf4c4e90989..48b9979aeb6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java @@ -7,6 +7,7 @@ import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.data.worldgen.bedrockore.BedrockOreVeinSavedData; import com.gregtechceu.gtceu.api.data.worldgen.bedrockore.OreVeinWorldEntry; +import com.gregtechceu.gtceu.api.data.worldgen.bedrockore.WeightedMaterial; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.RecipeHelper; @@ -23,20 +24,14 @@ import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.Map; -/** - * @author KilaBash - * @date 2023/7/12 - * @implNote FluidDrillLogic - */ public class BedrockOreMinerLogic extends RecipeLogic { public static final int MAX_PROGRESS = 20; @Getter @Nullable - private List> veinMaterials; + private List veinMaterials; public BedrockOreMinerLogic(BedrockOreMinerMachine machine) { super(machine); @@ -74,8 +69,9 @@ public void findAndHandleRecipe() { @Nullable private GTRecipe getOreMinerRecipe() { if (getMachine().getLevel() instanceof ServerLevel serverLevel && veinMaterials != null) { - Material material = veinMaterials - .get(GTUtil.getRandomItem(serverLevel.random, veinMaterials, veinMaterials.size())).getValue(); + WeightedMaterial wm = GTUtil.getRandomItem(serverLevel.random, veinMaterials); + if (wm == null) return null; + Material material = wm.material(); ItemStack stack = ChemicalHelper.get(TagPrefix.get(ConfigHolder.INSTANCE.machines.bedrockOreDropTagPrefix), material, getOreToProduce()); if (stack.isEmpty()) stack = ChemicalHelper.get(TagPrefix.crushed, material, getOreToProduce()); // backup @@ -145,7 +141,6 @@ public int getOreToProduce() { public void onRecipeFinish() { machine.afterWorking(); if (lastRecipe != null) { - RecipeHelper.postWorking(this.machine, lastRecipe); RecipeHelper.handleRecipeIO(this.machine, lastRecipe, IO.OUT, this.chanceCaches); } depleteVein(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/CentralMonitorLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/CentralMonitorLogic.java new file mode 100644 index 00000000000..0d4b9cec954 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/CentralMonitorLogic.java @@ -0,0 +1,75 @@ +package com.gregtechceu.gtceu.common.machine.trait; + +import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.capability.IWorkable; +import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; +import com.gregtechceu.gtceu.api.misc.EnergyContainerList; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.CentralMonitorMachine; + +import net.minecraft.util.Mth; + +public class CentralMonitorLogic extends RecipeLogic implements IWorkable { + + private static final int BASE_UPDATE_INTERVAL = 8 * 20; + + public CentralMonitorLogic(IRecipeLogicMachine machine) { + super(machine); + } + + public CentralMonitorMachine getMachine() { + return (CentralMonitorMachine) machine; + } + + private boolean consumeEnergy() { + int tier = Mth.clamp(getMachine().getTier(), GTValues.ULV, GTValues.MAX); + long energyToDrain = GTValues.VA[tier]; + EnergyContainerList energyContainer = getMachine().getFormedEnergyContainer(); + if (energyContainer == null) { + return false; + } + + long resultEnergy = energyContainer.getEnergyStored() - energyToDrain; + if (resultEnergy >= 0L && resultEnergy <= energyContainer.getEnergyCapacity()) { + energyContainer.removeEnergy(energyToDrain); + return true; + } + return false; + } + + private int getUpdateInterval() { + int interval = BASE_UPDATE_INTERVAL; + for (int i = 1; i < getMachine().getTier(); i++) { + interval /= 2; + } + return Math.max(interval, 1); + } + + @Override + public void serverTick() { + if (!getMachine().isFormed() || !isWorkingEnabled()) { + setStatus(Status.IDLE); + } else if (consumeEnergy()) { + setStatus(Status.WORKING); + isActive = true; + progress = (progress + 1) % getUpdateInterval(); + if (progress == 0) { + getMachine().tick(); + } + } else { + setStatus(Status.WAITING); + isActive = false; + progress = Math.max(progress - 2, 1); + } + } + + @Override + public int getMaxProgress() { + return getUpdateInterval(); + } + + @Override + public boolean isActive() { + return getMachine().isFormed() && this.isActive; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/CleanroomLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/CleanroomLogic.java index e12299ede6a..dd83079f14a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/CleanroomLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/CleanroomLogic.java @@ -8,13 +8,13 @@ import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.common.capability.EnvironmentalHazardSavedData; import com.gregtechceu.gtceu.common.machine.multiblock.electric.CleanroomMachine; -import com.gregtechceu.gtceu.config.ConfigHolder; import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.Mth; import lombok.Getter; import lombok.Setter; @@ -24,7 +24,7 @@ public class CleanroomLogic extends RecipeLogic implements IWorkable { protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(CleanroomLogic.class, RecipeLogic.MANAGED_FIELD_HOLDER); - public static final int BASE_CLEAN_AMOUNT = 5; + public static final int BASE_CLEAN_AMOUNT = 2; @Setter @Nullable private IMaintenanceMachine maintenanceMachine; @@ -58,7 +58,8 @@ public ManagedFieldHolder getFieldHolder() { * Call this method every tick in update */ public void serverTick() { - if (!isSuspend() && duration > 0) { + // always run this logic + if (duration > 0) { EnvironmentalHazardSavedData environmentalHazards = EnvironmentalHazardSavedData .getOrCreate((ServerLevel) this.getMachine().getLevel()); var zone = environmentalHazards.getZoneByContainedPos(getMachine().getPos()); @@ -68,11 +69,7 @@ public void serverTick() { // drain the energy if (!consumeEnergy()) { if (progress > 0 && machine.regressWhenWaiting()) { - if (ConfigHolder.INSTANCE.machines.recipeProgressLowEnergy) { - this.progress = 1; - } else { - this.progress = Math.max(1, progress - 2); - } + this.progress = 1; } // the cleanroom does not have enough energy, so it looses cleanliness @@ -109,18 +106,11 @@ public void serverTick() { machine.afterWorking(); } } - - if (isSuspend()) { - // machine isn't working enabled - if (subscription != null) { - subscription.unsubscribe(); - subscription = null; - } - } } protected void adjustCleanAmount(boolean declined) { - int amountToClean = BASE_CLEAN_AMOUNT * (getTierDifference() + 1); + // range from 5 - ~44 % per cycle instead of the 5 - 70% it was previously + int amountToClean = BASE_CLEAN_AMOUNT + (3 * (getTierDifference() + 1)); if (declined) amountToClean *= -1; // each maintenance problem lowers gain by 1 @@ -132,8 +122,11 @@ protected void adjustCleanAmount(boolean declined) { protected boolean consumeEnergy() { var cleanroom = getMachine(); - long energyToDrain = cleanroom.isClean() ? (long) Math.min(4, Math.pow(4, cleanroom.getTier())) : - GTValues.VA[cleanroom.getTier()]; + // clamp to max for VA indexing + var tier = Mth.clamp(cleanroom.getTier(), GTValues.ULV, GTValues.MAX); + // use 3/16th an amp when fully clean otherwise 15/16th an amp during cleaning + long energyToDrain = cleanroom.isClean() ? Math.max(8, (3 * GTValues.V[tier] / 16)) : + GTValues.VA[tier]; if (energyContainer != null) { long resultEnergy = energyContainer.getEnergyStored() - energyToDrain; if (resultEnergy >= 0L && resultEnergy <= energyContainer.getEnergyCapacity()) { @@ -146,14 +139,10 @@ protected boolean consumeEnergy() { protected int getTierDifference() { int minEnergyTier = GTValues.LV; - return getMachine().getTier() - minEnergyTier; + // clamp for ULV + return Math.max(0, getMachine().getTier() - minEnergyTier); } - /** - * max progress is based on the dimensions of the structure: (x^3)-(x^2) - * /* taller cleanrooms take longer than wider ones - * /* minimum of 100 is a 5x5x5 cleanroom: 125-25=100 ticks - **/ public void setDuration(int max) { this.duration = max; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/ConverterTrait.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/ConverterTrait.java index 1ba7ee98235..1afaec3e6a3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/ConverterTrait.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/ConverterTrait.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.compat.FeCompat; import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.MachineTrait; import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; import com.gregtechceu.gtceu.common.machine.electric.ConverterMachine; @@ -58,6 +59,7 @@ public ManagedFieldHolder getFieldHolder() { public void setFeToEu(boolean feToEu) { this.feToEu = feToEu; + setRenderState(getRenderState().setValue(GTMachineModelProperties.IS_FE_TO_EU, feToEu)); machine.notifyBlockUpdate(); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/FluidDrillLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/FluidDrillLogic.java index bb3a7fd07a4..8d4f9a2634f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/FluidDrillLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/FluidDrillLogic.java @@ -18,11 +18,6 @@ import lombok.Getter; import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/7/12 - * @implNote FluidDrillLogic - */ public class FluidDrillLogic extends RecipeLogic { public static final int MAX_PROGRESS = 20; @@ -113,7 +108,6 @@ private int getFluidToProduce(FluidVeinWorldEntry entry) { public void onRecipeFinish() { machine.afterWorking(); if (lastRecipe != null) { - RecipeHelper.postWorking(this.machine, lastRecipe); RecipeHelper.handleRecipeIO(this.machine, lastRecipe, IO.OUT, this.chanceCaches); } depleteVein(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/ArcFurnaceLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/ArcFurnaceLogic.java index 9f5cdc3eb7f..5a9d9c32d3e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/ArcFurnaceLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/ArcFurnaceLogic.java @@ -35,7 +35,6 @@ public enum ArcFurnaceLogic implements GTRecipeType.ICustomRecipeLogic { public @Nullable GTRecipe createCustomRecipe(IRecipeCapabilityHolder holder) { var recipeHandlers = holder.getCapabilitiesFlat(IO.IN, ItemRecipeCapability.CAP); for (var handler : recipeHandlers) { - if (!handler.shouldSearchContent()) continue; for (var content : handler.getContents()) { if (!(content instanceof ItemStack stack)) continue; if (stack.isEmpty()) continue; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/BreweryLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/BreweryLogic.java index 77246d2f241..065d89b49ee 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/BreweryLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/BreweryLogic.java @@ -260,7 +260,6 @@ private static boolean collect(RecipeHandlerList rhl, List itemStacks private static boolean collect(List> itemHandlers, List> fluidHandlers, List itemStacks, List fluidStacks) { for (var handler : itemHandlers) { - if (!handler.shouldSearchContent()) continue; for (var content : handler.getContents()) { if (content instanceof ItemStack stack && !stack.isEmpty()) { itemStacks.add(stack); @@ -269,7 +268,6 @@ private static boolean collect(List> itemHandlers, List itemStacks private static boolean collect(List> itemHandlers, List> fluidHandlers, List itemStacks, List fluidStacks) { for (var handler : itemHandlers) { - if (!handler.shouldSearchContent()) continue; for (var content : handler.getContents()) { if (content instanceof ItemStack stack && !stack.isEmpty()) { itemStacks.add(stack); @@ -180,7 +179,6 @@ private static boolean collect(List> itemHandlers, List collect(List> handlers) { if (handlers.isEmpty()) return Collections.emptyList(); List list = new ArrayList<>(); for (var handler : handlers) { - if (!handler.shouldSearchContent()) continue; for (var content : handler.getContents()) { if (content instanceof ItemStack stack && !stack.isEmpty()) { list.add(stack); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/MaceratorLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/MaceratorLogic.java index 427cafee25f..1be615852ae 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/MaceratorLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/MaceratorLogic.java @@ -36,7 +36,6 @@ public enum MaceratorLogic implements GTRecipeType.ICustomRecipeLogic { public @Nullable GTRecipe createCustomRecipe(IRecipeCapabilityHolder holder) { var recipeHandlers = holder.getCapabilitiesFlat(IO.IN, ItemRecipeCapability.CAP); for (var handler : recipeHandlers) { - if (!handler.shouldSearchContent()) continue; for (var content : handler.getContents()) { if (!(content instanceof ItemStack stack)) continue; if (stack.isEmpty()) continue; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/LargeMinerLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/LargeMinerLogic.java index b2ee81ad82d..f99d8de0e6f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/LargeMinerLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/LargeMinerLogic.java @@ -19,6 +19,7 @@ import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.LootParams; import net.minecraft.world.level.storage.loot.functions.ApplyBonusCount; +import net.minecraft.world.level.storage.loot.functions.LootItemFunction; import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; @@ -33,6 +34,8 @@ public class LargeMinerLogic extends MinerLogic { public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(LargeMinerLogic.class, MinerLogic.MANAGED_FIELD_HOLDER); private static final int CHUNK_LENGTH = 16; + private static final LootItemFunction DROP_MULTIPLIER = ApplyBonusCount.addOreBonusCount(Enchantments.BLOCK_FORTUNE) + .build(); @Setter @Getter @@ -132,30 +135,21 @@ protected boolean hasPostProcessing() { @Override protected void dropPostProcessing(NonNullList blockDrops, List outputs, BlockState blockState, LootParams.Builder builder) { + if (getDropCountMultiplier() <= 0) { + super.dropPostProcessing(blockDrops, outputs, blockState, builder); + return; + } + ItemStack fortunePick = this.pickaxeTool.copy(); + fortunePick.enchant(Enchantments.BLOCK_FORTUNE, getDropCountMultiplier()); + LootParams params = builder.withParameter(LootContextParams.TOOL, fortunePick) + .create(LootContextParamSets.BLOCK); + LootContext context = new LootContext.Builder(params).create(null); + for (ItemStack outputStack : outputs) { if (ChemicalHelper.getPrefix(outputStack.getItem()) == TagPrefix.crushed) { - if (getDropCountMultiplier() > 0) { - ItemStack fortunePick = pickaxeTool.copy(); - fortunePick.enchant(Enchantments.BLOCK_FORTUNE, getDropCountMultiplier()); - outputStack = ApplyBonusCount.addOreBonusCount(Enchantments.BLOCK_FORTUNE).build().apply( - outputStack, - new LootContext.Builder(builder.withParameter(LootContextParams.TOOL, fortunePick) - .create(LootContextParamSets.BLOCK)).create(null)); - } + outputStack = DROP_MULTIPLIER.apply(outputStack, context); } blockDrops.add(outputStack); } } - - @Override - protected boolean doPostProcessing(NonNullList blockDrops, BlockState blockState, - LootParams.Builder builder) { - if (!super.doPostProcessing(blockDrops, blockState, builder) && getDropCountMultiplier() > 0) { - for (ItemStack drop : blockDrops) { - if (drop.is(blockState.getBlock().asItem())) continue; - drop.setCount(drop.getCount() * getDropCountMultiplier()); - } - } - return true; - } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/MinerLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/MinerLogic.java index 0bed1c37b2c..a9667e1d68e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/MinerLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/MinerLogic.java @@ -31,7 +31,6 @@ import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; @@ -142,7 +141,6 @@ public MinerLogic(@NotNull IRecipeLogicMachine machine, int fortune, int speed, this.maximumRadius = maximumRadius; this.isDone = false; this.pickaxeTool = GTMaterialItems.TOOL_ITEMS.get(GTMaterials.Neutronium, GTToolType.PICKAXE).get().get(); - this.pickaxeTool.enchant(Enchantments.BLOCK_FORTUNE, fortune); this.capabilitiesProxy = new EnumMap<>(IO.class); this.capabilitiesFlat = new EnumMap<>(IO.class); this.inputItemHandler = new ItemRecipeHandler(IO.IN, @@ -352,7 +350,8 @@ protected int getVoltageTier() { protected boolean doPostProcessing(NonNullList blockDrops, BlockState blockState, LootParams.Builder builder) { - ItemStack oreDrop = blockDrops.get(0); + ItemStack oreDrop = new ItemStack(blockState.getBlock()); + if (oreDrop.isEmpty()) return false; // create dummy recipe handler inputItemHandler.storage.setStackInSlot(0, oreDrop); @@ -360,11 +359,11 @@ protected boolean doPostProcessing(NonNullList blockDrops, BlockState var matches = machine.getRecipeType().searchRecipe(this, r -> RecipeHelper.matchContents(this, r).isSuccess()); - while (matches != null && matches.hasNext()) { + while (matches.hasNext()) { GTRecipe match = matches.next(); if (match == null) continue; - var eut = RecipeHelper.getInputEUt(match); + long eut = match.getInputEUt().getTotalEU(); if (GTUtil.getTierByVoltage(eut) <= getVoltageTier()) { if (RecipeHelper.handleRecipeIO(this, match, IO.OUT, this.chanceCaches).isSuccess()) { blockDrops.clear(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/GTNetwork.java b/src/main/java/com/gregtechceu/gtceu/common/network/GTNetwork.java index 9018e4c8b15..02a559b2b5f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/GTNetwork.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/GTNetwork.java @@ -10,28 +10,99 @@ import com.gregtechceu.gtceu.common.network.packets.prospecting.SPacketProspectBedrockOre; import com.gregtechceu.gtceu.common.network.packets.prospecting.SPacketProspectOre; -import com.lowdragmc.lowdraglib.networking.INetworking; -import com.lowdragmc.lowdraglib.networking.forge.LDLNetworkingImpl; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceKey; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.chunk.LevelChunk; +import net.minecraftforge.network.NetworkDirection; +import net.minecraftforge.network.NetworkEvent; +import net.minecraftforge.network.NetworkRegistry; +import net.minecraftforge.network.PacketDistributor; +import net.minecraftforge.network.simple.SimpleChannel; + +import java.util.Optional; +import java.util.function.Function; public class GTNetwork { - public static final INetworking NETWORK = LDLNetworkingImpl.createNetworking(GTCEu.id("network"), "0.0.1"); + private static final String PROTOCOL_VERSION = "1.0.0"; + private static final SimpleChannel INSTANCE = NetworkRegistry.newSimpleChannel(GTCEu.id("network"), + () -> PROTOCOL_VERSION, PROTOCOL_VERSION::equals, PROTOCOL_VERSION::equals); + + private static int nextPacketId = 0; + + public static void sendToServer(INetPacket packet) { + INSTANCE.sendToServer(packet); + } + + public static void sendToPlayersInLevel(ResourceKey level, INetPacket packet) { + INSTANCE.send(PacketDistributor.DIMENSION.with(() -> level), packet); + } + + public static void sendToPlayersNearPoint(PacketDistributor.TargetPoint point, INetPacket packet) { + INSTANCE.send(PacketDistributor.NEAR.with(() -> point), packet); + } + + public static void sendToAllPlayersTrackingEntity(Entity entity, boolean includeSelf, INetPacket packet) { + INSTANCE.send(includeSelf ? PacketDistributor.TRACKING_ENTITY_AND_SELF.with(() -> entity) : + PacketDistributor.TRACKING_ENTITY.with(() -> entity), packet); + } + + public static void sendToAllPlayersTrackingChunk(LevelChunk chunk, INetPacket packet) { + INSTANCE.send(PacketDistributor.TRACKING_CHUNK.with(() -> chunk), packet); + } + + public static void sendToAll(INetPacket packet) { + INSTANCE.send(PacketDistributor.ALL.noArg(), packet); + } + + public static void sendToPlayer(ServerPlayer player, INetPacket packet) { + INSTANCE.send(PacketDistributor.PLAYER.with(() -> player), packet); + } + + public static void reply(NetworkEvent.Context context, INetPacket packet) { + INSTANCE.reply(packet, context); + } + + public interface INetPacket { + + void encode(FriendlyByteBuf buffer); + + void execute(NetworkEvent.Context context); + } + + public static void register(Class cls, Function decode, + NetworkDirection direction) { + INSTANCE.registerMessage(nextPacketId++, cls, INetPacket::encode, decode, (msg, ctx) -> { + ctx.get().enqueueWork(() -> msg.execute(ctx.get())); + ctx.get().setPacketHandled(true); + }, Optional.ofNullable(direction)); + } public static void init() { - NETWORK.registerC2S(CPacketKeysPressed.class); - NETWORK.registerS2C(SPacketSyncOreVeins.class); - NETWORK.registerS2C(SPacketSyncFluidVeins.class); - NETWORK.registerS2C(SPacketSyncBedrockOreVeins.class); - - NETWORK.registerS2C(SPacketAddHazardZone.class); - NETWORK.registerS2C(SPacketRemoveHazardZone.class); - NETWORK.registerS2C(SPacketSyncHazardZoneStrength.class); - NETWORK.registerS2C(SPacketSyncLevelHazards.class); - NETWORK.registerS2C(SPacketProspectOre.class); - NETWORK.registerS2C(SPacketProspectBedrockFluid.class); - NETWORK.registerS2C(SPacketProspectBedrockOre.class); - NETWORK.registerS2C(SPacketSendWorldID.class); - - NETWORK.registerBoth(SCPacketShareProspection.class); + register(SCPacketMonitorGroupNBTChange.class, SCPacketMonitorGroupNBTChange::new, null); + register(CPacketImageRequest.class, CPacketImageRequest::new, NetworkDirection.PLAY_TO_SERVER); + register(SPacketImageResponse.class, SPacketImageResponse::new, NetworkDirection.PLAY_TO_CLIENT); + + register(CPacketKeysPressed.class, CPacketKeysPressed::new, NetworkDirection.PLAY_TO_SERVER); + register(CPacketKeyDown.class, CPacketKeyDown::new, NetworkDirection.PLAY_TO_SERVER); + + register(SPacketSyncOreVeins.class, SPacketSyncOreVeins::new, NetworkDirection.PLAY_TO_CLIENT); + register(SPacketSyncFluidVeins.class, SPacketSyncFluidVeins::new, NetworkDirection.PLAY_TO_CLIENT); + register(SPacketSyncBedrockOreVeins.class, SPacketSyncBedrockOreVeins::new, NetworkDirection.PLAY_TO_CLIENT); + + register(SPacketAddHazardZone.class, SPacketAddHazardZone::new, NetworkDirection.PLAY_TO_CLIENT); + register(SPacketRemoveHazardZone.class, SPacketRemoveHazardZone::new, NetworkDirection.PLAY_TO_CLIENT); + register(SPacketSyncHazardZoneStrength.class, SPacketSyncHazardZoneStrength::new, + NetworkDirection.PLAY_TO_CLIENT); + register(SPacketSyncLevelHazards.class, SPacketSyncLevelHazards::new, NetworkDirection.PLAY_TO_CLIENT); + register(SPacketProspectOre.class, SPacketProspectOre::new, NetworkDirection.PLAY_TO_CLIENT); + register(SPacketProspectBedrockOre.class, SPacketProspectBedrockOre::new, NetworkDirection.PLAY_TO_CLIENT); + register(SPacketProspectBedrockFluid.class, SPacketProspectBedrockFluid::new, NetworkDirection.PLAY_TO_CLIENT); + register(SPacketSendWorldID.class, SPacketSendWorldID::new, NetworkDirection.PLAY_TO_CLIENT); + register(SPacketNotifyCapeChange.class, SPacketNotifyCapeChange::new, NetworkDirection.PLAY_TO_CLIENT); + register(SCPacketShareProspection.class, SCPacketShareProspection::new, null); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/CPacketImageRequest.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/CPacketImageRequest.java new file mode 100644 index 00000000000..6d91f5f432a --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/CPacketImageRequest.java @@ -0,0 +1,36 @@ +package com.gregtechceu.gtceu.common.network.packets; + +import com.gregtechceu.gtceu.api.misc.ImageCache; +import com.gregtechceu.gtceu.common.network.GTNetwork; + +import net.minecraft.network.FriendlyByteBuf; +import net.minecraftforge.network.NetworkEvent; + +import java.io.IOException; + +public class CPacketImageRequest implements GTNetwork.INetPacket { + + private final String url; + + public CPacketImageRequest(String url) { + this.url = url; + } + + public CPacketImageRequest(FriendlyByteBuf buf) { + this.url = buf.readUtf(); + } + + @Override + public void encode(FriendlyByteBuf buffer) { + buffer.writeUtf(url); + } + + @Override + public void execute(NetworkEvent.Context context) { + ImageCache.queryServerImage(url, image -> { + try { + SPacketImageResponse.sendImage(url, image, context); + } catch (IOException ignored) {} + }); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/CPacketKeyDown.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/CPacketKeyDown.java new file mode 100644 index 00000000000..e34ab68f26b --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/CPacketKeyDown.java @@ -0,0 +1,46 @@ +package com.gregtechceu.gtceu.common.network.packets; + +import com.gregtechceu.gtceu.common.network.GTNetwork; +import com.gregtechceu.gtceu.utils.input.SyncedKeyMapping; + +import net.minecraft.network.FriendlyByteBuf; +import net.minecraftforge.network.NetworkEvent; + +import it.unimi.dsi.fastutil.ints.Int2BooleanMap; +import it.unimi.dsi.fastutil.ints.Int2BooleanOpenHashMap; + +public class CPacketKeyDown implements GTNetwork.INetPacket { + + private final Int2BooleanMap updateKeys; + + public CPacketKeyDown(Int2BooleanMap updateKeys) { + this.updateKeys = updateKeys; + } + + public CPacketKeyDown(FriendlyByteBuf buf) { + this.updateKeys = new Int2BooleanOpenHashMap(); + int size = buf.readInt(); + for (int i = 0; i < size; i++) { + updateKeys.put(buf.readInt(), buf.readBoolean()); + } + } + + @Override + public void encode(FriendlyByteBuf buf) { + buf.writeInt(updateKeys.size()); + for (var entry : updateKeys.int2BooleanEntrySet()) { + buf.writeInt(entry.getIntKey()); + buf.writeBoolean(entry.getBooleanValue()); + } + } + + @Override + public void execute(NetworkEvent.Context context) { + if (context.getSender() != null) { + for (var entry : updateKeys.int2BooleanEntrySet()) { + SyncedKeyMapping keyMapping = SyncedKeyMapping.getFromSyncId(entry.getIntKey()); + keyMapping.serverActivate(entry.getBooleanValue(), context.getSender()); + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/CPacketKeysPressed.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/CPacketKeysPressed.java index 2b3cd3db0f2..6d1e4f36ef6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/CPacketKeysPressed.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/CPacketKeysPressed.java @@ -1,19 +1,20 @@ package com.gregtechceu.gtceu.common.network.packets; +import com.gregtechceu.gtceu.common.network.GTNetwork; import com.gregtechceu.gtceu.utils.input.KeyBind; -import com.lowdragmc.lowdraglib.networking.IHandlerContext; -import com.lowdragmc.lowdraglib.networking.IPacket; - import net.minecraft.network.FriendlyByteBuf; +import net.minecraftforge.network.NetworkEvent; -import com.mojang.datafixers.util.Pair; +import it.unimi.dsi.fastutil.booleans.BooleanBooleanPair; import lombok.NoArgsConstructor; import java.util.List; +@Deprecated +@SuppressWarnings("unchecked") @NoArgsConstructor -public class CPacketKeysPressed implements IPacket { +public class CPacketKeysPressed implements GTNetwork.INetPacket { private Object updateKeys; @@ -21,6 +22,15 @@ public CPacketKeysPressed(List updateKeys) { this.updateKeys = updateKeys; } + public CPacketKeysPressed(FriendlyByteBuf buf) { + this.updateKeys = new BooleanBooleanPair[KeyBind.VALUES.length]; + BooleanBooleanPair[] updateKeys = (BooleanBooleanPair[]) this.updateKeys; + int size = buf.readVarInt(); + for (int i = 0; i < size; i++) { + updateKeys[buf.readVarInt()] = BooleanBooleanPair.of(buf.readBoolean(), buf.readBoolean()); + } + } + @Override public void encode(FriendlyByteBuf buf) { List updateKeys = (List) this.updateKeys; @@ -33,24 +43,14 @@ public void encode(FriendlyByteBuf buf) { } @Override - public void decode(FriendlyByteBuf buf) { - this.updateKeys = new Pair[KeyBind.VALUES.length]; - Pair[] updateKeys = (Pair[]) this.updateKeys; - int size = buf.readVarInt(); - for (int i = 0; i < size; i++) { - updateKeys[buf.readVarInt()] = Pair.of(buf.readBoolean(), buf.readBoolean()); - } - } - - @Override - public void execute(IHandlerContext handler) { - if (handler.getPlayer() != null) { + public void execute(NetworkEvent.Context context) { + if (context.getSender() != null) { KeyBind[] keybinds = KeyBind.VALUES; - Pair[] updateKeys = (Pair[]) this.updateKeys; + BooleanBooleanPair[] updateKeys = (BooleanBooleanPair[]) this.updateKeys; for (int i = 0; i < updateKeys.length; i++) { - Pair pair = updateKeys[i]; + BooleanBooleanPair pair = updateKeys[i]; if (pair != null) { - keybinds[i].update(pair.getFirst(), pair.getSecond(), handler.getPlayer()); + keybinds[i].update(pair.firstBoolean(), pair.secondBoolean(), context.getSender()); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SCPacketMonitorGroupNBTChange.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SCPacketMonitorGroupNBTChange.java new file mode 100644 index 00000000000..9b7aa42c088 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SCPacketMonitorGroupNBTChange.java @@ -0,0 +1,64 @@ +package com.gregtechceu.gtceu.common.network.packets; + +import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.CentralMonitorMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.monitor.MonitorGroup; +import com.gregtechceu.gtceu.common.network.GTNetwork; + +import net.minecraft.client.Minecraft; +import net.minecraft.core.BlockPos; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraftforge.common.util.LogicalSidedProvider; +import net.minecraftforge.network.NetworkEvent; + +import java.util.Optional; + +public class SCPacketMonitorGroupNBTChange implements GTNetwork.INetPacket { + + private final ItemStack stack; + private final int monitorGroupId; + private final BlockPos pos; + + public SCPacketMonitorGroupNBTChange(ItemStack stack, MonitorGroup group, CentralMonitorMachine machine) { + this.stack = stack; + this.monitorGroupId = machine.getMonitorGroups().indexOf(group); + this.pos = machine.getPos(); + } + + public SCPacketMonitorGroupNBTChange(FriendlyByteBuf buf) { + this.stack = buf.readItem(); + this.monitorGroupId = buf.readVarInt(); + this.pos = buf.readBlockPos(); + } + + @Override + public void encode(FriendlyByteBuf buffer) { + buffer.writeItemStack(stack, false); + buffer.writeVarInt(monitorGroupId); + buffer.writeBlockPos(pos); + } + + @Override + public void execute(NetworkEvent.Context context) { + Level level = LogicalSidedProvider.CLIENTWORLD.get(context.getDirection().getReceptionSide()) + .or(() -> Optional.ofNullable(context.getSender()).map(ServerPlayer::level)) + .orElse(null); + if (level == null) return; + + MetaMachine machine = MetaMachine.getMachine(level, pos); + if (machine instanceof CentralMonitorMachine centralMonitor) { + centralMonitor.getMonitorGroups().get(monitorGroupId) + .getItemStackHandler().setStackInSlot(0, stack); + } + } + + private static class ClientCallWrapper { + + private static Level getClientLevel() { + return Minecraft.getInstance().level; + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SCPacketShareProspection.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SCPacketShareProspection.java index 091fa9a2096..ba8f80f3c25 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SCPacketShareProspection.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SCPacketShareProspection.java @@ -4,9 +4,6 @@ import com.gregtechceu.gtceu.common.network.GTNetwork; import com.gregtechceu.gtceu.integration.map.ClientCacheManager; -import com.lowdragmc.lowdraglib.networking.IHandlerContext; -import com.lowdragmc.lowdraglib.networking.IPacket; - import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.PlayerInfo; import net.minecraft.core.registries.Registries; @@ -15,13 +12,16 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.Level; +import net.minecraftforge.network.NetworkDirection; +import net.minecraftforge.network.NetworkEvent; import lombok.AllArgsConstructor; +import java.util.Objects; import java.util.UUID; @AllArgsConstructor -public class SCPacketShareProspection implements IPacket { +public class SCPacketShareProspection implements GTNetwork.INetPacket { private UUID sender; private UUID receiver; @@ -32,8 +32,20 @@ public class SCPacketShareProspection implements IPacket { private CompoundTag data; private boolean first; + @SuppressWarnings("unused") public SCPacketShareProspection() {} + public SCPacketShareProspection(FriendlyByteBuf buf) { + sender = buf.readUUID(); + receiver = buf.readUUID(); + cacheName = buf.readUtf(); + key = buf.readUtf(); + isDimCache = buf.readBoolean(); + dimension = buf.readResourceKey(Registries.DIMENSION); + data = buf.readNbt(); + first = buf.readBoolean(); + } + @Override public void encode(FriendlyByteBuf buf) { buf.writeUUID(sender); @@ -47,22 +59,11 @@ public void encode(FriendlyByteBuf buf) { } @Override - public void decode(FriendlyByteBuf buf) { - sender = buf.readUUID(); - receiver = buf.readUUID(); - cacheName = buf.readUtf(); - key = buf.readUtf(); - isDimCache = buf.readBoolean(); - dimension = buf.readResourceKey(Registries.DIMENSION); - data = buf.readNbt(); - first = buf.readBoolean(); - } - - @Override - public void execute(IHandlerContext handler) { - if (handler.isClient()) { + public void execute(NetworkEvent.Context context) { + if (context.getDirection() == NetworkDirection.PLAY_TO_CLIENT) { if (first) { - PlayerInfo senderInfo = Minecraft.getInstance().getConnection().getPlayerInfo(sender); + PlayerInfo senderInfo = Objects.requireNonNull(Minecraft.getInstance().getConnection()) + .getPlayerInfo(sender); if (senderInfo == null) { return; } @@ -70,6 +71,7 @@ public void execute(IHandlerContext handler) { Component playerName = senderInfo.getTabListDisplayName() != null ? senderInfo.getTabListDisplayName() : Component.literal(senderInfo.getProfile().getName()); + assert Minecraft.getInstance().player != null; Minecraft.getInstance().player.sendSystemMessage(Component .translatable("command.gtceu.share_prospection_data.notification", playerName)); } @@ -79,8 +81,7 @@ public void execute(IHandlerContext handler) { cacheName, key, isDimCache, dimension, data, first); - GTNetwork.NETWORK.sendToPlayer(newPacket, - GTCEu.getMinecraftServer().getPlayerList().getPlayer(receiver)); + GTNetwork.sendToPlayer(GTCEu.getMinecraftServer().getPlayerList().getPlayer(receiver), newPacket); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketImageResponse.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketImageResponse.java new file mode 100644 index 00000000000..7a1ecb7071c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketImageResponse.java @@ -0,0 +1,75 @@ +package com.gregtechceu.gtceu.common.network.packets; + +import com.gregtechceu.gtceu.client.util.ClientImageCache; +import com.gregtechceu.gtceu.common.network.GTNetwork; +import com.gregtechceu.gtceu.utils.GTMath; + +import net.minecraft.network.FriendlyByteBuf; +import net.minecraftforge.network.NetworkEvent; + +import org.apache.commons.lang3.ArrayUtils; + +import java.io.IOException; + +public class SPacketImageResponse implements GTNetwork.INetPacket { + + private static final int MAX_BYTES_PER_PACKET = 120000; + + private final byte[] imagePart; + private final String url; + private final int index; + private final int totalSize; + + public SPacketImageResponse(String url, byte[] imagePart, int index, int totalSize) { + this.url = url; + this.imagePart = imagePart; + this.index = index; + this.totalSize = totalSize; + } + + public SPacketImageResponse(FriendlyByteBuf buf) { + this.index = buf.readInt(); + this.totalSize = buf.readInt(); + this.url = buf.readUtf(); + this.imagePart = buf.readByteArray(); + } + + @Override + public void encode(FriendlyByteBuf buffer) { + buffer.writeInt(index); + buffer.writeInt(totalSize); + buffer.writeUtf(url); + buffer.writeByteArray(imagePart); + } + + @Override + public void execute(NetworkEvent.Context context) { + if (imagePart == null) { + return; + } + try { + ClientImageCache.receiveImagePart(url, imagePart, index, totalSize); + } catch (IOException ignored) {} + } + + public static void sendImage(String url, byte[] imageBytes, NetworkEvent.Context context) throws IOException { + if (imageBytes.length < MAX_BYTES_PER_PACKET) { + GTNetwork.reply(context, new SPacketImageResponse(url, imageBytes, 0, 1)); + } else { + int packetCount = GTMath.ceilDiv(imageBytes.length, MAX_BYTES_PER_PACKET); + int arrayIndex = 0; + + for (int i = 0; i < packetCount; i++) { + int remaining = imageBytes.length - arrayIndex; + if (remaining <= 0) { + break; + } + + byte[] part = ArrayUtils.subarray(imageBytes, arrayIndex, arrayIndex + MAX_BYTES_PER_PACKET); + GTNetwork.reply(context, new SPacketImageResponse(url, part, i, packetCount)); + + arrayIndex += MAX_BYTES_PER_PACKET; + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketNotifyCapeChange.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketNotifyCapeChange.java new file mode 100644 index 00000000000..2409ba2e25b --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketNotifyCapeChange.java @@ -0,0 +1,43 @@ +package com.gregtechceu.gtceu.common.network.packets; + +import com.gregtechceu.gtceu.api.cosmetics.CapeRegistry; +import com.gregtechceu.gtceu.common.network.GTNetwork; + +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.network.NetworkDirection; +import net.minecraftforge.network.NetworkEvent; + +import lombok.AllArgsConstructor; +import lombok.NoArgsConstructor; + +import java.util.UUID; + +@NoArgsConstructor +@AllArgsConstructor +public class SPacketNotifyCapeChange implements GTNetwork.INetPacket { + + public UUID uuid; + public ResourceLocation cape; + + public SPacketNotifyCapeChange(FriendlyByteBuf buf) { + uuid = buf.readUUID(); + cape = buf.readBoolean() ? buf.readResourceLocation() : null; + } + + @Override + public void encode(FriendlyByteBuf buf) { + buf.writeUUID(this.uuid); + buf.writeBoolean(this.cape != null); + if (this.cape != null) { + buf.writeResourceLocation(this.cape); + } + } + + @Override + public void execute(NetworkEvent.Context context) { + if (context.getDirection() == NetworkDirection.PLAY_TO_CLIENT) { + CapeRegistry.giveRawCape(uuid, cape); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSendWorldID.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSendWorldID.java index 6bc3b54513d..2db91dead03 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSendWorldID.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSendWorldID.java @@ -1,32 +1,30 @@ package com.gregtechceu.gtceu.common.network.packets; import com.gregtechceu.gtceu.common.capability.WorldIDSaveData; +import com.gregtechceu.gtceu.common.network.GTNetwork; import com.gregtechceu.gtceu.integration.map.ClientCacheManager; -import com.lowdragmc.lowdraglib.networking.IHandlerContext; -import com.lowdragmc.lowdraglib.networking.IPacket; - import net.minecraft.network.FriendlyByteBuf; +import net.minecraftforge.network.NetworkEvent; import lombok.NoArgsConstructor; @NoArgsConstructor -public class SPacketSendWorldID implements IPacket { +public class SPacketSendWorldID implements GTNetwork.INetPacket { private String worldId; - @Override - public void encode(FriendlyByteBuf buf) { - buf.writeUtf(WorldIDSaveData.getWorldID()); + public SPacketSendWorldID(FriendlyByteBuf buf) { + worldId = buf.readUtf(); } @Override - public void decode(FriendlyByteBuf buf) { - this.worldId = buf.readUtf(); + public void encode(FriendlyByteBuf buf) { + buf.writeUtf(WorldIDSaveData.getWorldID()); } @Override - public void execute(IHandlerContext handler) { + public void execute(NetworkEvent.Context context) { ClientCacheManager.init(worldId); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSyncBedrockOreVeins.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSyncBedrockOreVeins.java index d74d9596179..05fb72d1f39 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSyncBedrockOreVeins.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSyncBedrockOreVeins.java @@ -4,9 +4,7 @@ import com.gregtechceu.gtceu.api.data.worldgen.bedrockore.BedrockOreDefinition; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.client.ClientProxy; - -import com.lowdragmc.lowdraglib.networking.IHandlerContext; -import com.lowdragmc.lowdraglib.networking.IPacket; +import com.gregtechceu.gtceu.common.network.GTNetwork; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtOps; @@ -14,6 +12,7 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.RegistryOps; import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.network.NetworkEvent; import lombok.RequiredArgsConstructor; @@ -22,14 +21,27 @@ import java.util.stream.Stream; @RequiredArgsConstructor -public class SPacketSyncBedrockOreVeins implements IPacket { +public class SPacketSyncBedrockOreVeins implements GTNetwork.INetPacket { private final Map veins; + @SuppressWarnings("unused") public SPacketSyncBedrockOreVeins() { this.veins = new HashMap<>(); } + public SPacketSyncBedrockOreVeins(FriendlyByteBuf buf) { + this(); + RegistryOps ops = RegistryOps.create(NbtOps.INSTANCE, GTRegistries.builtinRegistry()); + Stream.generate(() -> { + ResourceLocation id = buf.readResourceLocation(); + CompoundTag tag = buf.readAnySizeNbt(); + BedrockOreDefinition def = BedrockOreDefinition.FULL_CODEC.parse(ops, tag).getOrThrow(false, + GTCEu.LOGGER::error); + return Map.entry(id, def); + }).limit(buf.readVarInt()).forEach(entry -> veins.put(entry.getKey(), entry.getValue())); + } + @Override public void encode(FriendlyByteBuf buf) { RegistryOps ops = RegistryOps.create(NbtOps.INSTANCE, GTRegistries.builtinRegistry()); @@ -44,19 +56,7 @@ public void encode(FriendlyByteBuf buf) { } @Override - public void decode(FriendlyByteBuf buf) { - RegistryOps ops = RegistryOps.create(NbtOps.INSTANCE, GTRegistries.builtinRegistry()); - Stream.generate(() -> { - ResourceLocation id = buf.readResourceLocation(); - CompoundTag tag = buf.readAnySizeNbt(); - BedrockOreDefinition def = BedrockOreDefinition.FULL_CODEC.parse(ops, tag).getOrThrow(false, - GTCEu.LOGGER::error); - return Map.entry(id, def); - }).limit(buf.readVarInt()).forEach(entry -> veins.put(entry.getKey(), entry.getValue())); - } - - @Override - public void execute(IHandlerContext handler) { + public void execute(NetworkEvent.Context context) { ClientProxy.CLIENT_BEDROCK_ORE_VEINS.clear(); ClientProxy.CLIENT_BEDROCK_ORE_VEINS.putAll(veins); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSyncFluidVeins.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSyncFluidVeins.java index 450006be88e..ef757939c89 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSyncFluidVeins.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSyncFluidVeins.java @@ -4,9 +4,7 @@ import com.gregtechceu.gtceu.api.data.worldgen.bedrockfluid.BedrockFluidDefinition; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.client.ClientProxy; - -import com.lowdragmc.lowdraglib.networking.IHandlerContext; -import com.lowdragmc.lowdraglib.networking.IPacket; +import com.gregtechceu.gtceu.common.network.GTNetwork; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtOps; @@ -14,6 +12,7 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.RegistryOps; import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.network.NetworkEvent; import lombok.RequiredArgsConstructor; @@ -22,14 +21,27 @@ import java.util.stream.Stream; @RequiredArgsConstructor -public class SPacketSyncFluidVeins implements IPacket { +public class SPacketSyncFluidVeins implements GTNetwork.INetPacket { private final Map veins; + @SuppressWarnings("unused") public SPacketSyncFluidVeins() { this.veins = new HashMap<>(); } + public SPacketSyncFluidVeins(FriendlyByteBuf buf) { + this(); + RegistryOps ops = RegistryOps.create(NbtOps.INSTANCE, GTRegistries.builtinRegistry()); + Stream.generate(() -> { + ResourceLocation id = buf.readResourceLocation(); + CompoundTag tag = buf.readAnySizeNbt(); + BedrockFluidDefinition def = BedrockFluidDefinition.FULL_CODEC.parse(ops, tag).getOrThrow(false, + GTCEu.LOGGER::error); + return Map.entry(id, def); + }).limit(buf.readVarInt()).forEach(entry -> veins.put(entry.getKey(), entry.getValue())); + } + @Override public void encode(FriendlyByteBuf buf) { RegistryOps ops = RegistryOps.create(NbtOps.INSTANCE, GTRegistries.builtinRegistry()); @@ -44,19 +56,7 @@ public void encode(FriendlyByteBuf buf) { } @Override - public void decode(FriendlyByteBuf buf) { - RegistryOps ops = RegistryOps.create(NbtOps.INSTANCE, GTRegistries.builtinRegistry()); - Stream.generate(() -> { - ResourceLocation id = buf.readResourceLocation(); - CompoundTag tag = buf.readAnySizeNbt(); - BedrockFluidDefinition def = BedrockFluidDefinition.FULL_CODEC.parse(ops, tag).getOrThrow(false, - GTCEu.LOGGER::error); - return Map.entry(id, def); - }).limit(buf.readVarInt()).forEach(entry -> veins.put(entry.getKey(), entry.getValue())); - } - - @Override - public void execute(IHandlerContext handler) { + public void execute(NetworkEvent.Context context) { ClientProxy.CLIENT_FLUID_VEINS.clear(); ClientProxy.CLIENT_FLUID_VEINS.putAll(veins); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSyncOreVeins.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSyncOreVeins.java index 522df81bab8..2ce18a9ef3a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSyncOreVeins.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSyncOreVeins.java @@ -4,17 +4,16 @@ import com.gregtechceu.gtceu.api.data.worldgen.GTOreDefinition; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.client.ClientProxy; +import com.gregtechceu.gtceu.common.network.GTNetwork; import com.gregtechceu.gtceu.integration.map.cache.client.GTClientCache; -import com.lowdragmc.lowdraglib.networking.IHandlerContext; -import com.lowdragmc.lowdraglib.networking.IPacket; - import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtOps; import net.minecraft.nbt.Tag; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.RegistryOps; import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.network.NetworkEvent; import lombok.RequiredArgsConstructor; @@ -23,14 +22,26 @@ import java.util.stream.Stream; @RequiredArgsConstructor -public class SPacketSyncOreVeins implements IPacket { +public class SPacketSyncOreVeins implements GTNetwork.INetPacket { private final Map veins; + @SuppressWarnings("unused") public SPacketSyncOreVeins() { this.veins = new HashMap<>(); } + public SPacketSyncOreVeins(FriendlyByteBuf buf) { + this(); + RegistryOps ops = RegistryOps.create(NbtOps.INSTANCE, GTRegistries.builtinRegistry()); + Stream.generate(() -> { + ResourceLocation id = buf.readResourceLocation(); + CompoundTag tag = buf.readAnySizeNbt(); + GTOreDefinition def = GTOreDefinition.FULL_CODEC.parse(ops, tag).getOrThrow(false, GTCEu.LOGGER::error); + return Map.entry(id, def); + }).limit(buf.readVarInt()).forEach(entry -> veins.put(entry.getKey(), entry.getValue())); + } + @Override public void encode(FriendlyByteBuf buf) { RegistryOps ops = RegistryOps.create(NbtOps.INSTANCE, GTRegistries.builtinRegistry()); @@ -45,18 +56,7 @@ public void encode(FriendlyByteBuf buf) { } @Override - public void decode(FriendlyByteBuf buf) { - RegistryOps ops = RegistryOps.create(NbtOps.INSTANCE, GTRegistries.builtinRegistry()); - Stream.generate(() -> { - ResourceLocation id = buf.readResourceLocation(); - CompoundTag tag = buf.readAnySizeNbt(); - GTOreDefinition def = GTOreDefinition.FULL_CODEC.parse(ops, tag).getOrThrow(false, GTCEu.LOGGER::error); - return Map.entry(id, def); - }).limit(buf.readVarInt()).forEach(entry -> veins.put(entry.getKey(), entry.getValue())); - } - - @Override - public void execute(IHandlerContext handler) { + public void execute(NetworkEvent.Context context) { ClientProxy.CLIENT_ORE_VEINS.clear(); ClientProxy.CLIENT_ORE_VEINS.putAll(veins); GTClientCache.instance.oreVeinDefinitionsChanged(ClientProxy.CLIENT_ORE_VEINS); diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketAddHazardZone.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketAddHazardZone.java index 7df9db61019..e60d1ab648b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketAddHazardZone.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketAddHazardZone.java @@ -2,23 +2,28 @@ import com.gregtechceu.gtceu.client.EnvironmentalHazardClientHandler; import com.gregtechceu.gtceu.common.capability.EnvironmentalHazardSavedData; - -import com.lowdragmc.lowdraglib.networking.IHandlerContext; -import com.lowdragmc.lowdraglib.networking.IPacket; +import com.gregtechceu.gtceu.common.network.GTNetwork; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.level.ChunkPos; +import net.minecraftforge.network.NetworkDirection; +import net.minecraftforge.network.NetworkEvent; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; @NoArgsConstructor @AllArgsConstructor -public class SPacketAddHazardZone implements IPacket { +public class SPacketAddHazardZone implements GTNetwork.INetPacket { private ChunkPos pos; private EnvironmentalHazardSavedData.HazardZone zone; + public SPacketAddHazardZone(FriendlyByteBuf buf) { + pos = buf.readChunkPos(); + zone = EnvironmentalHazardSavedData.HazardZone.fromNetwork(buf); + } + @Override public void encode(FriendlyByteBuf buf) { buf.writeChunkPos(pos); @@ -26,14 +31,8 @@ public void encode(FriendlyByteBuf buf) { } @Override - public void decode(FriendlyByteBuf buf) { - pos = buf.readChunkPos(); - zone = EnvironmentalHazardSavedData.HazardZone.fromNetwork(buf); - } - - @Override - public void execute(IHandlerContext handler) { - if (handler.isClient()) { + public void execute(NetworkEvent.Context context) { + if (context.getDirection() == NetworkDirection.PLAY_TO_CLIENT) { EnvironmentalHazardClientHandler.INSTANCE.addHazardZone(pos, zone); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketRemoveHazardZone.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketRemoveHazardZone.java index 1aac8d808af..06d5fc6974d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketRemoveHazardZone.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketRemoveHazardZone.java @@ -1,35 +1,34 @@ package com.gregtechceu.gtceu.common.network.packets.hazard; import com.gregtechceu.gtceu.client.EnvironmentalHazardClientHandler; - -import com.lowdragmc.lowdraglib.networking.IHandlerContext; -import com.lowdragmc.lowdraglib.networking.IPacket; +import com.gregtechceu.gtceu.common.network.GTNetwork; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.level.ChunkPos; +import net.minecraftforge.network.NetworkDirection; +import net.minecraftforge.network.NetworkEvent; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; @NoArgsConstructor @AllArgsConstructor -public class SPacketRemoveHazardZone implements IPacket { +public class SPacketRemoveHazardZone implements GTNetwork.INetPacket { public ChunkPos pos; - @Override - public void encode(FriendlyByteBuf buf) { - buf.writeChunkPos(pos); + public SPacketRemoveHazardZone(FriendlyByteBuf buf) { + pos = buf.readChunkPos(); } @Override - public void decode(FriendlyByteBuf buf) { - pos = buf.readChunkPos(); + public void encode(FriendlyByteBuf buf) { + buf.writeChunkPos(pos); } @Override - public void execute(IHandlerContext handler) { - if (handler.isClient()) { + public void execute(NetworkEvent.Context context) { + if (context.getDirection() == NetworkDirection.PLAY_TO_CLIENT) { EnvironmentalHazardClientHandler.INSTANCE.removeHazardZone(pos); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketSyncHazardZoneStrength.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketSyncHazardZoneStrength.java index d6df530483f..a5bcb9c1e48 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketSyncHazardZoneStrength.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketSyncHazardZoneStrength.java @@ -1,23 +1,28 @@ package com.gregtechceu.gtceu.common.network.packets.hazard; import com.gregtechceu.gtceu.client.EnvironmentalHazardClientHandler; - -import com.lowdragmc.lowdraglib.networking.IHandlerContext; -import com.lowdragmc.lowdraglib.networking.IPacket; +import com.gregtechceu.gtceu.common.network.GTNetwork; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.level.ChunkPos; +import net.minecraftforge.network.NetworkDirection; +import net.minecraftforge.network.NetworkEvent; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; @NoArgsConstructor @AllArgsConstructor -public class SPacketSyncHazardZoneStrength implements IPacket { +public class SPacketSyncHazardZoneStrength implements GTNetwork.INetPacket { public ChunkPos pos; public float newAmount; + public SPacketSyncHazardZoneStrength(FriendlyByteBuf buf) { + pos = buf.readChunkPos(); + this.newAmount = buf.readFloat(); + } + @Override public void encode(FriendlyByteBuf buf) { buf.writeChunkPos(pos); @@ -25,14 +30,8 @@ public void encode(FriendlyByteBuf buf) { } @Override - public void decode(FriendlyByteBuf buf) { - pos = buf.readChunkPos(); - this.newAmount = buf.readFloat(); - } - - @Override - public void execute(IHandlerContext handler) { - if (handler.isClient()) { + public void execute(NetworkEvent.Context context) { + if (context.getDirection() == NetworkDirection.PLAY_TO_CLIENT) { EnvironmentalHazardClientHandler.INSTANCE.updateHazardStrength(pos, newAmount); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketSyncLevelHazards.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketSyncLevelHazards.java index 8a16adabfdb..66be221fd81 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketSyncLevelHazards.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketSyncLevelHazards.java @@ -2,12 +2,12 @@ import com.gregtechceu.gtceu.client.EnvironmentalHazardClientHandler; import com.gregtechceu.gtceu.common.capability.EnvironmentalHazardSavedData; - -import com.lowdragmc.lowdraglib.networking.IHandlerContext; -import com.lowdragmc.lowdraglib.networking.IPacket; +import com.gregtechceu.gtceu.common.network.GTNetwork; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.level.ChunkPos; +import net.minecraftforge.network.NetworkDirection; +import net.minecraftforge.network.NetworkEvent; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; @@ -18,10 +18,18 @@ @NoArgsConstructor @AllArgsConstructor -public class SPacketSyncLevelHazards implements IPacket { +public class SPacketSyncLevelHazards implements GTNetwork.INetPacket { private Map map; + public SPacketSyncLevelHazards(FriendlyByteBuf buf) { + map = Stream.generate(() -> { + ChunkPos pos = buf.readChunkPos(); + var zone = EnvironmentalHazardSavedData.HazardZone.fromNetwork(buf); + return Map.entry(pos, zone); + }).limit(buf.readVarInt()).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + } + @Override public void encode(FriendlyByteBuf buf) { buf.writeVarInt(map.size()); @@ -32,17 +40,8 @@ public void encode(FriendlyByteBuf buf) { } @Override - public void decode(FriendlyByteBuf buf) { - map = Stream.generate(() -> { - ChunkPos pos = buf.readChunkPos(); - var zone = EnvironmentalHazardSavedData.HazardZone.fromNetwork(buf); - return Map.entry(pos, zone); - }).limit(buf.readVarInt()).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); - } - - @Override - public void execute(IHandlerContext handler) { - if (handler.isClient()) { + public void execute(NetworkEvent.Context context) { + if (context.getDirection() == NetworkDirection.PLAY_TO_CLIENT) { EnvironmentalHazardClientHandler.INSTANCE.updateHazardMap(this.map); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspect.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspect.java index bbdda38f3d1..1264173ca23 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspect.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspect.java @@ -1,20 +1,20 @@ package com.gregtechceu.gtceu.common.network.packets.prospecting; -import com.lowdragmc.lowdraglib.networking.IHandlerContext; -import com.lowdragmc.lowdraglib.networking.IPacket; +import com.gregtechceu.gtceu.common.network.GTNetwork; import net.minecraft.core.BlockPos; import net.minecraft.core.registries.Registries; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.Level; +import net.minecraftforge.network.NetworkEvent; import com.google.common.collect.HashBasedTable; import com.google.common.collect.Table; import java.util.Collection; -public abstract class SPacketProspect implements IPacket { +public abstract class SPacketProspect implements GTNetwork.INetPacket { protected final Table, BlockPos, T> data; @@ -51,6 +51,20 @@ protected SPacketProspect(ResourceKey key, BlockPos position, T prospecte data.put(key, position, prospected); } + public SPacketProspect(FriendlyByteBuf buf) { + this(); + var rowCount = buf.readInt(); + for (int i = 0; i < rowCount; i++) { + var rowKey = buf.readResourceKey(Registries.DIMENSION); + var entryCount = buf.readInt(); + for (int j = 0; j < entryCount; j++) { + var blockPos = buf.readBlockPos(); + var t = decodeData(buf); + data.put(rowKey, blockPos, t); + } + } + } + public abstract void encodeData(FriendlyByteBuf buf, T data); public abstract T decodeData(FriendlyByteBuf buf); @@ -69,19 +83,5 @@ public void encode(FriendlyByteBuf buf) { } @Override - public void decode(FriendlyByteBuf buf) { - var rowCount = buf.readInt(); - for (int i = 0; i < rowCount; i++) { - var rowKey = buf.readResourceKey(Registries.DIMENSION); - var entryCount = buf.readInt(); - for (int j = 0; j < entryCount; j++) { - var blockPos = buf.readBlockPos(); - var t = decodeData(buf); - data.put(rowKey, blockPos, t); - } - } - } - - @Override - public abstract void execute(IHandlerContext handler); + public abstract void execute(NetworkEvent.Context context); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspectBedrockFluid.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspectBedrockFluid.java index 92f06679e1f..0beb48db846 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspectBedrockFluid.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspectBedrockFluid.java @@ -3,21 +3,26 @@ import com.gregtechceu.gtceu.api.gui.misc.ProspectorMode; import com.gregtechceu.gtceu.integration.map.cache.client.GTClientCache; -import com.lowdragmc.lowdraglib.networking.IHandlerContext; - import net.minecraft.core.BlockPos; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.Level; +import net.minecraftforge.network.NetworkEvent; import java.util.Collection; public class SPacketProspectBedrockFluid extends SPacketProspect { + @SuppressWarnings("unused") public SPacketProspectBedrockFluid() { super(); } + public SPacketProspectBedrockFluid(FriendlyByteBuf buf) { + super(buf); + } + + @SuppressWarnings("unused") public SPacketProspectBedrockFluid(ResourceKey key, Collection positions, Collection prospected) { super(key, positions, prospected); @@ -38,7 +43,7 @@ public ProspectorMode.FluidInfo decodeData(FriendlyByteBuf buf) { } @Override - public void execute(IHandlerContext handler) { + public void execute(NetworkEvent.Context context) { data.rowMap().forEach((level, fluids) -> fluids .forEach((blockPos, fluid) -> GTClientCache.instance.addFluid(level, blockPos.getX() >> 4, blockPos.getZ() >> 4, fluid))); diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspectBedrockOre.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspectBedrockOre.java index 27b52e5f268..2ee47f2d3d8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspectBedrockOre.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspectBedrockOre.java @@ -2,16 +2,20 @@ import com.gregtechceu.gtceu.api.gui.misc.ProspectorMode; -import com.lowdragmc.lowdraglib.networking.IHandlerContext; - import net.minecraft.network.FriendlyByteBuf; +import net.minecraftforge.network.NetworkEvent; public class SPacketProspectBedrockOre extends SPacketProspect { + @SuppressWarnings("unused") public SPacketProspectBedrockOre() { super(); } + public SPacketProspectBedrockOre(FriendlyByteBuf buf) { + super(buf); + } + @Override public void encodeData(FriendlyByteBuf buf, ProspectorMode.OreInfo data) { ProspectorMode.BEDROCK_ORE.serialize(data, buf); @@ -23,7 +27,7 @@ public ProspectorMode.OreInfo decodeData(FriendlyByteBuf buf) { } @Override - public void execute(IHandlerContext handler) { + public void execute(NetworkEvent.Context context) { // todo: add cache for bedrock ore veins } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspectOre.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspectOre.java index 1cdc440af91..bd3609d7ee0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspectOre.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspectOre.java @@ -3,20 +3,24 @@ import com.gregtechceu.gtceu.api.data.worldgen.ores.GeneratedVeinMetadata; import com.gregtechceu.gtceu.integration.map.cache.client.GTClientCache; -import com.lowdragmc.lowdraglib.networking.IHandlerContext; - import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.Level; +import net.minecraftforge.network.NetworkEvent; import java.util.Collection; public class SPacketProspectOre extends SPacketProspect { + @SuppressWarnings("unused") public SPacketProspectOre() { super(); } + public SPacketProspectOre(FriendlyByteBuf buf) { + super(buf); + } + public SPacketProspectOre(ResourceKey key, Collection veins) { super(key, veins.stream().map(GeneratedVeinMetadata::center).toList(), veins); } @@ -32,7 +36,7 @@ public GeneratedVeinMetadata decodeData(FriendlyByteBuf buf) { } @Override - public void execute(IHandlerContext handler) { + public void execute(NetworkEvent.Context context) { data.rowMap().forEach((level, ores) -> ores .forEach((blockPos, vein) -> GTClientCache.instance.addVein(level, blockPos.getX() >> 4, blockPos.getZ() >> 4, vein))); diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/cable/CableData.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/cable/CableData.java index e45ef0c9b78..92cd9b26a9d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/cable/CableData.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/cable/CableData.java @@ -2,19 +2,13 @@ import com.gregtechceu.gtceu.api.data.chemical.material.properties.WireProperties; import com.gregtechceu.gtceu.api.pipenet.IAttachData; +import com.gregtechceu.gtceu.utils.GTMath; import net.minecraft.core.Direction; import lombok.Getter; import lombok.experimental.Accessors; -import java.util.Objects; - -/** - * @author KilaBash - * @date 2023/3/1 - * @implNote CableData - */ @Accessors(fluent = true) public class CableData implements IAttachData { @@ -56,6 +50,6 @@ public boolean equals(Object obj) { @Override public int hashCode() { - return Objects.hash(properties, connections); + return GTMath.hashInts(properties.hashCode(), connections); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/cable/Insulation.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/cable/Insulation.java index 8b2af39e036..b149d5df98c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/cable/Insulation.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/cable/Insulation.java @@ -85,9 +85,9 @@ public ResourceLocation type() { public PipeModel createPipeModel(Material material) { Supplier wireSideTexturePath = () -> MaterialIconType.wire - .getBlockTexturePath(material.getMaterialIconSet(), true).withSuffix("_side"); + .getBlockTexturePath(material.getMaterialIconSet(), "side", true); Supplier wireEndTexturePath = () -> MaterialIconType.wire - .getBlockTexturePath(material.getMaterialIconSet(), true).withSuffix("_end"); + .getBlockTexturePath(material.getMaterialIconSet(), "end", true); Supplier<@Nullable ResourceLocation> wireSideOverlayTexturePath = () -> MaterialIconType.wire .getBlockTexturePath(material.getMaterialIconSet(), "side_overlay", true); Supplier<@Nullable ResourceLocation> wireEndOverlayTexturePath = () -> MaterialIconType.wire diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/duct/DuctPipeProperties.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/duct/DuctPipeProperties.java index 2812f1b8320..5d77d05698e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/duct/DuctPipeProperties.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/duct/DuctPipeProperties.java @@ -3,8 +3,6 @@ import lombok.Getter; import lombok.Setter; -import java.util.Objects; - public class DuctPipeProperties { /** @@ -35,7 +33,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(transferRate); + return Float.hashCode(transferRate); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/FluidPipeData.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/FluidPipeData.java index faa0980a9b7..74094435d10 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/FluidPipeData.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/FluidPipeData.java @@ -2,19 +2,13 @@ import com.gregtechceu.gtceu.api.data.chemical.material.properties.FluidPipeProperties; import com.gregtechceu.gtceu.api.pipenet.IAttachData; +import com.gregtechceu.gtceu.utils.GTMath; import net.minecraft.core.Direction; import lombok.Getter; import lombok.experimental.Accessors; -import java.util.Objects; - -/** - * @author KilaBash - * @date 2023/3/1 - * @implNote CableData - */ @Accessors(fluent = true) public class FluidPipeData implements IAttachData { @@ -56,6 +50,6 @@ public boolean equals(Object obj) { @Override public int hashCode() { - return Objects.hash(properties, connections); + return GTMath.hashInts(properties.hashCode(), connections); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/FluidPipeNet.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/FluidPipeNet.java index 6402827d306..1bb6ddef095 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/FluidPipeNet.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/FluidPipeNet.java @@ -6,11 +6,6 @@ import net.minecraft.nbt.CompoundTag; -/** - * @author KilaBash - * @date 2023/3/11 - * @implNote FluidPipeNet - */ public class FluidPipeNet extends PipeNet { public FluidPipeNet(LevelPipeNet world) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/ItemNetHandler.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/ItemNetHandler.java index 532efae05bc..66c71106aa4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/ItemNetHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/ItemNetHandler.java @@ -26,6 +26,7 @@ import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import lombok.Getter; import org.jetbrains.annotations.NotNull; @@ -39,7 +40,7 @@ public class ItemNetHandler implements IItemHandlerModifiable { private final Level world; @Getter private final Direction facing; - private final Map simulatedTransfersGlobalRoundRobin = new HashMap<>(); + private final Object2IntOpenHashMap simulatedTransfersGlobalRoundRobin = new Object2IntOpenHashMap<>(); private int simulatedTransfers = 0; private final ItemStackHandler testHandler = new ItemStackHandler(1); @@ -456,33 +457,40 @@ public boolean isItemValid(int slot, @NotNull ItemStack stack) { } private void transferTo(ItemRoutePath handler, boolean simulate, int amount) { - if (simulate) - simulatedTransfersGlobalRoundRobin.merge(handler.toFacingPos(), amount, Integer::sum); - else - pipe.getTransferred().merge(handler.toFacingPos(), amount, Integer::sum); + if (simulate) { + simulatedTransfersGlobalRoundRobin.addTo(handler.toFacingPos(), amount); + } else { + pipe.getTransferred().mergeInt(handler.toFacingPos(), amount, Integer::sum); + } } private boolean contains(ItemRoutePath handler, boolean simulate) { - return simulate ? simulatedTransfersGlobalRoundRobin.containsKey(handler.toFacingPos()) : - pipe.getTransferred().containsKey(handler.toFacingPos()); + if (simulate) { + return simulatedTransfersGlobalRoundRobin.containsKey(handler.toFacingPos()); + } else { + return pipe.getTransferred().containsKey(handler.toFacingPos()); + } } private int didTransferTo(ItemRoutePath handler, boolean simulate) { - if (simulate) + if (simulate) { return simulatedTransfersGlobalRoundRobin.getOrDefault(handler.toFacingPos(), 0); - return pipe.getTransferred().getOrDefault(handler.toFacingPos(), 0); + } else { + return pipe.getTransferred().getOrDefault(handler.toFacingPos(), 0); + } } private void resetTransferred(boolean simulated) { - if (simulated) + if (simulated) { simulatedTransfersGlobalRoundRobin.clear(); - else + } else { pipe.resetTransferred(); + } } private void decrementBy(int amount) { - for (Map.Entry entry : pipe.getTransferred().entrySet()) { - entry.setValue(entry.getValue() - amount); + for (var entry : pipe.getTransferred().object2IntEntrySet()) { + entry.setValue(entry.getIntValue() - amount); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/ItemPipeData.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/ItemPipeData.java index 97f9e0a8e77..7f0a1193700 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/ItemPipeData.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/ItemPipeData.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.api.data.chemical.material.properties.ItemPipeProperties; import com.gregtechceu.gtceu.api.pipenet.IAttachData; +import com.gregtechceu.gtceu.utils.GTMath; import net.minecraft.core.Direction; @@ -9,8 +10,6 @@ import lombok.Getter; import lombok.experimental.Accessors; -import java.util.Objects; - @Accessors(fluent = true) @AllArgsConstructor public class ItemPipeData implements IAttachData { @@ -48,6 +47,6 @@ public boolean equals(Object obj) { @Override public int hashCode() { - return Objects.hash(properties, connections); + return GTMath.hashInts(properties.hashCode(), connections); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/BiomeCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/BiomeCondition.java index 2bcafb0f13b..9281f7c5ec1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/BiomeCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/BiomeCondition.java @@ -6,11 +6,11 @@ import com.gregtechceu.gtceu.api.recipe.condition.RecipeConditionType; import com.gregtechceu.gtceu.common.data.GTRecipeConditions; -import com.lowdragmc.lowdraglib.utils.LocalizationUtils; - import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.GsonHelper; import net.minecraft.world.level.Level; @@ -19,31 +19,28 @@ import com.google.gson.JsonObject; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; +import lombok.Getter; import lombok.NoArgsConstructor; import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2022/05/27 - * @implNote DimensionCondition, specific dimension - */ @NoArgsConstructor public class BiomeCondition extends RecipeCondition { public static final Codec CODEC = RecordCodecBuilder .create(instance -> RecipeCondition.isReverse(instance) - .and(ResourceLocation.CODEC.fieldOf("biome").forGetter(val -> val.biome)) + .and(ResourceKey.codec(Registries.BIOME).fieldOf("biome").forGetter(val -> val.biome)) .apply(instance, BiomeCondition::new)); public final static BiomeCondition INSTANCE = new BiomeCondition(); - private ResourceLocation biome = new ResourceLocation("dummy"); + @Getter + private ResourceKey biome = ResourceKey.create(Registries.BIOME, new ResourceLocation("dummy")); - public BiomeCondition(boolean isReverse, ResourceLocation biome) { + public BiomeCondition(boolean isReverse, ResourceKey biome) { super(isReverse); this.biome = biome; } - public BiomeCondition(ResourceLocation biome) { + public BiomeCondition(ResourceKey biome) { this.biome = biome; } @@ -60,11 +57,8 @@ public boolean isOr() { @Override public Component getTooltips() { return Component.translatable("recipe.condition.biome.tooltip", - LocalizationUtils.format("biome.%s.%s", biome.getNamespace(), biome.getPath())); - } - - public ResourceLocation getBiome() { - return biome; + Component.translatableWithFallback(biome.location().toLanguageKey("biome"), + biome.location().toString())); } @Override @@ -84,28 +78,28 @@ public RecipeCondition createTemplate() { @Override public JsonObject serialize() { JsonObject config = super.serialize(); - config.addProperty("biome", biome.toString()); + config.addProperty("biome", biome.location().toString()); return config; } @Override public RecipeCondition deserialize(@NotNull JsonObject config) { super.deserialize(config); - biome = new ResourceLocation( - GsonHelper.getAsString(config, "biome", "dummy")); + biome = ResourceKey.create(Registries.BIOME, + new ResourceLocation(GsonHelper.getAsString(config, "biome", "dummy"))); return this; } @Override public RecipeCondition fromNetwork(FriendlyByteBuf buf) { super.fromNetwork(buf); - biome = new ResourceLocation(buf.readUtf()); + biome = buf.readResourceKey(Registries.BIOME); return this; } @Override public void toNetwork(FriendlyByteBuf buf) { super.toNetwork(buf); - buf.writeUtf(biome.toString()); + buf.writeResourceKey(biome); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/DimensionCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/DimensionCondition.java index 12423e23c34..7efa0551d5a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/DimensionCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/DimensionCondition.java @@ -28,11 +28,6 @@ import lombok.NoArgsConstructor; import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2022/05/27 - * @implNote DimensionCondition, specific dimension - */ @NoArgsConstructor public class DimensionCondition extends RecipeCondition { diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/EUToStartCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/EUToStartCondition.java index f522b5d1a6e..bf7b82c107c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/EUToStartCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/EUToStartCondition.java @@ -17,11 +17,6 @@ import lombok.NoArgsConstructor; import org.jetbrains.annotations.NotNull; -/** - * @author Screret - * @date 2023/6/16 - * @implNote EUToStartCondition - */ @NoArgsConstructor public class EUToStartCondition extends RecipeCondition { diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/PositionYCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/PositionYCondition.java index 2acc8a40a92..0be0b219d5c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/PositionYCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/PositionYCondition.java @@ -16,11 +16,6 @@ import lombok.NoArgsConstructor; import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2022/05/27 - * @implNote WhetherCondition, specific whether - */ @NoArgsConstructor public class PositionYCondition extends RecipeCondition { diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/RainingCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/RainingCondition.java index 2ba69f3bfae..27335f0a0c5 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/RainingCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/RainingCondition.java @@ -17,11 +17,6 @@ import lombok.NoArgsConstructor; import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2022/05/27 - * @implNote WhetherCondition, specific whether - */ @NoArgsConstructor public class RainingCondition extends RecipeCondition { diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/RockBreakerCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/RockBreakerCondition.java index eae1e449dd4..18cba3f654a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/RockBreakerCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/RockBreakerCondition.java @@ -17,11 +17,6 @@ import lombok.NoArgsConstructor; import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2023/3/15 - * @implNote RockBreakerCondition - */ @NoArgsConstructor public class RockBreakerCondition extends RecipeCondition { diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/ThunderCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/ThunderCondition.java index 9950ef59123..f1548fb65f9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/ThunderCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/ThunderCondition.java @@ -17,11 +17,6 @@ import lombok.NoArgsConstructor; import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2022/05/27 - * @implNote WhetherCondition, specific whether - */ @NoArgsConstructor public class ThunderCondition extends RecipeCondition { diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/VentCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/VentCondition.java index 869a3a880c7..4b65c364ca0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/VentCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/VentCondition.java @@ -14,11 +14,6 @@ import lombok.NoArgsConstructor; import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2023/3/15 - * @implNote SteamVentCondition - */ @NoArgsConstructor public class VentCondition extends RecipeCondition { diff --git a/src/main/java/com/gregtechceu/gtceu/common/valueprovider/AddedFloat.java b/src/main/java/com/gregtechceu/gtceu/common/valueprovider/AddedFloat.java index 661e015f32f..d4b265ce907 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/valueprovider/AddedFloat.java +++ b/src/main/java/com/gregtechceu/gtceu/common/valueprovider/AddedFloat.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.common.data.GTValueProviderTypes; import net.minecraft.util.RandomSource; +import net.minecraft.util.valueproviders.ConstantFloat; import net.minecraft.util.valueproviders.FloatProvider; import net.minecraft.util.valueproviders.FloatProviderType; @@ -41,7 +42,8 @@ public float getMinValue() { @Override public float getMaxValue() { - return this.source.getMaxValue() + this.modifier.getMaxValue(); + return this.source.getMaxValue() + + (this.modifier instanceof ConstantFloat c ? c.getValue() : this.modifier.getMaxValue()); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/valueprovider/MultipliedFloat.java b/src/main/java/com/gregtechceu/gtceu/common/valueprovider/MultipliedFloat.java index fe7fd084cf2..55de210bdc3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/valueprovider/MultipliedFloat.java +++ b/src/main/java/com/gregtechceu/gtceu/common/valueprovider/MultipliedFloat.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.common.data.GTValueProviderTypes; import net.minecraft.util.RandomSource; +import net.minecraft.util.valueproviders.ConstantFloat; import net.minecraft.util.valueproviders.FloatProvider; import net.minecraft.util.valueproviders.FloatProviderType; @@ -41,7 +42,8 @@ public float getMinValue() { @Override public float getMaxValue() { - return this.source.getMaxValue() * this.multiplier.getMaxValue(); + return this.source.getMaxValue() * + (this.multiplier instanceof ConstantFloat c ? c.getValue() : this.multiplier.getMaxValue()); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/worldgen/RubberFoliagePlacer.java b/src/main/java/com/gregtechceu/gtceu/common/worldgen/RubberFoliagePlacer.java deleted file mode 100644 index f9622683221..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/common/worldgen/RubberFoliagePlacer.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.gregtechceu.gtceu.common.worldgen; - -import com.gregtechceu.gtceu.common.data.GTPlacerTypes; - -import net.minecraft.MethodsReturnNonnullByDefault; -import net.minecraft.core.BlockPos; -import net.minecraft.util.Mth; -import net.minecraft.util.RandomSource; -import net.minecraft.util.valueproviders.IntProvider; -import net.minecraft.world.level.LevelSimulatedReader; -import net.minecraft.world.level.levelgen.feature.configurations.TreeConfiguration; -import net.minecraft.world.level.levelgen.feature.foliageplacers.FoliagePlacer; -import net.minecraft.world.level.levelgen.feature.foliageplacers.FoliagePlacerType; - -import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; - -import javax.annotation.ParametersAreNonnullByDefault; - -@MethodsReturnNonnullByDefault -@ParametersAreNonnullByDefault -public class RubberFoliagePlacer extends FoliagePlacer { - - public static final Codec CODEC = RecordCodecBuilder - .create((p_68473_) -> foliagePlacerParts(p_68473_).apply(p_68473_, RubberFoliagePlacer::new)); - - public RubberFoliagePlacer(IntProvider pRadius, IntProvider pOffset) { - super(pRadius, pOffset); - } - - @Override - protected FoliagePlacerType type() { - return GTPlacerTypes.RUBBER_FOLIAGE; - } - - @Override - protected void createFoliage(LevelSimulatedReader level, FoliageSetter blockSetter, RandomSource random, - TreeConfiguration config, int maxFreeTreeHeight, FoliageAttachment attachment, - int foliageHeight, int foliageRadius, int offset) { - BlockPos blockpos = attachment.pos(); - int end = offset - foliageRadius; - for (int l = offset; l >= end; --l) { - this.placeLeavesRow(level, blockSetter, random, config, blockpos, foliageRadius, l, - attachment.doubleTrunk()); - } - } - - @Override - public int foliageHeight(RandomSource random, int height, TreeConfiguration config) { - return Math.max(height - 2, 9 + random.nextInt(2)); - } - - @Override - protected boolean shouldSkipLocation(RandomSource random, int localX, int localY, int localZ, int range, - boolean large) { - int yOff = localY - Mth.clamp(localY, -5, -2); - return localX * localX + localZ * localZ + yOff * yOff > 10 + random.nextInt(8); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/common/worldgen/RubberTrunkPlacer.java b/src/main/java/com/gregtechceu/gtceu/common/worldgen/RubberTrunkPlacer.java deleted file mode 100644 index 02154956c56..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/common/worldgen/RubberTrunkPlacer.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.gregtechceu.gtceu.common.worldgen; - -import com.gregtechceu.gtceu.common.data.GTPlacerTypes; - -import net.minecraft.MethodsReturnNonnullByDefault; -import net.minecraft.core.BlockPos; -import net.minecraft.util.RandomSource; -import net.minecraft.world.level.LevelSimulatedReader; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.levelgen.feature.configurations.TreeConfiguration; -import net.minecraft.world.level.levelgen.feature.foliageplacers.FoliagePlacer; -import net.minecraft.world.level.levelgen.feature.trunkplacers.TrunkPlacer; -import net.minecraft.world.level.levelgen.feature.trunkplacers.TrunkPlacerType; - -import com.google.common.collect.ImmutableList; -import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; - -import java.util.List; -import java.util.function.BiConsumer; - -import javax.annotation.ParametersAreNonnullByDefault; - -@MethodsReturnNonnullByDefault -@ParametersAreNonnullByDefault -public class RubberTrunkPlacer extends TrunkPlacer { - - public static final Codec CODEC = RecordCodecBuilder - .create((p_70206_) -> trunkPlacerParts(p_70206_).apply(p_70206_, RubberTrunkPlacer::new)); - - public RubberTrunkPlacer(int pBaseHeight, int pHeightRandA, int pHeightRandB) { - super(pBaseHeight, pHeightRandA, pHeightRandB); - } - - @Override - protected TrunkPlacerType type() { - return GTPlacerTypes.RUBBER_TRUNK; - } - - @Override - public List placeTrunk(LevelSimulatedReader level, - BiConsumer blockSetter, - RandomSource random, int freeTreeHeight, BlockPos pos, - TreeConfiguration config) { - BlockPos blockpos = pos.below(); - setDirtAt(level, blockSetter, random, blockpos, config); - setDirtAt(level, blockSetter, random, blockpos.east(), config); - setDirtAt(level, blockSetter, random, blockpos.south(), config); - setDirtAt(level, blockSetter, random, blockpos.south().east(), config); - BlockPos.MutableBlockPos mutableBlockPos = new BlockPos.MutableBlockPos(); - freeTreeHeight--; - for (int i = 0; i < freeTreeHeight; ++i) { - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, 0, i, 0); - if (i < freeTreeHeight - 1) { - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, 1, i, 0); - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, -1, i, 0); - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, 0, i, 1); - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, 0, i, -1); - } - if (i == 0 || i == freeTreeHeight - 6) { - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, 1, i, 1); - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, 1, i, -1); - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, -1, i, 1); - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, -1, i, -1); - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, 2, i, 0); - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, -2, i, 0); - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, 0, i, 2); - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, 0, i, -2); - } - if (i == 1 || i == freeTreeHeight - 7) { - placeLogIfFreeWithOffsetAndChance(0.33f, level, blockSetter, random, mutableBlockPos, config, pos, 1, i, - 1); - placeLogIfFreeWithOffsetAndChance(0.33f, level, blockSetter, random, mutableBlockPos, config, pos, 1, i, - -1); - placeLogIfFreeWithOffsetAndChance(0.33f, level, blockSetter, random, mutableBlockPos, config, pos, -1, - i, 1); - placeLogIfFreeWithOffsetAndChance(0.33f, level, blockSetter, random, mutableBlockPos, config, pos, -1, - i, -1); - - } - } - return ImmutableList.of(new FoliagePlacer.FoliageAttachment(pos.above(freeTreeHeight), 0, false)); - } - - private void placeLogIfFreeWithOffset(LevelSimulatedReader level, BiConsumer blockSetter, - RandomSource random, BlockPos.MutableBlockPos pos, TreeConfiguration config, - BlockPos pOffsetPos, int pOffsetX, int pOffsetY, int pOffsetZ) { - pos.setWithOffset(pOffsetPos, pOffsetX, pOffsetY, pOffsetZ); - placeLogIfFree(level, blockSetter, random, pos, config); - } - - private void placeLogIfFreeWithOffsetAndChance(float pChance, LevelSimulatedReader level, - BiConsumer blockSetter, RandomSource random, - BlockPos.MutableBlockPos pos, TreeConfiguration config, - BlockPos pOffsetPos, int pOffsetX, int pOffsetY, int pOffsetZ) { - if (random.nextFloat() > pChance) { - return; - } - pos.setWithOffset(pOffsetPos, pOffsetX, pOffsetY, pOffsetZ); - placeLogIfFree(level, blockSetter, random, pos, config); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/common/worldgen/feature/FluidSproutFeature.java b/src/main/java/com/gregtechceu/gtceu/common/worldgen/feature/FluidSproutFeature.java index e9899a7ef8d..70be959e2cd 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/worldgen/feature/FluidSproutFeature.java +++ b/src/main/java/com/gregtechceu/gtceu/common/worldgen/feature/FluidSproutFeature.java @@ -108,7 +108,7 @@ public boolean place(FeaturePlaceContext context) { } } - return placedAmount.getValue() > 0; + return placedAmount.intValue() > 0; } public void setBlock(BlockPos.MutableBlockPos mutablePos, int currentX, int currentY, int currentZ, diff --git a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java index 58dd473f2fa..de1460815d0 100644 --- a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java +++ b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java @@ -3,16 +3,13 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTCEuAPI; +import net.minecraft.commands.Commands; + import dev.toma.configuration.Configuration; import dev.toma.configuration.config.Config; import dev.toma.configuration.config.Configurable; import dev.toma.configuration.config.format.ConfigFormats; -/** - * @author KilaBash - * @date 2023/2/14 - * @implNote ConfigHolder - */ @Config(id = GTCEu.MOD_ID) public class ConfigHolder { @@ -60,8 +57,8 @@ public static class RecipeConfigs { @Configurable @Configurable.Comment({ "Change the recipe of Rods in the Lathe to 1 Rod and 2 Small Piles of Dust, instead of 2 Rods.", - "Default: false" }) - public boolean harderRods = false; // default false + "Default: true" }) + public boolean harderRods = true; // default true @Configurable @Configurable.Comment({ "Whether to make crafting recipes for Bricks, Firebricks, Nether Bricks, and Coke Bricks harder.", @@ -97,8 +94,8 @@ public static class RecipeConfigs { public boolean nerfPaperCrafting = true; // default true @Configurable @Configurable.Comment({ "Recipes for items like Iron Doors, Trapdoors, Anvil" + - " require Iron Plates, Rods, and more.", "Default: false" }) - public boolean hardAdvancedIronRecipes = false; // default false + " require Iron Plates, Rods, and more.", "Default: true" }) + public boolean hardAdvancedIronRecipes = true; // default true @Configurable @Configurable.Comment({ "Whether to make coloring blocks like Concrete or Glass harder.", "Default: false" }) public boolean hardDyeRecipes = false; // default false @@ -130,8 +127,8 @@ public static class RecipeConfigs { @Configurable @Configurable.Comment({ "Whether tools should have enchants or not. Like the flint sword getting fire aspect.", - "Default: true" }) - public boolean enchantedTools = true; + "Default: false" }) + public boolean enchantedTools = false; } public static class CompatibilityConfigs { @@ -188,13 +185,13 @@ public static class EnergyCompatConfig { @Configurable @Configurable.Comment({ "Forge Energy to GTEU ratio for converting FE to EU.", "Only affects converters.", "Default: 4 FE == 1 EU" }) - @Configurable.Range(min = 1, max = 16) + @Configurable.Range(min = 1, max = Integer.MAX_VALUE) public int feToEuRatio = 4; @Configurable @Configurable.Comment({ "GTEU to Forge Energy ratio for converting EU to FE.", "Affects native conversion and Converters.", "Default: 4 FE == 1 EU" }) - @Configurable.Range(min = 1, max = 16) + @Configurable.Range(min = 1, max = Integer.MAX_VALUE) public int euToFeRatio = 4; } @@ -203,13 +200,13 @@ public static class AE2CompatConfig { @Configurable @Configurable.Comment({ "The interval between ME Hatch/Bus interact ME network.", "It may cause lag if the interval is too small.", "Default: 2 sec" }) - @Configurable.Range(min = 1, max = 80) + @Configurable.Range(min = 1) // Do Not Set a Maximum, if someone wants >80 ticks let them. public int updateIntervals = 40; @Configurable - @Configurable.Comment({ "The energy consumption of ME Hatch/Bus.", "Default: 1.0AE/t" }) - @Configurable.DecimalRange(min = 0.0, max = 10.0) - public double meHatchEnergyUsage = 1.0; + @Configurable.Comment({ "The energy consumption of ME Hatch/Bus.", "Default: 4.0AE/t" }) + @Configurable.DecimalRange(min = 0.0, max = Integer.MAX_VALUE) + public double meHatchEnergyUsage = 4.0; } public static class MinimapCompatConfig { @@ -222,12 +219,12 @@ public static class MinimapCompatConfig { @Configurable @Configurable.Comment({ "The radius, in blocks, that picking up a surface rock will search for veins in.", "-1 to disable.", "Default: 24" }) - @Configurable.Range(min = 1) + @Configurable.Range(min = -1) public int surfaceRockProspectRange = 24; @Configurable @Configurable.Comment({ "The radius, in blocks, that clicking an ore block will search for veins in.", "-1 to disable", "Default: 24" }) - @Configurable.Range(min = 1) + @Configurable.Range(min = -1) public int oreBlockProspectRange = 24; @Configurable @@ -410,16 +407,11 @@ public static class OreVeinConfigs { public static class MachineConfigs { - @Configurable - @Configurable.Comment({ "Whether insufficient energy supply should reset Machine recipe progress to zero.", - "If true, progress will reset.", "If false, progress will decrease to zero with 2x speed", - "Default: false" }) - public boolean recipeProgressLowEnergy = false; @Configurable @Configurable.Comment({ "Whether to require a Wrench, Wirecutter, or other GregTech tools to break machines, casings, wires, and more.", - "Default: false" }) - public boolean requireGTToolsForBlocks = false; + "Default: true" }) + public boolean requireGTToolsForBlocks = true; @Configurable @Configurable.Comment({ "Whether machines explode in rainy weather or when placed next to certain terrain, such as fire or lava", @@ -446,6 +438,9 @@ public static class MachineConfigs { @Configurable.Comment({ "Whether to play machine sounds while machines are active.", "Default: true" }) public boolean machineSounds = true; @Configurable + @Configurable.Comment({ "Duration in ticks that batching will try to reach.", "Default: 100" }) + public int batchDuration = 100; + @Configurable @Configurable.Comment({ "Whether Steam Multiblocks should use Steel instead of Bronze.", "Default: false" }) public boolean steelSteamMultiblocks = false; @Configurable @@ -520,8 +515,8 @@ public static class MachineConfigs { public boolean onlyOwnerBreak = false; @Configurable @Configurable.Comment({ "Minimum op level to bypass the ownership checks", "Default: 2" }) - @Configurable.Range(min = 0, max = 4) - public int ownerOPBypass = 2; + @Configurable.Range(min = Commands.LEVEL_ALL, max = Commands.LEVEL_OWNERS) + public int ownerOPBypass = Commands.LEVEL_GAMEMASTERS; /** * Addons mods should not reference this config directly. @@ -541,8 +536,8 @@ public static class MachineConfigs { public boolean orderedAssemblyLineItems = true; @Configurable @Configurable.Comment({ "Whether the Assembly Line should require the fluid inputs to be in order.", - "(Requires Ordered Assembly Line Item Inputs to be enabled.)", "Default: false" }) - public boolean orderedAssemblyLineFluids = false; + "(Requires Ordered Assembly Line Item Inputs to be enabled.)", "Default: true" }) + public boolean orderedAssemblyLineFluids = true; @Configurable @Configurable.Comment({ @@ -713,6 +708,11 @@ public static class ClientConfigs { @Configurable.Comment({ "Whether or not to enable Emissive Textures for GregTech Machines.", "Default: true" }) public boolean machinesEmissiveTextures = true; @Configurable + @Configurable.Comment({ + "Whether most machines will have block entity renderers, mainly used for rendering certain covers. (Restart required)", + "Disable if experiencing performance issues.", "Default: true" }) + public boolean machinesHaveBERsByDefault = true; + @Configurable @Configurable.Comment({ "Whether or not sounds should be played when using tools outside of crafting.", "Default: true" }) public boolean toolUseSounds = true; @@ -728,8 +728,8 @@ public static class ClientConfigs { public String defaultPaintingColor = "#FFFFFF"; @Configurable @Configurable.Comment({ "The default color to overlay onto Machine (and other) UIs.", - "16777215 (#FFFFFF) is no coloring (like GTCE) (default).", - "13819135 (#D2DCFF in decimal) is the classic blue from GT5." }) + "#FFFFFF is no coloring (like GTCE) (default).", + "#D2DCFF is the classic blue from GT5." }) @Configurable.StringPattern(value = "#[0-9a-fA-F]{1,6}") @Configurable.Gui.ColorValue public String defaultUIColor = "#FFFFFF"; @@ -750,6 +750,11 @@ public static class ClientConfigs { @Configurable public RendererConfigs renderer = new RendererConfigs(); + public int getDefaultPaintingColor() { + // OR with full alpha to differentiate from a machine that's painted white (map color 0xffffff) + return Long.decode(defaultPaintingColor).intValue() | 0xff000000; + } + public static class ArmorHud { @Configurable @@ -794,5 +799,15 @@ public static class RendererConfigs { @Configurable @Configurable.Comment({ "Render fluids in multiblocks that support them?", "Default: true" }) public boolean renderFluids = true; + + @Configurable + @Configurable.Comment({ "Whether or not to color tiered machine highlights in the tier color", + "Default: true" }) + public boolean coloredTieredMachineOutline = true; + + @Configurable + @Configurable.Comment({ "Whether or not to color wire/cable highlights based on voltage tier", + "Default: true" }) + public boolean coloredWireOutline = true; } } diff --git a/src/main/java/com/gregtechceu/gtceu/core/IGTBakedQuad.java b/src/main/java/com/gregtechceu/gtceu/core/IGTBakedQuad.java new file mode 100644 index 00000000000..8cb853a080a --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/IGTBakedQuad.java @@ -0,0 +1,18 @@ +package com.gregtechceu.gtceu.core; + +import net.minecraft.client.renderer.block.model.BakedQuad; + +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.Nullable; + +public interface IGTBakedQuad { + + @ApiStatus.Internal + default BakedQuad gtceu$setTextureKey(@Nullable String key) { + return (BakedQuad) this; + } + + default @Nullable String gtceu$getTextureKey() { + return null; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/IGTTagLoader.java b/src/main/java/com/gregtechceu/gtceu/core/IGTTagLoader.java index 3d6c903d4be..80c5e9ddd3d 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/IGTTagLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/core/IGTTagLoader.java @@ -2,12 +2,7 @@ import net.minecraft.core.Registry; -import org.jetbrains.annotations.Nullable; +public interface IGTTagLoader { -public interface IGTTagLoader { - - void gtceu$setRegistry(Registry registry); - - @Nullable - Registry gtceu$getRegistry(); + void gtceu$setRegistry(Registry registry); } diff --git a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java index 844df93d52a..0b06bdfa472 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java +++ b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java @@ -1,22 +1,22 @@ package com.gregtechceu.gtceu.core; +import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.material.ItemMaterialData; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.FluidProperty; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.OreProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialStack; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; -import com.gregtechceu.gtceu.api.data.tag.TagUtil; +import com.gregtechceu.gtceu.api.fluids.FluidState; import com.gregtechceu.gtceu.api.fluids.GTFluid; import com.gregtechceu.gtceu.api.fluids.store.FluidStorage; import com.gregtechceu.gtceu.api.fluids.store.FluidStorageKey; -import com.gregtechceu.gtceu.api.fluids.store.FluidStorageKeys; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.registry.registrate.forge.GTClientFluidTypeExtensions; -import com.gregtechceu.gtceu.common.data.GTBlocks; import com.gregtechceu.gtceu.common.data.GTMaterialBlocks; import com.gregtechceu.gtceu.common.data.GTMaterialItems; import com.gregtechceu.gtceu.config.ConfigHolder; @@ -28,13 +28,12 @@ import net.minecraft.data.loot.BlockLootSubProvider; import net.minecraft.data.loot.packs.VanillaBlockLoot; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.TagEntry; -import net.minecraft.tags.TagKey; -import net.minecraft.tags.TagLoader; +import net.minecraft.tags.*; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; import net.minecraft.world.item.enchantment.Enchantments; +import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.storage.loot.IntRange; @@ -49,6 +48,8 @@ import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; +import net.minecraftforge.common.Tags; +import net.minecraftforge.versions.forge.ForgeVersion; import com.tterrag.registrate.util.entry.BlockEntry; @@ -56,7 +57,10 @@ import java.util.List; import java.util.Map; import java.util.function.Supplier; +import java.util.stream.Collector; +import java.util.stream.Collectors; +@SuppressWarnings("deprecation") public class MixinHelpers { public static void generateGTDynamicTags(Map> tagMap, @@ -65,140 +69,193 @@ public static void generateGTDynamicTags(Map { if (itemLikes.isEmpty()) return; var material = entry.material(); - if (!material.isNull()) { - var materialTags = entry.tagPrefix().getAllItemTags(material); - for (TagKey materialTag : materialTags) { - List tags = new ArrayList<>(); - itemLikes.forEach(item -> tags.add(new TagLoader.EntryWithSource( - TagEntry.element(BuiltInRegistries.ITEM.getKey(item.get().asItem())), - GTValues.CUSTOM_TAG_SOURCE))); - tagMap.computeIfAbsent(materialTag.location(), path -> new ArrayList<>()).addAll(tags); - } + if (material.isNull()) return; + var entries = itemLikes.stream().map(MixinHelpers::makeItemEntry).collect(toArrayList()); + + var prefixTagKeys = entry.tagPrefix().getAllItemTags(material); + for (TagKey prefixTag : prefixTagKeys) { + tagMap.computeIfAbsent(prefixTag.location(), path -> new ArrayList<>()).addAll(entries); + } + for (TagKey materialTag : material.getItemTags()) { + tagMap.computeIfAbsent(materialTag.location(), path -> new ArrayList<>()).addAll(entries); + } + if (entry.tagPrefix() == TagPrefix.crushed && material.hasProperty(PropertyKey.ORE)) { + OreProperty ore = material.getProperty(PropertyKey.ORE); + Material washedIn = ore.getWashedIn().first(); + if (washedIn.isNull()) return; + ResourceLocation generalTag = CustomTags.CHEM_BATH_WASHABLE.location(); + ResourceLocation specificTag = generalTag.withSuffix("/" + washedIn.getName()); + + tagMap.computeIfAbsent(generalTag, path -> new ArrayList<>()).addAll(entries); + tagMap.computeIfAbsent(specificTag, path -> new ArrayList<>()).addAll(entries); } }); GTMaterialItems.TOOL_ITEMS.rowMap().forEach((material, map) -> { + map.values().forEach(item -> { + if (item == null) return; + var entry = makeItemEntry(item); + for (TagKey tag : item.get().getToolType().itemTags) { + tagMap.computeIfAbsent(tag.location(), path -> new ArrayList<>()).add(entry); + } + }); + }); + + GTMaterialItems.ARMOR_ITEMS.rowMap().forEach((material, map) -> { map.forEach((type, item) -> { if (item != null) { var entry = new TagLoader.EntryWithSource(TagEntry.element(item.getId()), GTValues.CUSTOM_TAG_SOURCE); - for (TagKey tag : type.itemTags) { - tagMap.computeIfAbsent(tag.location(), path -> new ArrayList<>()).add(entry); - } + tagMap.computeIfAbsent(ItemTags.TRIMMABLE_ARMOR.location(), $ -> new ArrayList<>()) + .add(entry); + tagMap.computeIfAbsent(switch (type) { + case HELMET -> Tags.Items.ARMORS_HELMETS.location(); + case CHESTPLATE -> Tags.Items.ARMORS_CHESTPLATES.location(); + case LEGGINGS -> Tags.Items.ARMORS_LEGGINGS.location(); + case BOOTS -> Tags.Items.ARMORS_BOOTS.location(); + }, $ -> new ArrayList<>()).add(entry); } }); }); + + if (!GTCEu.Mods.isAE2Loaded()) { + return; + } + // If AE2 is loaded, add the Fluid P2P attunement tag to all the buckets + var p2pFluidAttunements = new ResourceLocation(GTValues.MODID_APPENG, "p2p_attunements/fluid_p2p_tunnel"); + for (Material material : GTCEuAPI.materialManager.getRegisteredMaterials()) { + FluidProperty property = material.getProperty(PropertyKey.FLUID); + if (property == null) { + continue; + } + for (FluidStorageKey key : FluidStorageKey.allKeys()) { + Fluid fluid = property.get(key); + if (fluid == null || fluid.getBucket() == Items.AIR) { + continue; + } + var entry = makeItemEntry(fluid.getBucket()); + tagMap.computeIfAbsent(p2pFluidAttunements, path -> new ArrayList<>()).add(entry); + } + } } else if (registry == BuiltInRegistries.BLOCK) { - GTMaterialBlocks.MATERIAL_BLOCKS.rowMap().forEach((prefix, map) -> { - MixinHelpers.addMaterialBlockTags(tagMap, prefix, map); - }); - GTMaterialBlocks.CABLE_BLOCKS.rowMap().forEach((prefix, map) -> { - MixinHelpers.addMaterialBlockTags(tagMap, prefix, map); - }); - GTMaterialBlocks.FLUID_PIPE_BLOCKS.rowMap().forEach((prefix, map) -> { - MixinHelpers.addMaterialBlockTags(tagMap, prefix, map); - }); - GTMaterialBlocks.ITEM_PIPE_BLOCKS.rowMap().forEach((prefix, map) -> { - MixinHelpers.addMaterialBlockTags(tagMap, prefix, map); + ItemMaterialData.MATERIAL_ENTRY_BLOCK_MAP.forEach((entry, blocks) -> { + if (blocks.isEmpty()) return; + var material = entry.material(); + if (material.isNull()) return; + + var entries = blocks.stream().map(MixinHelpers::makeBlockEntry).collect(toArrayList()); + var materialTags = entry.tagPrefix().getAllBlockTags(material); + for (TagKey materialTag : materialTags) { + tagMap.computeIfAbsent(materialTag.location(), path -> new ArrayList<>()).addAll(entries); + } + // Add tool tags + if (!entry.isIgnored() && !entry.tagPrefix().miningToolTag().isEmpty()) { + tagMap.computeIfAbsent(CustomTags.TOOL_TIERS[material.getBlockHarvestLevel()].location(), + path -> new ArrayList<>()).addAll(entries); + if (material.hasProperty(PropertyKey.WOOD)) { + // Wood blocks with this tag always allow a Wrench, but only allow an Axe if the config is + // not set. Pickaxe is never allowed (special case) + if (entry.tagPrefix().miningToolTag() + .contains(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH)) { + tagMap.computeIfAbsent(CustomTags.MINEABLE_WITH_WRENCH.location(), + path -> new ArrayList<>()).addAll(entries); + if (!ConfigHolder.INSTANCE.machines.requireGTToolsForBlocks) { + tagMap.computeIfAbsent(BlockTags.MINEABLE_WITH_AXE.location(), + path -> new ArrayList<>()) + .addAll(entries); + } + } else { + // Other wood stuff should still get the Axe tag + tagMap.computeIfAbsent(BlockTags.MINEABLE_WITH_AXE.location(), path -> new ArrayList<>()) + .addAll(entries); + } + } else { + for (var tag : entry.tagPrefix().miningToolTag()) { + tagMap.computeIfAbsent(tag.location(), path -> new ArrayList<>()).addAll(entries); + } + } + } }); + GTRegistries.MACHINES.forEach(machine -> { - ResourceLocation id = machine.getId(); tagMap.computeIfAbsent(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH.location(), - path -> new ArrayList<>()) - .add(new TagLoader.EntryWithSource(TagEntry.element(id), GTValues.CUSTOM_TAG_SOURCE)); - }); - - GTBlocks.ALL_FUSION_CASINGS.forEach((casingType, block) -> { - ResourceLocation blockId = BuiltInRegistries.BLOCK.getKey(block.get()); - tagMap.computeIfAbsent(CustomTags.TOOL_TIERS[casingType.getHarvestLevel()].location(), - path -> new ArrayList<>()) - .add(new TagLoader.EntryWithSource(TagEntry.element(blockId), GTValues.CUSTOM_TAG_SOURCE)); + path -> new ArrayList<>()).add(makeBlockEntry(machine.getBlock())); }); - // if config is NOT enabled, add the pickaxe/axe tags to the "configurable" mineability tags + // if config is NOT enabled, add the "configurable" mineability tags to the pickaxe tag if (!ConfigHolder.INSTANCE.machines.requireGTToolsForBlocks) { var tagList = tagMap.computeIfAbsent(BlockTags.MINEABLE_WITH_PICKAXE.location(), path -> new ArrayList<>()); - tagList.add(new TagLoader.EntryWithSource( - TagEntry.tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH.location()), - GTValues.CUSTOM_TAG_SOURCE)); - tagList.add(new TagLoader.EntryWithSource( - TagEntry.tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WIRE_CUTTER.location()), - GTValues.CUSTOM_TAG_SOURCE)); + tagList.add(makeTagEntry(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH)); + tagList.add(makeTagEntry(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WIRE_CUTTER)); } } else if (registry == BuiltInRegistries.FLUID) { for (Material material : GTCEuAPI.materialManager.getRegisteredMaterials()) { - if (material.hasProperty(PropertyKey.FLUID)) { - FluidProperty property = material.getProperty(PropertyKey.FLUID); - for (FluidStorageKey key : FluidStorageKey.allKeys()) { - Fluid fluid = property.getStorage().get(key); - if (fluid != null) { - ItemMaterialData.FLUID_MATERIAL.put(fluid, material); - - ResourceLocation fluidId = BuiltInRegistries.FLUID.getKey(fluid); - TagLoader.EntryWithSource entry = new TagLoader.EntryWithSource(TagEntry.element(fluidId), - GTValues.CUSTOM_TAG_SOURCE); - tagMap.computeIfAbsent(TagUtil.createFluidTag(fluidId.getPath()).location(), - path -> new ArrayList<>()) - .add(entry); - if (fluid instanceof GTFluid gtFluid) { - tagMap.computeIfAbsent(gtFluid.getState().getTagKey().location(), - path -> new ArrayList<>()) - .add(entry); - } else { - ResourceLocation fluidKeyTag = key.getDefaultFluidState().getTagKey().location(); - tagMap.computeIfAbsent(fluidKeyTag, path -> new ArrayList<>()) - .add(entry); - } - } - } + FluidProperty property = material.getProperty(PropertyKey.FLUID); + if (property == null) { + continue; } - if (material.hasProperty(PropertyKey.ALLOY_BLAST)) { - Fluid fluid = material.getProperty(PropertyKey.FLUID).getStorage().get(FluidStorageKeys.MOLTEN); - if (fluid != null) { - ResourceLocation moltenID = BuiltInRegistries.FLUID.getKey(fluid); - tagMap.computeIfAbsent(CustomTags.MOLTEN_FLUIDS.location(), - path -> new ArrayList<>()) - .add(new TagLoader.EntryWithSource(TagEntry.element(moltenID), - GTValues.CUSTOM_TAG_SOURCE)); + for (FluidStorageKey key : FluidStorageKey.allKeys()) { + Fluid fluid = property.get(key); + if (fluid == null) { + continue; + } + ItemMaterialData.FLUID_MATERIAL.put(fluid, material); + + TagLoader.EntryWithSource entry = makeFluidEntry(fluid); + + ResourceLocation fluidIdTag = fluid.builtInRegistryHolder().key().location(); + fluidIdTag = new ResourceLocation(ForgeVersion.MOD_ID, fluidIdTag.getPath()); + tagMap.computeIfAbsent(fluidIdTag, path -> new ArrayList<>()).add(entry); + FluidState state; + + if (fluid instanceof GTFluid gtFluid) { + state = gtFluid.getState(); + } else { + state = key.getDefaultFluidState(); + } + tagMap.computeIfAbsent(state.getTagKey().location(), path -> new ArrayList<>()).add(entry); + + if (key.getExtraTag() != null) { + tagMap.computeIfAbsent(key.getExtraTag().location(), path -> new ArrayList<>()).add(entry); } } } } } - public static void addMaterialBlockTags(Map> tagMap, - TagPrefix prefix, - Map> map) { - // Add tool tags - if (!prefix.miningToolTag().isEmpty()) { - map.forEach((material, block) -> { - tagMap.computeIfAbsent(CustomTags.TOOL_TIERS[material.getBlockHarvestLevel()].location(), - path -> new ArrayList<>()) - .add(new TagLoader.EntryWithSource(TagEntry.element(block.getId()), - GTValues.CUSTOM_TAG_SOURCE)); - - var entry = new TagLoader.EntryWithSource(TagEntry.element(block.getId()), GTValues.CUSTOM_TAG_SOURCE); - if (material.hasProperty(PropertyKey.WOOD)) { - tagMap.computeIfAbsent(BlockTags.MINEABLE_WITH_AXE.location(), path -> new ArrayList<>()) - .add(entry); - } else { - for (var tag : prefix.miningToolTag()) { - tagMap.computeIfAbsent(tag.location(), path -> new ArrayList<>()).add(entry); - } - } - }); - } - // Copy item tags to blocks - map.forEach((material, block) -> { - for (TagKey blockTag : prefix.getAllBlockTags(material)) { - tagMap.computeIfAbsent(blockTag.location(), path -> new ArrayList<>()) - .add(new TagLoader.EntryWithSource(TagEntry.element(block.getId()), - GTValues.CUSTOM_TAG_SOURCE)); - } - }); + private static Collector> toArrayList() { + return Collectors.toCollection(ArrayList::new); + } + + public static TagLoader.EntryWithSource makeItemEntry(Supplier item) { + return makeItemEntry(item.get()); + } + + public static TagLoader.EntryWithSource makeItemEntry(ItemLike item) { + return makeElementEntry(item.asItem().builtInRegistryHolder().key().location()); + } + + public static TagLoader.EntryWithSource makeBlockEntry(Supplier block) { + return makeBlockEntry(block.get()); + } + + public static TagLoader.EntryWithSource makeBlockEntry(Block block) { + return makeElementEntry(block.builtInRegistryHolder().key().location()); + } + + public static TagLoader.EntryWithSource makeFluidEntry(Fluid fluid) { + return makeElementEntry(fluid.builtInRegistryHolder().key().location()); + } + + public static TagLoader.EntryWithSource makeElementEntry(ResourceLocation id) { + return new TagLoader.EntryWithSource(TagEntry.element(id), GTValues.CUSTOM_TAG_SOURCE); + } + + public static TagLoader.EntryWithSource makeTagEntry(TagKey tag) { + return new TagLoader.EntryWithSource(TagEntry.tag(tag.location()), GTValues.CUSTOM_TAG_SOURCE); } private static final VanillaBlockLoot BLOCK_LOOT = new VanillaBlockLoot(); @@ -230,7 +287,6 @@ public static void generateGTDynamicLoot(Map lootTa // .apply(ApplyBonusCount.addOreBonusCount(Enchantments.BLOCK_FORTUNE)))); //disable fortune for // balance reasons. (for now, until we can think of a better solution.) - Supplier outputDustMat = type.material(); LootPool.Builder pool = LootPool.lootPool(); boolean isEmpty = true; for (MaterialStack secondaryMaterial : prefix.secondaryMaterials()) { diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/BlockModelMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/BlockModelMixin.java deleted file mode 100644 index 5bbec40df0e..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/BlockModelMixin.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins; - -import com.gregtechceu.gtceu.client.model.SpriteOverrider; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.*; -import net.minecraft.resources.ResourceLocation; - -import com.mojang.datafixers.util.Either; -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 java.util.function.Function; - -/** - * @author KilaBash - * @date 2023/2/19 - * @implNote BlockModelMixin - */ -@Mixin(BlockModel.class) -public class BlockModelMixin { - - @Shadow - public String name; - ThreadLocal spriteOverriderThreadLocal = new ThreadLocal<>(); - - // We want to remap our materials - @Inject(method = "bake(Lnet/minecraft/client/resources/model/ModelBaker;Lnet/minecraft/client/renderer/block/model/BlockModel;Ljava/util/function/Function;Lnet/minecraft/client/resources/model/ModelState;Lnet/minecraft/resources/ResourceLocation;Z)Lnet/minecraft/client/resources/model/BakedModel;", - at = @At(value = "HEAD")) - private void beforeBake(ModelBaker baker, BlockModel model, Function spriteGetter, - ModelState state, ResourceLocation location, boolean guiLight3d, - CallbackInfoReturnable cir) { - if (spriteGetter instanceof SpriteOverrider spriteOverrider) { - spriteOverriderThreadLocal.set(spriteOverrider); - } - } - - @Inject(method = "bake(Lnet/minecraft/client/resources/model/ModelBaker;Lnet/minecraft/client/renderer/block/model/BlockModel;Ljava/util/function/Function;Lnet/minecraft/client/resources/model/ModelState;Lnet/minecraft/resources/ResourceLocation;Z)Lnet/minecraft/client/resources/model/BakedModel;", - at = @At(value = "RETURN")) - private void afterBake(ModelBaker baker, BlockModel model, Function spriteGetter, - ModelState state, ResourceLocation location, boolean guiLight3d, - CallbackInfoReturnable cir) { - if (spriteGetter instanceof SpriteOverrider) { - spriteOverriderThreadLocal.remove(); - } - } - - // We want to remap our materials - @Inject(method = "findTextureEntry", at = @At(value = "HEAD"), cancellable = true) - private void remapTextureEntry(String name, CallbackInfoReturnable> cir) { - SpriteOverrider overrider = spriteOverriderThreadLocal.get(); - if (overrider != null && overrider.override().containsKey(name)) { - var mat = overrider.override().get(name); - if (mat != null) { - cir.setReturnValue(ModelFactory.parseBlockTextureLocationOrReference(mat.toString())); - } - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/ChunkMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/ChunkMixin.java deleted file mode 100644 index 9f6a304d80c..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/ChunkMixin.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins; - -import com.gregtechceu.gtceu.api.pattern.MultiblockWorldSavedData; - -import net.minecraft.core.BlockPos; -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.chunk.LevelChunk; - -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.CallbackInfoReturnable; - -@Mixin(LevelChunk.class) -public class ChunkMixin { - - @Final - @Shadow - Level level; - - // We want to be as quick as possible here - @Inject(method = "setBlockState", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/world/level/block/state/BlockState;hasBlockEntity()Z", - ordinal = 2)) - private void gtceu$onChunkChanged(BlockPos pos, BlockState state, boolean isMoving, - CallbackInfoReturnable cir) { - MinecraftServer server = level.getServer(); - if (server != null) { - if (level instanceof ServerLevel serverLevel) { - for (var structure : MultiblockWorldSavedData.getOrCreate(serverLevel) - .getControllerInChunk(((LevelChunk) (Object) this).getPos())) { - if (structure.isPosInCache(pos)) { - server.executeBlocking(() -> structure.onBlockStateChanged(pos, state)); - } - } - } - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/CreeperMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/CreeperMixin.java deleted file mode 100644 index 974d1243a36..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/CreeperMixin.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins; - -import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.item.ComponentItem; -import com.gregtechceu.gtceu.common.item.tool.behavior.LighterBehavior; - -import net.minecraft.sounds.SoundEvents; -import net.minecraft.sounds.SoundSource; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.monster.Creeper; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; - -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; - -@Mixin(Creeper.class) -public abstract class CreeperMixin { - - @Shadow - public abstract void ignite(); - - @Inject(method = "mobInteract", at = @At(value = "HEAD")) - protected void gtceu$mobInteract(Player player, InteractionHand hand, - CallbackInfoReturnable cir) { - ItemStack stack = player.getItemInHand(hand); - if (stack.getItem() instanceof ComponentItem compItem) { - for (var component : compItem.getComponents()) { - if (component instanceof LighterBehavior lighter && lighter.consumeFuel(player, stack)) { - player.level().playSound(null, player.getOnPos(), SoundEvents.FLINTANDSTEEL_USE, - SoundSource.PLAYERS, 1.0F, GTValues.RNG.nextFloat() * 0.4F + 0.8F); - player.swing(hand); - ignite(); - return; - } - } - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/EntityMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/EntityMixin.java index 02b8b8615d3..f8e65ae9d87 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/EntityMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/EntityMixin.java @@ -16,7 +16,6 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(Entity.class) public abstract class EntityMixin implements IFireImmuneEntity { @@ -29,9 +28,9 @@ public abstract class EntityMixin implements IFireImmuneEntity { @Unique private boolean gtceu$isEntityInit = false; - @Inject(method = "fireImmune", at = @At("RETURN"), cancellable = true) - private void gtceu$changeFireImmune(CallbackInfoReturnable cir) { - cir.setReturnValue(gtceu$fireImmune || cir.getReturnValueZ()); + @ModifyReturnValue(method = "fireImmune", at = @At("RETURN")) + private boolean gtceu$changeFireImmune(boolean original) { + return original || gtceu$fireImmune; } @Inject(method = "", at = @At("TAIL")) @@ -43,15 +42,10 @@ public abstract class EntityMixin implements IFireImmuneEntity { this.gtceu$fireImmune = isImmune; } - @SuppressWarnings("UnreachableCode") // it doesn't like the cast because mixin. @ModifyReturnValue(method = "getMaxAirSupply", at = @At("RETURN")) private int gtceu$hazardModifyMaxAir(int original) { - if (!gtceu$isEntityInit) { - return original; - } - - if (!ConfigHolder.INSTANCE.gameplay.hazardsEnabled) - return original; + if (!gtceu$isEntityInit) return original; + if (!ConfigHolder.INSTANCE.gameplay.hazardsEnabled) return original; IMedicalConditionTracker tracker = GTCapabilityHelper.getMedicalConditionTracker((Entity) (Object) this); if (tracker != null && tracker.getMaxAirSupply() != -1) { diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/GTMixinPlugin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/GTMixinPlugin.java new file mode 100644 index 00000000000..430c4aaaf2c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/GTMixinPlugin.java @@ -0,0 +1,72 @@ +package com.gregtechceu.gtceu.core.mixins; + +import net.minecraftforge.fml.ModList; +import net.minecraftforge.fml.loading.LoadingModList; + +import org.objectweb.asm.tree.ClassNode; +import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; +import org.spongepowered.asm.mixin.extensibility.IMixinInfo; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +public class GTMixinPlugin implements IMixinConfigPlugin { + + @Override + public void onLoad(String mixinPackage) {} + + @Override + public String getRefMapperConfig() { + return null; + } + + private static final String MIXIN_PACKAGE = "com.gregtechceu.gtceu.core.mixins."; + private static final Map MOD_COMPAT_MIXINS = new HashMap<>(); + + static { + MOD_COMPAT_MIXINS.put("roughlyenoughitems", MIXIN_PACKAGE + "rei"); + addModCompatMixin("emi"); + addModCompatMixin("jei"); + addModCompatMixin("top"); + addModCompatMixin("ftbchunks"); + addModCompatMixin("xaerominimap"); + addModCompatMixin("xaeroworldmap"); + } + + @Override + public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { + for (var compatMod : MOD_COMPAT_MIXINS.entrySet()) { + if (mixinClassName.startsWith(compatMod.getValue())) { + return isModLoaded(compatMod.getKey()); + } + } + return true; + } + + @Override + public void acceptTargets(Set myTargets, Set otherTargets) {} + + @Override + public List getMixins() { + return null; + } + + @Override + public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {} + + @Override + public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {} + + private static void addModCompatMixin(String modId) { + MOD_COMPAT_MIXINS.put(modId, MIXIN_PACKAGE + modId); + } + + private static boolean isModLoaded(String modId) { + if (ModList.get() == null) { + return LoadingModList.get().getModFileById(modId) != null; + } + return ModList.get().isLoaded(modId); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/GregTechMixinPlugin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/GregTechMixinPlugin.java deleted file mode 100644 index 0ad2923f287..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/GregTechMixinPlugin.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins; - -import com.lowdragmc.lowdraglib.core.mixins.MixinPluginShared; - -import org.objectweb.asm.tree.ClassNode; -import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; -import org.spongepowered.asm.mixin.extensibility.IMixinInfo; - -import java.util.List; -import java.util.Set; - -public class GregTechMixinPlugin implements IMixinConfigPlugin { - - @Override - public void onLoad(String mixinPackage) {} - - @Override - public String getRefMapperConfig() { - return null; - } - - @Override - public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { - if (mixinClassName.contains("com.gregtechceu.gtceu.core.mixins.create")) { - return MixinPluginShared.isClassFound("com.simibubi.create.compat.Mods"); - } else if (mixinClassName.contains("com.gregtechceu.gtceu.core.mixins.rei")) { - return MixinPluginShared.isClassFound("me.shedaniel.rei.api.common.plugins.REIPlugin"); - } else if (mixinClassName.contains("com.gregtechceu.gtceu.core.mixins.top")) { - return MixinPluginShared.isClassFound("mcjty.theoneprobe.api.ITheOneProbe"); - } else if (mixinClassName.contains("com.gregtechceu.gtceu.core.mixins.jei")) { - return MixinPluginShared.isClassFound("mezz.jei.api.IModPlugin"); - } else if (mixinClassName.contains("com.gregtechceu.gtceu.core.mixins.emi")) { - return MixinPluginShared.isClassFound("dev.emi.emi.api.EmiPlugin"); - } - return true; - } - - @Override - public void acceptTargets(Set myTargets, Set otherTargets) {} - - @Override - public List getMixins() { - return null; - } - - @Override - public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {} - - @Override - public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {} -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsAccessor.java deleted file mode 100644 index 329f56e4928..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsAccessor.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.renderer.MultiBufferSource; - -import com.mojang.blaze3d.vertex.PoseStack; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Invoker; - -/** - * @author KilaBash - * @date 2023/7/19 - * @implNote GuiGraphicsAccessor - */ -@Mixin(GuiGraphics.class) -public interface GuiGraphicsAccessor { - - @Invoker("") - static GuiGraphics create(Minecraft client, PoseStack matrices, - MultiBufferSource.BufferSource vertexConsumerProvider) { - return null; - } - - @Invoker - void callFlushIfUnmanaged(); -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsMixin.java deleted file mode 100644 index ac19c68ad03..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsMixin.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins; - -import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; -import com.gregtechceu.gtceu.api.recipe.GTRecipe; -import com.gregtechceu.gtceu.api.recipe.GTRecipeType; -import com.gregtechceu.gtceu.utils.ResearchManager; - -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; - -import com.mojang.datafixers.util.Pair; -import org.jetbrains.annotations.Nullable; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.util.Collection; - -@Mixin(GuiGraphics.class) -public class GuiGraphicsMixin { - - // Prevents recursion in the hook below - @Unique - private static final ThreadLocal GTCEU$OVERRIDING_FOR = new ThreadLocal<>(); - - @Shadow - private void renderItem(@Nullable LivingEntity entity, @Nullable Level level, ItemStack stack, int x, int y, - int seed, int guiOffset) { - throw new AssertionError(); - } - - @Inject(method = "renderItem(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/level/Level;Lnet/minecraft/world/item/ItemStack;IIII)V", - at = @At(value = "HEAD"), - cancellable = true) - protected void gtceu$renderItem(@Nullable LivingEntity livingEntity, @Nullable Level level, ItemStack stack, - int x, int y, int seed, int z, CallbackInfo ci) { - if (GTCEU$OVERRIDING_FOR.get() != null) { - return; - } - - Pair researchData = ResearchManager.readResearchId(stack); - if (Screen.hasShiftDown() && researchData != null) { - Collection recipes = researchData.getFirst().getDataStickEntry(researchData.getSecond()); - if (recipes != null && !recipes.isEmpty()) { - for (var recipe : recipes) { - ItemStack output = ItemRecipeCapability.CAP - .of(recipe.getOutputContents(ItemRecipeCapability.CAP).get(0).content).getItems()[0]; - - if (!output.isEmpty() && !ItemStack.isSameItemSameTags(output, stack)) { - gtceu$renderInstead(livingEntity, level, output, x, y, seed, z); - ci.cancel(); - return; - } - } - } - } - } - - @Unique - private void gtceu$renderInstead(@Nullable LivingEntity livingEntity, @Nullable Level level, ItemStack stack, - int x, int y, int seed, int z) { - GTCEU$OVERRIDING_FOR.set(stack); - try { - this.renderItem(livingEntity, level, stack, x, y, seed, z); - } finally { - GTCEU$OVERRIDING_FOR.remove(); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/IFoliagePlacerTypeAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/IFoliagePlacerTypeAccessor.java deleted file mode 100644 index 0e10bfda2b2..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/IFoliagePlacerTypeAccessor.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins; - -import net.minecraft.world.level.levelgen.feature.foliageplacers.FoliagePlacer; -import net.minecraft.world.level.levelgen.feature.foliageplacers.FoliagePlacerType; - -import com.mojang.serialization.Codec; -import org.apache.commons.lang3.NotImplementedException; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Invoker; - -@Mixin(FoliagePlacerType.class) -public interface IFoliagePlacerTypeAccessor { - - @Invoker(value = "") - static FoliagePlacerType callCtor(Codec pCodec) { - throw new NotImplementedException("Mixin failed to apply"); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/IHolderReferenceAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/IHolderReferenceAccessor.java deleted file mode 100644 index 3a2bc3bdbec..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/IHolderReferenceAccessor.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins; - -import net.minecraft.core.Holder; - -import org.spongepowered.asm.mixin.Mixin; - -@Mixin(Holder.Reference.class) -public interface IHolderReferenceAccessor extends Holder { - - // @Invoker - // void invokeBind(ResourceKey key, T value); -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/ITrunkPlacerTypeAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/ITrunkPlacerTypeAccessor.java deleted file mode 100644 index 736d111b321..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/ITrunkPlacerTypeAccessor.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins; - -import net.minecraft.world.level.levelgen.feature.trunkplacers.TrunkPlacer; -import net.minecraft.world.level.levelgen.feature.trunkplacers.TrunkPlacerType; - -import com.mojang.serialization.Codec; -import org.apache.commons.lang3.NotImplementedException; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Invoker; - -@Mixin(TrunkPlacerType.class) -public interface ITrunkPlacerTypeAccessor { - - @Invoker(value = "") - static TrunkPlacerType callCtor(Codec pCodec) { - throw new NotImplementedException("Mixin failed to apply"); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/IngredientAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/IngredientAccessor.java index 62624edba02..e495afff604 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/IngredientAccessor.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/IngredientAccessor.java @@ -8,11 +8,6 @@ import java.util.stream.Stream; -/** - * @author KilaBash - * @date 2023/7/26 - * @implNote IngredientAccessor - */ @Mixin(Ingredient.class) public interface IngredientAccessor { diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/InventoryMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/InventoryMixin.java index c59d0e61835..df628d0ac4a 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/InventoryMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/InventoryMixin.java @@ -26,7 +26,7 @@ public abstract class InventoryMixin { @WrapOperation(method = "findSlotMatchingUnusedItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemStack;isSameItemSameTags(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/item/ItemStack;)Z")) - private boolean gtceu$modifyFindSlotMatcher(ItemStack stack, ItemStack other, Operation original) { + private boolean gtceu$ignoreGTToolNbt(ItemStack stack, ItemStack other, Operation original) { if (stack.getItem() instanceof IGTTool) { return ItemStack.isSameItem(stack, other); } @@ -36,7 +36,7 @@ public abstract class InventoryMixin { @WrapOperation(method = "findSlotMatchingUnusedItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemStack;isDamaged()Z")) - private boolean gtceu$damagedToolBypass(ItemStack instance, Operation original) { + private boolean gtceu$ignoreGTToolDamage(ItemStack instance, Operation original) { if (instance.getItem() instanceof IGTTool) { return false; } @@ -46,7 +46,7 @@ public abstract class InventoryMixin { @WrapOperation(method = "findSlotMatchingUnusedItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemStack;isEnchanted()Z")) - private boolean gtceu$enchantedToolBypass(ItemStack instance, Operation original) { + private boolean gtceu$ignoreGTToolEnchants(ItemStack instance, Operation original) { if (instance.getItem() instanceof IGTTool) { return false; } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java index 2d80a249d78..a29a022f803 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java @@ -1,10 +1,12 @@ package com.gregtechceu.gtceu.core.mixins; +import com.gregtechceu.gtceu.api.pattern.MultiblockState; import com.gregtechceu.gtceu.api.pattern.MultiblockWorldSavedData; import com.lowdragmc.lowdraglib.async.AsyncThreadData; import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.block.entity.BlockEntity; @@ -12,13 +14,19 @@ import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.LevelChunk; +import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import java.util.HashSet; +import java.util.Set; + @Mixin(Level.class) public abstract class LevelMixin implements LevelAccessor { @@ -30,31 +38,48 @@ public abstract class LevelMixin implements LevelAccessor { @Final private Thread thread; - @Shadow - public abstract boolean isLoaded(BlockPos pPos); + @Unique + private @Nullable ChunkAccess gtceu$maybeGetChunkAsync(int chunkX, int chunkZ) { + if (this.isClientSide) return null; + if (Thread.currentThread() == this.thread) return null; + if (!MultiblockWorldSavedData.isThreadService() && !AsyncThreadData.isThreadService()) return null; + if (!this.getChunkSource().hasChunk(chunkX, chunkZ)) return null; - private ChunkAccess getChunkNow(int pX, int pZ) { - return this.getChunkSource().getChunkNow(pX, pZ); + return this.getChunkSource().getChunkNow(chunkX, chunkZ); } @Inject(method = "getBlockEntity", at = @At(value = "HEAD"), cancellable = true) - private void getTileEntity(BlockPos pos, CallbackInfoReturnable cir) { - if (!this.isClientSide && Thread.currentThread() != this.thread && - (MultiblockWorldSavedData.isThreadService() || AsyncThreadData.isThreadService()) && isLoaded(pos)) { - ChunkAccess chunk = this.getChunkNow(pos.getX() >> 4, pos.getZ() >> 4); - if (chunk instanceof LevelChunk levelChunk) { - cir.setReturnValue(levelChunk.getBlockEntities().get(pos)); - } + private void gtceu$getBlockEntityOffThread(BlockPos pos, CallbackInfoReturnable cir) { + ChunkAccess chunk = gtceu$maybeGetChunkAsync(pos.getX() >> 4, pos.getZ() >> 4); + if (chunk instanceof LevelChunk levelChunk) { + cir.setReturnValue(levelChunk.getBlockEntities().get(pos)); } } @Inject(method = "getBlockState", at = @At(value = "HEAD"), cancellable = true) - private void getBlockState(BlockPos pos, CallbackInfoReturnable cir) { - if (!this.isClientSide && Thread.currentThread() != this.thread && - (MultiblockWorldSavedData.isThreadService() || AsyncThreadData.isThreadService()) && isLoaded(pos)) { - ChunkAccess chunk = this.getChunkNow(pos.getX() >> 4, pos.getZ() >> 4); - if (chunk != null) { - cir.setReturnValue(chunk.getBlockState(pos)); + private void gtceu$getBlockStateOffThread(BlockPos pos, CallbackInfoReturnable cir) { + ChunkAccess chunk = gtceu$maybeGetChunkAsync(pos.getX() >> 4, pos.getZ() >> 4); + if (chunk != null) { + cir.setReturnValue(chunk.getBlockState(pos)); + } + } + + @SuppressWarnings("ConstantValue") + @Inject(method = "markAndNotifyBlock", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/level/Level;blockUpdated(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/Block;)V", + remap = true), + remap = false) + private void gtceu$updateChunkMultiblocks(BlockPos pos, LevelChunk chunk, + BlockState oldState, BlockState newState, int flags, int recursionLeft, + CallbackInfo ci) { + if (!(((Object) this) instanceof ServerLevel serverLevel)) return; + + MultiblockWorldSavedData mwsd = MultiblockWorldSavedData.getOrCreate(serverLevel); + Set defensiveCopy = new HashSet<>(mwsd.getControllersInChunk(chunk.getPos())); + for (MultiblockState structure : defensiveCopy) { + if (structure.isPosInCache(pos)) { + serverLevel.getServer().executeBlocking(() -> structure.onBlockStateChanged(pos, newState)); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelRendererMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelRendererMixin.java deleted file mode 100644 index 0b4168ef3a9..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelRendererMixin.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins; - -import com.gregtechceu.gtceu.api.block.MaterialBlock; -import com.gregtechceu.gtceu.api.item.tool.ToolHelper; -import com.gregtechceu.gtceu.api.item.tool.aoe.AoESymmetrical; - -import net.minecraft.client.Camera; -import net.minecraft.client.Minecraft; -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.renderer.*; -import net.minecraft.client.resources.model.ModelBakery; -import net.minecraft.core.BlockPos; -import net.minecraft.server.level.BlockDestructionProgress; -import net.minecraft.util.FastColor; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.Vec3; -import net.minecraft.world.phys.shapes.CollisionContext; -import net.minecraft.world.phys.shapes.VoxelShape; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.SheetedDecalTextureGenerator; -import com.mojang.blaze3d.vertex.VertexConsumer; -import it.unimi.dsi.fastutil.longs.Long2ObjectMap; -import org.jetbrains.annotations.Nullable; -import org.joml.Matrix4f; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.util.*; - -@Mixin(LevelRenderer.class) -@OnlyIn(Dist.CLIENT) -public abstract class LevelRendererMixin { - - @Shadow - @Final - private Minecraft minecraft; - - @Shadow - @Final - private Long2ObjectMap> destructionProgress; - - @Shadow - @Final - private RenderBuffers renderBuffers; - - @Shadow - private @Nullable ClientLevel level; - - @Inject( - method = { "renderLevel" }, - at = { @At("HEAD") }) - private void renderLevel(PoseStack poseStack, float partialTick, long finishNanoTime, boolean renderBlockOutline, - Camera camera, GameRenderer gameRenderer, LightTexture lightTexture, - Matrix4f projectionMatrix, CallbackInfo ci) { - if (minecraft.player == null || minecraft.level == null) return; - - ItemStack mainHandItem = minecraft.player.getMainHandItem(); - if (!ToolHelper.hasBehaviorsTag(mainHandItem) || - ToolHelper.getAoEDefinition(mainHandItem) == AoESymmetrical.none() || - !(minecraft.hitResult instanceof BlockHitResult result) || minecraft.player.isShiftKeyDown()) - return; - - BlockPos hitResultPos = result.getBlockPos(); - BlockState hitResultState = minecraft.level.getBlockState(hitResultPos); - - SortedSet progresses = destructionProgress.get(hitResultPos.asLong()); - if (progresses == null || progresses.isEmpty() || !mainHandItem.isCorrectToolForDrops(hitResultState)) return; - BlockDestructionProgress progress = progresses.last(); - - Set positions = ToolHelper.getHarvestableBlocks(mainHandItem, - ToolHelper.getAoEDefinition(mainHandItem), level, minecraft.player, result); - - Vec3 vec3 = camera.getPosition(); - double camX = vec3.x(); - double camY = vec3.y(); - double camZ = vec3.z(); - - for (BlockPos pos : positions) { - poseStack.pushPose(); - poseStack.translate((double) pos.getX() - camX, (double) pos.getY() - camY, (double) pos.getZ() - camZ); - PoseStack.Pose last = poseStack.last(); - VertexConsumer breakProgressDecal = new SheetedDecalTextureGenerator( - this.renderBuffers.crumblingBufferSource() - .getBuffer(ModelBakery.DESTROY_TYPES.get(progress.getProgress())), - last.pose(), - last.normal(), - 1.0f); - this.minecraft.getBlockRenderer().renderBreakingTexture(minecraft.level.getBlockState(pos), pos, - minecraft.level, poseStack, breakProgressDecal); - poseStack.popPose(); - } - } - - @Shadow - public static void renderShape(PoseStack poseStack, VertexConsumer consumer, VoxelShape shape, double x, double y, - double z, float red, float green, float blue, float alpha) { - throw new AssertionError(); - } - - @Inject(method = "renderHitOutline", at = @At("HEAD"), cancellable = true) - private void gtceu$handleAOEOutline(PoseStack poseStack, VertexConsumer consumer, Entity entity, double camX, - double camY, - double camZ, BlockPos pos, BlockState state, CallbackInfo ci) { - if (minecraft.player == null || level == null) return; - - ItemStack mainHandItem = minecraft.player.getMainHandItem(); - - if (state.isAir() || !level.isInWorldBounds(pos) || !mainHandItem.isCorrectToolForDrops(state) || - minecraft.player.isShiftKeyDown() || !ToolHelper.hasBehaviorsTag(mainHandItem)) { - gtceu$renderContextAwareOutline(poseStack, consumer, entity, camX, camY, camZ, pos, state); - ci.cancel(); - return; - } - - ToolHelper - .getHarvestableBlocks(mainHandItem, ToolHelper.getAoEDefinition(mainHandItem), level, minecraft.player, - minecraft.hitResult) - .forEach(position -> gtceu$renderContextAwareOutline(poseStack, consumer, entity, camX, camY, camZ, - position, level.getBlockState(position))); - ci.cancel(); - } - - @Unique - private void gtceu$renderContextAwareOutline(PoseStack poseStack, VertexConsumer consumer, Entity entity, - double camX, double camY, double camZ, BlockPos pos, - BlockState state) { - assert level != null; - if (state.getBlock() instanceof MaterialBlock matBlock) { - int rgb = matBlock.material.getMaterialRGB(); - float red = (float) FastColor.ARGB32.red(rgb) / 255f; - float green = (float) FastColor.ARGB32.green(rgb) / 255f; - float blue = (float) FastColor.ARGB32.blue(rgb) / 255f; - renderShape(poseStack, consumer, state.getShape(level, pos, CollisionContext.of(entity)), - (double) pos.getX() - camX, (double) pos.getY() - camY, (double) pos.getZ() - camZ, - red, green, blue, 1F); - return; - } - var blockShape = state.getShape(level, pos); - var materialNeighbor = false; - for (int dY = -1; dY <= 1; dY++) { - for (int dX = -1; dX <= 1; dX++) { - for (int dZ = -1; dZ <= 1; dZ++) { - if (level.getBlockState(pos.offset(dX, dY, dZ)).getBlock() instanceof MaterialBlock) { - materialNeighbor = true; - break; - } - } - } - } - renderShape(poseStack, consumer, blockShape, - (double) pos.getX() - camX, (double) pos.getY() - camY, (double) pos.getZ() - camZ, - 0, 0, 0, materialNeighbor ? 1f : 0.4f); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/LivingEntityMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/LivingEntityMixin.java deleted file mode 100644 index f78855b4331..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/LivingEntityMixin.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins; - -import com.gregtechceu.gtceu.api.item.armor.ArmorComponentItem; - -import net.minecraft.world.damagesource.DamageSource; -import net.minecraft.world.entity.EquipmentSlot; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemStack; - -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; - -@Mixin(LivingEntity.class) -public abstract class LivingEntityMixin { - - @Shadow - public abstract Iterable getArmorSlots(); - - @Shadow - public abstract void setItemSlot(EquipmentSlot slot, ItemStack stack); - - @Inject(method = "getDamageAfterArmorAbsorb", - at = @At(value = "INVOKE", - target = "Lnet/minecraft/world/damagesource/CombatRules;getDamageAfterAbsorb(FFF)F")) - private void gtceu$adjustArmorAbsorption(DamageSource damageSource, float damageAmount, - CallbackInfoReturnable cir) { - float armorDamage = Math.max(1.0F, damageAmount / 4.0F); - int i = 0; - for (ItemStack itemStack : this.getArmorSlots()) { - if (itemStack.getItem() instanceof ArmorComponentItem armorItem) { - EquipmentSlot slot = EquipmentSlot.byTypeAndIndex(EquipmentSlot.Type.ARMOR, i); - armorItem.damageArmor((LivingEntity) (Object) this, itemStack, damageSource, (int) armorDamage, slot); - if (itemStack.getCount() == 0) { - this.setItemSlot(slot, ItemStack.EMPTY); - } - } - ++i; - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/RecipeManagerAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/RecipeManagerAccessor.java deleted file mode 100644 index 29d13c1a762..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/RecipeManagerAccessor.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins; - -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.crafting.Recipe; -import net.minecraft.world.item.crafting.RecipeManager; -import net.minecraft.world.item.crafting.RecipeType; - -import org.jetbrains.annotations.VisibleForTesting; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -import java.util.Map; - -/** - * @author KilaBash - * @date 2023/3/15 - * @implNote RecipeManagerAccessor - */ -@Mixin(RecipeManager.class) -public interface RecipeManagerAccessor { - - @Accessor("recipes") - Map, Map>> getRawRecipes(); - - @Accessor("recipes") - @VisibleForTesting - void setRawRecipes(Map, Map>> recipes); -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/RecipeManagerInvoker.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/RecipeManagerInvoker.java deleted file mode 100644 index 74dcee4fae6..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/RecipeManagerInvoker.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins; - -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.Container; -import net.minecraft.world.item.crafting.Recipe; -import net.minecraft.world.item.crafting.RecipeManager; -import net.minecraft.world.item.crafting.RecipeType; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Invoker; - -import java.util.Map; - -@Mixin(RecipeManager.class) -public interface RecipeManagerInvoker { - - @Invoker("byType") - > Map> getRecipeFromType(RecipeType type); -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/ShapedRecipeAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/ShapedRecipeAccessor.java index 474fcf0c079..fc45f91bccb 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/ShapedRecipeAccessor.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/ShapedRecipeAccessor.java @@ -13,11 +13,6 @@ import java.util.Map; -/** - * @author KilaBash - * @date 2023/7/24 - * @implNote ShapedRecipeAccessor - */ @Mixin(ShapedRecipe.class) public interface ShapedRecipeAccessor { diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/TagLoaderMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/TagLoaderMixin.java index e34dd0d7c79..062af0de349 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/TagLoaderMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/TagLoaderMixin.java @@ -19,28 +19,21 @@ import java.util.Map; @Mixin(value = TagLoader.class, priority = 500) -public class TagLoaderMixin implements IGTTagLoader { +public class TagLoaderMixin implements IGTTagLoader { @Nullable @Unique - private Registry gtceu$storedRegistry; + private Registry gtceu$storedRegistry; @Inject(method = "load", at = @At(value = "RETURN")) public void gtceu$load(ResourceManager resourceManager, CallbackInfoReturnable>> cir) { - var tagMap = cir.getReturnValue(); - if (gtceu$getRegistry() == null) return; - MixinHelpers.generateGTDynamicTags(tagMap, gtceu$getRegistry()); + if (gtceu$storedRegistry == null) return; + MixinHelpers.generateGTDynamicTags(cir.getReturnValue(), gtceu$storedRegistry); } @Override - @Nullable - public Registry gtceu$getRegistry() { - return gtceu$storedRegistry; - } - - @Override - public void gtceu$setRegistry(Registry registry) { + public void gtceu$setRegistry(Registry registry) { this.gtceu$storedRegistry = registry; } } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/TagManagerMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/TagManagerMixin.java index c9a0d312939..e4b61052e2e 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/TagManagerMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/TagManagerMixin.java @@ -3,38 +3,25 @@ import com.gregtechceu.gtceu.core.IGTTagLoader; import net.minecraft.core.Holder; -import net.minecraft.core.Registry; import net.minecraft.core.RegistryAccess; -import net.minecraft.resources.ResourceKey; import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.tags.TagLoader; import net.minecraft.tags.TagManager; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; 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 org.spongepowered.asm.mixin.injection.callback.LocalCapture; -import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; @Mixin(TagManager.class) public class TagManagerMixin { - @Inject(method = "createLoader", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/tags/TagLoader;(Ljava/util/function/Function;Ljava/lang/String;)V", - shift = At.Shift.BY, - by = 2), - locals = LocalCapture.CAPTURE_FAILHARD) - private < - T> void gtceu$saveRegistryToTagLoader(ResourceManager rm, Executor executor, - RegistryAccess.RegistryEntry reg, - CallbackInfoReturnable>> cir, - ResourceKey> key, Registry registry, - TagLoader> loader) { - ((IGTTagLoader) loader).gtceu$setRegistry(registry); + @ModifyExpressionValue(method = "createLoader", at = @At(value = "NEW", target = "net/minecraft/tags/TagLoader")) + private TagLoader> gtceu$saveTagLoaderRegistry(TagLoader> loader, + ResourceManager rm, Executor executor, + RegistryAccess.RegistryEntry entry) { + ((IGTTagLoader) loader).gtceu$setRegistry(entry.value()); + return loader; } } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/ae2/GenericStackInvAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/ae2/GenericStackInvAccessor.java deleted file mode 100644 index 0a5dfe6974c..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/ae2/GenericStackInvAccessor.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins.ae2; - -import appeng.helpers.externalstorage.GenericStackInv; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Mutable; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(value = GenericStackInv.class, remap = false) -public interface GenericStackInvAccessor { - - @Accessor - Runnable getListener(); - - @Accessor - @Mutable - void setListener(Runnable listener); -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/AbstractClientPlayerAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/AbstractClientPlayerAccessor.java new file mode 100644 index 00000000000..0bccc988375 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/AbstractClientPlayerAccessor.java @@ -0,0 +1,14 @@ +package com.gregtechceu.gtceu.core.mixins.client; + +import net.minecraft.client.multiplayer.PlayerInfo; +import net.minecraft.client.player.AbstractClientPlayer; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(AbstractClientPlayer.class) +public interface AbstractClientPlayerAccessor { + + @Invoker("getPlayerInfo") + PlayerInfo gtceu$getPlayerInfo(); +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/BakedQuadMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/BakedQuadMixin.java new file mode 100644 index 00000000000..ea2fadc9922 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/BakedQuadMixin.java @@ -0,0 +1,27 @@ +package com.gregtechceu.gtceu.core.mixins.client; + +import com.gregtechceu.gtceu.core.IGTBakedQuad; + +import net.minecraft.client.renderer.block.model.BakedQuad; + +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; + +@Mixin(BakedQuad.class) +public class BakedQuadMixin implements IGTBakedQuad { + + @Unique + private String gtceu$textureKey = null; + + @Override + public BakedQuad gtceu$setTextureKey(@Nullable String key) { + this.gtceu$textureKey = key; + return (BakedQuad) (Object) this; + } + + @Override + public String gtceu$getTextureKey() { + return gtceu$textureKey; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/BiomeColorsMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/BiomeColorsMixin.java similarity index 97% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/BiomeColorsMixin.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/client/BiomeColorsMixin.java index b5cc30f6668..69da57611e9 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/BiomeColorsMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/BiomeColorsMixin.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.client; import com.gregtechceu.gtceu.client.EnvironmentalHazardClientHandler; import com.gregtechceu.gtceu.config.ConfigHolder; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/BlockModelMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/BlockModelMixin.java new file mode 100644 index 00000000000..749e95c8a80 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/BlockModelMixin.java @@ -0,0 +1,19 @@ +package com.gregtechceu.gtceu.core.mixins.client; + +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.block.model.BlockElement; +import net.minecraft.client.renderer.block.model.BlockElementFace; +import net.minecraft.client.renderer.block.model.BlockModel; + +import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(value = BlockModel.class, priority = 1500) +public class BlockModelMixin { + + @ModifyReturnValue(method = "bakeFace", at = @At(value = "RETURN")) + private static BakedQuad gtceu$addQuadTextureKeyBlock(BakedQuad quad, BlockElement part, BlockElementFace face) { + return quad.gtceu$setTextureKey(face.texture); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/ClientLevelAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/ClientLevelAccessor.java similarity index 90% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/ClientLevelAccessor.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/client/ClientLevelAccessor.java index d1aa93f0289..0cce686ea64 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/ClientLevelAccessor.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/ClientLevelAccessor.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.client; import net.minecraft.client.color.block.BlockTintCache; import net.minecraft.client.multiplayer.ClientLevel; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/FaceBakeryMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/FaceBakeryMixin.java new file mode 100644 index 00000000000..432126a3fba --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/FaceBakeryMixin.java @@ -0,0 +1,19 @@ +package com.gregtechceu.gtceu.core.mixins.client; + +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.block.model.BlockElementFace; +import net.minecraft.client.renderer.block.model.FaceBakery; + +import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import org.joml.Vector3f; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(value = FaceBakery.class, priority = 1500) +public class FaceBakeryMixin { + + @ModifyReturnValue(method = "bakeQuad", at = @At(value = "RETURN")) + private BakedQuad gtceu$addQuadTextureKey(BakedQuad quad, Vector3f posFrom, Vector3f posTo, BlockElementFace face) { + return quad.gtceu$setTextureKey(face.texture); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/GuiGraphicsAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/GuiGraphicsAccessor.java new file mode 100644 index 00000000000..23dc158d2f9 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/GuiGraphicsAccessor.java @@ -0,0 +1,13 @@ +package com.gregtechceu.gtceu.core.mixins.client; + +import net.minecraft.client.gui.GuiGraphics; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(GuiGraphics.class) +public interface GuiGraphicsAccessor { + + @Invoker + void callFlushIfUnmanaged(); +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/GuiGraphicsMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/GuiGraphicsMixin.java new file mode 100644 index 00000000000..45a34910a9e --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/GuiGraphicsMixin.java @@ -0,0 +1,27 @@ +package com.gregtechceu.gtceu.core.mixins.client; + +import com.gregtechceu.gtceu.client.util.RenderUtil; + +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; + +import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; + +@Mixin(GuiGraphics.class) +public class GuiGraphicsMixin { + + @WrapMethod(method = "renderItem(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/level/Level;Lnet/minecraft/world/item/ItemStack;IIII)V") + private void gtceu$renderResearchItemContent(@Nullable LivingEntity entity, @Nullable Level level, + ItemStack stack, int x, int y, int seed, int z, + Operation original) { + if (!RenderUtil.renderResearchItemContent((GuiGraphics) (Object) this, original, + entity, level, stack, x, y, z, seed)) { + original.call(entity, level, stack, x, y, seed, z); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiHeartTypeMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/GuiHeartTypeMixin.java similarity index 94% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/GuiHeartTypeMixin.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/client/GuiHeartTypeMixin.java index d50077288c4..0d0b711d8a7 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiHeartTypeMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/GuiHeartTypeMixin.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.client; import com.gregtechceu.gtceu.common.data.GTMobEffects; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/HumanoidArmorLayerMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/HumanoidArmorLayerMixin.java new file mode 100644 index 00000000000..0c5240170df --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/HumanoidArmorLayerMixin.java @@ -0,0 +1,87 @@ +package com.gregtechceu.gtceu.core.mixins.client; + +import com.gregtechceu.gtceu.common.item.armor.GTArmorItem; + +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.renderer.entity.RenderLayerParent; +import net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer; +import net.minecraft.client.renderer.entity.layers.RenderLayer; +import net.minecraft.util.FastColor; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ArmorItem; + +import com.llamalad7.mixinextras.sugar.Local; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyArg; + +/// Have to do the ModifyArg calls separately, thanks forge. +/// see [Connector#383](https://github.com/Sinytra/Connector/discussions/383) for an explanation. +@Mixin(HumanoidArmorLayer.class) +public abstract class HumanoidArmorLayerMixin, + A extends HumanoidModel> extends RenderLayer { + + public HumanoidArmorLayerMixin(RenderLayerParent renderer) { + super(renderer); + } + + @ModifyArg(method = "renderArmorPiece", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/client/renderer/entity/layers/HumanoidArmorLayer;renderModel" + + "(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/item/ArmorItem;Lnet/minecraft/client/model/Model;ZFFFLnet/minecraft/resources/ResourceLocation;)V", + remap = false), + index = 6) + private float gtceu$modifyArmorTintR(float oldR, @Local ArmorItem armorItem) { + if (armorItem instanceof GTArmorItem gtArmorItem) { + int argb = gtArmorItem.material.getMaterialARGB(); + float r = FastColor.ARGB32.red(argb) / 255.0F; + + if (oldR != 1.0f) { + return (r + oldR) / 2.0f; + } else { + return r; + } + } + return oldR; + } + + @ModifyArg(method = "renderArmorPiece", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/client/renderer/entity/layers/HumanoidArmorLayer;renderModel" + + "(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/item/ArmorItem;Lnet/minecraft/client/model/Model;ZFFFLnet/minecraft/resources/ResourceLocation;)V", + remap = false), + index = 7) + private float gtceu$modifyArmorTintsG(float oldG, @Local ArmorItem armorItem) { + if (armorItem instanceof GTArmorItem gtArmorItem) { + int argb = gtArmorItem.material.getMaterialARGB(); + float g = FastColor.ARGB32.green(argb) / 255.0F; + + if (oldG != 1.0f) { + return (g + oldG) / 2.0f; + } else { + return g; + } + } + return oldG; + } + + @ModifyArg(method = "renderArmorPiece", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/client/renderer/entity/layers/HumanoidArmorLayer;renderModel" + + "(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/item/ArmorItem;Lnet/minecraft/client/model/Model;ZFFFLnet/minecraft/resources/ResourceLocation;)V", + remap = false), + index = 8) + private float gtceu$modifyArmorTintsB(float oldB, @Local ArmorItem armorItem) { + if (armorItem instanceof GTArmorItem gtArmorItem) { + int argb = gtArmorItem.material.getMaterialARGB(); + float b = FastColor.ARGB32.blue(argb) / 255.0F; + + if (oldB != 1.0f) { + return (b + oldB) / 2.0f; + } else { + return b; + } + } + return oldB; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java new file mode 100644 index 00000000000..06f24b56d02 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java @@ -0,0 +1,252 @@ +package com.gregtechceu.gtceu.core.mixins.client; + +import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.block.MaterialBlock; +import com.gregtechceu.gtceu.api.block.MaterialPipeBlock; +import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; +import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialEntry; +import com.gregtechceu.gtceu.api.item.tool.ToolHelper; +import com.gregtechceu.gtceu.api.item.tool.aoe.AoESymmetrical; +import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; +import com.gregtechceu.gtceu.api.machine.steam.SteamMachine; +import com.gregtechceu.gtceu.api.pipenet.IPipeNode; +import com.gregtechceu.gtceu.common.blockentity.CableBlockEntity; +import com.gregtechceu.gtceu.config.ConfigHolder; +import com.gregtechceu.gtceu.utils.GTUtil; + +import net.minecraft.client.Camera; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.*; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.resources.model.ModelBakery; +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.BlockDestructionProgress; +import net.minecraft.util.FastColor; +import net.minecraft.util.RandomSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.data.ModelData; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.SheetedDecalTextureGenerator; +import com.mojang.blaze3d.vertex.VertexConsumer; +import it.unimi.dsi.fastutil.longs.Long2ObjectMap; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.joml.Matrix4f; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.*; + +@Mixin(value = LevelRenderer.class, priority = 500) +@OnlyIn(Dist.CLIENT) +public abstract class LevelRendererMixin { + + @Shadow + @Final + private Minecraft minecraft; + + @Shadow + @Final + private Long2ObjectMap> destructionProgress; + + @Shadow + @Final + private RenderBuffers renderBuffers; + + @Shadow + private @Nullable ClientLevel level; + + @Unique + private final RandomSource gtceu$modelRandom = RandomSource.create(); + + @Inject(method = "renderLevel", at = @At("HEAD")) + private void renderLevel(PoseStack poseStack, float partialTick, long finishNanoTime, boolean renderBlockOutline, + Camera camera, GameRenderer gameRenderer, LightTexture lightTexture, + Matrix4f projectionMatrix, CallbackInfo ci) { + if (minecraft.player == null || level == null) return; + + ItemStack mainHandItem = minecraft.player.getMainHandItem(); + if (minecraft.player.isShiftKeyDown() || + !ToolHelper.hasBehaviorsTag(mainHandItem) || + !(minecraft.hitResult instanceof BlockHitResult hitResult)) { + return; + } + AoESymmetrical aoeDefinition = ToolHelper.getAoEDefinition(mainHandItem); + if (aoeDefinition.isZero()) return; + + BlockPos hitPos = hitResult.getBlockPos(); + BlockState hitState = level.getBlockState(hitPos); + + SortedSet progresses = destructionProgress.get(hitPos.asLong()); + if (progresses == null || progresses.isEmpty() || !mainHandItem.isCorrectToolForDrops(hitState)) return; + BlockDestructionProgress progress = progresses.last(); + + UseOnContext context = new UseOnContext(minecraft.player, InteractionHand.MAIN_HAND, hitResult); + var positions = ToolHelper.getHarvestableBlocks(aoeDefinition, context); + + Vec3 camPos = camera.getPosition(); + + poseStack.pushPose(); + poseStack.translate(-camPos.x(), -camPos.y(), -camPos.z()); + + for (BlockPos pos : positions) { + poseStack.pushPose(); + poseStack.translate(pos.getX(), pos.getY(), pos.getZ()); + + PoseStack.Pose last = poseStack.last(); + VertexConsumer breakProgressDecal = new SheetedDecalTextureGenerator( + this.renderBuffers.crumblingBufferSource() + .getBuffer(ModelBakery.DESTROY_TYPES.get(progress.getProgress())), + last.pose(), last.normal(), 1.0f); + ModelData modelData = level.getModelDataManager().getAt(pos); + this.minecraft.getBlockRenderer().renderBreakingTexture(level.getBlockState(pos), pos, + level, poseStack, breakProgressDecal, modelData != null ? modelData : ModelData.EMPTY); + poseStack.popPose(); + } + + poseStack.popPose(); + } + + @Shadow + private static void renderShape(PoseStack poseStack, VertexConsumer consumer, VoxelShape shape, + double x, double y, double z, + float red, float green, float blue, float alpha) { + throw new AssertionError(); + } + + @WrapOperation(method = "renderLevel", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/client/renderer/LevelRenderer;renderHitOutline(Lcom/mojang/blaze3d/vertex/PoseStack;Lcom/mojang/blaze3d/vertex/VertexConsumer;Lnet/minecraft/world/entity/Entity;DDDLnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)V")) + private void gtceu$handleAOEOutline(LevelRenderer instance, PoseStack poseStack, VertexConsumer consumer, + Entity entity, double camX, double camY, double camZ, + BlockPos pos, BlockState state, Operation original) { + if (minecraft.player == null || level == null) return; + + ItemStack mainHandItem = minecraft.player.getMainHandItem(); + + if (state.isAir() || minecraft.player.isShiftKeyDown() || !level.isInWorldBounds(pos) || + !mainHandItem.isCorrectToolForDrops(state) || !ToolHelper.hasBehaviorsTag(mainHandItem) || + !(minecraft.hitResult instanceof BlockHitResult hitResult)) { + gtceu$renderContextAwareOutline(instance, poseStack, consumer, entity, camX, camY, camZ, + pos, state, original); + return; + } + + UseOnContext context = new UseOnContext(minecraft.player, InteractionHand.MAIN_HAND, hitResult); + var blocks = ToolHelper.getHarvestableBlocks(ToolHelper.getAoEDefinition(mainHandItem), context); + blocks.sort((o1, o2) -> { + if (level.getBlockState(o1).getBlock() instanceof MaterialBlock) { + if (level.getBlockState(o2).getBlock() instanceof MaterialBlock) { + return 0; + } + return 1; + } + if (level.getBlockState(o2).getBlock() instanceof MaterialBlock) { + return -1; + } + return 0; + }); + blocks.forEach(blockPos -> gtceu$renderContextAwareOutline(instance, poseStack, consumer, entity, + camX, camY, camZ, blockPos, level.getBlockState(blockPos), original)); + } + + @Unique + private void gtceu$renderContextAwareOutline(LevelRenderer instance, PoseStack poseStack, VertexConsumer consumer, + Entity entity, double camX, double camY, double camZ, + BlockPos pos, BlockState state, Operation original) { + assert level != null; + var rendererCfg = ConfigHolder.INSTANCE.client.renderer; + int rgb = 0; + boolean doRenderColoredOutline = false; + + // spotless:off + // if it's translucent and a material block, always do the colored outline + MaterialEntry materialEntry = gtceu$getTranslucentBlockMaterial(state, pos); + if (!materialEntry.isEmpty()) { + doRenderColoredOutline = true; + rgb = materialEntry.material().getMaterialRGB(); + } else if (level.getBlockEntity(pos) instanceof IMachineBlockEntity mbe) { + if (rendererCfg.coloredTieredMachineOutline) { + if (mbe.getMetaMachine() instanceof SteamMachine steam) { + doRenderColoredOutline = true; + rgb = steam.isHighPressure() ? GTValues.VC_HP_STEAM : GTValues.VC_LP_STEAM; + } else if (mbe.getMetaMachine() instanceof ITieredMachine tiered) { + doRenderColoredOutline = true; + rgb = GTValues.VCM[tiered.getTier()]; + } + } + } else if (rendererCfg.coloredWireOutline && level.getBlockEntity(pos) instanceof IPipeNode pipe) { + doRenderColoredOutline = true; + if (!pipe.getFrameMaterial().isNull()) { + rgb = pipe.getFrameMaterial().getMaterialRGB(); + } else if (pipe instanceof CableBlockEntity cable) { + rgb = GTValues.VCM[GTUtil.getTierByVoltage(cable.getNodeData().getVoltage())]; + } else if (state.getBlock() instanceof MaterialPipeBlock materialPipe) { + rgb = materialPipe.material.getMaterialRGB(); + } + } + + VoxelShape blockShape = state.getShape(level, pos, CollisionContext.of(entity)); + // spotless:on + if (doRenderColoredOutline) { + float red = FastColor.ARGB32.red(rgb) / 255f; + float green = FastColor.ARGB32.green(rgb) / 255f; + float blue = FastColor.ARGB32.blue(rgb) / 255f; + renderShape(poseStack, consumer, blockShape, + pos.getX() - camX, pos.getY() - camY, pos.getZ() - camZ, + red, green, blue, 1f); + return; + } + BlockPos.MutableBlockPos mutable = pos.mutable(); + for (BlockPos o : GTUtil.NON_CORNER_NEIGHBOURS) { + BlockPos offset = mutable.setWithOffset(pos, o); + if (!gtceu$getTranslucentBlockMaterial(level.getBlockState(offset), offset).isEmpty()) { + renderShape(poseStack, consumer, blockShape, + pos.getX() - camX, pos.getY() - camY, pos.getZ() - camZ, + 0, 0, 0, 1f); + return; + } + } + original.call(instance, poseStack, consumer, entity, camX, camY, camZ, pos, state); + } + + @Unique + private @NotNull MaterialEntry gtceu$getTranslucentBlockMaterial(BlockState state, BlockPos pos) { + assert level != null; + // skip non-solid blocks from other mods (like vanilla ice blocks) + if (!state.isSolidRender(level, pos) && !(state.getBlock() instanceof MaterialBlock)) { + return MaterialEntry.NULL_ENTRY; + } + + BakedModel blockModel = minecraft.getBlockRenderer().getBlockModel(state); + ModelData modelData = level.getModelDataManager().getAt(pos); + if (modelData == null) modelData = ModelData.EMPTY; + modelData = blockModel.getModelData(level, pos, state, modelData); + + gtceu$modelRandom.setSeed(state.getSeed(pos)); + if (blockModel.getRenderTypes(state, gtceu$modelRandom, modelData).contains(RenderType.translucent())) { + return ChemicalHelper.getMaterialEntry(state.getBlock()); + } + return MaterialEntry.NULL_ENTRY; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/ModelManagerMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/ModelManagerMixin.java similarity index 78% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/ModelManagerMixin.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/client/ModelManagerMixin.java index af815c8acd0..24605160b28 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/ModelManagerMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/ModelManagerMixin.java @@ -1,12 +1,15 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.client; import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.client.renderer.block.MaterialBlockRenderer; import com.gregtechceu.gtceu.client.renderer.block.OreBlockRenderer; import com.gregtechceu.gtceu.client.renderer.block.SurfaceRockRenderer; +import com.gregtechceu.gtceu.client.renderer.item.ArmorItemRenderer; import com.gregtechceu.gtceu.client.renderer.item.TagPrefixItemRenderer; import com.gregtechceu.gtceu.client.renderer.item.ToolItemRenderer; -import com.gregtechceu.gtceu.common.data.GTModels; +import com.gregtechceu.gtceu.common.data.models.GTModels; +import com.gregtechceu.gtceu.integration.kjs.GregTechKubeJSPlugin; +import com.gregtechceu.gtceu.integration.modernfix.GTModernFixIntegration; import net.minecraft.client.resources.model.ModelManager; import net.minecraft.server.packs.resources.PreparableReloadListener; @@ -38,8 +41,16 @@ public abstract class ModelManagerMixin { TagPrefixItemRenderer.reinitModels(); OreBlockRenderer.reinitModels(); ToolItemRenderer.reinitModels(); + ArmorItemRenderer.reinitModels(); SurfaceRockRenderer.reinitModels(); GTModels.registerMaterialFluidModels(); + + if (GTCEu.Mods.isKubeJSLoaded()) { + GregTechKubeJSPlugin.generateMachineBlockModels(); + } + if (GTCEu.Mods.isModernFixLoaded()) { + GTModernFixIntegration.setAsLast(); + } GTCEu.LOGGER.info("GregTech Model loading took {}ms", System.currentTimeMillis() - startTime); } } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/MultiPlayerGameModeMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/MultiPlayerGameModeMixin.java similarity index 88% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/MultiPlayerGameModeMixin.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/client/MultiPlayerGameModeMixin.java index 7d5aae874a3..ab4890ed515 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/MultiPlayerGameModeMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/MultiPlayerGameModeMixin.java @@ -1,7 +1,6 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.client; import com.gregtechceu.gtceu.api.item.tool.ToolHelper; -import com.gregtechceu.gtceu.api.item.tool.aoe.AoESymmetrical; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.MultiPlayerGameMode; @@ -18,11 +17,6 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -/** - * @author KilaBash - * @date 2023/2/24 - * @implNote MultiPlayerGameModeMixin - */ @Mixin(MultiPlayerGameMode.class) public class MultiPlayerGameModeMixin { @@ -36,7 +30,7 @@ public class MultiPlayerGameModeMixin { if (minecraft.player == null || minecraft.level == null || !ToolHelper.hasBehaviorsTag(mainHandItem) || - ToolHelper.getAoEDefinition(mainHandItem) == AoESymmetrical.none() || + ToolHelper.getAoEDefinition(mainHandItem).isZero() || minecraft.player.isShiftKeyDown() || !mainHandItem.isCorrectToolForDrops(minecraft.level.getBlockState(pos))) return; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/PlayerInfoAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/PlayerInfoAccessor.java new file mode 100644 index 00000000000..f4549b6cbb7 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/PlayerInfoAccessor.java @@ -0,0 +1,17 @@ +package com.gregtechceu.gtceu.core.mixins.client; + +import net.minecraft.client.multiplayer.PlayerInfo; +import net.minecraft.resources.ResourceLocation; + +import com.mojang.authlib.minecraft.MinecraftProfileTexture; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.Map; + +@Mixin(PlayerInfo.class) +public interface PlayerInfoAccessor { + + @Accessor + Map getTextureLocations(); +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/VariantDeserializerMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/VariantDeserializerMixin.java new file mode 100644 index 00000000000..1ecd21d0569 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/VariantDeserializerMixin.java @@ -0,0 +1,30 @@ +package com.gregtechceu.gtceu.core.mixins.client; + +import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; +import com.gregtechceu.gtceu.client.util.VariantRotationHelpers; + +import net.minecraft.client.renderer.block.model.Variant; +import net.minecraft.util.GsonHelper; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(Variant.Deserializer.class) +public class VariantDeserializerMixin { + + @ModifyReturnValue(method = "deserialize(Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/renderer/block/model/Variant;", + at = @At("RETURN")) + public Variant gtceu$addZRotation(Variant variant, JsonElement json) { + JsonObject jsonObject = json.getAsJsonObject(); + if (jsonObject.has(GTBlockstateProvider.Z_ROT_PROPERTY_NAME)) { + var xRot = GsonHelper.getAsInt(jsonObject, "x", 0); + var yRot = GsonHelper.getAsInt(jsonObject, "y", 0); + var zRot = GsonHelper.getAsInt(jsonObject, GTBlockstateProvider.Z_ROT_PROPERTY_NAME, 0); + return VariantRotationHelpers.rotateVariant(variant, xRot, yRot, zRot); + } + return variant; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/ConfiguredModelBuilderAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/ConfiguredModelBuilderAccessor.java new file mode 100644 index 00000000000..cfac5126cd6 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/ConfiguredModelBuilderAccessor.java @@ -0,0 +1,20 @@ +package com.gregtechceu.gtceu.core.mixins.forge; + +import net.minecraftforge.client.model.generators.ConfiguredModel; + +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +import java.util.List; +import java.util.function.Function; + +@Mixin(value = ConfiguredModel.Builder.class, remap = false) +public interface ConfiguredModelBuilderAccessor { + + @Invoker("") + static ConfiguredModel.Builder builder(@Nullable Function callback, + List otherModels) { + throw new AssertionError(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/ConfiguredModelListAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/ConfiguredModelListAccessor.java new file mode 100644 index 00000000000..73b9445fdaf --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/ConfiguredModelListAccessor.java @@ -0,0 +1,16 @@ +package com.gregtechceu.gtceu.core.mixins.forge; + +import net.minecraftforge.client.model.generators.BlockStateProvider; +import net.minecraftforge.client.model.generators.ConfiguredModel; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.List; + +@Mixin(value = BlockStateProvider.ConfiguredModelList.class, remap = false) +public interface ConfiguredModelListAccessor { + + @Accessor("models") + List gtceu$getModels(); +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/IntersectionIngredientAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/IntersectionIngredientAccessor.java similarity index 89% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/IntersectionIngredientAccessor.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/forge/IntersectionIngredientAccessor.java index f7edb4daf28..c9c1f257841 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/IntersectionIngredientAccessor.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/IntersectionIngredientAccessor.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.forge; import net.minecraft.world.item.crafting.Ingredient; import net.minecraftforge.common.crafting.IntersectionIngredient; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/PartialNBTIngredientAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/PartialNBTIngredientAccessor.java similarity index 90% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/PartialNBTIngredientAccessor.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/forge/PartialNBTIngredientAccessor.java index c3953078475..9e25b3cea32 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/PartialNBTIngredientAccessor.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/PartialNBTIngredientAccessor.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.forge; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.Item; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/StrictNBTIngredientAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/StrictNBTIngredientAccessor.java similarity index 87% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/StrictNBTIngredientAccessor.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/forge/StrictNBTIngredientAccessor.java index c91752b250c..2ca0f7abf32 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/StrictNBTIngredientAccessor.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/StrictNBTIngredientAccessor.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.forge; import net.minecraft.world.item.ItemStack; import net.minecraftforge.common.crafting.StrictNBTIngredient; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/ftbchunks/FTBChunksClientMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/ftbchunks/FTBChunksClientMixin.java index 5fb87fe7a8f..203ebf854cb 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/ftbchunks/FTBChunksClientMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/ftbchunks/FTBChunksClientMixin.java @@ -30,7 +30,7 @@ import java.util.Iterator; -@Mixin(value = FTBChunksClient.class) +@Mixin(value = FTBChunksClient.class, remap = false) public class FTBChunksClientMixin { @Unique @@ -43,7 +43,8 @@ public class FTBChunksClientMixin { @Inject(method = "renderHud", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/PoseStack;scale(FFF)V", - shift = At.Shift.AFTER), + shift = At.Shift.AFTER, + remap = true), slice = @Slice(from = @At(value = "INVOKE", target = "Ldev/ftb/mods/ftbchunks/api/client/icon/MapIcon;getPos(F)Lnet/minecraft/world/phys/Vec3;"), to = @At(value = "INVOKE", diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/ldlib/ModularWrapperWidgetMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/ldlib/ModularWrapperWidgetMixin.java new file mode 100644 index 00000000000..df313d70aab --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/ldlib/ModularWrapperWidgetMixin.java @@ -0,0 +1,19 @@ +package com.gregtechceu.gtceu.core.mixins.ldlib; + +import com.lowdragmc.lowdraglib.emi.ModularWrapperWidget; +import com.lowdragmc.lowdraglib.gui.ingredient.IRecipeIngredientSlot; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.Constant; + +@Mixin(value = ModularWrapperWidget.class, remap = false) +public class ModularWrapperWidgetMixin { + + @WrapOperation(method = "getTooltip(II)Ljava/util/List;", + constant = { @Constant(classValue = IRecipeIngredientSlot.class) }) + public boolean gtceu$wrapInstanceOf(Object object, Operation original) { + return false; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/AbstractRegistrateAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/registrate/AbstractRegistrateAccessor.java similarity index 93% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/AbstractRegistrateAccessor.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/registrate/AbstractRegistrateAccessor.java index 801fa24fc68..8546afae25e 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/AbstractRegistrateAccessor.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/registrate/AbstractRegistrateAccessor.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.registrate; import com.google.common.collect.ListMultimap; import com.tterrag.registrate.AbstractRegistrate; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/registrate/RegistrateDataProviderAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/registrate/RegistrateDataProviderAccessor.java new file mode 100644 index 00000000000..795638b44ea --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/registrate/RegistrateDataProviderAccessor.java @@ -0,0 +1,16 @@ +package com.gregtechceu.gtceu.core.mixins.registrate; + +import com.google.common.collect.BiMap; +import com.tterrag.registrate.providers.ProviderType; +import com.tterrag.registrate.providers.RegistrateDataProvider; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(value = RegistrateDataProvider.class, remap = false) +public interface RegistrateDataProviderAccessor { + + @Accessor("TYPES") + static BiMap> gtceu$getTypes() { + throw new AssertionError(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/top/ConfigMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/top/ConfigMixin.java index 6d846a62078..6ebebeae66f 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/top/ConfigMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/top/ConfigMixin.java @@ -13,6 +13,8 @@ import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; +import it.unimi.dsi.fastutil.ints.IntOpenHashSet; +import it.unimi.dsi.fastutil.ints.IntSet; import mcjty.theoneprobe.config.Config; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -20,9 +22,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import java.util.HashSet; import java.util.Map; -import java.util.Set; @Mixin(value = Config.class, remap = false) public class ConfigMixin { @@ -46,7 +46,7 @@ public class ConfigMixin { @Inject(method = "getHarvestabilityTags", at = @At(value = "INVOKE", target = "Ljava/util/List;iterator()Ljava/util/Iterator;")) private static void gtceu$injectHarvestTags(CallbackInfoReturnable> cir) { - Set passedTiers = new HashSet<>(); + IntSet passedTiers = new IntOpenHashSet(); for (Material mat : GTCEuAPI.materialManager.getRegisteredMaterials()) { if (mat.hasProperty(PropertyKey.TOOL)) { MaterialToolTier tier = mat.getToolTier(); diff --git a/src/main/java/com/gregtechceu/gtceu/data/GregTechDatagen.java b/src/main/java/com/gregtechceu/gtceu/data/GregTechDatagen.java index 3552b0994e9..05ee4c3bde3 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/GregTechDatagen.java +++ b/src/main/java/com/gregtechceu/gtceu/data/GregTechDatagen.java @@ -1,23 +1,33 @@ package com.gregtechceu.gtceu.data; +import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; import com.gregtechceu.gtceu.common.registry.GTRegistration; +import com.gregtechceu.gtceu.core.mixins.registrate.RegistrateDataProviderAccessor; import com.gregtechceu.gtceu.data.lang.LangHandler; -import com.gregtechceu.gtceu.data.tags.TagsHandler; +import com.gregtechceu.gtceu.data.model.BlockstateModelLoader; +import com.gregtechceu.gtceu.data.tags.*; import com.tterrag.registrate.providers.ProviderType; -/** - * @author KilaBash - * @date 2023/3/19 - * @implNote GregTechDatagen - */ public class GregTechDatagen { - public static void init() { - GTRegistration.REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, TagsHandler::initItem); - GTRegistration.REGISTRATE.addDataGenerator(ProviderType.BLOCK_TAGS, TagsHandler::initBlock); - GTRegistration.REGISTRATE.addDataGenerator(ProviderType.FLUID_TAGS, TagsHandler::initFluid); - GTRegistration.REGISTRATE.addDataGenerator(ProviderType.ENTITY_TAGS, TagsHandler::initEntity); + // we only register this so the class gets loaded. the key gets overwritten in #initPre. + private static final ProviderType BLOCKSTATE_PROVIDER = ProviderType.register("ex_blockstate", + GTBlockstateProvider::new); + + public static void initPre() { + // replace some default providers with ours + RegistrateDataProviderAccessor.gtceu$getTypes().forcePut("blockstate", BLOCKSTATE_PROVIDER); + + GTRegistration.REGISTRATE.addDataGenerator(ProviderType.BLOCKSTATE, + p -> BlockstateModelLoader.init((GTBlockstateProvider) p)); + } + + public static void initPost() { + GTRegistration.REGISTRATE.addDataGenerator(ProviderType.BLOCK_TAGS, BlockTagLoader::init); + GTRegistration.REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, ItemTagLoader::init); + GTRegistration.REGISTRATE.addDataGenerator(ProviderType.FLUID_TAGS, FluidTagLoader::init); + GTRegistration.REGISTRATE.addDataGenerator(ProviderType.ENTITY_TAGS, EntityTypeTagLoader::init); GTRegistration.REGISTRATE.addDataGenerator(ProviderType.LANG, LangHandler::init); } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/IntegrationLang.java b/src/main/java/com/gregtechceu/gtceu/data/lang/IntegrationLang.java index 840c55d4dda..f53652dc788 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/IntegrationLang.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/IntegrationLang.java @@ -97,6 +97,9 @@ private static void initWailaLikeLang(RegistrateLangProvider provider) { provider.add("gtceu.jade.progress_sec", "%s / %s s"); provider.add("gtceu.jade.progress_tick", "%s / %s t"); provider.add("gtceu.jade.cleaned_this_second", "Cleaned hazard: %s/s"); + provider.add("gtceu.jade.fluid_use", "%s mB/t"); + provider.add("gtceu.jade.amperage_use", "%s A"); + provider.add("gtceu.jade.at", " @ "); provider.add("gtceu.top.energy_stored", " / %d EU"); provider.add("gtceu.top.progress_computation", " / %s CWU"); diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/ItemLang.java b/src/main/java/com/gregtechceu/gtceu/data/lang/ItemLang.java index 8389b9f7fa9..68f07557c54 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/ItemLang.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/ItemLang.java @@ -25,7 +25,7 @@ private static void initGeneratedNames(RegistrateLangProvider provider) { } // Recipe Categories - provider.add("gtceu.recipe.category.arc_furnace_recycling", "Plasma Scrapping"); + provider.add("gtceu.recipe.category.arc_furnace_recycling", "Arc Scrapping"); provider.add("gtceu.recipe.category.macerator_recycling", "Part Grinding"); provider.add("gtceu.recipe.category.extractor_recycling", "Scrap Remelting"); provider.add("gtceu.recipe.category.ore_crushing", "Ore Grinding"); @@ -117,9 +117,7 @@ private static void initItemTooltips(RegistrateLangProvider provider) { provider.add("item.gtceu.zpm_battery_hull.tooltip", "§7An empty §fZPM §7Battery Hull"); provider.add("item.gtceu.uv_battery_hull.tooltip", "§7An empty §3UV §7Battery Hull"); provider.add("item.gtceu.battery.charge_time", "§aHolds %s %s of Power (%s)"); - provider.add("item.gtceu.battery.charge_detailed.0", "§a%s/%s EU§7 - Tier %s §7(§a%s/%s %s remaining§7)"); - provider.add("item.gtceu.battery.charge_detailed.1", "§e%s/%s EU§7 - Tier %s §7(§e%s/%s %s remaining§7)"); - provider.add("item.gtceu.battery.charge_detailed.2", "§c%s/%s EU§7 - Tier %s §7(§c%s/%s %s remaining§7)"); + provider.add("item.gtceu.battery.charge_detailed", "%s/%s EU§7 - Tier %s §7(%s/%s %s remaining§7)"); provider.add("item.gtceu.battery.charge_unit.second", "seconds"); provider.add("item.gtceu.battery.charge_unit.minute", "minutes"); provider.add("item.gtceu.battery.charge_unit.hour", "hours"); diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java index 2abaec8eb76..91f07ccae4f 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java @@ -3,8 +3,7 @@ import com.gregtechceu.gtceu.common.data.GTBlocks; import com.gregtechceu.gtceu.common.data.GTMaterials; -import com.lowdragmc.lowdraglib.utils.LocalizationUtils; - +import net.minecraft.locale.Language; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraftforge.common.data.LanguageProvider; @@ -20,11 +19,6 @@ import java.util.Map; import java.util.stream.Collectors; -/** - * @author KilaBash - * @date 2023/3/19 - * @implNote LangHandler - */ public class LangHandler { public static void init(RegistrateLangProvider provider) { @@ -139,6 +133,17 @@ public static void init(RegistrateLangProvider provider) { provider.add("command.gtceu.place_vein.failure", "Failed to place vein %s at position %s"); provider.add("command.gtceu.place_vein.success", "Placed vein %s at position %s"); provider.add("command.gtceu.share_prospection_data.notification", "%s is sharing prospecting data with you!"); + provider.add("command.gtceu.cape.failure.does_not_exist", "Cape %s does not exist"); + provider.add("command.gtceu.cape.give.failed", "No new capes were unlocked"); + provider.add("command.gtceu.cape.give.success.multiple", "Unlocked %s capes for %s players"); + provider.add("command.gtceu.cape.give.success.single", "Unlocked %s capes for %s"); + provider.add("command.gtceu.cape.take.failed", "No capes could be removed"); + provider.add("command.gtceu.cape.take.success.multiple", "Took %s capes from %s players"); + provider.add("command.gtceu.cape.take.success.single", "Took %s capes from %s"); + provider.add("command.gtceu.cape.use.failed", + "%s can't use cape %s because they don't have it (or it doesn't exist)!"); + provider.add("command.gtceu.cape.use.success", "%s is now using cape %s"); + provider.add("command.gtceu.cape.use.success.none", "%s is no longer using a cape"); provider.add("gtceu.medical_condition.description", "§l§cHAZARDOUS §7Hold Shift to show details"); provider.add("gtceu.medical_condition.description_shift", "§l§cHAZARDOUS:"); @@ -169,6 +174,8 @@ public static void init(RegistrateLangProvider provider) { provider.add("gtceu.medical_condition.antidote.description.effect_removed.all", "Removes all of current conditions' effects"); + provider.add("gtceu.multiblock.dimension", "§eDimensions: §r%sx%sx%s"); + provider.add("item.gtceu.tool.replace_tool_head", "Craft with a new Tool Head to replace it"); provider.add("item.gtceu.tool.usable_as", "§8Usable as: §f%s"); provider.add("item.gtceu.tool.behavior.silk_ice", "§bIce Cutter: §fSilk Harvests Ice"); @@ -258,6 +265,12 @@ public static void init(RegistrateLangProvider provider) { provider.add("item.gtceu.tool.aoe.rows", "Rows"); provider.add("item.gtceu.tool.aoe.columns", "Columns"); provider.add("item.gtceu.tool.aoe.layers", "Layers"); + + provider.add("item.gtceu.armor.helmet", "%s Helmet"); + provider.add("item.gtceu.armor.chestplate", "%s Chestplate"); + provider.add("item.gtceu.armor.leggings", "%s Leggings"); + provider.add("item.gtceu.armor.boots", "%s Boots"); + provider.add("item.gtceu.turbine_rotor.tooltip", "Turbine Rotors for your power station"); provider.add("metaitem.clipboard.tooltip", "Can be written on (without any writing Instrument). Right-click on Wall to place, and Shift-Right-Click to remove"); @@ -456,6 +469,10 @@ public static void init(RegistrateLangProvider provider) { provider.add("cover.ender_fluid_link.title", "Ender Fluid Link"); provider.add("cover.ender_fluid_link.iomode.enabled", "I/O Enabled"); provider.add("cover.ender_fluid_link.iomode.disabled", "I/O Disabled"); + provider.add("cover.ender_fluid_link.tooltip.channel_description", "Set channel description with input text"); + provider.add("cover.ender_fluid_link.tooltip.channel_name", "Set channel name with input text"); + provider.add("cover.ender_fluid_link.tooltip.list_button", "Show channel list"); + provider.add("cover.ender_fluid_link.tooltip.clear_button", "Clear channel description"); multilineLang(provider, "cover.ender_fluid_link.private.tooltip.disabled", "Switch to private tank mode\nPrivate mode uses the player who originally placed the cover"); provider.add("cover.ender_fluid_link.private.tooltip.enabled", "Switch to public tank mode"); @@ -512,6 +529,7 @@ public static void init(RegistrateLangProvider provider) { replace(provider, GTMaterials.FullersEarth.getUnlocalizedName(), "Fuller's Earth"); replace(provider, GTMaterials.Cooperite.getUnlocalizedName(), "Sheldonite"); // greg's humor is now on // 1.19... + replace(provider, GTMaterials.Limonite.getUnlocalizedName(), "Limonite"); replace(provider, GTMaterials.HSSG.getUnlocalizedName(), "HSS-G"); replace(provider, GTMaterials.HSSE.getUnlocalizedName(), "HSS-E"); replace(provider, GTMaterials.HSSS.getUnlocalizedName(), "HSS-S"); @@ -736,7 +754,7 @@ public static void init(RegistrateLangProvider provider) { provider.add("behaviour.soft_hammer", "Activates and Deactivates Machines"); provider.add("behaviour.soft_hammer.enabled", "Working Enabled"); provider.add("behaviour.soft_hammer.disabled", "Working Disabled"); - provider.add("behaviour.soft_hammer.idle_after_cycle", "Pause machine after current cycle"); + provider.add("behaviour.soft_hammer.disabled_cycle", "Working Disabled after current cycle"); provider.add("behaviour.lighter.tooltip.description", "Can light things on fire"); provider.add("behaviour.lighter.tooltip.usage", "Shift-right click to open/close"); provider.add("behaviour.lighter.fluid.tooltip", "Can light things on fire with Butane or Propane"); @@ -905,10 +923,14 @@ public static void init(RegistrateLangProvider provider) { provider.add("metaitem.cover.digital.mode.fluid.disabled", "Click to enable Fluid Mode"); provider.add("metaitem.cover.digital.mode.fluid.enabled", "Fluid Mode enabled"); - provider.add("gtceu.universal.disabled", "Multiblock Sharing §4Disabled"); - provider.add("gtceu.universal.enabled", "Multiblock Sharing §aEnabled"); + provider.add("gtceu.part_sharing.disabled", "Multiblock Sharing §4Disabled"); + provider.add("gtceu.part_sharing.enabled", "Multiblock Sharing §aEnabled"); provider.add("gtceu.universal.liters", "%s mB"); provider.add("gtceu.universal.kiloliters", "%s B"); + provider.add("gtceu.universal.parentheses", "(%s)"); + provider.add("gtceu.universal.spaced_parentheses", "( %s )"); + provider.add("gtceu.universal.padded_parentheses", " (%s) "); + provider.add("gtceu.universal.padded_spaced_parentheses", " ( %s ) "); provider.add("gtceu.universal.tooltip.voltage_in", "§aVoltage IN: §f%d EU/t (%s§f)"); provider.add("gtceu.universal.tooltip.max_voltage_in", "§aMax Voltage IN: §f%d (%s§f)"); provider.add("gtceu.universal.tooltip.voltage_out", "§aVoltage OUT: §f%d EU/t (%s§f)"); @@ -956,10 +978,12 @@ public static void init(RegistrateLangProvider provider) { "§4§lWARNING:§r§4 DEPRECATED. WILL BE REMOVED IN A FUTURE VERSION.§r"); provider.add("gtceu.recipe.total", "Total: %s EU"); provider.add("gtceu.recipe.max_eu", "Max. EU: %s EU"); - provider.add("gtceu.recipe.eu", "Usage: %s EU/t"); - provider.add("gtceu.recipe.eu_inverted", "Generation: %s EU/t"); + provider.add("gtceu.recipe.eu", "Usage: %s A @ %s"); + provider.add("gtceu.recipe.eu_inverted", "Generation: %s A @ %s"); + provider.add("gtceu.recipe.eu.total", "%s EU/t"); provider.add("gtceu.recipe.duration", "Duration: %s secs"); - provider.add("gtceu.recipe.amperage", "Amperage: %s"); + provider.add("gtceu.recipe.voltage", "Usage: %s A @ %s"); + provider.add("gtceu.recipe.total_eu", "Total Usage: %s EU/t"); provider.add("gtceu.recipe.not_consumed", "Does not get consumed in the process"); provider.add("gtceu.recipe.chance", "Chance: %s +%s/tier"); provider.add("gtceu.recipe.temperature", "Temp: %sK"); @@ -976,6 +1000,7 @@ public static void init(RegistrateLangProvider provider) { provider.add("gtceu.recipe.scan_for_research", "Scan for Assembly Line"); provider.add("gtceu.recipe.computation_per_tick", "Min. Computation: %s CWU/t"); provider.add("gtceu.recipe.total_computation", "Computation: %s CWU"); + provider.add("gtceu.recipe.byproduct_tier", "Byproducts from %s§r+"); provider.add("gtceu.fluid.click_to_fill", "§7Click with a Fluid Container to §bfill §7the tank (Shift-click for a full stack)."); provider.add("gtceu.fluid.click_combined", @@ -1121,6 +1146,9 @@ public static void init(RegistrateLangProvider provider) { provider.add("gtceu.multiblock.not_enough_energy", "WARNING: Machine needs more energy."); provider.add("gtceu.multiblock.not_enough_energy_output", "WARNING: Energy Dynamo Tier Too Low!"); provider.add("gtceu.multiblock.waiting", "WARNING: Machine is waiting."); + provider.add("gtceu.multiblock.batch_enabled", "Batching Mode: Enabled (%sx)"); + provider.add("gtceu.machine.batch_enabled", "Batching Enabled"); + provider.add("gtceu.machine.batch_disabled", "Batching Disabled"); provider.add("gtceu.multiblock.progress_percent", "Progress: %s%%"); provider.add("gtceu.multiblock.progress", "Progress: %ss / %ss (%s%%)"); provider.add("gtceu.multiblock.output_line.0", "%s x §e%s§r (%ss/ea)"); @@ -1190,35 +1218,6 @@ public static void init(RegistrateLangProvider provider) { "A Reception Hatch is linked to a machine which cannot bridge"); provider.add("gtceu.multiblock.computation.not_enough_computation", "Machine needs more computation!"); - provider.add("gtceu.command.usage", "Usage: /gtceu "); - provider.add("gtceu.command.worldgen.usage", "Usage: /gtceu worldgen "); - provider.add("gtceu.command.worldgen.reload.usage", "Usage: /gtceu worldgen reload"); - provider.add("gtceu.command.worldgen.reload.success", "Worldgen successfully reloaded from config."); - provider.add("gtceu.command.worldgen.reload.failed", - "Worldgen reload failed. Check console for errors."); - provider.add("gtceu.command.hand.groovy", "Consider using §6/gs hand"); - provider.add("gtceu.command.hand.usage", "Usage: /gtceu hand"); - provider.add("gtceu.command.hand.item_id", "Item: %s (Metadata: %d)"); - provider.add("gtceu.command.hand.electric", "Electric Info: %d / %d EU - Tier: %d; Is Battery: %s"); - provider.add("gtceu.command.hand.fluid", "Fluid Info: %d / %d mB; Can Fill: %s; Can Drain: %s"); - provider.add("gtceu.command.hand.fluid2", "Fluid Id:"); - provider.add("gtceu.command.hand.material", "Material Id:"); - provider.add("gtceu.command.hand.ore_prefix", "Ore prefix:"); - provider.add("gtceu.command.hand.meta_item", "MetaItem Id:"); - provider.add("gtceu.command.hand.tag_entries", "§3Tag entries:"); - provider.add("gtceu.command.hand.tool_stats", "Tool Stats Class: %s"); - provider.add("gtceu.command.hand.not_a_player", "This command is only usable by a player."); - provider.add("gtceu.command.hand.no_item", - "You must hold something in main hand or off hand before executing this command."); - provider.add("gtceu.command.recipecheck.usage", "Usage: /gtceu recipecheck"); - provider.add("gtceu.command.recipecheck.begin", "Starting recipe conflict check..."); - provider.add("gtceu.command.recipecheck.end", - "Recipe conflict check found %d possible conflicts. Check the server log for more info"); - provider.add("gtceu.command.recipecheck.end_no_conflicts", "No recipe conflicts found!"); - provider.add("gtceu.command.copy.copied_and_click", "copied to clipboard. Click to copy again"); - provider.add("gtceu.command.copy.click_to_copy", "Click to copy"); - provider.add("gtceu.command.copy.copied_start", "Copied ["); - provider.add("gtceu.command.copy.copied_end", "] to the clipboard"); provider.add("gtceu.chat.cape", "§5Congrats: you just unlocked a new cape! See the Cape Selector terminal app to use it.§r"); provider.add("gtceu.universal.clear_nbt_recipe.tooltip", "§cThis will destroy all contents!"); @@ -1282,6 +1281,7 @@ public static void init(RegistrateLangProvider provider) { provider.add("config.jade.plugin_gtceu.stained_color", "[GTCEu] Stained Block Info"); provider.add("config.jade.plugin_gtceu.me_pattern_buffer", "[GTCEu] Pattern Buffer Info"); provider.add("config.jade.plugin_gtceu.me_pattern_buffer_proxy", "[GTCEu] Pattern Buffer Proxy Info"); + provider.add("config.jade.plugin_gtceu.energy_converter_provider", "[GTCEu] Energy Converter Mode"); // gui provider.add("gtceu.button.ore_veins", "Show GT Ore Veins"); @@ -1323,15 +1323,21 @@ public static void init(RegistrateLangProvider provider) { provider.add("gtceu.gui.content.chance_nc_short", "§cNC§r"); provider.add("gtceu.gui.content.chance_base", "Base Chance: %s%%"); provider.add("gtceu.gui.content.chance_base_logic", "Base Chance: %s%% (%s)"); + provider.add("gtceu.gui.content.chance_no_boost", "Chance: %s%%"); + provider.add("gtceu.gui.content.chance_no_boost_logic", "Chance: %s%% (%s)"); provider.add("gtceu.gui.content.chance_tier_boost_plus", "Bonus Chance: +%s%%/tier"); provider.add("gtceu.gui.content.chance_tier_boost_minus", "Bonus Chance: -%s%%/tier"); provider.add("gtceu.gui.content.chance_boosted", "Chance at Tier: %s%%"); provider.add("gtceu.gui.content.chance_boosted_logic", "Chance at Tier: %s%% (%s)"); provider.add("gtceu.gui.content.count_range", "%s-%sx"); + provider.add("gtceu.gui.content.fluid_range", "%s-%smB"); + provider.add("gtceu.gui.content.range", "%s-%s"); + provider.add("gtceu.gui.content.times_item", "x %s"); provider.add("gtceu.chance_logic.or", "OR"); provider.add("gtceu.chance_logic.and", "AND"); provider.add("gtceu.chance_logic.xor", "XOR"); + provider.add("gtceu.chance_logic.first", "FIRST"); provider.add("gtceu.chance_logic.none", "NONE"); provider.add("gtceu.gui.content.per_tick", "§aConsumed/Produced Per Tick§r"); @@ -1414,6 +1420,275 @@ public static void init(RegistrateLangProvider provider) { provider.add("gtceu.tooltip.status.trinary.false", "False"); provider.add("gtceu.tooltip.status.trinary.true", "True"); provider.add("gtceu.tooltip.status.trinary.unknown", "Unknown"); + + provider.add("gtceu.tooltip.wireless_transmitter_bind", "Binding to a transmitter cover at %s %s %s facing %s"); + provider.add("gtceu.tooltip.computer_monitor_config", "Storing computer monitor cover configuration data"); + provider.add("gtceu.tooltip.computer_monitor_data", "Storing data: %s"); + + provider.add("gtceu.display_source.computer_monitor_cover", "Computer Monitor Cover"); + provider.add("gtceu.display_target.computer_monitor_cover", "Computer Monitor Cover"); + multiLang(provider, "gtceu.placeholder_info.energy", + "Returns the amount of energy stored.", + "Usage:", + " {energy} -> the amount of energy stored"); + multiLang(provider, "gtceu.placeholder_info.energyCapacity", + "Returns the max amount of energy that can be stored", + "Usage:", + "{energyCapacity} -> the energy capacity"); + multiLang(provider, "gtceu.placeholder_info.itemCount", + "Returns the amount of items (can be filtered).", + "Usage:", + " {itemCount} -> total item amount", + " {itemCount } -> amount of items with ids equal to item_id", + " {itemCount filter } -> amount of items matching filter in specified slot of this cover"); + multiLang(provider, "gtceu.placeholder_info.calc", + "Returns the result of a math function or operation.", + "Usage:", + " {calc } -> any_string", + " {calc } -> the result of the specified operation", + " {calc <+|-|*|/|//|>>|<<|%> } -> the result of the specified operation"); + multiLang(provider, "gtceu.placeholder_info.if", + "Returns one of the arguments depending on the condition. The condition is considered true if it is not an empty string and is not equal to 0.", + "Usage:", + " {if [returned_if_false]}"); + multiLang(provider, "gtceu.placeholder_info.obf", + "Returns the text from the first argument, obfuscated.", + "Usage:", + " {obf } -> obfuscated text"); + multiLang(provider, "gtceu.placeholder_info.underline", + "Returns the text from the first argument, underlined", + "Usage:", + " {underline } -> underlined text"); + multiLang(provider, "gtceu.placeholder_info.strike", + "Returns the text from the first text, displaying it as if it was crossed out", + "Usage:", + " {strike } -> crossed-out text"); + multiLang(provider, "gtceu.placeholder_info.color", + "Returns the text from the second argument, colored with the color from the first argument. All default minecraft chat colors can be used.", + "Usage:", + " {color } -> colored text"); + multiLang(provider, "gtceu.placeholder_info.tick", + "Returns the amount of ticks passed from when this cover was placed.", + "Usage:", + " {tick} -> the amount of ticks"); + multiLang(provider, "gtceu.placeholder_info.block", "Returns the block symbol (█).", + "Usage:", + " {block} -> '█'"); + multiLang(provider, "gtceu.placeholder_info.repeat", + "Returns the text from the second arguments, repeated the amount of times specified in the first argument.", + "Usage:", + " {repeat } -> text repeated the specified amount of times"); + multiLang(provider, "gtceu.placeholder_info.random", + "Returns a random number in the specified interval (inclusive).", + "Usage:", + " {random } -> a random number between min and max (inclusive)"); + multiLang(provider, "gtceu.placeholder_info.select", + "Returns the argument at the specified index (starting from 0)", + "Usage:", + " {select [arg1] [arg2] [arg3] ... -> argument at the specified index"); + multiLang(provider, "gtceu.placeholder_info.redstone", + "Returns the redstone signal strength or sets the redstone output strength", + "Usage:", + " {redstone get } -> redstone signal strength (0-15) at the specified side", + " {redstone get link } -> redstone signal strength of a Create redstone link frequency specified by a linked controller in slot #slot_index. freq_slot_index is the index of the frequency inside the controller (from left to right, 0-6)", + " {redstone set } -> empty string, sets the redstone output strength from this cover's side", + " {redstone set link } -> empty string, broadcasts the specified redstone power on the specified Create redstone link frequency"); + multiLang(provider, "gtceu.placeholder_info.fluidCount", + "Returns the amount of fluids (can be filtered).", + "Usage:", + " {fluidCount [fluidId]} -> the amount of all fluids, or the fluid with fluidId if specified"); + multiLang(provider, "gtceu.placeholder_info.displayTarget", + "Returns the specified line that was transmitted to this cover using a display link.", + "Usage:", + " {displayTarget } -> the text on the specified line (line number is 1-100)"); + multiLang(provider, "gtceu.placeholder_info.previousText", + "Returns the text that was previously displayed by this cover at the specified line (before line-wrapping).", + "Usage:", + " {previousText } -> the text previously displayed on the specified line (index starts at 1)"); + multiLang(provider, "gtceu.placeholder_info.ae2itemCount", + "Same as itemCount, but counts items in the ME network of the block this cover is attached to.", + "Note that counting by filter or all items may cause lag!", + "Usage:", + " {itemCount} -> total item amount", + " {itemCount } -> amount of items with ids equal to item_id", + " {itemCount filter } -> amount of items matching filter in specified slot of this cover"); + multiLang(provider, "gtceu.placeholder_info.ae2fluidCount", + "Same as fluidCount, but counts items in the ME network of the block this cover is attached to.", + "Note that counting all fluids may cause lag!", + "Usage:", + " {fluidCount [fluidId]} -> the amount of all fluids, or the fluid with fluidId if specified"); + multiLang(provider, "gtceu.placeholder_info.progress", + "Returns the progress of the currently running recipe of the block this cover is attached to.", + "Note that progress is an integer between 0 and {maxProgress}", + "Usage:", + " {progress} -> the progress of the currently running recipe"); + multiLang(provider, "gtceu.placeholder_info.maxProgress", + "Returns the maximum progress of the currently running recipe of the block this cover is attached to.", + "Example: 'Progress: {calc {calc {progress} / {maxProgress}} * 100}%'", + "Usage:", + " {maxProgress} -> the max progress of the currently running recipe"); + multiLang(provider, "gtceu.placeholder_info.maintenance", + "Returns a 1 if there are maintenance problems in the block the cover is attached to, 0 otherwise.", + "Example: 'Maintenance status: {if {maintenance} FIXING\\ REQUIRED OK}'", + "Usage:", + " {maintenance} -> whether there are maintenance problems"); + multiLang(provider, "gtceu.placeholder_info.active", + "Returns a 1 if the block the cover is attached to is currently running a recipe, 0 otherwise.", + "Usage:", + " {active} -> whether there's a currently running recipe"); + multiLang(provider, "gtceu.placeholder_info.voltage", + "Returns the voltage in the wire/cable the cover is on.", + "Usage:", + " {voltage} -> the voltage in the wire/cable"); + multiLang(provider, "gtceu.placeholder_info.amperage", + "Returns the amperage in the wire/cable the cover is on.", + "Usage:", + " {amperage} -> the amperate in the wire/cable"); + multiLang(provider, "gtceu.placeholder_info.ae2energy", + "Returns the energy currently stored in the ME network of the block this cover is on.", + "Usage:", + " {ae2energy} -> the energy in the ME network (in AE units)"); + multiLang(provider, "gtceu.placeholder_info.ae2maxPower", + "Returns the energy capacity of the ME network of the block this cover is on.", + "Usage:", + " {ae2maxPower} -> the energy capacity of the ME network"); + multiLang(provider, "gtceu.placeholder_info.ae2powerUsage", + "Returns the energy consumption of the ME network of the block this cover is on.", + "Usage:", + " {ae2powerUsage} -> the energy consumption of the ME network"); + multiLang(provider, "gtceu.placeholder_info.ae2spatial", + "Returns information about spatial I/O in the ME network of the block this cover is on.", + "Usage:", + " {ae2spatial power} -> the amount of power required to initiate spatial I/O", + " {ae2spatial efficiency} -> the efficiency of the Spatial Containment Structure (SPS)", + " {ae2spatial size} -> the size of the SPS along the specified axis (example: 'Size: {sizeX}x{sizeY}x{sizeZ}')"); + multiLang(provider, "gtceu.placeholder_info.ae2crafting", + "Returns information about auto-crafting in the ME network of the block this cover is on.", + "Usage:", + " {ae2crafting get amount} -> the amount of crafting CPUs in the ME network", + " {ae2crafting get storage} -> the amount of crafting storage the specified CPU has", + " {ae2crafting get threads} -> the amount of co-processors the specified CPU has", + " {ae2crafting get name} -> the name of the specified crafting CPU", + " {ae2crafting get selectionMode} -> the selection mode of the specified crafting CPU (used for manual, automatic or both requests)", + " {ae2crafting get amount} -> the amount of the item that was requested, or 0 if the CPU is idle", + " {ae2crafting get item} -> the display name of the item that was requested, or 0 if the CPU is idle", + " {ae2crafting get progress} -> the crafting job progress, or 0 if the CPU is idle", + " {ae2crafting get time} -> the amount of time elapsed from the start of the craft (in nanoseconds), or 0 if the CPU is idle"); + multiLang(provider, "gtceu.placeholder_info.count", + "Returns how many of the provided arguments are equal to the first (compared as strings, so \"0\" != \"0.0\")", + "Usage:", + " {count [arg2] [arg3] [arg4] ...} -> the amount of arguments that are equal to the first"); + multiLang(provider, "gtceu.placeholder_info.data", + "Stores or retrieves some data from a data item (data stick/orb/module) in one of the slots.", + "If you leave the argument empty, it will be replaced with the value p (p is an integer from 0 to (capacity - 1) that is stored in the data item nbt).", + "Usage:", + " {data get } -> the data stored in the item in the specified slot", + " {data set } -> sets the data stored in the item in the specified slot, returns an empty string", + " {data getp } -> p", + " {data setp } -> sets p, returns an empty string", + " {data inc } -> increments p by 1, if p becomes more than or equal to capacity, sets p to 0", + " {data dec } -> decrements p by 1, if p becomes less than 0, sets p to (capacity - 1)"); + multiLang(provider, "gtceu.placeholder_info.combine", + "Combines all of it's arguments into a single string (by escaping all spaces between the arguments)", + "Example: {combine abc def ghi jkl mno} -> \"abc\\ def\\ ghi\\ jkl\\ mno\"", + "Usage:", + " {combine [arg1] [arg2] [arg3] ...} -> a string that will be treated as a single argument in further placeholders"); + multiLang(provider, "gtceu.placeholder_info.nbt", + "Returns the nbt data of the item in the specified slot", + "Usage:", + " {nbt } -> nbt data"); + multiLang(provider, "gtceu.placeholder_info.toChars", + "Returns the characters of the provided string with spaces between them", + "Example: {toChars example} -> 'e x a m p l e'", + "Usage:", + " {toChars } -> characters"); + multiLang(provider, "gtceu.placeholder_info.toAscii", + "Returns the ASCII code of the provided character", + "Usage:", + " {toAscii } -> ASCII code of the character"); + multiLang(provider, "gtceu.placeholder_info.fromAscii", + "Returns the character represented by the provided ASCII code", + "Usage:", + " {fromAscii } -> a character"); + multiLang(provider, "gtceu.gui.computer_monitor_cover.placeholder_reference", + "All placeholders:", + "(hover for more info)"); + multiLang(provider, "gtceu.placeholder_info.subList", + "Returns arguments from with indexes from l (inclusive) to r (exclusive) (starting from 0)", + "Usage:", + " {subList [arg0] [arg1] ...} -> all arguments with indexes from l to r separated by spaces"); + multiLang(provider, "gtceu.placeholder_info.cmp", + "Returns a 1 or 0 based on the expression in it's arguments", + "Usage:", + " {cmp } -> 1 or 0, operator is one of >, <, >=, <=, ==, !="); + multiLang(provider, "gtceu.placeholder_info.bf", + "Usage:", + " {bf } -> empty string"); + multiLang(provider, "gtceu.placeholder_info.cmd", + "Executes Minecraft commands and returns their output.", + "Requires a data item bound to a player, bind any data item to yourself by right-clicking with it.", + "Usage:", + " {cmd } -> command output"); + multiLang(provider, "gtceu.placeholder_info.tm", + "Returns the ™ symbol", + "Usage:", + " {tm} -> the ™ symbol"); + multiLang(provider, "gtceu.placeholder_info.formatInt", + "Returns a string representation of the provided integer", + "Example: {formatInt 1236457} -> 1.24M", + "Usage:", + " {formatInt } -> string representation of the int"); + provider.add("gtceu.gui.computer_monitor_cover.update_interval", "Update interval (in ticks)"); + provider.add("gtceu.gui.computer_monitor_cover.edit_blank_placeholders", "Edit blank placeholders"); + provider.add("gtceu.gui.computer_monitor_cover.edit_displayed_text", "Edit displayed text"); + provider.add("gtceu.gui.central_monitor.text_scale", "Text scale"); + provider.add("gtceu.gui.central_monitor.group", "Group: %s"); + provider.add("gtceu.gui.central_monitor.group_default_name", "Group #%d"); + provider.add("gtceu.gui.central_monitor.none", "none"); + provider.add("gtceu.central_monitor.size", "Size: (%d+1+%d)x(%d+1+%d)"); + provider.add("gtceu.computer_monitor_cover.error.invalid_number", "Invalid number '%s'!"); + provider.add("gtceu.computer_monitor_cover.error.wrong_number_of_args", "Expected %d args, got %d!"); + provider.add("gtceu.computer_monitor_cover.error.not_enough_args", "Expected at least %d args, got %d!"); + provider.add("gtceu.computer_monitor_cover.error.no_cover", "No cover!"); + provider.add("gtceu.computer_monitor_cover.error.exception", "Unexpected exception occurred: %s"); + provider.add("gtceu.computer_monitor_cover.error.not_in_range", + "Expected %s to be between %d and %d (inclusive), got %d"); + provider.add("gtceu.computer_monitor_cover.error.invalid_args", "Invalid arguments!"); + provider.add("gtceu.computer_monitor_cover.error.missing_item", "Missing %s in slot %d!"); + provider.add("gtceu.computer_monitor_cover.error.bf_invalid_num", + "Invalid number at index %d when processing symbol number %d"); + provider.add("gtceu.computer_monitor_cover.error.bf_invalid", "Invalid character at %d"); + multiLang(provider, "gtceu.gui.computer_monitor_cover.main_textbox_tooltip", + "Input string to display on line %d here.", + "It can have placeholders, for example: 'Energy: {energy}/{energyCapacity} EU'", + "Placeholders can also be inside other placeholders."); + multiLang(provider, "gtceu.gui.computer_monitor_cover.slot_tooltip", + "A slot for items that some placeholders can reference", + "Slot number: %d"); + multiLang(provider, "gtceu.gui.computer_monitor_cover.second_page_textbox_tooltip", + "Input placeholder to be used in place of %s '{}' here.", + "For example, you can have a string 'Energy: {}/{} EU' and 'energy' and 'energyCapacity' in these text boxes."); + provider.add("gtceu.computer_monitor_cover.error.no_placeholder", "No such placeholder: '%s'!"); + provider.add("gtceu.computer_monitor_cover.error.unclosed_bracket", "Unclosed bracket!"); + provider.add("gtceu.computer_monitor_cover.error.unexpected_bracket", "Unexpected closing bracket!"); + provider.add("gtceu.computer_monitor_cover.error.no_ae", "Cover holder does not have an AE2 network!"); + provider.add("gtceu.computer_monitor_cover.error.not_supported", + "This feature is not supported by this block/cover!"); + provider.add("gtceu.central_monitor.gui.create_group", "Create group"); + provider.add("gtceu.central_monitor.gui.remove_from_group", "Remove from group"); + provider.add("gtceu.central_monitor.gui.set_target", "Set target"); + provider.add("gtceu.central_monitor.gui.currently_editing", "Currently editing: %s"); + multiLang(provider, "gtceu.central_monitor.info_tooltip", + "In order to use monitors, you have to split them into groups first. A group may only have 1 module in it.", + "Select them by left-clicking, then click 'Create group'.", + "Then in the settings page for the group you can insert a module, you can configure it in the same page.", + "To delete a group, select all of it's components and click 'Remove from group'.", + "You can quickly select all components of a group by clicking on it's name. Click again to unselect.", + "Some modules may display things depending on the block they target, to set a target for a group select any component of that group and right-click on the target component.", + "You may wish to select a target that is not in the multiblock, you have to use the wireless transmitter cover for that.", + "Place the cover on the target block, right-click it with a data stick and put that data stick into a data access hatch in the multiblock.", + "Then select the data access hatch as the target, and set the slot index of your data stick in the number field that appeared."); + provider.add("gtceu.tooltip.player_bind", "Bound to player: %s"); } /** @@ -1512,7 +1787,7 @@ public static List getMultiLang(String key) { var outputKeys = new ArrayList(); var i = 0; var next = getSubKey(key, i); - while (LocalizationUtils.exist(next)) { + while (Language.getInstance().has(next)) { outputKeys.add(next); next = getSubKey(key, ++i); } @@ -1552,7 +1827,7 @@ public static List getMultiLang(String key, Object... args) { var outputKeys = new ArrayList(); var i = 0; var next = getSubKey(key, i); - while (LocalizationUtils.exist(next)) { + while (Language.getInstance().has(next)) { outputKeys.add(next); next = getSubKey(key, ++i); } diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java b/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java index b991f3eaf28..4647c465885 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java @@ -27,8 +27,8 @@ protected static void init(RegistrateLangProvider provider) { provider.add("gtceu.machine.lp_steam_extractor.tooltip", "§7Extracting your first Rubber"); provider.add("gtceu.machine.hp_steam_extractor.tooltip", "§7Extracting your first Rubber"); - provider.add("gtceu.machine.lp_steam_macerator.tooltip", "§7Macerating your Ores"); - provider.add("gtceu.machine.hp_steam_macerator.tooltip", "§7Macerating your Ores"); + provider.add("gtceu.machine.lp_steam_macerator.tooltip", "§7Macerating your Ores without Byproducts"); + provider.add("gtceu.machine.hp_steam_macerator.tooltip", "§7Macerating your Ores without Byproducts"); provider.add("gtceu.machine.lp_steam_compressor.tooltip", "§7Compressing Items"); provider.add("gtceu.machine.hp_steam_compressor.tooltip", "§7Compressing Items"); provider.add("gtceu.machine.lp_steam_forge_hammer.tooltip", "§7Forge Hammer"); @@ -51,9 +51,9 @@ protected static void init(RegistrateLangProvider provider) { "§7Mines block on front face and collects its drops"); provider.add("gtceu.machine.block_breaker.speed_bonus", "§eSpeed Bonus: §f%d%%"); - provider.add("gtceu.machine.boiler.info.heating.up", "§cHeating up§r%s"); - provider.add("gtceu.machine.boiler.info.cooling.down", "§9Cooling down§r%s"); - provider.add("gtceu.machine.boiler.info.producing.steam", " §a(boiling water)"); + provider.add("gtceu.machine.boiler.info.heating.up", "§cHeating§r"); + provider.add("gtceu.machine.boiler.info.cooling.down", "§9Cooling§r"); + provider.add("gtceu.machine.boiler.info.production.data", "§aProducing %s§a mB/t"); /////////////////////////////////////////////////// // Standard Machines // @@ -515,6 +515,8 @@ protected static void init(RegistrateLangProvider provider) { provider.add("gtceu.multiblock.cleanroom.clean_state", "Status: §aCLEAN"); provider.add("gtceu.multiblock.cleanroom.dirty_state", "Status: §4CONTAMINATED"); provider.add("gtceu.multiblock.cleanroom.clean_amount", "Cleanliness: §a%s%%"); + multilineLang(provider, "gtceu.multiblock.dimensions", "Dimensions: \n" + + " §c§lWidth§r: %s, §a§lHeight§r: %s, §9§lDepth§r: %s "); multiLang(provider, "gtceu.machine.charcoal_pile.tooltip", "Turns Logs into §aCharcoal§7 when §cignited§7.", @@ -799,6 +801,21 @@ protected static void init(RegistrateLangProvider provider) { provider.add("gtceu.machine.me.fluid_import.data_stick.name", "§oME Input Hatch Configuration Data"); + provider.add("gtceu.gui.title.adv_stocking_config.min_item_count", + "Min. Item Count"); + provider.add("gtceu.gui.title.adv_stocking_config.min_fluid_count", + "Min. Fluid Count"); + provider.add("gtceu.gui.adv_stocking_config.min_item_count", + "Minimum Item Stack Size for Automated Pulling"); + provider.add("gtceu.gui.adv_stocking_config.min_fluid_count", + "Minimum Fluid Stack Size for Automated Pulling"); + provider.add("gtceu.gui.title.adv_stocking_config.ticks_per_cycle", + "Ticks Per Cycle"); + provider.add("gtceu.gui.adv_stocking_config.ticks_per_cycle", + "Delay between item list updates"); + provider.add("gtceu.gui.adv_stocking_config.title", + "Configure Automatic Stocking"); + multiLang(provider, "gtceu.machine.rotor_holder.tooltip", "Rotor Holder for Multiblocks", "Holds Rotor in place so it will not fly away"); diff --git a/src/main/java/com/gregtechceu/gtceu/data/loot/ChestGenHooks.java b/src/main/java/com/gregtechceu/gtceu/data/loot/ChestGenHooks.java index 357be21399c..3cf4e1b8c0c 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/loot/ChestGenHooks.java +++ b/src/main/java/com/gregtechceu/gtceu/data/loot/ChestGenHooks.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.core.mixins.LootPoolAccessor; +import com.gregtechceu.gtceu.utils.GTMath; import com.gregtechceu.gtceu.utils.ItemStackHashStrategy; import net.minecraft.core.registries.BuiltInRegistries; @@ -104,7 +105,7 @@ public static void addRolls(ResourceLocation tableLocation, int minAdd, int maxA private static @NotNull String createEntryName(@NotNull ItemStack stack, @NotNull String modid, int weight, @NotNull RandomWeightLootFunction function) { - int hashCode = Objects.hash(HASH_STRATEGY.hashCode(stack), modid, weight, function.getMinAmount(), + int hashCode = GTMath.hashInts(HASH_STRATEGY.hashCode(stack), modid.hashCode(), weight, function.getMinAmount(), function.getMaxAmount()); return String.format("#%s:loot_%s", modid, hashCode); } diff --git a/src/main/java/com/gregtechceu/gtceu/data/model/BlockstateModelLoader.java b/src/main/java/com/gregtechceu/gtceu/data/model/BlockstateModelLoader.java new file mode 100644 index 00000000000..7566a6aee69 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/data/model/BlockstateModelLoader.java @@ -0,0 +1,43 @@ +package com.gregtechceu.gtceu.data.model; + +import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; +import com.gregtechceu.gtceu.common.data.models.GTMachineModels; + +import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.client.model.generators.BlockModelProvider; + +import static com.gregtechceu.gtceu.common.data.models.GTMachineModels.*; + +public class BlockstateModelLoader { + + public static void init(GTBlockstateProvider provider) { + BlockModelProvider models = provider.models(); + + // tiered hulls + for (int tier : GTValues.ALL_TIERS) { + ResourceLocation modelName = TIERED_HULL_MODELS.get(tier); + + var model = models.withExistingParent(modelName.toString(), SIDED_SIDED_OVERLAY_MODEL); + GTMachineModels.casingTextures(model, modelName); + } + // steam hulls + { + ResourceLocation modelName = LP_STEAM_HULL_MODEL; + var model = models.withExistingParent(modelName.toString(), SIDED_SIDED_OVERLAY_MODEL); + GTMachineModels.casingTextures(model, modelName); + + modelName = HP_STEAM_HULL_MODEL; + model = models.withExistingParent(modelName.toString(), SIDED_SIDED_OVERLAY_MODEL); + GTMachineModels.casingTextures(model, modelName); + } + // Create the steam vent overlay model here so we don't add the element to it 16 times + models.getBuilder(VENT_OVERLAY.toString()) + .texture("steam_vent", VENT_OVERLAY) + .element() + .from(0, 0, -0.002f).to(16, 16, -0.002f) + .face(Direction.NORTH).uvs(0, 0, 16, 16).texture("#steam_vent").cullface(Direction.NORTH).end() + .end(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/data/model/builder/MachineModelBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/model/builder/MachineModelBuilder.java new file mode 100644 index 00000000000..27284c95f96 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/data/model/builder/MachineModelBuilder.java @@ -0,0 +1,804 @@ +package com.gregtechceu.gtceu.data.model.builder; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; +import com.gregtechceu.gtceu.client.model.machine.MachineModelLoader; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRender; +import com.gregtechceu.gtceu.core.mixins.forge.ConfiguredModelBuilderAccessor; +import com.gregtechceu.gtceu.core.mixins.forge.ConfiguredModelListAccessor; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.Property; +import net.minecraftforge.client.model.generators.*; +import net.minecraftforge.client.model.generators.BlockStateProvider.ConfiguredModelList; +import net.minecraftforge.client.model.generators.ConfiguredModel; +import net.minecraftforge.common.data.ExistingFileHelper; + +import com.google.common.base.Preconditions; +import com.google.common.collect.*; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; +import com.mojang.serialization.JsonOps; +import lombok.Getter; +import org.jetbrains.annotations.Nullable; + +import java.util.*; +import java.util.function.BiFunction; +import java.util.function.Function; +import java.util.function.Predicate; +import java.util.function.Supplier; + +public class MachineModelBuilder> extends CustomLoaderBuilder { + + // spotless:off + public static > BiFunction> begin(MachineDefinition owner) { + return (parent, existingFileHelper) -> new MachineModelBuilder<>(parent, existingFileHelper, owner); + } + // spotless:on + + @Getter + private final MachineDefinition owner; + private final List> dynamicRenders = new ArrayList<>(); + @Getter + private final Map, ConfiguredModelList> models = new LinkedHashMap<>(); + @Getter + private final List parts = new ArrayList<>(); + private final Set coveredStates = new HashSet<>(); + @Getter + private final List replaceableTextures = new ArrayList<>(); + @Getter + private final SortedMap textureOverrides = new TreeMap<>(); + + protected MachineModelBuilder(T parent, ExistingFileHelper existingFileHelper, MachineDefinition owner) { + super(MachineModelLoader.ID, parent, existingFileHelper); + this.owner = owner; + } + + @Override + public JsonObject toJson(JsonObject json) { + json = super.toJson(json); + + json.addProperty("machine", owner.getId().toString()); + StateDefinition stateDefinition = owner.getStateDefinition(); + if (getModels().isEmpty() && getParts().isEmpty()) { + throw new IllegalStateException("A machine model must have a variant or multipart model!"); + } + List missingStates = new ArrayList<>(stateDefinition.getPossibleStates()); + missingStates.removeAll(coveredStates); + + if (!getParts().isEmpty()) { + JsonArray parts = new JsonArray(); + for (PartBuilder part : getParts()) { + missingStates.removeIf(part::matchesState); + parts.add(part.toJson()); + } + json.add("multipart", parts); + } + + if (!getModels().isEmpty()) { + Preconditions.checkState(missingStates.isEmpty(), + "Render state for machine %s does not cover all states. Missing: %s", owner, missingStates); + final JsonObject variants = new JsonObject(); + getModels().entrySet().stream() + .sorted(Map.Entry.comparingByKey(PartialState.comparingByProperties())) + .forEach(entry -> { + variants.add(entry.getKey().toString(), configuredModelListToJSON(entry.getValue())); + }); + + json.add("variants", variants); + } + + if (!this.dynamicRenders.isEmpty()) { + JsonArray dynamicRenders = new JsonArray(); + for (DynamicRender render : this.dynamicRenders) { + JsonElement serialized = DynamicRender.CODEC.encodeStart(JsonOps.INSTANCE, render) + .getOrThrow(false, GTCEu.LOGGER::error); + dynamicRenders.add(serialized); + } + json.add("dynamic_renders", dynamicRenders); + } + + if (!this.replaceableTextures.isEmpty()) { + JsonArray replaceableTextures = new JsonArray(); + for (String material : this.replaceableTextures) { + replaceableTextures.add(material); + } + json.add("replaceable_textures", replaceableTextures); + } + + if (!this.textureOverrides.isEmpty()) { + JsonObject overrides = new JsonObject(); + for (var entry : this.textureOverrides.entrySet()) { + overrides.addProperty(entry.getKey(), entry.getValue().toString()); + } + json.add("texture_overrides", overrides); + } + + return json; + } + + public static JsonElement modelToJson(ModelFile model) { + // serialize nested models as objects instead of `"model": "dummy:dummy"` + if (model instanceof ModelBuilder builder) { + var currentProvider = GTBlockstateProvider.getCurrentProvider(); + // check if it's a nested model, and if not, only save the model name + if (currentProvider != null && + currentProvider.models().generatedModels.containsKey(builder.getLocation())) { + return new JsonPrimitive(builder.getLocation().toString()); + } else { + return builder.toJson(); + } + } else { + return new JsonPrimitive(model.getLocation().toString()); + } + } + + public static JsonElement configuredModelListToJSON(ConfiguredModelList list) { + List models = ((ConfiguredModelListAccessor) list).gtceu$getModels(); + + if (models.size() == 1) { + return configuredModelToJSON(models.get(0), false); + } else { + JsonArray ret = new JsonArray(); + for (ConfiguredModel m : models) { + ret.add(configuredModelToJSON(m, true)); + } + return ret; + } + } + + public static JsonObject configuredModelToJSON(ConfiguredModel model, boolean includeWeight) { + JsonObject modelJson = new JsonObject(); + modelJson.add("model", modelToJson(model.model)); + + if (model.rotationX != 0) modelJson.addProperty("x", model.rotationX); + if (model.rotationY != 0) modelJson.addProperty("y", model.rotationY); + if (model.uvLock) modelJson.addProperty("uvlock", true); + if (includeWeight && model.weight != ConfiguredModel.DEFAULT_WEIGHT) { + modelJson.addProperty("weight", model.weight); + } + return modelJson; + } + + /** + * Add a {@link DynamicRender dynamic render} to this model. + * + * @param render The {@link DynamicRender dynamic render} to add + */ + public MachineModelBuilder addDynamicRenderer(Supplier> render) { + this.dynamicRenders.add(render.get()); + return this; + } + + /** + * Marks the provided texture names as replaceable by multiblocks' casing textures. + * + * @param textureNames The texture names + */ + public MachineModelBuilder addReplaceableTextures(String... textureNames) { + this.replaceableTextures.addAll(Arrays.asList(textureNames)); + return this; + } + + /** + * Adds a texture of this model as one that will replace multiblock parts in formed multiblocks. + * + * @param texture The name of the texture in this model + * @param material The texture to replace + */ + public MachineModelBuilder addTextureOverride(String material, ResourceLocation texture) { + this.textureOverrides.put(material, texture); + return this; + } + + /** + * Assign some models to a given {@link PartialState partial state}. + * + * @param state The {@link PartialState partial state} for which to set the models + * @param models A set of models to assign to this state + * @return this builder + * @throws NullPointerException if {@code state} is {@code null} + * @throws IllegalArgumentException if {@code models} is empty + * @throws IllegalArgumentException if {@code state}'s owning block differs from the builder's + */ + public MachineModelBuilder replaceModels(PartialState state, ConfiguredModel... models) { + Preconditions.checkNotNull(state, "state must not be null"); + Preconditions.checkArgument(models.length > 0, "Cannot set models to empty array"); + Preconditions.checkArgument(state.getOwner() == owner, + "Cannot set models for a different block. Found: %s, Current: %s", state.getOwner(), owner); + this.models.put(state, new ConfiguredModelList(models)); + for (MachineRenderState fullState : owner.getStateDefinition().getPossibleStates()) { + if (state.test(fullState)) { + coveredStates.add(fullState); + } + } + return this; + } + + /** + * Assign a models to a given {@link PartialState partial state}. + * + * @param state The {@link PartialState partial state} for which to add the models + * @param models A set of models to add to this state + * @return this builder + * @throws IllegalArgumentException if {@code state} partially matches another + * state which has already been configured + * @see #replaceModels(PartialState, ConfiguredModel...) + */ + public MachineModelBuilder addModels(PartialState state, ConfiguredModel... models) { + Preconditions.checkArgument(disjointToAll(state), + "Cannot set models for a state for which a partial match has already been configured"); + replaceModels(state, models); + return this; + } + + /** + * Assign a models to a given {@link PartialState partial state}, + * throwing an exception if the state has already been configured. Otherwise, + * simply calls {@link #addModels(PartialState, ConfiguredModel...)}. + * + * @param state The {@link PartialState partial state} for which to set the models + * @param models A set of models to assign to this state + * @return this builder + * @throws IllegalArgumentException if {@code state} has already been configured + * @see #addModels(PartialState, ConfiguredModel...) + */ + public MachineModelBuilder setModels(PartialState state, ConfiguredModel... models) { + Preconditions.checkArgument(!this.models.containsKey(state), + "Cannot set models for a state that has already been configured: %s", state); + addModels(state, models); + return this; + } + + private boolean disjointToAll(PartialState newState) { + return coveredStates.stream().noneMatch(newState); + } + + public PartialState partialState() { + return new PartialState<>(owner, this); + } + + /** + * Creates a builder for models to assign to a {@link PartBuilder}, which when + * completed via {@link ConfiguredModel.Builder#addModel()} will assign the + * resultant set of models to the part and return it for further processing. + * + * @return the model builder + * @see ConfiguredModel.Builder + */ + public ConfiguredModel.Builder part() { + return ConfiguredModelBuilderAccessor.builder(models -> { + PartBuilder part = new PartBuilder(new ConfiguredModelList(models)); + this.parts.add(part); + return part; + }, ImmutableList.of()); + } + + /** + * Creates a {@link PartBuilder} with the passed model and returns it for further processing. + * + * @param model the model to use + * @return the model builder + * @see MachineModelBuilder#part(ResourceLocation) + */ + public PartBuilder part(ModelFile model) { + return part().modelFile(model).addModel(); + } + + /** + * Creates a {@link PartBuilder} with an existing model and returns it for further processing. + * + * @param model an existing model's name + * @return the model builder + * @see MachineModelBuilder#part(ModelFile) + */ + public PartBuilder part(ResourceLocation model) { + return part(new ModelFile.ExistingModelFile(model, existingFileHelper)); + } + + public MachineModelBuilder forAllStatesModels(Function mapper) { + return forAllStates(mapper.andThen(m -> ConfiguredModel.builder().modelFile(m).build())); + } + + public MachineModelBuilder forAllStates(Function mapper) { + return forAllStatesExcept(mapper); + } + + public MachineModelBuilder forAllStatesExcept(Function mapper, + Property... ignored) { + Set> seen = new HashSet<>(); + for (MachineRenderState fullState : owner.getStateDefinition().getPossibleStates()) { + Map, Comparable> propertyValues = Maps.newLinkedHashMap(fullState.getValues()); + for (Property p : ignored) { + propertyValues.remove(p); + } + PartialState partialState = new PartialState<>(owner, propertyValues, this); + if (seen.add(partialState)) { + setModels(partialState, mapper.apply(fullState)); + } + } + return this; + } + + // spotless:off + public MachineModelBuilder replaceForAllStates(BiFunction mapper) { + return replaceForAllStatesExcept(mapper); + } + + public MachineModelBuilder replaceForAllStatesExcept(BiFunction mapper, + Property... ignored) { + Set> seen = new HashSet<>(); + for (MachineRenderState fullState : owner.getStateDefinition().getPossibleStates()) { + Map, Comparable> propertyValues = Maps.newLinkedHashMap(fullState.getValues()); + for (Property p : ignored) { + propertyValues.remove(p); + } + PartialState partialState = new PartialState<>(owner, propertyValues, this); + if (seen.add(partialState)) { + ConfiguredModelListAccessor old = (ConfiguredModelListAccessor) getModels().get(partialState); + if (old == null) continue; + ConfiguredModel[] oldModels = old.gtceu$getModels().toArray(ConfiguredModel[]::new); + + replaceModels(partialState, mapper.apply(fullState, oldModels)); + } + } + return this; + } + // spotless:on + + public static class PartialState> implements Predicate { + + @Getter + private final MachineDefinition owner; + @Getter + private final SortedMap, Comparable> setStates; + @Nullable + private final MachineModelBuilder outerBuilder; + + private PartialState(MachineDefinition owner, @Nullable MachineModelBuilder outerBuilder) { + this(owner, ImmutableMap.of(), outerBuilder); + } + + private PartialState(MachineDefinition owner, Map, Comparable> setStates, + @Nullable MachineModelBuilder outerBuilder) { + this.owner = owner; + this.outerBuilder = outerBuilder; + for (Map.Entry, Comparable> entry : setStates.entrySet()) { + Property prop = entry.getKey(); + Comparable value = entry.getValue(); + Preconditions.checkArgument(owner.getStateDefinition().getProperties().contains(prop), + "Property %s not found on machine %s", entry, this.owner); + Preconditions.checkArgument(prop.getPossibleValues().contains(value), + "%s is not a valid value for %s", value, prop); + } + this.setStates = Maps.newTreeMap(Comparator.comparing(Property::getName)); + this.setStates.putAll(setStates); + } + + public > PartialState with(Property prop, T value) { + Preconditions.checkArgument(!setStates.containsKey(prop), "Property %s has already been set", prop); + Map, Comparable> newState = new HashMap<>(setStates); + newState.put(prop, value); + return new PartialState<>(owner, newState, outerBuilder); + } + + private void checkValidOwner() { + Preconditions.checkNotNull(outerBuilder, + "Partial MachineRenderState must have a valid owner to perform this action"); + } + + /** + * Add models to the current state's variant. For use when it's more convenient + * to add multiple sets of models, as a replacement for + * {@link #setModels(ConfiguredModel...)}. + * + * @param models The models to add. + * @return {@code this} + * @throws NullPointerException If the parent builder is {@code null} + * @see #setModels(ConfiguredModel...) + */ + public PartialState addModels(ConfiguredModel... models) { + checkValidOwner(); + outerBuilder.addModels(this, models); + return this; + } + + /** + * Set this variant's models and returns the parent builder. + * + * @param models The models to set + * @return The parent builder instance + * @throws NullPointerException If the parent builder is {@code null} + */ + public MachineModelBuilder setModels(ConfiguredModel... models) { + checkValidOwner(); + return outerBuilder.setModels(this, models); + } + + /** + * Set this variant's model and return the parent builder. + * + * @param model The model to set + * @return The parent builder instance + * @throws NullPointerException If the parent builder is {@code null} + * @see #setModels(ConfiguredModel...) + */ + public MachineModelBuilder setModel(ModelFile model) { + return setModels(ConfiguredModel.builder().modelFile(model).build()); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + PartialState that = (PartialState) o; + return owner.equals(that.owner) && + setStates.equals(that.setStates); + } + + @Override + public int hashCode() { + return Objects.hash(owner, setStates); + } + + @Override + public boolean test(MachineRenderState state) { + if (state.getDefinition() != getOwner()) { + return false; + } + for (Map.Entry, Comparable> entry : setStates.entrySet()) { + if (state.getValue(entry.getKey()) != entry.getValue()) { + return false; + } + } + return true; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + public String toString() { + StringBuilder ret = new StringBuilder(); + for (Map.Entry, Comparable> entry : setStates.entrySet()) { + if (!ret.isEmpty()) { + ret.append(','); + } + ret.append(entry.getKey().getName()) + .append('=') + .append(((Property) entry.getKey()).getName(entry.getValue())); + } + return ret.toString(); + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + public static Comparator> comparingByProperties() { + // Sort variants inversely by property values, to approximate vanilla style + return (s1, s2) -> { + SortedSet> propUniverse = new TreeSet<>(s1.getSetStates().comparator().reversed()); + propUniverse.addAll(s1.getSetStates().keySet()); + propUniverse.addAll(s2.getSetStates().keySet()); + + int total = 0; + for (Property prop : propUniverse) { + Comparable val1 = s1.getSetStates().get(prop); + Comparable val2 = s2.getSetStates().get(prop); + if (val1 == val2) { + continue; + } + if (val1 == null) { + total -= 1; + } else if (val2 == null) { + total += 1; + } else { + total += val1.compareTo(val2); + } + } + return total; + }; + } + } + + public class PartBuilder { + + public ConfiguredModelList models; + public boolean useOr; + public final Multimap, Comparable> conditions = MultimapBuilder.linkedHashKeys() + .arrayListValues().build(); + public final List nestedConditionGroups = new ArrayList<>(); + + private PartBuilder(ConfiguredModelList models) { + this.models = models; + } + + /** + * Makes this part get applied if any of the conditions/condition groups are true, + * instead of all of them needing to be true. + */ + public PartBuilder useOr() { + this.useOr = true; + return this; + } + + /** + * Set a condition for this part, which consists of a property and a set of + * valid values. Can be called multiple times for multiple different properties. + * + * @param the type of the property value + * @param prop the property + * @param values a set of valid values + * @return this builder + * @throws NullPointerException if {@code prop} is {@code null} + * @throws NullPointerException if {@code values} is {@code null} + * @throws IllegalArgumentException if {@code values} is empty + * @throws IllegalArgumentException if {@code prop} is not applicable to the current machine's state + */ + @SafeVarargs + private final > PartBuilder replaceWithCondition(Property prop, T... values) { + Preconditions.checkNotNull(prop, "Property must not be null"); + Preconditions.checkNotNull(values, "Value list must not be null"); + Preconditions.checkArgument(values.length > 0, "Value list must not be empty"); + Preconditions.checkArgument(canApplyTo(owner), "Property %s is not valid for machine %s", prop, owner); + this.nestedConditionGroups.clear(); + this.conditions.putAll(prop, Arrays.asList(values)); + return this; + } + + /** + * Set a condition for this part, which consists of a property and a set of + * valid values. Can be called multiple times for multiple different properties. + * + * @param the type of the property value + * @param prop the property + * @param values a set of valid values + * @return this builder + * @throws IllegalArgumentException if {@code prop} has already been configured + * @throws IllegalStateException if {@code !nestedConditionGroups.isEmpty()} + * @see PartBuilder#replaceWithCondition(Property, Comparable[]) + */ + @SafeVarargs + public final > PartBuilder condition(Property prop, T... values) { + Preconditions.checkArgument(!conditions.containsKey(prop), + "Cannot set condition for property \"%s\" more than once", prop.getName()); + Preconditions.checkState(nestedConditionGroups.isEmpty(), + "Can't have normal conditions if there are already nested condition groups"); + return this.replaceWithCondition(prop, values); + } + + /** + * Allows having nested groups of conditions. + */ + private final ConditionGroup replaceWithNestedGroup() { + this.conditions.clear(); + ConditionGroup group = new ConditionGroup(); + this.nestedConditionGroups.add(group); + return group; + } + + /** + * Allows having nested groups of conditions if there are not any normal conditions. + * + * @throws IllegalStateException if {@code !conditions.isEmpty()} + * @see PartBuilder#replaceWithNestedGroup() + */ + public final ConditionGroup nestedGroup() { + Preconditions.checkState(conditions.isEmpty(), + "Can't have nested condition groups if there are already normal conditions"); + return replaceWithNestedGroup(); + } + + public MachineModelBuilder end() { + return MachineModelBuilder.this; + } + + public JsonObject toJson() { + JsonObject out = new JsonObject(); + if (!conditions.isEmpty()) { + out.add("when", conditionsToJson(this.conditions, this.useOr)); + } else if (!nestedConditionGroups.isEmpty()) { + out.add("when", groupsToJson(this.nestedConditionGroups, this.useOr)); + } + out.add("apply", configuredModelListToJSON(this.models)); + return out; + } + + public boolean canApplyTo(MachineDefinition b) { + return b.getStateDefinition().getProperties().containsAll(this.conditions.keySet()); + } + + private JsonObject groupsToJson(List conditions, boolean useOr) { + JsonObject groupJson = new JsonObject(); + JsonArray innerGroupJson = new JsonArray(); + groupJson.add(useOr ? "OR" : "AND", innerGroupJson); + for (ConditionGroup group : conditions) { + innerGroupJson.add(group.toJson()); + } + return groupJson; + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + private JsonObject conditionsToJson(Multimap, Comparable> conditions, boolean useOr) { + JsonObject groupJson = new JsonObject(); + for (var entry : conditions.asMap().entrySet()) { + StringBuilder activeString = new StringBuilder(); + for (Comparable val : entry.getValue()) { + if (!activeString.isEmpty()) activeString.append("|"); + activeString.append(((Property) entry.getKey()).getName(val)); + } + groupJson.addProperty(entry.getKey().getName(), activeString.toString()); + } + if (useOr) { + JsonArray innerWhen = new JsonArray(); + for (var entry : groupJson.entrySet()) { + JsonObject obj = new JsonObject(); + obj.add(entry.getKey(), entry.getValue()); + innerWhen.add(obj); + } + groupJson = new JsonObject(); + groupJson.add("OR", innerWhen); + } + return groupJson; + } + + protected boolean matchesState(MachineRenderState state) { + return matchesState(state, this.useOr, this.conditions, this.nestedConditionGroups); + } + + protected boolean matchesState(MachineRenderState state, boolean useOr, + Multimap, Comparable> conditions, + List nestedConditionGroups) { + var stateValues = state.getValues(); + boolean matched = !useOr; + + if (!conditions.isEmpty()) { + for (var entry : stateValues.entrySet()) { + Property property = entry.getKey(); + Comparable value = entry.getValue(); + boolean contains = conditions.containsEntry(property, value); + + if (useOr) { + // any OR condition can match + matched |= contains; + } else { + // all AND conditions must match + matched &= contains; + } + } + } else if (!nestedConditionGroups.isEmpty()) { + for (ConditionGroup group : this.nestedConditionGroups) { + if (useOr) { + matched |= matchesState(state, group.useOr, group.conditions, group.nestedConditionGroups); + } else { + matched &= matchesState(state, group.useOr, group.conditions, group.nestedConditionGroups); + } + } + } else { + return true; + } + + return matched; + } + + public class ConditionGroup { + + public final Multimap, Comparable> conditions = MultimapBuilder.linkedHashKeys() + .arrayListValues() + .build(); + public final List nestedConditionGroups = new ArrayList<>(); + private ConditionGroup parent = null; + public boolean useOr; + + /** + * Set a condition for this part, which consists of a property and a set of + * valid values. Can be called multiple times for multiple different properties. + * + * @param the type of the property value + * @param prop the property + * @param values a set of valid values + * @return this builder + * @throws NullPointerException if {@code prop} is {@code null} + * @throws NullPointerException if {@code values} is {@code null} + * @throws IllegalArgumentException if {@code values} is empty + * @throws IllegalArgumentException if {@code prop} is not applicable to the current machine's state + */ + @SafeVarargs + private final > ConditionGroup replaceWithCondition(Property prop, T... values) { + Preconditions.checkNotNull(prop, "Property must not be null"); + Preconditions.checkNotNull(values, "Value list must not be null"); + Preconditions.checkArgument(values.length > 0, "Value list must not be empty"); + Preconditions.checkArgument(canApplyTo(owner), + "Property %s is not valid for machine %s", prop, owner); + this.nestedConditionGroups.clear(); + this.conditions.putAll(prop, Arrays.asList(values)); + return this; + } + + /** + * Set a condition for this part, which consists of a property and a set of + * valid values. Can be called multiple times for multiple different properties. + * + * @param the type of the property value + * @param prop the property + * @param values a set of valid values + * @return this builder + * @throws IllegalArgumentException if {@code prop} has already been configured + * @throws IllegalStateException if {@code !nestedConditionGroups.isEmpty()} + * @see ConditionGroup#replaceWithCondition(Property, Comparable[]) + */ + @SafeVarargs + public final > ConditionGroup condition(Property prop, T... values) { + Preconditions.checkArgument(!conditions.containsKey(prop), + "Cannot set condition for property \"%s\" more than once", prop.getName()); + Preconditions.checkState(nestedConditionGroups.isEmpty(), + "Can't have normal conditions if there are already nested condition groups"); + return this.replaceWithCondition(prop, values); + } + + /** + * Allows having nested groups of conditions. + */ + private ConditionGroup replaceWithNestedGroup() { + this.conditions.clear(); + ConditionGroup group = new ConditionGroup(); + group.parent = this; + this.nestedConditionGroups.add(group); + return group; + } + + /** + * Allows having nested groups of conditions if there are not any normal conditions. + * + * @throws IllegalStateException if {@code !conditions.isEmpty()} + * @see ConditionGroup#replaceWithNestedGroup() + */ + public final ConditionGroup nestedGroup() { + Preconditions.checkState(conditions.isEmpty(), + "Can't have nested condition groups if there are already normal conditions"); + return replaceWithNestedGroup(); + } + + /** + * Ends this nested condition group and returns the parent condition group + * + * @throws IllegalStateException If this is not a nested condition group + */ + public ConditionGroup endNestedGroup() { + if (parent == null) + throw new IllegalStateException("This condition group is not nested, use end() instead"); + return parent; + } + + /** + * Ends this condition group and returns the part builder + * + * @throws IllegalStateException If this is a nested condition group + */ + public PartBuilder end() { + if (this.parent != null) + throw new IllegalStateException("This is a nested condition group, use endNestedGroup() instead"); + return PartBuilder.this; + } + + /** + * Makes this part get applied if any of the conditions/condition groups are true, instead of all of them + * needing to be true. + */ + public ConditionGroup useOr() { + this.useOr = true; + return this; + } + + public JsonObject toJson() { + if (!this.conditions.isEmpty()) { + return conditionsToJson(this.conditions, this.useOr); + } else if (!this.nestedConditionGroups.isEmpty()) { + return groupsToJson(this.nestedConditionGroups, this.useOr); + } + return new JsonObject(); + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java index b8b64a3d174..cbf7560b4f3 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java +++ b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java @@ -18,14 +18,13 @@ import com.google.common.collect.Sets; import com.google.gson.JsonArray; -import com.google.gson.JsonElement; import com.google.gson.JsonObject; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import it.unimi.dsi.fastutil.objects.ObjectSet; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -41,7 +40,7 @@ public class GTDynamicDataPack implements PackResources { protected static final ObjectSet SERVER_DOMAINS = new ObjectOpenHashSet<>(); - protected static final Map DATA = new HashMap<>(); + protected static final GTDynamicPackContents CONTENTS = new GTDynamicPackContents(); private final String name; @@ -59,74 +58,81 @@ public GTDynamicDataPack(String name, Collection domains) { } public static void clearServer() { - DATA.clear(); + CONTENTS.clearData(); + } + + private static void addToData(ResourceLocation location, byte[] bytes) { + CONTENTS.addToData(location, bytes); } public static void addRecipe(FinishedRecipe recipe) { JsonObject recipeJson = recipe.serializeRecipe(); + byte[] recipeBytes = recipeJson.toString().getBytes(StandardCharsets.UTF_8); Path parent = GTCEu.getGameDir().resolve("gtceu/dumped/data"); ResourceLocation recipeId = recipe.getId(); if (ConfigHolder.INSTANCE.dev.dumpRecipes) { - writeJson(recipeId, "recipes", parent, recipeJson); + writeJson(recipeId, "recipes", parent, recipeBytes); } - DATA.put(getRecipeLocation(recipeId), recipeJson.toString().getBytes(StandardCharsets.UTF_8)); + addToData(getRecipeLocation(recipeId), recipeBytes); + if (recipe.serializeAdvancement() != null) { JsonObject advancement = recipe.serializeAdvancement(); + byte[] advancementBytes = advancement.toString().getBytes(StandardCharsets.UTF_8); if (ConfigHolder.INSTANCE.dev.dumpRecipes) { - writeJson(recipe.getAdvancementId(), "advancements", parent, advancement); + writeJson(recipe.getAdvancementId(), "advancements", parent, advancementBytes); } - DATA.put(getAdvancementLocation(Objects.requireNonNull(recipe.getAdvancementId())), - advancement.toString().getBytes(StandardCharsets.UTF_8)); + addToData(getAdvancementLocation(Objects.requireNonNull(recipe.getAdvancementId())), + advancementBytes); } } /** * if subdir is null, no file ending is appended. - * + * * @param id the resource location of the file to be written. * @param subdir a nullable subdirectory for the data. * @param parent the parent folder where to write data to. * @param json the json to write. */ @ApiStatus.Internal - public static void writeJson(ResourceLocation id, @Nullable String subdir, Path parent, JsonElement json) { + public static void writeJson(ResourceLocation id, @Nullable String subdir, Path parent, byte[] json) { try { Path file; if (subdir != null) { - file = parent.resolve(id.getNamespace()).resolve(subdir).resolve(id.getPath() + ".json"); // assume JSON + // assume JSON + file = parent.resolve(id.getNamespace()).resolve(subdir).resolve(id.getPath() + ".json"); } else { - file = parent.resolve(id.getNamespace()).resolve(id.getPath()); // assume the file type is also appended - // if a full path is given. + // assume the file type is also appended if a full path is given. + file = parent.resolve(id.getNamespace()).resolve(id.getPath()); } Files.createDirectories(file.getParent()); try (OutputStream output = Files.newOutputStream(file)) { - output.write(json.toString().getBytes()); + output.write(json); } } catch (IOException e) { - e.printStackTrace(); + GTCEu.LOGGER.error("Failed to write JSON export for file {}", id, e); } } public static void addAdvancement(ResourceLocation loc, JsonObject obj) { ResourceLocation l = getAdvancementLocation(loc); - synchronized (DATA) { - DATA.put(l, obj.toString().getBytes(StandardCharsets.UTF_8)); - } + addToData(l, obj.toString().getBytes(StandardCharsets.UTF_8)); } @Nullable @Override public IoSupplier getRootResource(String... elements) { + if (elements.length > 0 && elements[0].equals("pack.png")) { + return () -> GTCEu.class.getResourceAsStream("/icon.png"); + } return null; } + @Nullable @Override public IoSupplier getResource(PackType type, ResourceLocation location) { if (type == PackType.SERVER_DATA) { - var byteArray = DATA.get(location); - if (byteArray != null) - return () -> new ByteArrayInputStream(byteArray); - else return null; + return CONTENTS.getResource(location); } else { return null; } @@ -135,15 +141,7 @@ public IoSupplier getResource(PackType type, ResourceLocation locat @Override public void listResources(PackType packType, String namespace, String path, ResourceOutput resourceOutput) { if (packType == PackType.SERVER_DATA) { - if (!path.endsWith("/")) path += "/"; - final String finalPath = path; - DATA.keySet().stream().filter(Objects::nonNull).filter(loc -> loc.getPath().startsWith(finalPath)) - .forEach((id) -> { - IoSupplier resource = this.getResource(packType, id); - if (resource != null) { - resourceOutput.accept(id, resource); - } - }); + CONTENTS.listResources(namespace, path, resourceOutput); } } @@ -174,10 +172,14 @@ public T getMetadataSection(MetadataSectionSerializer metaReader) { } @Override - public String packId() { + public @NotNull String packId() { return this.name; } + public boolean isBuiltin() { + return true; + } + @Override public void close() { // NOOP diff --git a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicPackContents.java b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicPackContents.java new file mode 100644 index 00000000000..6ffb8e23cb9 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicPackContents.java @@ -0,0 +1,155 @@ +package com.gregtechceu.gtceu.data.pack; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.PackResources; +import net.minecraft.server.packs.resources.IoSupplier; + +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import org.jetbrains.annotations.Nullable; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.util.Map; +import java.util.concurrent.locks.ReadWriteLock; +import java.util.concurrent.locks.ReentrantReadWriteLock; + +/** + * Stores contents of a dynamic resource pack in a tree-style format for efficient traversal. This class can safely + * be accessed from multiple threads; it implements synchronization internally. + * + * @author embeddedt + */ +public class GTDynamicPackContents { + + private static class Node { + + /** + * Holds either a IoSupplier with the data for a given location, or a map of string -> Node. + */ + Object contents = new Object2ObjectOpenHashMap<>(); + + void collectResources(String namespace, String[] pathComponents, int curIndex, + PackResources.ResourceOutput output) { + if (curIndex < pathComponents.length) { + String component = pathComponents[curIndex]; + + Node n = getChild(component); + if (n != null) { + n.collectResources(namespace, pathComponents, curIndex + 1, output); + } + } else { + // We reached the desired path. Collect all resources + this.outputResources(namespace, String.join("/", pathComponents), output); + } + } + + private boolean isTerminalNode() { + return contents instanceof IoSupplier; + } + + @SuppressWarnings("unchecked") + private Map getChildren() { + if (!(contents instanceof Map)) { + throw new IllegalStateException("attempting to get children on a terminal node"); + } + return (Map) contents; + } + + void outputResources(String namespace, String path, PackResources.ResourceOutput output) { + if (isTerminalNode()) { + // This is a terminal node. + ResourceLocation location = new ResourceLocation(namespace, path); + output.accept(location, this.createIoSupplier()); + } else { + for (var entry : getChildren().entrySet()) { + entry.getValue().outputResources(namespace, path + "/" + entry.getKey(), output); + } + } + } + + @SuppressWarnings("unchecked") + IoSupplier createIoSupplier() { + if (!isTerminalNode()) { + throw new IllegalStateException("Node has no data"); + } + // Capture the byte array here to avoid capturing the whole node in the lambda + return (IoSupplier) contents; + } + + @Nullable + Node getChild(String name) { + if (isTerminalNode()) { + return null; + } else { + return getChildren().get(name); + } + } + } + + private final Node root = new Node(); + private final ReadWriteLock lock = new ReentrantReadWriteLock(); + + public void addToData(ResourceLocation location, byte[] bytes) { + addToData(location, () -> new ByteArrayInputStream(bytes)); + } + + public void addToData(ResourceLocation location, IoSupplier supplier) { + String[] pathComponents = location.getPath().split("/"); + var lock = this.lock.writeLock(); + lock.lock(); + try { + Node node = root.getChildren().computeIfAbsent(location.getNamespace(), $ -> new Node()); + for (String component : pathComponents) { + node = node.getChildren().computeIfAbsent(component, $ -> new Node()); + } + node.contents = supplier; + } finally { + lock.unlock(); + } + } + + public void clearData() { + var lock = this.lock.writeLock(); + lock.lock(); + try { + root.getChildren().clear(); + } finally { + lock.unlock(); + } + } + + public IoSupplier getResource(ResourceLocation location) { + var lock = this.lock.readLock(); + lock.lock(); + try { + Node node = this.root.getChild(location.getNamespace()); + String[] pathComponents = location.getPath().split("/"); + for (String path : pathComponents) { + if (node == null) { + return null; + } + node = node.getChild(path); + } + if (node == null) { + return null; + } + return node.createIoSupplier(); + } finally { + lock.unlock(); + } + } + + public void listResources(String namespace, String path, PackResources.ResourceOutput resourceOutput) { + var lock = this.lock.readLock(); + lock.lock(); + try { + Node base = this.root.getChild(namespace); + if (base == null) { + return; + } + base.collectResources(namespace, path.split("/"), 0, resourceOutput); + } finally { + lock.unlock(); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java index fb0b80aa168..bb5522a00f3 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java +++ b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java @@ -7,7 +7,10 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.SharedConstants; +import net.minecraft.client.renderer.texture.atlas.SpriteSource; +import net.minecraft.client.renderer.texture.atlas.SpriteSources; import net.minecraft.network.chat.Component; +import net.minecraft.resources.FileToIdConverter; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.PackResources; import net.minecraft.server.packs.PackType; @@ -17,12 +20,12 @@ import com.google.common.collect.Sets; import com.google.gson.JsonElement; +import com.mojang.serialization.JsonOps; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import it.unimi.dsi.fastutil.objects.ObjectSet; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; -import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -30,10 +33,9 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.Collection; -import java.util.Objects; +import java.util.Collections; +import java.util.List; import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; import java.util.function.Supplier; import java.util.stream.Collectors; @@ -46,8 +48,13 @@ public class GTDynamicResourcePack implements PackResources { protected static final ObjectSet CLIENT_DOMAINS = new ObjectOpenHashSet<>(); - @ApiStatus.Internal - public static final ConcurrentMap DATA = new ConcurrentHashMap<>(); + protected static final GTDynamicPackContents CONTENTS = new GTDynamicPackContents(); + + private static final FileToIdConverter ATLAS_ID_CONVERTER = FileToIdConverter.json("atlases"); + private static final FileToIdConverter TEXTURE_ID_CONVERTER = SpriteSource.TEXTURE_ID_CONVERTER; + private static final FileToIdConverter BLOCKSTATE_ID_CONVERTER = FileToIdConverter.json("blockstates"); + private static final FileToIdConverter BLOCK_MODEL_ID_CONVERTER = FileToIdConverter.json("models/block"); + private static final FileToIdConverter ITEM_MODEL_ID_CONVERTER = FileToIdConverter.json("models/item"); private final String name; @@ -65,16 +72,30 @@ public GTDynamicResourcePack(String name, Collection domains) { } public static void clearClient() { - DATA.clear(); + CONTENTS.clearData(); + } + + public static void addResource(ResourceLocation location, JsonElement obj) { + addResource(location, obj.toString().getBytes(StandardCharsets.UTF_8)); + } + + public static void addResource(ResourceLocation location, byte[] data) { + if (ConfigHolder.INSTANCE.dev.dumpAssets) { + Path parent = GTCEu.getGameDir().resolve("gtceu/dumped/assets"); + writeJson(location, null, parent, data); + } + CONTENTS.addToData(location, data); } public static void addBlockModel(ResourceLocation loc, JsonElement obj) { - ResourceLocation l = getModelLocation(loc); + ResourceLocation l = getBlockModelLocation(loc); + byte[] modelBytes = obj.toString().getBytes(StandardCharsets.UTF_8); + if (ConfigHolder.INSTANCE.dev.dumpAssets) { Path parent = GTCEu.getGameDir().resolve("gtceu/dumped/assets"); - writeJson(l, null, parent, obj); + writeJson(l, null, parent, modelBytes); } - DATA.put(l, obj.toString().getBytes(StandardCharsets.UTF_8)); + CONTENTS.addToData(l, modelBytes); } public static void addBlockModel(ResourceLocation loc, Supplier obj) { @@ -83,11 +104,13 @@ public static void addBlockModel(ResourceLocation loc, Supplier obj public static void addItemModel(ResourceLocation loc, JsonElement obj) { ResourceLocation l = getItemModelLocation(loc); + byte[] modelBytes = obj.toString().getBytes(StandardCharsets.UTF_8); + if (ConfigHolder.INSTANCE.dev.dumpAssets) { Path parent = GTCEu.getGameDir().resolve("gtceu/dumped/assets"); - writeJson(l, null, parent, obj); + writeJson(l, null, parent, modelBytes); } - DATA.put(l, obj.toString().getBytes(StandardCharsets.UTF_8)); + CONTENTS.addToData(l, modelBytes); } public static void addItemModel(ResourceLocation loc, Supplier obj) { @@ -96,24 +119,54 @@ public static void addItemModel(ResourceLocation loc, Supplier obj) public static void addBlockState(ResourceLocation loc, JsonElement stateJson) { ResourceLocation l = getBlockStateLocation(loc); + byte[] stateBytes = stateJson.toString().getBytes(StandardCharsets.UTF_8); + if (ConfigHolder.INSTANCE.dev.dumpAssets) { Path parent = GTCEu.getGameDir().resolve("gtceu/dumped/assets"); - writeJson(l, null, parent, stateJson); + writeJson(l, null, parent, stateBytes); } - DATA.put(l, stateJson.toString().getBytes(StandardCharsets.UTF_8)); + CONTENTS.addToData(l, stateBytes); } public static void addBlockState(ResourceLocation loc, Supplier generator) { addBlockState(loc, generator.get()); } + public static void addAtlasSpriteSource(ResourceLocation atlasLoc, SpriteSource source) { + ResourceLocation l = getAtlasLocation(atlasLoc); + JsonElement sourceJson = SpriteSources.FILE_CODEC + .encodeStart(JsonOps.INSTANCE, Collections.singletonList(source)) + .getOrThrow(false, + error -> GTCEu.LOGGER.error("Failed to encode atlas sprite source. {}", error)); + byte[] sourceBytes = sourceJson.toString().getBytes(StandardCharsets.UTF_8); + + if (ConfigHolder.INSTANCE.dev.dumpAssets) { + Path parent = GTCEu.getGameDir().resolve("gtceu/dumped/assets"); + writeJson(l, null, parent, sourceBytes); + } + CONTENTS.addToData(l, sourceBytes); + } + + public static void addAtlasSpriteSourceList(ResourceLocation atlasLoc, List sources) { + ResourceLocation l = getAtlasLocation(atlasLoc); + JsonElement sourceJson = SpriteSources.FILE_CODEC.encodeStart(JsonOps.INSTANCE, sources).getOrThrow(false, + error -> GTCEu.LOGGER.error("Failed to encode atlas sprite source. {}", error)); + byte[] sourceBytes = sourceJson.toString().getBytes(StandardCharsets.UTF_8); + + if (ConfigHolder.INSTANCE.dev.dumpAssets) { + Path parent = GTCEu.getGameDir().resolve("gtceu/dumped/assets"); + writeJson(l, null, parent, sourceBytes); + } + CONTENTS.addToData(l, sourceBytes); + } + public static void addBlockTexture(ResourceLocation loc, byte[] data) { ResourceLocation l = getTextureLocation("block", loc); if (ConfigHolder.INSTANCE.dev.dumpAssets) { Path parent = GTCEu.getGameDir().resolve("gtceu/dumped/assets"); writeByteArray(l, null, parent, data); } - DATA.put(l, data); + CONTENTS.addToData(l, data); } public static void addItemTexture(ResourceLocation loc, byte[] data) { @@ -122,7 +175,7 @@ public static void addItemTexture(ResourceLocation loc, byte[] data) { Path parent = GTCEu.getGameDir().resolve("gtceu/dumped/assets"); writeByteArray(l, null, parent, data); } - DATA.put(l, data); + CONTENTS.addToData(l, data); } @ApiStatus.Internal @@ -130,31 +183,34 @@ public static void writeByteArray(ResourceLocation id, @Nullable String subdir, try { Path file; if (subdir != null) { - file = parent.resolve(id.getNamespace()).resolve(subdir).resolve(id.getPath() + ".png"); // assume PNG + // assume PNG + file = parent.resolve(id.getNamespace()).resolve(subdir).resolve(id.getPath() + ".png"); } else { - file = parent.resolve(id.getNamespace()).resolve(id.getPath()); // assume the file type is also appended - // if a full path is given. + // assume the file type is also appended if a full path is given. + file = parent.resolve(id.getNamespace()).resolve(id.getPath()); } Files.createDirectories(file.getParent()); try (OutputStream output = Files.newOutputStream(file)) { output.write(data); } } catch (IOException e) { - e.printStackTrace(); + GTCEu.LOGGER.error("Failed to write JSON export for file {}", id, e); } } @Nullable @Override public IoSupplier getRootResource(String... elements) { + if (elements.length > 0 && elements[0].equals("pack.png")) { + return () -> GTCEu.class.getResourceAsStream("/icon.png"); + } return null; } @Override - public IoSupplier getResource(PackType type, ResourceLocation location) { + public @Nullable IoSupplier getResource(PackType type, ResourceLocation location) { if (type == PackType.CLIENT_RESOURCES) { - if (DATA.containsKey(location)) - return () -> new ByteArrayInputStream(DATA.get(location)); + return CONTENTS.getResource(location); } return null; } @@ -162,15 +218,7 @@ public IoSupplier getResource(PackType type, ResourceLocation locat @Override public void listResources(PackType packType, String namespace, String path, ResourceOutput resourceOutput) { if (packType == PackType.CLIENT_RESOURCES) { - if (!path.endsWith("/")) path += "/"; - final String finalPath = path; - DATA.keySet().stream().filter(Objects::nonNull).filter(loc -> loc.getPath().startsWith(finalPath)) - .forEach((id) -> { - IoSupplier resource = this.getResource(packType, id); - if (resource != null) { - resourceOutput.accept(id, resource); - } - }); + CONTENTS.listResources(namespace, path, resourceOutput); } } @@ -179,6 +227,7 @@ public Set getNamespaces(PackType type) { return type == PackType.CLIENT_RESOURCES ? CLIENT_DOMAINS : Set.of(); } + @SuppressWarnings("unchecked") @Nullable @Override public T getMetadataSection(MetadataSectionSerializer metaReader) { @@ -194,29 +243,35 @@ public String packId() { return this.name; } + public boolean isBuiltin() { + return true; + } + @Override public void close() { // NOOP } public static ResourceLocation getBlockStateLocation(ResourceLocation blockId) { - return new ResourceLocation(blockId.getNamespace(), - String.join("", "blockstates/", blockId.getPath(), ".json")); + return BLOCKSTATE_ID_CONVERTER.idToFile(blockId); } - public static ResourceLocation getModelLocation(ResourceLocation blockId) { - return new ResourceLocation(blockId.getNamespace(), String.join("", "models/", blockId.getPath(), ".json")); + public static ResourceLocation getBlockModelLocation(ResourceLocation blockId) { + return BLOCK_MODEL_ID_CONVERTER.idToFile(blockId); } public static ResourceLocation getItemModelLocation(ResourceLocation itemId) { - return new ResourceLocation(itemId.getNamespace(), String.join("", "models/item/", itemId.getPath(), ".json")); + return ITEM_MODEL_ID_CONVERTER.idToFile(itemId); } - public static ResourceLocation getTextureLocation(@Nullable String path, ResourceLocation tagId) { + public static ResourceLocation getTextureLocation(@Nullable String path, ResourceLocation textureId) { if (path == null) { - return new ResourceLocation(tagId.getNamespace(), String.join("", "textures/", tagId.getPath(), ".png")); + return TEXTURE_ID_CONVERTER.idToFile(textureId); } - return new ResourceLocation(tagId.getNamespace(), - String.join("", "textures/", path, "/", tagId.getPath(), ".png")); + return TEXTURE_ID_CONVERTER.idToFile(textureId.withPrefix(path + "/")); + } + + public static ResourceLocation getAtlasLocation(ResourceLocation atlasId) { + return ATLAS_ID_CONVERTER.idToFile(atlasId); } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/pack/GTPackSource.java b/src/main/java/com/gregtechceu/gtceu/data/pack/GTPackSource.java index 93a1b1ba633..49fc310cc5e 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/pack/GTPackSource.java +++ b/src/main/java/com/gregtechceu/gtceu/data/pack/GTPackSource.java @@ -22,7 +22,7 @@ public class GTPackSource implements RepositorySource { @Override public void loadPacks(Consumer onLoad) { - onLoad.accept(Pack.readMetaAndCreate(name, + onLoad.accept(readMetaAndCreate(name, Component.literal(name), true, resources::apply, @@ -30,4 +30,11 @@ public void loadPacks(Consumer onLoad) { position, PackSource.BUILT_IN)); } + + public static Pack readMetaAndCreate(String id, Component title, boolean required, Pack.ResourcesSupplier resources, + PackType packType, Pack.Position defaultPosition, PackSource packSource) { + Pack.Info info = Pack.readPackInfo(id, resources); + return info != null ? Pack.create(id, title, required, resources, + info, packType, defaultPosition, true, packSource) : null; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java index 5af049b9ab3..1ef6761d452 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java @@ -17,7 +17,29 @@ public class CustomTags { public static final TagKey PISTONS = TagUtil.createItemTag("pistons"); public static final TagKey CONCRETE_ITEM = TagUtil.createItemTag("concretes"); public static final TagKey CONCRETE_POWDER_ITEM = TagUtil.createItemTag("concrete_powders"); + // common/mod compat tags public static final TagKey DOUGHS = TagUtil.createItemTag("dough"); + public static final TagKey WHEAT_DOUGHS = TagUtil.createItemTag("dough/wheat"); + public static final TagKey GRAINS = TagUtil.createItemTag("grain"); + public static final TagKey WHEAT_GRAINS = TagUtil.createItemTag("grain/wheat"); + + // Why did I put them all here? Why not? Science isn't about why, it's about why NOT! + // Why is so much of our science dangerous? Why don't you marry safe science if you love it so much!? + // IN FACT, WHY NOT INVENT A SAFETY DOOR THAT WON'T HIT YOU ON THE BUTT ON THE WAY OUT BECAUSE YOU'RE FIRED!!! + // Not you test subject, you're doing fine. + // YES, YOU. BOX. YOUR STUFF. OUT THE FRONT DOOR. PARKING LOT. CAR. GOODBYE! + public static final TagKey ALIVE_CORAL_BLOCK_ITEMS = TagUtil.createItemTag("coral_blocks/alive"); + public static final TagKey DEAD_CORAL_BLOCK_ITEMS = TagUtil.createItemTag("coral_blocks/dead"); + public static final TagKey CORAL_BLOCK_ITEMS = TagUtil.createItemTag("coral_blocks"); + public static final TagKey ALIVE_CORAL_PLANT_ITEMS = TagUtil.createItemTag("coral_plants/alive"); + public static final TagKey DEAD_CORAL_PLANT_ITEMS = TagUtil.createItemTag("coral_plants/dead"); + public static final TagKey CORAL_PLANT_ITEMS = TagUtil.createItemTag("coral_plants"); + public static final TagKey ALIVE_CORAL_FAN_ITEMS = TagUtil.createItemTag("coral_fans/alive"); + public static final TagKey DEAD_CORAL_FAN_ITEMS = TagUtil.createItemTag("coral_fans/dead"); + public static final TagKey CORAL_FAN_ITEMS = TagUtil.createItemTag("coral_fans"); + public static final TagKey ALIVE_CORAL_ITEMS = TagUtil.createItemTag("corals/alive"); + public static final TagKey DEAD_CORAL_ITEMS = TagUtil.createItemTag("corals/dead"); + public static final TagKey CORAL_ITEMS = TagUtil.createItemTag("corals"); // Added Gregtech tags public static final TagKey TRANSISTORS = TagUtil.createModItemTag("transistors"); @@ -101,8 +123,10 @@ public class CustomTags { public static final TagKey PPE_ARMOR = TagUtil.createModItemTag("ppe_armor"); public static final TagKey STEP_BOOTS = TagUtil.createModItemTag("step_boots"); public static final TagKey RUBBER_LOGS = TagUtil.createModItemTag("rubber_logs"); - public static final TagKey CORAL_BLOCK_ITEMS = TagUtil.createItemTag("coral_blocks"); - public static final TagKey CORAL_ITEMS = TagUtil.createItemTag("corals"); + + public static final TagKey CLEANROOM_DOORS = TagUtil.createModBlockTag("cleanroom_doors"); + + public static final TagKey CHEM_BATH_WASHABLE = TagUtil.createModItemTag("chemical_bath_washable"); // Mineability tags public static final TagKey MINEABLE_WITH_WRENCH = TagUtil.createBlockTag("mineable/wrench"); @@ -124,6 +148,8 @@ public class CustomTags { public static final TagKey NEEDS_NEUTRONIUM_TOOL = TagUtil.createBlockTag("needs_neutronium_tool"); // Tool tags + public static final TagKey TOOLS_IGNITER = TagUtil.createItemTag("tools/igniter"); + public static final TagKey BUTCHERY_KNIVES = TagUtil.createItemTag("tools/butchery_knives"); public static final TagKey BUZZSAWS = TagUtil.createItemTag("tools/buzzsaws"); public static final TagKey CHAINSAWS = TagUtil.createItemTag("tools/chainsaws"); @@ -172,6 +198,8 @@ public class CustomTags { public static final TagKey CONCRETE_BLOCK = TagUtil.createBlockTag("concretes"); public static final TagKey CONCRETE_POWDER_BLOCK = TagUtil.createBlockTag("concrete_powders"); public static final TagKey CLEANROOM_FLOORS = TagUtil.createModBlockTag("cleanroom_floors"); + public static final TagKey CHARCOAL_PILE_IGNITER_WALLS = TagUtil.createModBlockTag( + "charcoal_pile_igniter_walls"); public static final TagKey IS_SWAMP = TagUtil.createTag(Registries.BIOME, "is_swamp", false); public static final TagKey IS_SANDY = TagUtil.createModTag(Registries.BIOME, "is_sandy"); @@ -181,9 +209,10 @@ public class CustomTags { public static final TagKey> CHEMICAL_IMMUNE = TagUtil.createModTag(Registries.ENTITY_TYPE, "chemical_immune"); - public static final TagKey LIGHTER_FLUIDS = TagUtil.createFluidTag("lighter_fluid"); - public static final TagKey MOLTEN_FLUIDS = TagUtil.createFluidTag("molten"); + public static final TagKey LIGHTER_FLUIDS = TagUtil.createModFluidTag("lighter_fluids"); public static final TagKey POTION_FLUIDS = TagUtil.createFluidTag("potion"); + + public static final TagKey MOLTEN_FLUIDS = TagUtil.createFluidTag("molten"); public static final TagKey LIQUID_FLUIDS = TagUtil.createFluidTag("liquid"); public static final TagKey PLASMA_FLUIDS = TagUtil.createFluidTag("plasmatic"); } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/RecipeUtil.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/RecipeUtil.java deleted file mode 100644 index f2a0b906a7d..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/RecipeUtil.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.gregtechceu.gtceu.data.recipe; - -import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; - -import net.minecraft.world.item.ItemStack; - -import org.jetbrains.annotations.Nullable; - -public class RecipeUtil { - - public static int getRatioForDistillery(FluidIngredient fluidInput, FluidIngredient fluidOutput, - @Nullable ItemStack output) { - int[] divisors = new int[] { 2, 5, 10, 25, 50 }; - int ratio = -1; - - for (int divisor : divisors) { - - if (!isFluidStackDivisibleForDistillery(fluidInput, divisor)) - continue; - - if (!isFluidStackDivisibleForDistillery(fluidOutput, divisor)) - continue; - - if (output != null && output.getCount() % divisor != 0) - continue; - - ratio = divisor; - } - - return Math.max(1, ratio); - } - - public static boolean isFluidStackDivisibleForDistillery(FluidIngredient fluidStack, int divisor) { - return fluidStack.getAmount() % divisor == 0 && fluidStack.getAmount() / divisor >= 25; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/VanillaRecipeHelper.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/VanillaRecipeHelper.java index b688edb7627..8f57497253f 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/VanillaRecipeHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/VanillaRecipeHelper.java @@ -28,11 +28,6 @@ import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/2/21 - * @implNote VanillaRecipeHelper - */ public class VanillaRecipeHelper { public static void addSmeltingRecipe(Consumer provider, @NotNull String regName, TagKey input, @@ -601,7 +596,7 @@ public static ItemMaterialInfo getRecyclingIngredients(int outputCount, @NotNull if (info != null) { for (MaterialStack ms : info.getMaterials()) { if (!(ms.material() instanceof MarkerMaterial)) { - addMaterialStack(materialStacksExploded, outputCount, inputCountMap, ms, lastChar); + addMaterialStack(materialStacksExploded, inputCountMap.get(lastChar), outputCount, ms); } } continue; @@ -610,14 +605,14 @@ public static ItemMaterialInfo getRecyclingIngredients(int outputCount, @NotNull // Then try to get a single Material (UnificationEntry needs this, for example) MaterialStack materialStack = ChemicalHelper.getMaterialStack(itemLike); if (!materialStack.isEmpty() && !(materialStack.material() instanceof MarkerMaterial)) { - addMaterialStack(materialStacksExploded, outputCount, inputCountMap, materialStack, lastChar); + addMaterialStack(materialStacksExploded, inputCountMap.get(lastChar), outputCount, materialStack); } // Gather any secondary materials if this item has an OrePrefix TagPrefix prefix = ChemicalHelper.getPrefix(itemLike); if (!prefix.isEmpty() && !prefix.secondaryMaterials().isEmpty()) { for (MaterialStack ms : prefix.secondaryMaterials()) { - addMaterialStack(materialStacksExploded, outputCount, inputCountMap, ms, lastChar); + addMaterialStack(materialStacksExploded, inputCountMap.get(lastChar), outputCount, ms); } } } @@ -626,8 +621,7 @@ public static ItemMaterialInfo getRecyclingIngredients(int outputCount, @NotNull } private static void addMaterialStack(@NotNull Reference2LongOpenHashMap materialStacksExploded, - int outputStackCount, @NotNull Char2IntFunction inputCountMap, - @NotNull MaterialStack ms, char c) { - materialStacksExploded.merge(ms.material(), (ms.amount() * inputCountMap.get(c) / outputStackCount), Long::sum); + int inputCount, int outputCount, @NotNull MaterialStack ms) { + materialStacksExploded.addTo(ms.material(), (ms.amount() * inputCount / outputCount)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/BlastingRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/BlastingRecipeBuilder.java index 99ae06bf228..1b5718716f7 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/BlastingRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/BlastingRecipeBuilder.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.data.recipe.builder; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.recipe.ingredient.NBTIngredient; import com.lowdragmc.lowdraglib.utils.NBTToJsonConverter; @@ -15,6 +14,7 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.ItemLike; +import net.minecraftforge.common.crafting.StrictNBTIngredient; import com.google.gson.JsonObject; import lombok.Setter; @@ -23,11 +23,6 @@ import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/2/21 - * @implNote SmeltingRecipeBuilder - */ @Accessors(chain = true, fluent = true) public class BlastingRecipeBuilder { @@ -52,11 +47,7 @@ public BlastingRecipeBuilder input(TagKey itemStack) { } public BlastingRecipeBuilder input(ItemStack itemStack) { - if (itemStack.hasTag() || itemStack.getDamageValue() > 0) { - input = NBTIngredient.createNBTIngredient(itemStack); - } else { - input = Ingredient.of(itemStack); - } + input = itemStack.hasTag() ? StrictNBTIngredient.of(itemStack) : Ingredient.of(itemStack); return this; } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/CampfireRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/CampfireRecipeBuilder.java index f6a670d3a08..b95064c1fad 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/CampfireRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/CampfireRecipeBuilder.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.data.recipe.builder; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.recipe.ingredient.NBTIngredient; import com.lowdragmc.lowdraglib.utils.NBTToJsonConverter; @@ -15,6 +14,7 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.ItemLike; +import net.minecraftforge.common.crafting.StrictNBTIngredient; import com.google.gson.JsonObject; import lombok.Setter; @@ -23,11 +23,6 @@ import java.util.function.Consumer; -/** - * @author JuiceyBeans - * @date 2024/10/12 - * @implNote CampfireRecipeBuilder - */ @Accessors(chain = true, fluent = true) public class CampfireRecipeBuilder { @@ -52,11 +47,7 @@ public CampfireRecipeBuilder input(TagKey itemStack) { } public CampfireRecipeBuilder input(ItemStack itemStack) { - if (itemStack.hasTag() || itemStack.getDamageValue() > 0) { - input = NBTIngredient.createNBTIngredient(itemStack); - } else { - input = Ingredient.of(itemStack); - } + input = itemStack.hasTag() ? StrictNBTIngredient.of(itemStack) : Ingredient.of(itemStack); return this; } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java index 96aa5861c1d..d2b29ae12fe 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java @@ -19,10 +19,7 @@ import com.gregtechceu.gtceu.api.recipe.category.GTRecipeCategory; import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; import com.gregtechceu.gtceu.api.recipe.content.Content; -import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; -import com.gregtechceu.gtceu.api.recipe.ingredient.IntCircuitIngredient; -import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderIngredient; -import com.gregtechceu.gtceu.api.recipe.ingredient.SizedIngredient; +import com.gregtechceu.gtceu.api.recipe.ingredient.*; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.data.GTRecipeTypes; import com.gregtechceu.gtceu.common.item.IntCircuitBehaviour; @@ -34,9 +31,11 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; import net.minecraft.data.recipes.FinishedRecipe; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; import net.minecraft.util.valueproviders.IntProvider; @@ -46,7 +45,9 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.material.Fluid; import net.minecraftforge.fluids.FluidStack; import com.google.gson.JsonArray; @@ -60,10 +61,7 @@ import org.jetbrains.annotations.Nullable; import java.util.*; -import java.util.function.BiConsumer; -import java.util.function.Consumer; -import java.util.function.Supplier; -import java.util.function.UnaryOperator; +import java.util.function.*; import javax.annotation.ParametersAreNonnullByDefault; @@ -106,7 +104,7 @@ public class GTRecipeBuilder { private boolean removePreviousMatInfo = false; public GTRecipeCategory recipeCategory; @Setter - public BiConsumer> onSave; + public @Nullable BiConsumer> onSave; @Getter private final Collection researchRecipeEntries = new ArrayList<>(); @@ -172,129 +170,88 @@ public GTRecipeBuilder copy(ResourceLocation id) { } public GTRecipeBuilder copyFrom(GTRecipeBuilder builder) { + recipeType.setMinRecipeConditions(builder.conditions.size()); return builder.copy(builder.id).onSave(null).recipeType(recipeType).category(recipeCategory); } + protected Content makeContent(Object o) { + return new Content(o, chance, maxChance, tierChanceBoost); + } + public GTRecipeBuilder input(RecipeCapability capability, T obj) { var t = (perTick ? tickInput : input); - if (t.get(capability) != null && t.get(capability).size() >= recipeType.getMaxInputs(capability)) { - GTCEu.LOGGER.warn("Trying to add more inputs than RecipeType can support, id: {}, Max {}{}Inputs: {}", - id, (perTick ? "Tick " : ""), capability.name, recipeType.getMaxInputs(capability)); - } - t.computeIfAbsent(capability, c -> new ArrayList<>()) - .add(new Content(capability.of(obj), chance, maxChance, tierChanceBoost)); + warnTooManyIngredients(capability, true, t, 1); + t.computeIfAbsent(capability, c -> new ArrayList<>()).add(makeContent(capability.of(obj))); return this; } public GTRecipeBuilder input(RecipeCapability capability, T... obj) { var t = (perTick ? tickInput : input); - if (t.get(capability) != null && t.get(capability).size() + obj.length > recipeType.getMaxInputs(capability)) { - GTCEu.LOGGER.warn("Trying to add more inputs than RecipeType can support, id: {}, Max {}{}Inputs: {}", - id, (perTick ? "Tick " : ""), capability.name, recipeType.getMaxInputs(capability)); - } - (perTick ? tickInput : input).computeIfAbsent(capability, c -> new ArrayList<>()).addAll(Arrays.stream(obj) - .map(capability::of) - .map(o -> new Content(o, chance, maxChance, tierChanceBoost)).toList()); + warnTooManyIngredients(capability, true, t, obj.length); + t.computeIfAbsent(capability, c -> new ArrayList<>()) + .addAll(Arrays.stream(obj).map(capability::of).map(this::makeContent).toList()); return this; } public GTRecipeBuilder output(RecipeCapability capability, T obj) { var t = (perTick ? tickOutput : output); - if (t.get(capability) != null && t.get(capability).size() >= recipeType.getMaxOutputs(capability)) { - GTCEu.LOGGER.warn("Trying to add more outputs than RecipeType can support, id: {}, Max {}{}Outputs: {}", - id, (perTick ? "Tick " : ""), capability.name, recipeType.getMaxOutputs(capability)); - } - (perTick ? tickOutput : output).computeIfAbsent(capability, c -> new ArrayList<>()) - .add(new Content(capability.of(obj), chance, maxChance, tierChanceBoost)); + warnTooManyIngredients(capability, false, t, 1); + t.computeIfAbsent(capability, c -> new ArrayList<>()).add(makeContent(capability.of(obj))); return this; } public GTRecipeBuilder output(RecipeCapability capability, T... obj) { var t = (perTick ? tickOutput : output); - if (t.get(capability) != null && t.get(capability).size() + obj.length > recipeType.getMaxOutputs(capability)) { - GTCEu.LOGGER.warn("Trying to add more outputs than RecipeType can support, id: {}, Max {}{}Outputs: {}", - id, (perTick ? "Tick " : ""), capability.name, recipeType.getMaxOutputs(capability)); - } - (perTick ? tickOutput : output).computeIfAbsent(capability, c -> new ArrayList<>()).addAll(Arrays.stream(obj) - .map(capability::of) - .map(o -> new Content(o, chance, maxChance, tierChanceBoost)).toList()); - return this; - } - - public GTRecipeBuilder inputs(RecipeCapability capability, Object obj) { - var t = (perTick ? tickInput : input); - if (t.get(capability) != null && t.get(capability).size() >= recipeType.getMaxInputs(capability)) { - GTCEu.LOGGER.warn("Trying to add more inputs than RecipeType can support, id: {}, Max {}{}Inputs: {}", - id, (perTick ? "Tick " : ""), capability.name, recipeType.getMaxInputs(capability)); - } - (perTick ? tickInput : input).computeIfAbsent(capability, c -> new ArrayList<>()) - .add(new Content(capability.of(obj), chance, maxChance, tierChanceBoost)); - return this; - } - - public GTRecipeBuilder inputs(RecipeCapability capability, Object... obj) { - var t = (perTick ? tickInput : input); - if (t.get(capability) != null && t.get(capability).size() + obj.length > recipeType.getMaxInputs(capability)) { - GTCEu.LOGGER.warn("Trying to add more inputs than RecipeType can support, id: {}, Max {}{}Inputs: {}", - id, (perTick ? "Tick " : ""), capability.name, recipeType.getMaxInputs(capability)); - } - (perTick ? tickInput : input).computeIfAbsent(capability, c -> new ArrayList<>()).addAll(Arrays.stream(obj) - .map(capability::of) - .map(o -> new Content(o, chance, maxChance, tierChanceBoost)).toList()); - return this; - } - - public GTRecipeBuilder outputs(RecipeCapability capability, Object obj) { - var t = (perTick ? tickOutput : output); - if (t.get(capability) != null && t.get(capability).size() >= recipeType.getMaxOutputs(capability)) { - GTCEu.LOGGER.warn("Trying to add more outputs than RecipeType can support, id: {}, Max {}{}Outputs: {}", - id, (perTick ? "Tick " : ""), capability.name, recipeType.getMaxOutputs(capability)); - } - (perTick ? tickOutput : output).computeIfAbsent(capability, c -> new ArrayList<>()) - .add(new Content(capability.of(obj), chance, maxChance, tierChanceBoost)); - return this; - } - - public GTRecipeBuilder outputs(RecipeCapability capability, Object... obj) { - var t = (perTick ? tickOutput : output); - if (t.get(capability) != null && t.get(capability).size() + obj.length > recipeType.getMaxOutputs(capability)) { - GTCEu.LOGGER.warn("Trying to add more outputs than RecipeType can support, id: {}, Max {}{}Outputs: {}", - id, (perTick ? "Tick " : ""), capability.name, recipeType.getMaxOutputs(capability)); - } - (perTick ? tickOutput : output).computeIfAbsent(capability, c -> new ArrayList<>()).addAll(Arrays.stream(obj) - .map(capability::of) - .map(o -> new Content(o, chance, maxChance, tierChanceBoost)).toList()); + warnTooManyIngredients(capability, false, t, obj.length); + t.computeIfAbsent(capability, c -> new ArrayList<>()) + .addAll(Arrays.stream(obj).map(capability::of).map(this::makeContent).toList()); return this; } public GTRecipeBuilder addCondition(RecipeCondition condition) { conditions.add(condition); + recipeType.setMinRecipeConditions(conditions.size()); return this; } public GTRecipeBuilder inputEU(long eu) { - return input(EURecipeCapability.CAP, eu); + return inputEU(eu, 1); + } + + public GTRecipeBuilder inputEU(long voltage, long amperage) { + return input(EURecipeCapability.CAP, new EnergyStack(voltage, amperage)); } public GTRecipeBuilder EUt(long eu) { - if (eu == 0) { + return EUt(eu, 1); + } + + public GTRecipeBuilder EUt(long voltage, long amperage) { + if (voltage == 0) { GTCEu.LOGGER.error("EUt can't be explicitly set to 0, id: {}", id); } + if (amperage < 1) { + GTCEu.LOGGER.error("Amperage must be a positive integer, id: {}", id); + } var lastPerTick = perTick; perTick = true; - if (eu > 0) { + if (voltage > 0) { tickInput.remove(EURecipeCapability.CAP); - inputEU(eu); - } else if (eu < 0) { + inputEU(voltage, amperage); + } else if (voltage < 0) { tickOutput.remove(EURecipeCapability.CAP); - outputEU(-eu); + outputEU(-voltage, amperage); } perTick = lastPerTick; return this; } public GTRecipeBuilder outputEU(long eu) { - return output(EURecipeCapability.CAP, eu); + return outputEU(eu, 1); + } + + public GTRecipeBuilder outputEU(long voltage, long amperage) { + return output(EURecipeCapability.CAP, new EnergyStack(voltage, amperage)); } public GTRecipeBuilder inputCWU(int cwu) { @@ -312,7 +269,7 @@ public GTRecipeBuilder CWUt(int cwu) { inputCWU(cwu); } else if (cwu < 0) { tickOutput.remove(CWURecipeCapability.CAP); - outputCWU(cwu); + outputCWU(-cwu); } perTick = lastPerTick; return this; @@ -345,9 +302,10 @@ public GTRecipeBuilder inputItems(Object input) { } else if (input instanceof MachineDefinition machine) { return inputItems(machine); } else { - GTCEu.LOGGER.error("Input item is not one of:\n" + - "Item, Supplier, ItemStack, Ingredient, " + - "MaterialEntry, TagKey, MachineDefinition, id: {}", id); + GTCEu.LOGGER.error(""" + Input item is not one of: + Item, Supplier, ItemStack, Ingredient, MaterialEntry, TagKey, MachineDefinition + id: {}""", id); return this; } } @@ -368,60 +326,94 @@ public GTRecipeBuilder inputItems(Object input, int count) { } else if (input instanceof MachineDefinition machine) { return inputItems(machine, count); } else { - GTCEu.LOGGER.error("Input item is not one of:\n" + - "Item, Supplier, ItemStack, Ingredient, " + - "MaterialEntry, TagKey, MachineDefinition, id: {}", id); + GTCEu.LOGGER.error(""" + Input item is not one of: + Item, Supplier, ItemStack, Ingredient, MaterialEntry, TagKey, MachineDefinition + id: {}""", id); return this; } } public GTRecipeBuilder inputItems(Ingredient inputs) { + if (intProviderInputError(inputs, 0)) { + return this; + } else if (missingIngredientError(0, true, ItemRecipeCapability.CAP, inputs::isEmpty)) { + return this; + } return input(ItemRecipeCapability.CAP, inputs); } public GTRecipeBuilder inputItems(Ingredient... inputs) { - return input(ItemRecipeCapability.CAP, inputs); + List ingredients = new ArrayList<>(); + for (int i = 0; i < inputs.length; i++) { + var ingredient = inputs[i]; + if (intProviderInputError(ingredient, i)) { + return this; + } else if (missingIngredientError(i, true, ItemRecipeCapability.CAP, ingredient::isEmpty)) { + return this; + } else { + ingredients.add(ingredient); + } + } + return input(ItemRecipeCapability.CAP, ingredients.toArray(Ingredient[]::new)); + } + + public GTRecipeBuilder inputItems(Ingredient inputs, int count) { + if (intProviderInputError(inputs, 0)) { + return this; + } else if (missingIngredientError(0, true, ItemRecipeCapability.CAP, inputs::isEmpty)) { + return this; + } + return input(ItemRecipeCapability.CAP, SizedIngredient.create(inputs, count)); } public GTRecipeBuilder inputItems(ItemStack input) { - if (input.isEmpty()) { - GTCEu.LOGGER.error("Input items is empty, id: {}", id); + if (missingIngredientError(0, true, ItemRecipeCapability.CAP, input::isEmpty)) { + return this; } else { - var matStack = ItemMaterialData.getMaterialInfo(input.getItem()); + var matInfo = ItemMaterialData.getMaterialInfo(input.getItem()); + var unresolvedMatInfo = ItemMaterialData.UNRESOLVED_ITEM_MATERIAL_INFO.get(input); if (chance == maxChance && chance != 0) { - if (matStack != null) { - tempItemMaterialStacks.addAll(matStack.getMaterials()); - } else { + if (unresolvedMatInfo != null) { tempItemStacks.add(input); } + if (matInfo != null) { + for (var matStack : matInfo.getMaterials()) { + tempItemMaterialStacks.add(matStack.multiply(input.getCount())); + } + } else if (unresolvedMatInfo == null) { + tempItemStacks.add(input); + } + } } return input(ItemRecipeCapability.CAP, SizedIngredient.create(input)); } public GTRecipeBuilder inputItems(ItemStack... inputs) { - for (ItemStack itemStack : inputs) { - if (itemStack.isEmpty()) { - GTCEu.LOGGER.error("Input item is empty, id: {}", id); + List ingredients = new ArrayList<>(); + for (int i = 0; i < inputs.length; i++) { + ItemStack itemStack = inputs[i]; + if (missingIngredientError(i, true, ItemRecipeCapability.CAP, itemStack::isEmpty)) { + return this; } else { - var matStack = ItemMaterialData.getMaterialInfo(itemStack.getItem()); + var matInfo = ItemMaterialData.getMaterialInfo(itemStack.getItem()); if (chance == maxChance && chance != 0) { - if (matStack != null) { - tempItemMaterialStacks.addAll(matStack.getMaterials()); + if (matInfo != null) { + for (var matStack : matInfo.getMaterials()) { + tempItemMaterialStacks.add(matStack.multiply(itemStack.getCount())); + } } else { tempItemStacks.add(itemStack); } } + ingredients.add(SizedIngredient.create(itemStack)); } } - return input(ItemRecipeCapability.CAP, - Arrays.stream(inputs).map(SizedIngredient::create).toArray(Ingredient[]::new)); + return input(ItemRecipeCapability.CAP, ingredients.toArray(Ingredient[]::new)); } public GTRecipeBuilder inputItems(TagKey tag, int amount) { - if (amount == 0) { - GTCEu.LOGGER.error("Item Count is 0, id: {}", id); - } return inputItems(SizedIngredient.create(tag, amount)); } @@ -434,15 +426,7 @@ public GTRecipeBuilder inputItems(Item input, int amount) { } public GTRecipeBuilder inputItems(Item input) { - var matStack = ItemMaterialData.getMaterialInfo(input); - if (chance == maxChance && chance != 0) { - if (matStack != null) { - tempItemMaterialStacks.addAll(matStack.getMaterials()); - } else { - tempItemStacks.add(new ItemStack(input)); - } - } - return inputItems(SizedIngredient.create(new ItemStack(input))); + return inputItems(input, 1); } public GTRecipeBuilder inputItems(Supplier input) { @@ -450,7 +434,7 @@ public GTRecipeBuilder inputItems(Supplier input) { } public GTRecipeBuilder inputItems(Supplier input, int amount) { - return inputItems(new ItemStack(input.get(), amount)); + return inputItems(input.get(), amount); } public GTRecipeBuilder inputItems(TagPrefix orePrefix, Material material) { @@ -462,25 +446,23 @@ public GTRecipeBuilder inputItems(MaterialEntry input) { } public GTRecipeBuilder inputItems(MaterialEntry input, int count) { - if (input.material().isNull()) { - GTCEu.LOGGER.error("MaterialEntry material is null, id: {}, TagPrefix: {}", id, input.tagPrefix()); - } return inputItems(input.tagPrefix(), input.material(), count); } public GTRecipeBuilder inputItems(TagPrefix tagPrefix, @NotNull Material material, int count) { - if (material.isNull()) { + if (tagPrefix.isEmpty() || material.isNull()) { GTCEu.LOGGER.error( "Tried to set input item stack that doesn't exist, id: {}, TagPrefix: {}, Material: {}, Count: {}", - id, tagPrefix, "null", count); - return inputItems(ItemStack.EMPTY); + id, tagPrefix, material, count); + return this; } else { tempItemMaterialStacks.add(new MaterialStack(material, tagPrefix.getMaterialAmount(material) * count)); - tagPrefix.secondaryMaterials().forEach( - mat -> tempItemMaterialStacks.add(new MaterialStack(mat.material(), mat.amount() * count))); + tagPrefix.secondaryMaterials().forEach(mat -> tempItemMaterialStacks.add(mat.multiply(count))); } TagKey tag = ChemicalHelper.getTag(tagPrefix, material); - if (tag == null) { + if (tag != null) { + return inputItems(tag, count); + } else { var item = ChemicalHelper.get(tagPrefix, material, count); if (item.isEmpty()) { GTCEu.LOGGER.error( @@ -489,7 +471,6 @@ public GTRecipeBuilder inputItems(TagPrefix tagPrefix, @NotNull Material materia } return input(ItemRecipeCapability.CAP, SizedIngredient.create(item)); } - return inputItems(tag, count); } public GTRecipeBuilder inputItems(MachineDefinition machine) { @@ -500,63 +481,64 @@ public GTRecipeBuilder inputItems(MachineDefinition machine, int count) { return inputItems(machine.asStack(count)); } - public GTRecipeBuilder outputItems(Object input) { - if (input instanceof Item item) { + public GTRecipeBuilder outputItems(Object output) { + if (output instanceof Item item) { return outputItems(item); - } else if (input instanceof Supplier supplier && supplier.get() instanceof ItemLike item) { + } else if (output instanceof Supplier supplier && supplier.get() instanceof ItemLike item) { return outputItems(item.asItem()); - } else if (input instanceof ItemStack stack) { + } else if (output instanceof ItemStack stack) { return outputItems(stack); - } else if (input instanceof MaterialEntry entry) { + } else if (output instanceof MaterialEntry entry) { return outputItems(entry); - } else if (input instanceof MachineDefinition machine) { + } else if (output instanceof MachineDefinition machine) { return outputItems(machine); } else { - GTCEu.LOGGER.error("Output item is not one of:\n" + - "Item, Supplier, ItemStack, Ingredient, " + - "MaterialEntry, TagKey, MachineDefinition, id: {}", id); + GTCEu.LOGGER.error(""" + Output item is not one of: + Item, Supplier, ItemStack, MaterialEntry, MachineDefinition + id: {}""", id); return this; } } - public GTRecipeBuilder outputItems(Object input, int count) { - if (input instanceof Item item) { + public GTRecipeBuilder outputItems(Object output, int count) { + if (output instanceof Item item) { return outputItems(item, count); - } else if (input instanceof Supplier supplier && supplier.get() instanceof ItemLike item) { + } else if (output instanceof Supplier supplier && supplier.get() instanceof ItemLike item) { return outputItems(item.asItem(), count); - } else if (input instanceof ItemStack stack) { + } else if (output instanceof ItemStack stack) { return outputItems(stack.copyWithCount(count)); - } else if (input instanceof MaterialEntry entry) { + } else if (output instanceof MaterialEntry entry) { return outputItems(entry, count); - } else if (input instanceof MachineDefinition machine) { + } else if (output instanceof MachineDefinition machine) { return outputItems(machine, count); } else { - GTCEu.LOGGER.error("Output item is not one of:\n" + - "Item, Supplier, ItemStack, Ingredient, " + - "MaterialEntry, TagKey, MachineDefinition, id: {}", id); + GTCEu.LOGGER.error(""" + Output item is not one of: + Item, Supplier, ItemStack, MaterialEntry, MachineDefinition + id: {}""", id); return this; } } - public GTRecipeBuilder outputItems(Ingredient... inputs) { - return output(ItemRecipeCapability.CAP, inputs); - } - public GTRecipeBuilder outputItems(ItemStack output) { - if (output.isEmpty()) { - GTCEu.LOGGER.error("Output items is empty, id: {}", id); + if (missingIngredientError(0, false, ItemRecipeCapability.CAP, output::isEmpty)) { + return this; } return output(ItemRecipeCapability.CAP, SizedIngredient.create(output)); } public GTRecipeBuilder outputItems(ItemStack... outputs) { - for (ItemStack itemStack : outputs) { - if (itemStack.isEmpty()) { - GTCEu.LOGGER.error("Output items is empty, id: {}", id); + List ingredients = new ArrayList<>(); + for (int i = 0; i < outputs.length; i++) { + ItemStack itemStack = outputs[i]; + if (missingIngredientError(i, false, ItemRecipeCapability.CAP, itemStack::isEmpty)) { + return this; + } else { + ingredients.add(SizedIngredient.create(itemStack)); } } - return output(ItemRecipeCapability.CAP, - Arrays.stream(outputs).map(SizedIngredient::create).toArray(Ingredient[]::new)); + return output(ItemRecipeCapability.CAP, ingredients.toArray(Ingredient[]::new)); } public GTRecipeBuilder outputItems(Item output, int amount) { @@ -580,32 +562,27 @@ public GTRecipeBuilder outputItems(TagPrefix orePrefix, Material material) { } public GTRecipeBuilder outputItems(TagPrefix orePrefix, @NotNull Material material, int count) { - if (material.isNull()) { + if (orePrefix.isEmpty() || material.isNull()) { GTCEu.LOGGER.error( "Tried to set output item stack that doesn't exist, id: {}, TagPrefix: {}, Material: {}, Count: {}", - id, orePrefix, "null", count); - return outputItems(ItemStack.EMPTY); + id, orePrefix, material, count); + return this; } var item = ChemicalHelper.get(orePrefix, material, count); if (item.isEmpty()) { GTCEu.LOGGER.error( "Tried to set output item stack that doesn't exist, id: {}, TagPrefix: {}, Material: {}, Count: {}", - id, orePrefix, "null", count); + id, orePrefix, material, count); + return this; } return outputItems(item); } public GTRecipeBuilder outputItems(MaterialEntry entry) { - if (entry.material().isNull()) { - GTCEu.LOGGER.error("Unification Entry material is null, id: {}, TagPrefix: {}", id, entry.tagPrefix()); - } return outputItems(entry.tagPrefix(), entry.material()); } public GTRecipeBuilder outputItems(MaterialEntry entry, int count) { - if (entry.material().isNull()) { - GTCEu.LOGGER.error("Unification Entry material is null, id: {}, TagPrefix: {}", id, entry.tagPrefix()); - } return outputItems(entry.tagPrefix(), entry.material(), count); } @@ -617,8 +594,12 @@ public GTRecipeBuilder outputItems(MachineDefinition machine, int count) { return outputItems(machine.asStack(count)); } + protected GTRecipeBuilder outputItems(Ingredient ingredient) { + return output(ItemRecipeCapability.CAP, ingredient); + } + public GTRecipeBuilder outputItemsRanged(ItemStack output, IntProvider intProvider) { - return outputItems(IntProviderIngredient.create(SizedIngredient.create(output), intProvider)); + return outputItems(IntProviderIngredient.of(output, intProvider)); } public GTRecipeBuilder outputItemsRanged(Item input, IntProvider intProvider) { @@ -707,13 +688,11 @@ public GTRecipeBuilder circuitMeta(int configuration) { if (configuration < 0 || configuration > IntCircuitBehaviour.CIRCUIT_MAX) { GTCEu.LOGGER.error("Circuit configuration must be in the bounds 0 - 32"); } - return notConsumable(IntCircuitIngredient.circuitInput(configuration)); + return notConsumable(IntCircuitIngredient.of(configuration)); } public GTRecipeBuilder chancedInput(ItemStack stack, int chance, int tierChanceBoost) { - if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { - GTCEu.LOGGER.error("Chance cannot be less or equal to 0 or more than {}. Actual: {}.", - ChanceLogic.getMaxChancedValue(), chance, new Throwable()); + if (checkChanceAndPrintError(chance)) { return this; } int lastChance = this.chance; @@ -727,9 +706,7 @@ public GTRecipeBuilder chancedInput(ItemStack stack, int chance, int tierChanceB } public GTRecipeBuilder chancedInput(FluidStack stack, int chance, int tierChanceBoost) { - if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { - GTCEu.LOGGER.error("Chance cannot be less or equal to 0 or more than {}. Actual: {}.", - ChanceLogic.getMaxChancedValue(), chance, new Throwable()); + if (checkChanceAndPrintError(chance)) { return this; } int lastChance = this.chance; @@ -743,9 +720,7 @@ public GTRecipeBuilder chancedInput(FluidStack stack, int chance, int tierChance } public GTRecipeBuilder chancedOutput(ItemStack stack, int chance, int tierChanceBoost) { - if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { - GTCEu.LOGGER.error("Chance cannot be less or equal to 0 or more than {}. Actual: {}.", - ChanceLogic.getMaxChancedValue(), chance, new Throwable()); + if (checkChanceAndPrintError(chance)) { return this; } int lastChance = this.chance; @@ -759,9 +734,7 @@ public GTRecipeBuilder chancedOutput(ItemStack stack, int chance, int tierChance } public GTRecipeBuilder chancedOutput(FluidStack stack, int chance, int tierChanceBoost) { - if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { - GTCEu.LOGGER.error("Chance cannot be less or equal to 0 or more than {}. Actual: {}.", - ChanceLogic.getMaxChancedValue(), chance, new Throwable()); + if (checkChanceAndPrintError(chance)) { return this; } int lastChance = this.chance; @@ -952,6 +925,9 @@ public GTRecipeBuilder inputFluids(@NotNull Material material, int amount) { } public GTRecipeBuilder inputFluids(FluidStack input) { + if (missingIngredientError(0, true, FluidRecipeCapability.CAP, input::isEmpty)) { + return this; + } var matStack = ChemicalHelper.getMaterial(input.getFluid()); if (!matStack.isNull() && chance != 0 && chance == maxChance) { tempFluidStacks.add(new MaterialStack(matStack, input.getAmount() * GTValues.M / GTValues.L)); @@ -962,17 +938,24 @@ public GTRecipeBuilder inputFluids(FluidStack input) { } public GTRecipeBuilder inputFluids(FluidStack... inputs) { - for (var input : inputs) { - var matStack = ChemicalHelper.getMaterial(input.getFluid()); - if (!matStack.isNull()) { - if (chance == maxChance && chance != 0) { - tempFluidStacks.add(new MaterialStack(matStack, input.getAmount() * GTValues.M / GTValues.L)); + List ingredients = new ArrayList<>(); + for (int i = 0; i < inputs.length; i++) { + FluidStack fluid = inputs[i]; + if (missingIngredientError(i, true, FluidRecipeCapability.CAP, fluid::isEmpty)) { + return this; + } else { + var matStack = ChemicalHelper.getMaterial(fluid.getFluid()); + if (!matStack.isNull()) { + if (chance == maxChance && chance != 0) { + tempFluidStacks.add(new MaterialStack(matStack, fluid.getAmount() * GTValues.M / GTValues.L)); + } } + + TagKey tag = TagUtil.createFluidTag(BuiltInRegistries.FLUID.getKey(fluid.getFluid()).getPath()); + ingredients.add(FluidIngredient.of(tag, fluid.getAmount(), fluid.getTag())); } } - return input(FluidRecipeCapability.CAP, Arrays.stream(inputs).map(fluid -> FluidIngredient.of( - TagUtil.createFluidTag(BuiltInRegistries.FLUID.getKey(fluid.getFluid()).getPath()), - fluid.getAmount(), fluid.getTag())).toArray(FluidIngredient[]::new)); + return input(FluidRecipeCapability.CAP, ingredients.toArray(FluidIngredient[]::new)); } public GTRecipeBuilder inputFluids(FluidIngredient... inputs) { @@ -992,6 +975,14 @@ public GTRecipeBuilder outputFluids(FluidIngredient... outputs) { return output(FluidRecipeCapability.CAP, outputs); } + public GTRecipeBuilder outputFluidsRanged(FluidStack output, IntProvider intProvider) { + return outputFluidsRanged(FluidIngredient.of(output), intProvider); + } + + protected GTRecipeBuilder outputFluidsRanged(FluidIngredient output, IntProvider intProvider) { + return outputFluids(IntProviderFluidIngredient.of(output, intProvider)); + } + ////////////////////////////////////// // ********** DATA ***********// ////////////////////////////////////// @@ -1015,7 +1006,7 @@ public GTRecipeBuilder addData(String key, String data) { return this; } - public GTRecipeBuilder addData(String key, Float data) { + public GTRecipeBuilder addData(String key, float data) { this.data.putFloat(key, data); return this; } @@ -1078,13 +1069,21 @@ public GTRecipeBuilder dimension(ResourceLocation dimension) { } public GTRecipeBuilder biome(ResourceLocation biome, boolean reverse) { - return addCondition(new BiomeCondition(biome).setReverse(reverse)); + return biome(ResourceKey.create(Registries.BIOME, biome), reverse); } public GTRecipeBuilder biome(ResourceLocation biome) { return biome(biome, false); } + public GTRecipeBuilder biome(ResourceKey biome, boolean reverse) { + return addCondition(new BiomeCondition(biome).setReverse(reverse)); + } + + public GTRecipeBuilder biome(ResourceKey biome) { + return biome(biome, false); + } + public GTRecipeBuilder rain(float level, boolean reverse) { return addCondition(new RainingCondition(level).setReverse(reverse)); } @@ -1408,14 +1407,22 @@ private void addOutputMaterialInfo() { var itemOutputs = output.getOrDefault(ItemRecipeCapability.CAP, new ArrayList<>()); var itemInputs = input.getOrDefault(ItemRecipeCapability.CAP, new ArrayList<>()); if (itemOutputs.size() == 1 && (!itemInputs.isEmpty() || !tempFluidStacks.isEmpty())) { - var currOutput = itemOutputs.get(0).content; - ItemLike out = null; + var currOutput = ItemRecipeCapability.CAP.of(itemOutputs.get(0).content); + Item out = null; int outputCount = 0; - if (currOutput instanceof Ingredient ingredient) { - if (ingredient.getItems().length > 0) { - out = ingredient.getItems()[0].getItem(); - outputCount = ingredient.getItems()[0].getCount(); + if (currOutput instanceof IntProviderIngredient intProvider) { + ItemStack[] items = intProvider.getInner().getItems(); + if (items.length > 0) { + out = items[0].getItem(); + // use the max amount of items for decomp info so dupes can't happen + outputCount = intProvider.getCountProvider().getMaxValue(); + } + } else if (!currOutput.isEmpty()) { + ItemStack[] items = currOutput.getItems(); + if (items.length > 0) { + out = items[0].getItem(); + outputCount = items[0].getCount(); } } @@ -1424,14 +1431,18 @@ private void addOutputMaterialInfo() { } Reference2LongOpenHashMap matStacks = new Reference2LongOpenHashMap<>(); - for (var input : tempItemMaterialStacks) { - long am = input.amount() / outputCount; - matStacks.addTo(input.material(), am); + if (itemMaterialInfo) { + for (var input : tempItemMaterialStacks) { + long am = input.amount() / outputCount; + matStacks.addTo(input.material(), am); + } } - for (var input : tempFluidStacks) { - long am = input.amount() / outputCount; - matStacks.addTo(input.material(), am); + if (fluidMaterialInfo) { + for (var input : tempFluidStacks) { + long am = input.amount() / outputCount; + matStacks.addTo(input.material(), am); + } } if (outputCount != 0 && !tempItemStacks.isEmpty()) { @@ -1447,15 +1458,23 @@ private void addOutputMaterialInfo() { private void removeExistingMaterialInfo() { var itemOutputs = output.get(ItemRecipeCapability.CAP); if (itemOutputs.size() == 1) { - var currOutput = itemOutputs.get(0).content; - ItemLike out = null; + var currOutput = ItemRecipeCapability.CAP.of(itemOutputs.get(0).content); + Item out = null; int outputCount = 0; - if (currOutput instanceof Ingredient ingredient) { - if (ingredient.getItems().length > 0) { - out = ingredient.getItems()[0].getItem(); + if (currOutput instanceof IntProviderIngredient intProvider) { + ItemStack[] items = intProvider.getInner().getItems(); + if (items.length > 0) { + out = items[0].getItem(); + // use the max amount of items for decomp info so dupes can't happen + outputCount = intProvider.getCountProvider().getMaxValue(); + } + } else if (!currOutput.isEmpty()) { + ItemStack[] items = currOutput.getItems(); + if (items.length > 0) { + out = items[0].getItem(); + outputCount = items[0].getCount(); } - outputCount = ingredient.getItems()[0].getCount(); } if (out == null || out == Items.AIR) { @@ -1480,12 +1499,60 @@ public GTRecipe buildRawRecipe() { conditions, List.of(), data, duration, recipeCategory); } + protected void warnTooManyIngredients(RecipeCapability capability, + boolean isInput, + Map, List> table, + int addedEntries) { + var recipeCapabilityMax = isInput ? recipeType.maxInputs : recipeType.maxOutputs; + if (!recipeCapabilityMax.containsKey(capability)) return; + + int max = recipeCapabilityMax.getInt(capability); + if (table.getOrDefault(capability, List.of()).size() + addedEntries > max) { + String io = isInput ? "inputs" : "outputs"; + GTCEu.LOGGER.warn("Recipe {} is trying to add more {} than its recipe type can support, Max {} {}: {}", + id, io, capability.name, io, max); + } + } + + protected boolean intProviderInputError(Ingredient ingredient, int index) { + if (ingredient instanceof IntProviderIngredient) { + int size = (perTick ? tickOutput : output).getOrDefault(ItemRecipeCapability.CAP, List.of()).size(); + GTCEu.LOGGER.error("Using int provider ingredients as inputs is not supported!" + + "Input {} in recipe {} will be skipped.", size + index, id); + return true; + } + return false; + } + + protected boolean missingIngredientError(int index, boolean isInput, + RecipeCapability cap, BooleanSupplier empty) { + if (empty.getAsBoolean()) { + String io = isInput ? "Input" : "Output"; + if (perTick) { + io = "Tick " + io.toLowerCase(Locale.ROOT); + } + int size = (perTick ? tickOutput : output).getOrDefault(cap, List.of()).size(); + GTCEu.LOGGER.error("{} {} {} of recipe {} is empty", io, cap.name, size + index, id); + return true; + } + return false; + } + + protected boolean checkChanceAndPrintError(int chance) { + if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { + GTCEu.LOGGER.error("Chance cannot be less or equal to 0 or more than {}. Actual: {}.", + ChanceLogic.getMaxChancedValue(), chance, new Throwable()); + return true; + } + return false; + } + ////////////////////////////////////// // ******* Quick Query *******// ////////////////////////////////////// - public long EUt() { - if (!tickInput.containsKey(EURecipeCapability.CAP)) return 0; - if (tickInput.get(EURecipeCapability.CAP).isEmpty()) return 0; + public EnergyStack EUt() { + if (!tickInput.containsKey(EURecipeCapability.CAP)) return EnergyStack.EMPTY; + if (tickInput.get(EURecipeCapability.CAP).isEmpty()) return EnergyStack.EMPTY; return EURecipeCapability.CAP.of(tickInput.get(EURecipeCapability.CAP).get(0).content); } @@ -1500,14 +1567,16 @@ public int getSolderMultiplier() { * An entry for an autogenerated research recipe for producing a data item containing research data. * * @param researchId the id of the research to store - * @param researchStack the stack to scan for research + * @param researchItem the item stack to scan for research + * @param researchFluid the fluid stack to scan for research * @param dataStack the stack to contain the data * @param duration the duration of the recipe * @param EUt the EUt of the recipe * @param CWUt how much computation per tick this recipe needs if in Research Station */ - public record ResearchRecipeEntry(@NotNull String researchId, @NotNull ItemStack researchStack, - @NotNull ItemStack dataStack, int duration, int EUt, int CWUt) { + public record ResearchRecipeEntry(@NotNull String researchId, + @NotNull ItemStack researchItem, @NotNull FluidStack researchFluid, + @NotNull ItemStack dataStack, int duration, EnergyStack EUt, int CWUt) { } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapedEnergyTransferRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapedEnergyTransferRecipeBuilder.java index 55bebdd2303..9fb82764ffd 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapedEnergyTransferRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapedEnergyTransferRecipeBuilder.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.recipe.ShapedEnergyTransferRecipe; -import com.gregtechceu.gtceu.api.recipe.ingredient.NBTIngredient; import com.lowdragmc.lowdraglib.utils.Builder; import com.lowdragmc.lowdraglib.utils.NBTToJsonConverter; @@ -17,6 +16,7 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.ItemLike; +import net.minecraftforge.common.crafting.StrictNBTIngredient; import com.google.gson.JsonArray; import com.google.gson.JsonObject; @@ -24,11 +24,6 @@ import java.util.function.Consumer; -/** - * @author Irgendwer01 - * @date 2023/11/4 - * @implNote ShapedEnergyTransferRecipeBuilder - */ public class ShapedEnergyTransferRecipeBuilder extends Builder { protected ItemStack output = ItemStack.EMPTY; @@ -55,11 +50,7 @@ public ShapedEnergyTransferRecipeBuilder define(char cha, TagKey itemStack } public ShapedEnergyTransferRecipeBuilder define(char cha, ItemStack itemStack) { - if (itemStack.hasTag() || itemStack.getDamageValue() > 0) { - return where(cha, NBTIngredient.createNBTIngredient(itemStack)); - } else { - return where(cha, Ingredient.of(itemStack)); - } + return where(cha, itemStack.hasTag() ? StrictNBTIngredient.of(itemStack) : Ingredient.of(itemStack)); } public ShapedEnergyTransferRecipeBuilder define(char cha, ItemLike itemLike) { diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapedRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapedRecipeBuilder.java index 2c08e5c57a7..26d6f675325 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapedRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapedRecipeBuilder.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.recipe.StrictShapedRecipe; -import com.gregtechceu.gtceu.api.recipe.ingredient.NBTIngredient; import com.lowdragmc.lowdraglib.utils.Builder; import com.lowdragmc.lowdraglib.utils.NBTToJsonConverter; @@ -17,6 +16,7 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.ItemLike; +import net.minecraftforge.common.crafting.StrictNBTIngredient; import com.google.gson.JsonArray; import com.google.gson.JsonObject; @@ -24,11 +24,6 @@ import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/2/21 - * @implNote ShapedRecipeBuilder - */ public class ShapedRecipeBuilder extends Builder { protected ItemStack output = ItemStack.EMPTY; @@ -53,11 +48,7 @@ public ShapedRecipeBuilder define(char cha, TagKey itemStack) { } public ShapedRecipeBuilder define(char cha, ItemStack itemStack) { - if (itemStack.hasTag() || itemStack.getDamageValue() > 0) { - return where(cha, NBTIngredient.createNBTIngredient(itemStack)); - } else { - return where(cha, Ingredient.of(itemStack)); - } + return where(cha, itemStack.hasTag() ? StrictNBTIngredient.of(itemStack) : Ingredient.of(itemStack)); } public ShapedRecipeBuilder define(char cha, ItemLike itemLike) { diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapelessRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapelessRecipeBuilder.java index e53e5dda97e..8cdcaeef2c6 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapelessRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapelessRecipeBuilder.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.data.recipe.builder; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.recipe.ingredient.NBTIngredient; import com.lowdragmc.lowdraglib.utils.NBTToJsonConverter; @@ -15,6 +14,7 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.ItemLike; +import net.minecraftforge.common.crafting.StrictNBTIngredient; import com.google.gson.JsonArray; import com.google.gson.JsonObject; @@ -26,11 +26,6 @@ import java.util.List; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/2/21 - * @implNote SmeltingRecipeBuilder - */ @Accessors(chain = true, fluent = true) public class ShapelessRecipeBuilder { @@ -55,11 +50,7 @@ public ShapelessRecipeBuilder requires(TagKey itemStack) { } public ShapelessRecipeBuilder requires(ItemStack itemStack) { - if (itemStack.hasTag() || itemStack.getDamageValue() > 0) { - requires(NBTIngredient.createNBTIngredient(itemStack)); - } else { - requires(Ingredient.of(itemStack)); - } + requires(itemStack.hasTag() ? StrictNBTIngredient.of(itemStack) : Ingredient.of(itemStack)); return this; } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/SmeltingRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/SmeltingRecipeBuilder.java index 5deb55832ae..696aee1a594 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/SmeltingRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/SmeltingRecipeBuilder.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.data.recipe.builder; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.recipe.ingredient.NBTIngredient; import com.lowdragmc.lowdraglib.utils.NBTToJsonConverter; @@ -15,6 +14,7 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.ItemLike; +import net.minecraftforge.common.crafting.StrictNBTIngredient; import com.google.gson.JsonObject; import lombok.Setter; @@ -23,11 +23,6 @@ import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/2/21 - * @implNote SmeltingRecipeBuilder - */ @Accessors(chain = true, fluent = true) public class SmeltingRecipeBuilder { @@ -52,11 +47,7 @@ public SmeltingRecipeBuilder input(TagKey itemStack) { } public SmeltingRecipeBuilder input(ItemStack itemStack) { - if (itemStack.hasTag() || itemStack.getDamageValue() > 0) { - input = NBTIngredient.createNBTIngredient(itemStack); - } else { - input = Ingredient.of(itemStack); - } + input = itemStack.hasTag() ? StrictNBTIngredient.of(itemStack) : Ingredient.of(itemStack); return this; } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/SmokingRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/SmokingRecipeBuilder.java index 607332899f7..17ac75350a3 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/SmokingRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/SmokingRecipeBuilder.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.data.recipe.builder; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.recipe.ingredient.NBTIngredient; import com.lowdragmc.lowdraglib.utils.NBTToJsonConverter; @@ -15,6 +14,7 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.ItemLike; +import net.minecraftforge.common.crafting.StrictNBTIngredient; import com.google.gson.JsonObject; import lombok.Setter; @@ -23,11 +23,6 @@ import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/2/21 - * @implNote SmeltingRecipeBuilder - */ @Accessors(chain = true, fluent = true) public class SmokingRecipeBuilder { @@ -52,11 +47,7 @@ public SmokingRecipeBuilder input(TagKey itemStack) { } public SmokingRecipeBuilder input(ItemStack itemStack) { - if (itemStack.hasTag() || itemStack.getDamageValue() > 0) { - input = NBTIngredient.createNBTIngredient(itemStack); - } else { - input = Ingredient.of(itemStack); - } + input = itemStack.hasTag() ? StrictNBTIngredient.of(itemStack) : Ingredient.of(itemStack); return this; } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/configurable/RecipeAddition.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/configurable/RecipeAddition.java index 97e56301476..7d7b3c8bf90 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/configurable/RecipeAddition.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/configurable/RecipeAddition.java @@ -51,45 +51,89 @@ public static void init(Consumer provider) { private static void steelSteamMultiblocks(Consumer provider) { if (ConfigHolder.INSTANCE.machines.steelSteamMultiblocks) { - VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_oven", GTMultiMachines.STEAM_OVEN.asStack(), - "CGC", - "FMF", "CGC", 'F', GTBlocks.FIREBOX_STEEL.asStack(), 'C', GTBlocks.CASING_STEEL_SOLID.asStack(), - 'M', GTMachines.STEAM_FURNACE.right().asStack(), 'G', - new MaterialEntry(TagPrefix.gear, GTMaterials.Invar)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_oven", + GTMultiMachines.STEAM_OVEN.asStack(), + "CGC", "FMF", "CGC", + 'F', GTBlocks.FIREBOX_STEEL.asStack(), + 'C', GTBlocks.CASING_STEEL_SOLID.asStack(), + 'M', GTMachines.STEAM_FURNACE.right().asStack(), + 'G', new MaterialEntry(TagPrefix.gear, GTMaterials.Invar)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_grinder", GTMultiMachines.STEAM_GRINDER.asStack(), - "CGC", "CFC", "CGC", 'G', new MaterialEntry(TagPrefix.gear, GTMaterials.Potin), 'F', - GTMachines.STEAM_MACERATOR.right().asStack(), 'C', GTBlocks.CASING_STEEL_SOLID.asStack()); - VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_hatch", GTMachines.STEAM_HATCH.asStack(), "BPB", - "BTB", "BPB", 'B', new MaterialEntry(TagPrefix.plate, GTMaterials.Steel), 'P', - new MaterialEntry(TagPrefix.pipeNormalFluid, GTMaterials.Steel), 'T', - GTMachines.STEEL_DRUM.asStack()); + "CGC", "CFC", "CGC", + 'G', new MaterialEntry(TagPrefix.gear, GTMaterials.Potin), + 'F', GTMachines.STEAM_MACERATOR.right().asStack(), + 'C', GTBlocks.CASING_STEEL_SOLID.asStack()); + + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_hatch", + GTMachines.STEAM_HATCH.asStack(), + "BPB", "BTB", "BPB", + 'B', new MaterialEntry(TagPrefix.plate, GTMaterials.Steel), + 'P', new MaterialEntry(TagPrefix.pipeNormalFluid, GTMaterials.Steel), + 'T', GTMachines.STEEL_DRUM.asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_input_bus", - GTMachines.STEAM_IMPORT_BUS.asStack(), "C", "H", 'H', GTBlocks.STEEL_HULL.asStack(), 'C', - Tags.Items.CHESTS_WOODEN); + GTMachines.STEAM_IMPORT_BUS.asStack(), + "C", "H", + 'H', GTBlocks.STEEL_HULL.asStack(), + 'C', Tags.Items.CHESTS_WOODEN); + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_output_bus", - GTMachines.STEAM_EXPORT_BUS.asStack(), "H", "C", 'H', GTBlocks.STEEL_HULL.asStack(), 'C', - Tags.Items.CHESTS_WOODEN); + GTMachines.STEAM_EXPORT_BUS.asStack(), + "H", "C", + 'H', GTBlocks.STEEL_HULL.asStack(), + 'C', Tags.Items.CHESTS_WOODEN); } else { - VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_oven", GTMultiMachines.STEAM_OVEN.asStack(), - "CGC", - "FMF", "CGC", 'F', GTBlocks.FIREBOX_BRONZE.asStack(), 'C', GTBlocks.CASING_BRONZE_BRICKS.asStack(), - 'M', GTMachines.STEAM_FURNACE.left().asStack(), 'G', - new MaterialEntry(TagPrefix.gear, GTMaterials.Invar)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_grinder", + // Doubled-up recipes to allow for either Low or High Pressure singleblock + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_oven_from_lp", + GTMultiMachines.STEAM_OVEN.asStack(), + "CGC", "FMF", "CGC", + 'F', GTBlocks.FIREBOX_BRONZE.asStack(), + 'C', GTBlocks.CASING_BRONZE_BRICKS.asStack(), + 'M', GTMachines.STEAM_FURNACE.left().asStack(), + 'G', new MaterialEntry(TagPrefix.gear, GTMaterials.Invar)); + + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_oven_from_hp", + GTMultiMachines.STEAM_OVEN.asStack(), + "CGC", "FMF", "CGC", + 'F', GTBlocks.FIREBOX_BRONZE.asStack(), + 'C', GTBlocks.CASING_BRONZE_BRICKS.asStack(), + 'M', GTMachines.STEAM_FURNACE.right().asStack(), + 'G', new MaterialEntry(TagPrefix.gear, GTMaterials.Invar)); + + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_grinder_from_lp", GTMultiMachines.STEAM_GRINDER.asStack(), - "CGC", "CFC", "CGC", 'G', new MaterialEntry(TagPrefix.gear, GTMaterials.Potin), 'F', - GTMachines.STEAM_MACERATOR.left().asStack(), 'C', GTBlocks.CASING_BRONZE_BRICKS.asStack()); - VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_hatch", GTMachines.STEAM_HATCH.asStack(), "BPB", - "BTB", "BPB", 'B', new MaterialEntry(TagPrefix.plate, GTMaterials.Bronze), 'P', - new MaterialEntry(TagPrefix.pipeNormalFluid, GTMaterials.Bronze), 'T', - GTMachines.BRONZE_DRUM.asStack()); + "CGC", "CFC", "CGC", + 'G', new MaterialEntry(TagPrefix.gear, GTMaterials.Potin), + 'F', GTMachines.STEAM_MACERATOR.left().asStack(), + 'C', GTBlocks.CASING_BRONZE_BRICKS.asStack()); + + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_grinder_from_hp", + GTMultiMachines.STEAM_GRINDER.asStack(), + "CGC", "CFC", "CGC", + 'G', new MaterialEntry(TagPrefix.gear, GTMaterials.Potin), + 'F', GTMachines.STEAM_MACERATOR.right().asStack(), + 'C', GTBlocks.CASING_BRONZE_BRICKS.asStack()); + + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_hatch", + GTMachines.STEAM_HATCH.asStack(), + "BPB", "BTB", "BPB", + 'B', new MaterialEntry(TagPrefix.plate, GTMaterials.Bronze), + 'P', new MaterialEntry(TagPrefix.pipeNormalFluid, GTMaterials.Bronze), + 'T', GTMachines.BRONZE_DRUM.asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_input_bus", - GTMachines.STEAM_IMPORT_BUS.asStack(), "C", "H", 'H', GTBlocks.BRONZE_HULL.asStack(), 'C', - Tags.Items.CHESTS_WOODEN); + GTMachines.STEAM_IMPORT_BUS.asStack(), + "C", "H", + 'H', GTBlocks.BRONZE_HULL.asStack(), + 'C', Tags.Items.CHESTS_WOODEN); + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_output_bus", - GTMachines.STEAM_EXPORT_BUS.asStack(), "H", "C", 'H', GTBlocks.BRONZE_HULL.asStack(), 'C', - Tags.Items.CHESTS_WOODEN); + GTMachines.STEAM_EXPORT_BUS.asStack(), + "H", "C", + 'H', GTBlocks.BRONZE_HULL.asStack(), + 'C', Tags.Items.CHESTS_WOODEN); } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/DecompositionRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/DecompositionRecipeHandler.java index 4a29582286a..db190bb0284 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/DecompositionRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/DecompositionRecipeHandler.java @@ -69,8 +69,7 @@ private static void processDecomposition(@NotNull Consumer provi long smallestMaterialAmount = materialAmounts.longStream().min().orElse(0); for (int i = 2; i <= smallestMaterialAmount; i++) { - if (isEveryMaterialReducible(i, materialAmounts)) - highestDivisor = i; + if (isEveryMaterialReducible(i, materialAmounts)) highestDivisor = i; } // divide components @@ -123,8 +122,9 @@ private static void processDecomposition(@NotNull Consumer provi builder.save(provider); } - private static boolean isEveryMaterialReducible(int divisor, List materialAmounts) { - for (long amount : materialAmounts) { + private static boolean isEveryMaterialReducible(int divisor, LongList materialAmounts) { + for (var it = materialAmounts.iterator(); it.hasNext();) { + long amount = it.nextLong(); if (amount % divisor != 0) { return false; } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/MaterialRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/MaterialRecipeHandler.java index fc6c358d187..3d963fd15fc 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/MaterialRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/MaterialRecipeHandler.java @@ -74,7 +74,7 @@ private static void processDust(@NotNull Consumer provider, @Not AUTOCLAVE_RECIPES.recipeBuilder("autoclave_" + id + "_water") .inputItems(dustStack) .inputFluids(Water.getFluid(250)) - .chancedOutput(gemStack, 7000, 1000) + .chancedOutput(gemStack, 7500, 0) .duration(1200).EUt(24) .save(provider); @@ -256,7 +256,7 @@ private static void processSmallDust(@NotNull Consumer provider, VanillaRecipeHelper.addStrictShapedRecipe(provider, String.format("small_dust_disassembling_%s", material.getName()), - smallDustStack.copyWithCount(4), " X ", " ", " ", 'X', new MaterialEntry(dust, material)); + smallDustStack.copyWithCount(4), " X", " ", 'X', new MaterialEntry(dust, material)); VanillaRecipeHelper.addShapedRecipe(provider, String.format("small_dust_assembling_%s", material.getName()), dustStack, "XX", "XX", 'X', new MaterialEntry(dustSmall, material)); @@ -284,7 +284,7 @@ private static void processTinyDust(@NotNull Consumer provider, VanillaRecipeHelper.addStrictShapedRecipe(provider, String.format("tiny_dust_disassembling_%s", material.getName()), - tinyDustStack.copyWithCount(9), "X ", " ", " ", 'X', new MaterialEntry(dust, material)); + tinyDustStack.copyWithCount(9), "X ", " ", 'X', new MaterialEntry(dust, material)); VanillaRecipeHelper.addShapedRecipe(provider, String.format("tiny_dust_assembling_%s", material.getName()), dustStack, "XXX", "XXX", "XXX", 'X', new MaterialEntry(dustTiny, material)); @@ -434,7 +434,7 @@ private static void processGemConversion(@NotNull Consumer provi if (material.hasFlag(MORTAR_GRINDABLE)) { VanillaRecipeHelper.addShapedRecipe(provider, String.format("gem_to_dust_%s_%s", material.getName(), - FormattingUtil.toLowerCaseUnder(prefix.name)), + FormattingUtil.toLowerCaseUnderscore(prefix.name)), crushedStack, "X", "m", 'X', new MaterialEntry(prefix, material)); } @@ -449,14 +449,14 @@ private static void processGemConversion(@NotNull Consumer provi } VanillaRecipeHelper.addShapelessRecipe(provider, - String.format("gem_to_gem_%s_%s", FormattingUtil.toLowerCaseUnder(lowerPrefix.name), + String.format("gem_to_gem_%s_%s", FormattingUtil.toLowerCaseUnderscore(lowerPrefix.name), material.getName()), prevStack, 'h', new MaterialEntry(prefix, material)); CUTTER_RECIPES - .recipeBuilder("cut_" + material.getName() + "_" + FormattingUtil.toLowerCaseUnder(prefix.name) + - "_to_" + FormattingUtil.toLowerCaseUnder(lowerPrefix.name)) + .recipeBuilder("cut_" + material.getName() + "_" + FormattingUtil.toLowerCaseUnderscore(prefix.name) + + "_to_" + FormattingUtil.toLowerCaseUnderscore(lowerPrefix.name)) .inputItems(prefix, material) .outputItems(prevStack) .duration(20) @@ -465,8 +465,8 @@ private static void processGemConversion(@NotNull Consumer provi LASER_ENGRAVER_RECIPES .recipeBuilder( - "engrave_" + material.getName() + "_" + FormattingUtil.toLowerCaseUnder(prefix.name) + - "_to_" + FormattingUtil.toLowerCaseUnder(lowerPrefix.name)) + "engrave_" + material.getName() + "_" + FormattingUtil.toLowerCaseUnderscore(prefix.name) + + "_to_" + FormattingUtil.toLowerCaseUnderscore(lowerPrefix.name)) .inputItems(prevStack) .notConsumable(lens, MarkerMaterials.Color.White) .outputItems(prefix, material) @@ -642,7 +642,9 @@ private static void processBlock(@NotNull Consumer provider, @No .category(GTRecipeCategories.INGOT_MOLDING) .save(provider); - if (!material.hasProperty(PropertyKey.BLAST)) { + Material nonMagneticMaterial = material.hasFlag(IS_MAGNETIC) ? + material.getProperty(PropertyKey.INGOT).getSmeltingInto() : material; + if (!nonMagneticMaterial.hasProperty(PropertyKey.BLAST)) { ALLOY_SMELTER_RECIPES.recipeBuilder("alloy_smelt_" + material.getName() + "_dust_to_block") .inputItems(dust, material, (int) (materialAmount / M)) .notConsumable(GTItems.SHAPE_MOLD_BLOCK) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java index 64c280d5119..956c49541bd 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java @@ -16,11 +16,13 @@ import com.gregtechceu.gtceu.utils.GTUtil; import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraftforge.common.crafting.IntersectionIngredient; -import com.mojang.datafixers.util.Pair; +import it.unimi.dsi.fastutil.objects.ObjectIntPair; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -64,9 +66,11 @@ private static void processMetalSmelting(@NotNull Consumer provi ItemStack ingotStack = ChemicalHelper.get(ingot, smeltingResult); if (!ingotStack.isEmpty() && doesMaterialUseNormalFurnace(smeltingResult) && !prefix.isIgnored(material)) { - VanillaRecipeHelper.addSmeltingRecipe(provider, - "smelt_" + prefix.name + "_" + material.getName() + "_to_ingot", - ChemicalHelper.getTag(prefix, material), ingotStack, 0.5f); + String name = "smelt_" + prefix.name + "_" + material.getName() + "_to_ingot"; + TagKey tag = ChemicalHelper.getTag(prefix, material); + + VanillaRecipeHelper.addSmeltingRecipe(provider, name, tag, ingotStack, 0.5f); + VanillaRecipeHelper.addBlastingRecipe(provider, name, tag, ingotStack, 0.5f); } } } @@ -121,7 +125,7 @@ private static void processOre(@NotNull Consumer provider, @NotN .inputItems(IntersectionIngredient.of(Ingredient.of(orePrefix.getItemTags(material)[0]), Ingredient.of(orePrefix.getItemParentTags()[0]))) .outputItems(crushedStack.copyWithCount(property.getOreMultiplier() * 2 * oreTypeMultiplier)) - .chancedOutput(byproductStack, 1400, 850) + .chancedOutput(byproductStack, 1400, 0) .EUt(2) .category(GTRecipeCategories.ORE_CRUSHING) .duration(400); @@ -129,7 +133,7 @@ private static void processOre(@NotNull Consumer provider, @NotN for (MaterialStack secondaryMaterial : orePrefix.secondaryMaterials()) { if (secondaryMaterial.material().hasProperty(PropertyKey.DUST)) { ItemStack dustStack = ChemicalHelper.getGem(secondaryMaterial); - builder.chancedOutput(dustStack, 6700, 800); + builder.chancedOutput(dustStack, 6700, 0); } } @@ -198,7 +202,7 @@ private static void processRawOre(@NotNull Consumer provider, @N .recipeBuilder("macerate_raw_" + material.getName() + "_ore_to_crushed_ore") .inputItems(rawOre, material) .outputItems(crushedStack.copyWithCount(property.getOreMultiplier() * 2)) - .chancedOutput(byproductStack, 1400, 850) + .chancedOutput(byproductStack, 1400, 0) .EUt(2) .category(GTRecipeCategories.ORE_CRUSHING) .duration(400); @@ -206,7 +210,7 @@ private static void processRawOre(@NotNull Consumer provider, @N for (MaterialStack secondaryMaterial : ore.secondaryMaterials()) { if (secondaryMaterial.material().hasProperty(PropertyKey.DUST)) { ItemStack dustStack = ChemicalHelper.getGem(secondaryMaterial); - builder.chancedOutput(dustStack, 6700, 800); + builder.chancedOutput(dustStack, 6700, 0); } } @@ -269,7 +273,7 @@ private static void processCrushedOre(@NotNull Consumer provider .outputItems(impureDustStack) .duration(400).EUt(2) .chancedOutput(ChemicalHelper.get(dust, byproductMaterial, property.getByProductMultiplier()), 1400, - 850) + 0) .category(GTRecipeCategories.ORE_CRUSHING) .save(provider); @@ -313,16 +317,16 @@ private static void processCrushedOre(@NotNull Consumer provider .outputItems(TagPrefix.dust, GTMaterials.Stone) .save(provider); - if (!property.getWashedIn().getFirst().isNull()) { + if (!property.getWashedIn().first().isNull()) { Material washingByproduct = property.getOreByProduct(3, material); - Pair washedInTuple = property.getWashedIn(); + ObjectIntPair washedInTuple = property.getWashedIn(); CHEMICAL_BATH_RECIPES.recipeBuilder("bathe_" + material.getName() + "_crushed_ore_to_purified_ore") .inputItems(crushed, material) - .inputFluids(washedInTuple.getFirst().getFluid(washedInTuple.getSecond())) + .inputFluids(washedInTuple.first().getFluid(washedInTuple.secondInt())) .outputItems(crushedPurifiedOre) .chancedOutput(ChemicalHelper.get(dust, washingByproduct, property.getByProductMultiplier()), 7000, - 580) - .chancedOutput(ChemicalHelper.get(dust, Stone), 4000, 650) + 0) + .chancedOutput(ChemicalHelper.get(dust, Stone), 4000, 0) .duration(200).EUt(VA[LV]) .category(GTRecipeCategories.ORE_BATHING) .save(provider); @@ -353,7 +357,7 @@ private static void processCrushedCentrifuged(@NotNull Consumer MACERATOR_RECIPES.recipeBuilder("macerate_" + material.getName() + "_refined_ore_to_dust") .inputItems(crushedRefined, material) .outputItems(dustStack) - .chancedOutput(byproductStack, 1400, 850) + .chancedOutput(byproductStack, 1400, 0) .duration(400).EUt(2) .category(GTRecipeCategories.ORE_CRUSHING) .save(provider); @@ -388,7 +392,7 @@ private static void processCrushedPurified(@NotNull Consumer pro MACERATOR_RECIPES.recipeBuilder("macerate_" + material.getName() + "_crushed_ore_to_dust") .inputItems(crushedPurified, material) .outputItems(dustStack) - .chancedOutput(byproductStack, 1400, 850) + .chancedOutput(byproductStack, 1400, 0) .duration(400).EUt(2) .category(GTRecipeCategories.ORE_CRUSHING) .save(provider); @@ -417,32 +421,32 @@ private static void processCrushedPurified(@NotNull Consumer pro GTRecipeBuilder builder = SIFTER_RECIPES .recipeBuilder("sift_" + material.getName() + "_purified_ore_to_gems") .inputItems(crushedPurified, material) - .chancedOutput(exquisiteStack, 500, 150) - .chancedOutput(flawlessStack, 1500, 200) - .chancedOutput(gemStack, 5000, 1000) - .chancedOutput(dustStack, 2500, 500) + .chancedOutput(exquisiteStack, 500, 0) + .chancedOutput(flawlessStack, 1500, 0) + .chancedOutput(gemStack, 5000, 0) + .chancedOutput(dustStack, 2500, 0) .duration(400).EUt(16); if (!flawedStack.isEmpty()) - builder.chancedOutput(flawedStack, 2000, 500); + builder.chancedOutput(flawedStack, 2000, 0); if (!chippedStack.isEmpty()) - builder.chancedOutput(chippedStack, 3000, 350); + builder.chancedOutput(chippedStack, 3000, 0); builder.save(provider); } else { GTRecipeBuilder builder = SIFTER_RECIPES .recipeBuilder("sift_" + material.getName() + "_purified_ore_to_gems") .inputItems(crushedPurified, material) - .chancedOutput(exquisiteStack, 300, 100) - .chancedOutput(flawlessStack, 1000, 150) - .chancedOutput(gemStack, 3500, 500) - .chancedOutput(dustStack, 5000, 750) + .chancedOutput(exquisiteStack, 300, 0) + .chancedOutput(flawlessStack, 1000, 0) + .chancedOutput(gemStack, 3500, 0) + .chancedOutput(dustStack, 5000, 0) .duration(400).EUt(16); if (!flawedStack.isEmpty()) - builder.chancedOutput(flawedStack, 2500, 300); + builder.chancedOutput(flawedStack, 2500, 0); if (!chippedStack.isEmpty()) - builder.chancedOutput(chippedStack, 3500, 400); + builder.chancedOutput(chippedStack, 3500, 0); builder.save(provider); } @@ -504,9 +508,8 @@ private static void processPureDust(@NotNull Consumer provider, ELECTROMAGNETIC_SEPARATOR_RECIPES.recipeBuilder("separate_" + material.getName() + "_pure_dust_to_dust") .inputItems(dustPure, material) .outputItems(dustStack) - .chancedOutput(TagPrefix.dust, separatedMaterial.get(0), 1000, 250) - .chancedOutput(separatedStack2, prefix == TagPrefix.dust ? 500 : 2000, - prefix == TagPrefix.dust ? 150 : 600) + .chancedOutput(TagPrefix.dust, separatedMaterial.get(0), 1000, 0) + .chancedOutput(separatedStack2, prefix == TagPrefix.dust ? 500 : 2000, 0) .duration(200).EUt(24) .save(provider); } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PartsRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PartsRecipeHandler.java index 1bdd3e7a14b..69870c0a042 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PartsRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PartsRecipeHandler.java @@ -392,7 +392,7 @@ private static void processRing(@NotNull Consumer provider, @Not if (!material.hasFlag(NO_SMASHING)) { VanillaRecipeHelper.addShapedRecipe(provider, String.format("ring_%s", material.getName()), ChemicalHelper.get(ring, material), - "h ", " X", + "h ", "fX", 'X', new MaterialEntry(rod, material)); } else { EXTRUDER_RECIPES.recipeBuilder("extrude_" + material.getName() + "_dust_to_ring") @@ -569,26 +569,6 @@ private static void processLongRod(@NotNull Consumer provider, @ .duration((int) Math.max(material.getMass(), 1L)) .EUt(16) .save(provider); - - if (material.hasProperty(PropertyKey.INGOT)) { - EXTRUDER_RECIPES.recipeBuilder("extrude_" + material.getName() + "_ingot_to_long_rod") - .inputItems(ingot, material) - .notConsumable(GTItems.SHAPE_EXTRUDER_ROD_LONG) - .outputItems(stack) - .duration((int) Math.max(material.getMass(), 1L)) - .EUt(64) - .save(provider); - - if (material.hasFlag(NO_SMASHING)) { - EXTRUDER_RECIPES.recipeBuilder("extrude_" + material.getName() + "_dust_to_long_rod") - .inputItems(dust, material) - .notConsumable(GTItems.SHAPE_EXTRUDER_ROD_LONG) - .outputItems(stack) - .duration((int) Math.max(material.getMass(), 1L)) - .EUt(64) - .save(provider); - } - } } private static void processTurbine(@NotNull Consumer provider, @NotNull Material material) { diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PipeRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PipeRecipeHandler.java index 4d87cff74af..f902d93dcc6 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PipeRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PipeRecipeHandler.java @@ -68,7 +68,7 @@ private static void processRestrictivePipe(@NotNull Consumer pro .save(provider); VanillaRecipeHelper.addShapedRecipe(provider, - FormattingUtil.toLowerCaseUnder(prefix + "_" + material.getName()), + FormattingUtil.toLowerCaseUnderscore(prefix + "_" + material.getName()), ChemicalHelper.get(prefix, material), "PR", "Rh", 'P', new MaterialEntry(unrestrictive, material), 'R', ChemicalHelper.get(ring, Iron)); } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/ToolRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/ToolRecipeHandler.java index 4a1a4454eb7..d67aa688dd7 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/ToolRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/ToolRecipeHandler.java @@ -20,6 +20,7 @@ import com.gregtechceu.gtceu.data.recipe.VanillaRecipeHelper; import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -139,6 +140,19 @@ private static void processTool(@NotNull Consumer provider, @Not addToolRecipe(provider, material, GTToolType.WRENCH, false, "PhP", " P ", " P ", 'P', plate); + + addArmorRecipe(provider, material, ArmorItem.Type.HELMET, + "PPP", "PhP", + 'P', plate); + addArmorRecipe(provider, material, ArmorItem.Type.CHESTPLATE, + "PhP", "PPP", "PPP", + 'P', plate); + addArmorRecipe(provider, material, ArmorItem.Type.LEGGINGS, + "PPP", "PhP", "P P", + 'P', plate); + addArmorRecipe(provider, material, ArmorItem.Type.BOOTS, + "P P", "PhP", + 'P', plate); } else { GTCEu.LOGGER.info( "Did not find plate for {}, skipping mining hammer, spade, saw, axe, hoe, pickaxe, scythe, shovel, sword, hammer, file, knife, wrench recipes", @@ -178,7 +192,7 @@ private static void processTool(@NotNull Consumer provider, @Not "hDS", "DSD", "SDf", 'S', rod); } else if (!ArrayUtils.contains(softMaterials, material)) { - GTCEu.LOGGER.info("Did not find rod for " + material.getName() + + GTCEu.LOGGER.warn("Did not find rod for " + material.getName() + ", skipping wirecutter, butchery knife, screwdriver, crowbar recipes"); } } @@ -273,12 +287,12 @@ private static void processElectricTool(@NotNull Consumer provid .EUt(8L * voltageMultiplier) .save(provider); } else { - GTCEu.LOGGER.info("Did not find gear for " + material.getName() + + GTCEu.LOGGER.warn("Did not find gear for " + material.getName() + ", skipping gear -> buzzsaw blade recipe"); } } } else { - GTCEu.LOGGER.info("Did not find plate for " + material.getName() + + GTCEu.LOGGER.warn("Did not find plate for " + material.getName() + ", skipping electric drill, chainsaw, wrench, wirecutter, buzzsaw recipe"); } @@ -293,7 +307,7 @@ private static void processElectricTool(@NotNull Consumer provid "fR", " h", 'R', new MaterialEntry(TagPrefix.rodLong, material)); } else { - GTCEu.LOGGER.info("Did not find long rod for " + material.getName() + + GTCEu.LOGGER.warn("Did not find long rod for " + material.getName() + ", skipping electric screwdriver recipe"); } } @@ -333,6 +347,14 @@ public static void addToolRecipe(@NotNull Consumer provider, @No } } + public static void addArmorRecipe(Consumer provider, @NotNull Material material, + @NotNull ArmorItem.Type armor, Object... recipe) { + ItemStack armorStack = ToolHelper.getArmor(armor, material); + if (armorStack.isEmpty()) return; + VanillaRecipeHelper.addShapedRecipe(provider, String.format("%s_%s", armor.getName(), material.getName()), + armorStack, recipe); + } + /** * {@code D} is inferred as the dye key */ diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CircuitRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CircuitRecipes.java index 23837c3414a..ea1ca537eff 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CircuitRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CircuitRecipes.java @@ -690,14 +690,14 @@ private static void componentRecipes(Consumer provider) { AUTOCLAVE_RECIPES.recipeBuilder("raw_crystal_chip_emerald") .inputItems(gemExquisite, Emerald) .inputFluids(Europium.getFluid(L / 9)) - .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 1000, 2000) + .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 2500, 0) .cleanroom(CleanroomType.CLEANROOM) .duration(12000).EUt(320).save(provider); AUTOCLAVE_RECIPES.recipeBuilder("raw_crystal_chip_olivine") .inputItems(gemExquisite, Olivine) .inputFluids(Europium.getFluid(L / 9)) - .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 1000, 2000) + .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 2500, 0) .cleanroom(CleanroomType.CLEANROOM) .duration(12000).EUt(320).save(provider); @@ -716,14 +716,14 @@ private static void componentRecipes(Consumer provider) { AUTOCLAVE_RECIPES.recipeBuilder("raw_crystal_chip_from_part_mutagen") .inputItems(RAW_CRYSTAL_CHIP_PART) .inputFluids(Mutagen.getFluid(250)) - .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 8000, 250) + .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 8500, 0) .cleanroom(CleanroomType.CLEANROOM) .duration(12000).EUt(VA[HV]).save(provider); AUTOCLAVE_RECIPES.recipeBuilder("raw_crystal_chip_from_part_bacterial_sludge") .inputItems(RAW_CRYSTAL_CHIP_PART) .inputFluids(BacterialSludge.getFluid(250)) - .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 8000, 250) + .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 8500, 0) .cleanroom(CleanroomType.CLEANROOM) .duration(12000).EUt(VA[HV]).save(provider); @@ -1029,7 +1029,7 @@ private static void circuitRecipes(Consumer provider) { CIRCUIT_ASSEMBLER_RECIPES.recipeBuilder("electronic_circuit_mv").EUt(VA[LV]).duration(300) .inputItems(GOOD_CIRCUIT_BOARD) - .inputItems(CustomTags.LV_CIRCUITS, 2) + .inputItems(ELECTRONIC_CIRCUIT_LV, 2) .inputItems(CustomTags.DIODES, 2) .inputItems(wireGtSingle, Copper, 2) .outputItems(ELECTRONIC_CIRCUIT_MV) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/ComputerRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/ComputerRecipes.java index 33a20188682..7e5894bea69 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/ComputerRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/ComputerRecipes.java @@ -22,6 +22,16 @@ public class ComputerRecipes { public static void init(Consumer provider) { + ASSEMBLER_RECIPES.recipeBuilder("basic_data_access_hatch") + .inputItems(ITEM_IMPORT_BUS[HV]) + .inputItems(TOOL_DATA_STICK, 4) + .inputItems(CustomTags.HV_CIRCUITS, 4) + .outputItems(BASIC_DATA_ACCESS_HATCH) + .inputFluids(Polyethylene, L * 2) + .cleanroom(CleanroomType.CLEANROOM) + .duration(200).EUt(VA[HV]) + .addMaterialInfo(true).save(provider); + ASSEMBLER_RECIPES.recipeBuilder("data_access_hatch") .inputItems(ITEM_IMPORT_BUS[EV]) .inputItems(TOOL_DATA_STICK, 4) @@ -43,6 +53,46 @@ public static void init(Consumer provider) { .duration(400).EUt(6000) .addMaterialInfo(true, true).save(provider); + ASSEMBLER_RECIPES.recipeBuilder("wireless_transmitter_cover") + .inputItems(plate, EnderPearl) + .inputItems(foil, AnnealedCopper) + .inputItems(EMITTER_MV) + .inputItems(wireFine, Platinum) + .inputFluids(SolderingAlloy, L) + .outputItems(COVER_WIRELESS_TRANSMITTER) + .duration(1000).EUt(VA[MV]) + .addMaterialInfo(true).save(provider); + + ASSEMBLER_RECIPES.recipeBuilder("text_module") + .inputItems(PLASTIC_CIRCUIT_BOARD) + .inputItems(foil, Steel, 4) + .inputItems(wireFine, RedAlloy, 4) + .inputItems(CustomTags.MV_CIRCUITS) + .inputFluids(SolderingAlloy, L) + .outputItems(TEXT_MODULE) + .duration(1000).EUt(VA[MV]) + .addMaterialInfo(true).save(provider); + + ASSEMBLER_RECIPES.recipeBuilder("image_module") + .inputItems(PLASTIC_CIRCUIT_BOARD) + .inputItems(foil, Electrum, 4) + .inputItems(wireFine, Silver, 4) + .inputItems(CustomTags.MV_CIRCUITS) + .inputFluids(SolderingAlloy, L) + .outputItems(IMAGE_MODULE) + .duration(1000).EUt(VA[MV]) + .addMaterialInfo(true).save(provider); + + ASSEMBLER_RECIPES.recipeBuilder("monitor_casing") + .inputItems(HULL[MV]) + .inputItems(COVER_SCREEN) + .inputItems(plate, Glass, 4) + .inputItems(wireFine, RedAlloy, 4) + .inputFluids(Glowstone, L) + .outputItems(MONITOR, ConfigHolder.INSTANCE.recipes.casingsPerCraft) + .duration(1000).EUt(VA[MV]) + .addMaterialInfo(true).save(provider); + ASSEMBLER_RECIPES.recipeBuilder("high_power_casing") .inputItems(frameGt, Iridium) .inputItems(plate, Iridium, 6) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CraftingRecipeLoader.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CraftingRecipeLoader.java index b60f8334fb7..e1fe6b614ec 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CraftingRecipeLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CraftingRecipeLoader.java @@ -200,8 +200,6 @@ public static void init(Consumer provider) { " S ", " ", 'S', SHAPE_EXTRUDER_ROD.asStack()); VanillaRecipeHelper.addStrictShapedRecipe(provider, "shape_extruder_rod", SHAPE_EXTRUDER_ROD.asStack(), " ", " Sx", " ", 'S', SHAPE_EMPTY.asStack()); - VanillaRecipeHelper.addStrictShapedRecipe(provider, "shape_extruder_rod_long", - SHAPE_EXTRUDER_ROD_LONG.asStack(), " x", " S ", " ", 'S', SHAPE_EXTRUDER_ROD.asStack()); VanillaRecipeHelper.addStrictShapedRecipe(provider, "shape_extruder_plate", SHAPE_EXTRUDER_PLATE.asStack(), "x ", " S ", " ", 'S', SHAPE_EXTRUDER_FOIL.asStack()); VanillaRecipeHelper.addStrictShapedRecipe(provider, "shape_extruder_gear_small", diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/DecorationRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/DecorationRecipes.java index 91e9edc676e..67c2a54e871 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/DecorationRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/DecorationRecipes.java @@ -4,18 +4,18 @@ import net.minecraft.data.recipes.FinishedRecipe; import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; import java.util.function.Consumer; +import static com.gregtechceu.gtceu.api.GTValues.*; import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.block; import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.plate; import static com.gregtechceu.gtceu.common.data.GTBlocks.LARGE_METAL_SHEETS; import static com.gregtechceu.gtceu.common.data.GTBlocks.METAL_SHEETS; import static com.gregtechceu.gtceu.common.data.GTBlocks.STUDS; -import static com.gregtechceu.gtceu.common.data.GTMaterials.CHEMICAL_DYES; -import static com.gregtechceu.gtceu.common.data.GTMaterials.Concrete; -import static com.gregtechceu.gtceu.common.data.GTMaterials.Iron; -import static com.gregtechceu.gtceu.common.data.GTMaterials.Rubber; +import static com.gregtechceu.gtceu.common.data.GTMaterials.*; import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.ASSEMBLER_RECIPES; import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.CHEMICAL_BATH_RECIPES; @@ -26,6 +26,7 @@ private DecorationRecipes() {} public static void init(Consumer provider) { assemblerRecipes(provider); dyeRecipes(provider); + copperOxidationRecipes(provider); } private static void assemblerRecipes(Consumer provider) { @@ -83,4 +84,128 @@ private static void dyeRecipes(Consumer provider) { .save(provider); } } + + private static void copperOxidationRecipes(Consumer provider) { + registerOxidationChain(provider, "copper_block", Items.COPPER_BLOCK, Items.EXPOSED_COPPER, + Items.WEATHERED_COPPER, Items.OXIDIZED_COPPER); + registerOxidationChain(provider, "cut_copper", Items.CUT_COPPER, Items.EXPOSED_CUT_COPPER, + Items.WEATHERED_CUT_COPPER, Items.OXIDIZED_CUT_COPPER); + registerOxidationChain(provider, "cut_copper_stairs", Items.CUT_COPPER_STAIRS, Items.EXPOSED_CUT_COPPER_STAIRS, + Items.WEATHERED_CUT_COPPER_STAIRS, Items.OXIDIZED_CUT_COPPER_STAIRS); + registerOxidationChain(provider, "cut_copper_slab", Items.CUT_COPPER_SLAB, Items.EXPOSED_CUT_COPPER_SLAB, + Items.WEATHERED_CUT_COPPER_SLAB, Items.OXIDIZED_CUT_COPPER_SLAB); + + // Waxing recipes + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_copper_block") + .inputItems(Items.COPPER_BLOCK) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_COPPER_BLOCK) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_exposed_copper") + .inputItems(Items.EXPOSED_COPPER) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_EXPOSED_COPPER) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_weathered_copper") + .inputItems(Items.WEATHERED_COPPER) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_WEATHERED_COPPER) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_oxidized_copper") + .inputItems(Items.OXIDIZED_COPPER) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_OXIDIZED_COPPER) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_cut_copper") + .inputItems(Items.CUT_COPPER) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_CUT_COPPER) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_exposed_cut_copper") + .inputItems(Items.EXPOSED_CUT_COPPER) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_EXPOSED_CUT_COPPER) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_weathered_cut_copper") + .inputItems(Items.WEATHERED_CUT_COPPER) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_WEATHERED_CUT_COPPER) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_oxidized_cut_copper") + .inputItems(Items.OXIDIZED_CUT_COPPER) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_OXIDIZED_CUT_COPPER) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_cut_copper_stairs") + .inputItems(Items.CUT_COPPER_STAIRS) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_CUT_COPPER_STAIRS) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_exposed_cut_copper_stairs") + .inputItems(Items.EXPOSED_CUT_COPPER_STAIRS) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_EXPOSED_CUT_COPPER_STAIRS) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_weathered_cut_copper_stairs") + .inputItems(Items.WEATHERED_CUT_COPPER_STAIRS) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_WEATHERED_CUT_COPPER_STAIRS) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_oxidized_cut_copper_stairs") + .inputItems(Items.OXIDIZED_CUT_COPPER_STAIRS) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_OXIDIZED_CUT_COPPER_STAIRS) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_cut_copper_slab") + .inputItems(Items.CUT_COPPER_SLAB) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_CUT_COPPER_SLAB) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_exposed_cut_copper_slab") + .inputItems(Items.EXPOSED_CUT_COPPER_SLAB) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_EXPOSED_CUT_COPPER_SLAB) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_weathered_cut_copper_slab") + .inputItems(Items.WEATHERED_CUT_COPPER_SLAB) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_WEATHERED_CUT_COPPER_SLAB) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_oxidized_cut_copper_slab") + .inputItems(Items.OXIDIZED_CUT_COPPER_SLAB) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_OXIDIZED_CUT_COPPER_SLAB) + .EUt(VA[ULV]).duration(10) + .save(provider); + } + + private static final String[] OXIDATION_STAGES = { "raw", "exposed", "weathered", "oxidized" }; + + private static void registerOxidationChain(Consumer provider, String name, Item... items) { + for (int i = 0; i < items.length - 1; i++) { + CHEMICAL_BATH_RECIPES + .recipeBuilder( + "%s_to_%s_%s_oxidation".formatted(OXIDATION_STAGES[i], OXIDATION_STAGES[i + 1], name)) + .inputItems(items[i]) + .inputFluids(Oxygen, 100) + .outputItems(items[i + 1]) + .EUt(VA[ULV]).duration(10) + .save(provider); + } + } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/FuelRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/FuelRecipes.java index 03a79ce1326..641d6437a9b 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/FuelRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/FuelRecipes.java @@ -46,12 +46,12 @@ public static void init(Consumer provider) { STEAM_BOILER_RECIPES.recipeBuilder("lava") .inputFluids(new FluidStack(Fluids.LAVA, 100)) - .duration(600 * 12) + .duration(100 * 12) .save(provider); STEAM_BOILER_RECIPES.recipeBuilder("creosote") .inputFluids(Creosote.getFluid(250)) - .duration(600 * 12) + .duration(250 * 12) .save(provider); // semi-fluid fuels, like creosote diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java index c08c2575517..593d420cbaa 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java @@ -319,14 +319,14 @@ private static void registerMixingCrystallizationRecipes(Consumer provider) .inputItems(rod, Bronze, 3) .inputItems(frameGt, Bronze) .inputItems(plate, Bronze, 3) - .outputItems(GTBlocks.FIREBOX_BRONZE, 2) + .outputItems(GTBlocks.FIREBOX_BRONZE, ConfigHolder.INSTANCE.recipes.casingsPerCraft) + .addMaterialInfo(true, true) .duration(100) .EUt(VA[LV]) .save(provider); @@ -767,7 +768,8 @@ private static void registerAssemblerRecipes(Consumer provider) .inputItems(rod, Steel, 3) .inputItems(frameGt, Steel) .inputItems(plate, Steel, 3) - .outputItems(GTBlocks.FIREBOX_STEEL, 2) + .outputItems(GTBlocks.FIREBOX_STEEL, ConfigHolder.INSTANCE.recipes.casingsPerCraft) + .addMaterialInfo(true, true) .duration(200) .EUt(VA[LV]) .save(provider); @@ -775,7 +777,8 @@ private static void registerAssemblerRecipes(Consumer provider) .inputItems(rod, Titanium, 3) .inputItems(frameGt, Titanium) .inputItems(plate, Titanium, 3) - .outputItems(GTBlocks.FIREBOX_TITANIUM, 2) + .outputItems(GTBlocks.FIREBOX_TITANIUM, ConfigHolder.INSTANCE.recipes.casingsPerCraft) + .addMaterialInfo(true, true) .duration(300) .EUt(VA[HV]) .save(provider); @@ -783,7 +786,8 @@ private static void registerAssemblerRecipes(Consumer provider) .inputItems(rod, TungstenSteel, 3) .inputItems(frameGt, TungstenSteel) .inputItems(plate, TungstenSteel, 3) - .outputItems(GTBlocks.FIREBOX_TUNGSTENSTEEL, 2) + .outputItems(GTBlocks.FIREBOX_TUNGSTENSTEEL, ConfigHolder.INSTANCE.recipes.casingsPerCraft) + .addMaterialInfo(true, true) .duration(400) .EUt(VA[EV]) .save(provider); @@ -1071,10 +1075,6 @@ private static void registerBlastFurnaceRecipes(Consumer provide .outputItems(nugget, Aluminium, 3).blastFurnaceTemp(1200).save(provider); BLAST_RECIPES.recipeBuilder("aluminium_from_sapphire_gem").duration(320).EUt(100).inputItems(gem, Sapphire) .outputItems(nugget, Aluminium, 3).blastFurnaceTemp(1200).save(provider); - BLAST_RECIPES.recipeBuilder("titanium_from_tetrachloride").duration(800).EUt(VA[HV]) - .inputItems(dust, Magnesium, 2).inputFluids(TitaniumTetrachloride.getFluid(1000)) - .outputItems(ingotHot, Titanium).outputItems(dust, MagnesiumChloride, 6) - .blastFurnaceTemp(Titanium.getBlastTemperature() + 200).save(provider); BLAST_RECIPES.recipeBuilder("steel_from_iron").duration(500).EUt(VA[MV]).inputItems(ingot, Iron) .inputFluids(Oxygen.getFluid(200)).outputItems(ingot, Steel).chancedOutput(dust, Ash, "1/9", 0) .blastFurnaceTemp(1000).save(provider); @@ -1082,15 +1082,6 @@ private static void registerBlastFurnaceRecipes(Consumer provide .inputFluids(Oxygen.getFluid(200)).outputItems(ingot, Steel).chancedOutput(dust, Ash, "1/9", 0) .blastFurnaceTemp(1000).save(provider); - BLAST_RECIPES.recipeBuilder("rutile_from_ilmenite") - .inputItems(dust, Ilmenite, 10) - .inputItems(dust, Carbon, 4) - .outputItems(ingot, WroughtIron, 2) - .outputItems(dust, Rutile, 4) - .outputFluids(CarbonDioxide.getFluid(2000)) - .blastFurnaceTemp(1700) - .duration(1600).EUt(VA[HV]).save(provider); - BLAST_RECIPES.recipeBuilder("tempered_glass_blasting") .inputItems(block, Glass) .inputFluids(Oxygen.getFluid(100)) @@ -1230,14 +1221,14 @@ private static void registerRecyclingRecipes(Consumer provider) MACERATOR_RECIPES.recipeBuilder("macerate_end_stone") .inputItems(new ItemStack(Blocks.END_STONE)) .outputItems(dust, Endstone) - .chancedOutput(dust, Tungstate, 130, 30) + .chancedOutput(dust, Tungstate, 330, 0) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_netherrack") .inputItems(new ItemStack(Blocks.NETHERRACK)) .outputItems(dust, Netherrack) - .chancedOutput(nugget, Gold, 500, 120) + .chancedOutput(nugget, Gold, 750, 0) .duration(150).EUt(2) .save(provider); @@ -1252,7 +1243,7 @@ private static void registerRecyclingRecipes(Consumer provider) // MACERATOR_RECIPES.recipeBuilder() // .inputItems(stone, Soapstone) // .outputItems(dustImpure, Talc) - // .chancedOutput(dust, Chromite, "1/90", 30) + // .chancedOutput(dust, Chromite, "1/90", 0) // .duration(150).EUt(2) // .save(provider); @@ -1260,63 +1251,63 @@ private static void registerRecyclingRecipes(Consumer provider) // MACERATOR_RECIPES.recipeBuilder() // .inputItems(stone, Redrock) // .outputItems(dust, Redrock) - // .chancedOutput(dust, Redrock, 1000, 380) + // .chancedOutput(dust, Redrock, 1000, 0) // .duration(150).EUt(2) // .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_marble") .inputItems(rock, Marble) .outputItems(dust, Marble) - .chancedOutput(dust, Marble, 1000, 380) + .chancedOutput(dust, Marble, 1500, 0) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_basalt") .inputItems(Blocks.BASALT.asItem()) .outputItems(dust, Basalt) - .chancedOutput(dust, Basalt, 1000, 380) + .chancedOutput(dust, Basalt, 1500, 0) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_deepslate") .inputItems(Blocks.DEEPSLATE.asItem()) .outputItems(dust, Deepslate) - .chancedOutput(dust, Thorium, 100, 40) + .chancedOutput(dust, Thorium, 150, 0) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_red_granite") .inputItems(rock, GraniteRed) .outputItems(dust, GraniteRed) - .chancedOutput(dust, Uranium238, 10, 5) + .chancedOutput(dust, Uranium238, 25, 0) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_andesite") .inputItems(Blocks.ANDESITE.asItem()) .outputItems(dust, Andesite) - .chancedOutput(dust, Stone, 10, 5) + .chancedOutput(dust, Stone, 25, 0) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_diorite") .inputItems(Blocks.DIORITE.asItem()) .outputItems(dust, Diorite) - .chancedOutput(dust, Stone, 10, 5) + .chancedOutput(dust, Stone, 25, 0) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_granite") .inputItems(Blocks.GRANITE.asItem()) .outputItems(dust, Granite) - .chancedOutput(dust, Stone, 10, 5) + .chancedOutput(dust, Stone, 25, 0) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_calcite") .inputItems(Blocks.CALCITE.asItem()) .outputItems(dust, Calcite) - .chancedOutput(dust, Stone, 10, 5) + .chancedOutput(dust, Stone, 25, 0) .duration(150).EUt(2) .save(provider); @@ -1336,7 +1327,7 @@ private static void registerRecyclingRecipes(Consumer provider) MACERATOR_RECIPES.recipeBuilder("macerate_pork_chop") .inputItems(new ItemStack(Items.PORKCHOP)) .outputItems(dust, Meat) - .chancedOutput(dust, Meat, 5000, 0) + .chancedOutput(dust, Meat, 6500, 0) .outputItems(dustTiny, Bone) .duration(102).EUt(2).save(provider); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java index ee9fc86faf6..9878170caf4 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java @@ -138,21 +138,26 @@ public static void init(Consumer provider) { "PIP", "IFI", "PIP", 'P', new MaterialEntry(TagPrefix.plate, GTMaterials.Polytetrafluoroethylene), 'F', new MaterialEntry(TagPrefix.frameGt, GTMaterials.Polytetrafluoroethylene), 'I', new MaterialEntry(TagPrefix.pipeNormalFluid, GTMaterials.Polytetrafluoroethylene)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "casing_bronze_firebox", GTBlocks.FIREBOX_BRONZE.asStack(2), + // Decomposition info handled by the assembler recipe + VanillaRecipeHelper.addShapedRecipe(provider, false, "casing_bronze_firebox", + GTBlocks.FIREBOX_BRONZE.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft), "PSP", "SFS", "PSP", 'P', new MaterialEntry(TagPrefix.plate, GTMaterials.Bronze), 'F', new MaterialEntry(TagPrefix.frameGt, GTMaterials.Bronze), 'S', new MaterialEntry(TagPrefix.rod, GTMaterials.Bronze)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "casing_steel_firebox", GTBlocks.FIREBOX_STEEL.asStack(2), + VanillaRecipeHelper.addShapedRecipe(provider, false, "casing_steel_firebox", + GTBlocks.FIREBOX_STEEL.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft), "PSP", "SFS", "PSP", 'P', new MaterialEntry(TagPrefix.plate, GTMaterials.Steel), 'F', new MaterialEntry(TagPrefix.frameGt, GTMaterials.Steel), 'S', new MaterialEntry(TagPrefix.rod, GTMaterials.Steel)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "casing_titanium_firebox", - GTBlocks.FIREBOX_TITANIUM.asStack(2), "PSP", "SFS", "PSP", 'P', + VanillaRecipeHelper.addShapedRecipe(provider, false, "casing_titanium_firebox", + GTBlocks.FIREBOX_TITANIUM.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft), "PSP", "SFS", "PSP", + 'P', new MaterialEntry(TagPrefix.plate, GTMaterials.Titanium), 'F', new MaterialEntry(TagPrefix.frameGt, GTMaterials.Titanium), 'S', new MaterialEntry(TagPrefix.rod, GTMaterials.Titanium)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "casing_tungstensteel_firebox", - GTBlocks.FIREBOX_TUNGSTENSTEEL.asStack(2), "PSP", "SFS", "PSP", 'P', + VanillaRecipeHelper.addShapedRecipe(provider, false, "casing_tungstensteel_firebox", + GTBlocks.FIREBOX_TUNGSTENSTEEL.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft), "PSP", "SFS", + "PSP", 'P', new MaterialEntry(TagPrefix.plate, GTMaterials.TungstenSteel), 'F', new MaterialEntry(TagPrefix.frameGt, GTMaterials.TungstenSteel), 'S', new MaterialEntry(TagPrefix.rod, GTMaterials.TungstenSteel)); @@ -558,19 +563,25 @@ public static void init(Consumer provider) { 'R', new MaterialEntry(TagPrefix.rotor, GTMaterials.Iron), 'H', GTBlocks.BRONZE_BRICKS_HULL, 'F', Items.FLINT_AND_STEEL); + if (!ConfigHolder.INSTANCE.recipes.hardMultiRecipes) { VanillaRecipeHelper.addShapedRecipe(provider, true, "electric_blast_furnace", - GTMultiMachines.ELECTRIC_BLAST_FURNACE.asStack(), "FFF", "CMC", "WCW", 'M', - GTBlocks.CASING_INVAR_HEATPROOF.asStack(), 'F', Blocks.FURNACE.asItem(), 'C', - CustomTags.LV_CIRCUITS, + GTMultiMachines.ELECTRIC_BLAST_FURNACE.asStack(), + "FFF", "CMC", "WCW", + 'M', GTBlocks.CASING_INVAR_HEATPROOF.asStack(), + 'F', Blocks.BLAST_FURNACE.asItem(), + 'C', CustomTags.LV_CIRCUITS, 'W', new MaterialEntry(TagPrefix.cableGtSingle, GTMaterials.Tin)); } else { VanillaRecipeHelper.addShapedRecipe(provider, true, "electric_blast_furnace", - GTMultiMachines.ELECTRIC_BLAST_FURNACE.asStack(), "FFF", "CMC", "WCW", 'M', - GTBlocks.CASING_INVAR_HEATPROOF.asStack(), 'F', GTMachines.ELECTRIC_FURNACE[LV].asStack(), 'C', - CustomTags.LV_CIRCUITS, + GTMultiMachines.ELECTRIC_BLAST_FURNACE.asStack(), + "FFF", "CMC", "WCW", + 'M', GTBlocks.CASING_INVAR_HEATPROOF.asStack(), + 'F', GTMachines.ELECTRIC_FURNACE[LV].asStack(), + 'C', CustomTags.LV_CIRCUITS, 'W', new MaterialEntry(TagPrefix.cableGtSingle, GTMaterials.Tin)); } + VanillaRecipeHelper.addShapedRecipe(provider, true, "vacuum_freezer", GTMultiMachines.VACUUM_FREEZER.asStack(), "PPP", "CMC", "WCW", 'M', GTBlocks.CASING_ALUMINIUM_FROSTPROOF.asStack(), 'P', GTItems.ELECTRIC_PUMP_HV, 'C', CustomTags.EV_CIRCUITS, 'W', new MaterialEntry(TagPrefix.cableGtSingle, GTMaterials.Gold)); @@ -635,6 +646,11 @@ public static void init(Consumer provider) { new MaterialEntry(TagPrefix.gear, GTMaterials.TungstenSteel), 'P', CustomTags.LuV_CIRCUITS, 'A', GTMachines.HULL[GTValues.LuV].asStack(), 'C', new MaterialEntry(TagPrefix.pipeLargeFluid, GTMaterials.TungstenSteel)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "central_monitor", + GTMultiMachines.CENTRAL_MONITOR.asStack(), "CMC", "SAE", "FFF", 'C', + CustomTags.MV_CIRCUITS, 'M', GTItems.COVER_SCREEN, 'S', GTItems.SENSOR_MV, + 'A', GTMachines.HULL[GTValues.MV].asStack(), 'E', GTItems.EMITTER_MV, + 'F', GTBlocks.CASING_ALUMINIUM_FROSTPROOF.asStack()); VanillaRecipeHelper.addShapedRecipe(provider, true, "large_bronze_boiler", GTMultiMachines.LARGE_BOILER_BRONZE.asStack(), "PSP", "SAS", "PSP", 'P', @@ -863,26 +879,11 @@ public static void init(Consumer provider) { registerMachineRecipe(provider, ArrayUtils.subarray(GTMachines.DIODE, GTValues.LuV, GTMachines.DIODE.length), "CDC", "DHD", "PDP", 'H', HULL, 'D', GTItems.ADVANCED_SMD_DIODE, 'P', PLATE, 'C', CABLE_QUAD); - registerMachineRecipe(provider, ArrayUtils.subarray(GTMachines.TRANSFORMER, GTValues.ULV, GTValues.MV), " CC", - "TH ", " CC", 'C', CABLE, 'T', CABLE_TIER_UP, 'H', HULL); - registerMachineRecipe(provider, ArrayUtils.subarray(GTMachines.TRANSFORMER, GTValues.MV, GTValues.UHV), "WCC", - "TH ", "WCC", 'W', POWER_COMPONENT, 'C', CABLE, 'T', CABLE_TIER_UP, 'H', HULL); - registerMachineRecipe(provider, - ArrayUtils.subarray(GTMachines.HI_AMP_TRANSFORMER_2A, GTValues.ULV, GTValues.MV), " CC", "TH ", " CC", - 'C', CABLE_DOUBLE, 'T', CABLE_TIER_UP_DOUBLE, 'H', HULL); - registerMachineRecipe(provider, - ArrayUtils.subarray(GTMachines.HI_AMP_TRANSFORMER_2A, GTValues.MV, GTValues.UHV), "WCC", "TH ", "WCC", - 'W', POWER_COMPONENT, 'C', CABLE_DOUBLE, 'T', CABLE_TIER_UP_DOUBLE, 'H', HULL); - registerMachineRecipe(provider, - ArrayUtils.subarray(GTMachines.HI_AMP_TRANSFORMER_4A, GTValues.ULV, GTValues.MV), " CC", "TH ", " CC", - 'C', CABLE_QUAD, 'T', CABLE_TIER_UP_QUAD, 'H', HULL); - registerMachineRecipe(provider, - ArrayUtils.subarray(GTMachines.HI_AMP_TRANSFORMER_4A, GTValues.MV, GTValues.UHV), "WCC", "TH ", "WCC", - 'W', POWER_COMPONENT, 'C', CABLE_QUAD, 'T', CABLE_TIER_UP_QUAD, 'H', HULL); - registerMachineRecipe(provider, ArrayUtils.subarray(GTMachines.POWER_TRANSFORMER, GTValues.ULV, GTValues.MV), - " CC", "TH ", " CC", 'C', CABLE_HEX, 'T', CABLE_TIER_UP_HEX, 'H', HULL); - registerMachineRecipe(provider, ArrayUtils.subarray(GTMachines.POWER_TRANSFORMER, GTValues.MV, GTValues.UHV), - "WCC", "TH ", "WCC", 'W', POWER_COMPONENT, 'C', CABLE_HEX, 'T', CABLE_TIER_UP_HEX, 'H', HULL); + // Decomposition info handled by the assembler recipe + registerMachineRecipe(provider, false, ArrayUtils.subarray(GTMachines.TRANSFORMER, GTValues.ULV, GTValues.MV), + " CC", "TH ", " CC", 'C', CABLE, 'T', CABLE_TIER_UP, 'H', HULL); + registerMachineRecipe(provider, false, ArrayUtils.subarray(GTMachines.TRANSFORMER, GTValues.MV, GTValues.IV), + "WCC", "TH ", "WCC", 'W', POWER_COMPONENT, 'C', CABLE, 'T', CABLE_TIER_UP, 'H', HULL); registerMachineRecipe(provider, GTMachines.BATTERY_BUFFER_4, "WTW", "WMW", 'M', HULL, 'W', WIRE_QUAD, 'T', Tags.Items.CHESTS_WOODEN); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityMachineRecipeLoader.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityMachineRecipeLoader.java index e41015622cb..c364c53af52 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityMachineRecipeLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityMachineRecipeLoader.java @@ -10,6 +10,7 @@ import com.gregtechceu.gtceu.data.recipe.CustomTags; import com.gregtechceu.gtceu.data.recipe.GTCraftingComponents; import com.gregtechceu.gtceu.data.recipe.VanillaRecipeHelper; +import com.gregtechceu.gtceu.data.recipe.builder.GTRecipeBuilder; import net.minecraft.data.recipes.FinishedRecipe; import net.minecraft.world.item.ItemStack; @@ -311,6 +312,72 @@ public static void init(Consumer provider) { .EUt(VA[UV])) .duration(1000).EUt(VA[UHV]).save(provider); + // Transformers + for (int tier = 0; tier < TRANSFORMER.length; tier++) { + var transformer = TRANSFORMER[tier]; + if (transformer == null) continue; + + GTRecipeBuilder b = ASSEMBLER_RECIPES.recipeBuilder(VN[tier].toLowerCase(Locale.ROOT) + "_transformer") + .inputItems(GTCraftingComponents.HULL.get(tier)) + .inputItems(GTCraftingComponents.CABLE_TIER_UP.get(tier)) + .inputItems(GTCraftingComponents.CABLE.get(tier), 4) + .outputItems(transformer) + // Lower-tier recipes faster because they have crafting table equivalents + .duration(tier < IV ? 20 : 100) + .EUt(tier < GTValues.IV ? VA[LV] : VA[tier]) + .addMaterialInfo(true); + + if (tier >= MV) { + b.inputItems(GTCraftingComponents.POWER_COMPONENT.get(tier), 2); + } + + b.save(provider); + } + + // Hi-Amp (2x) Transformers + for (int tier = 0; tier < TRANSFORMER.length; tier++) { + var hiAmp = HI_AMP_TRANSFORMER_2A[tier]; + var lowAmp = TRANSFORMER[tier]; + if (hiAmp == null || lowAmp == null) continue; + + GTRecipeBuilder b = ASSEMBLER_RECIPES + .recipeBuilder(VN[tier].toLowerCase(Locale.ROOT) + "_hi_amp_2a_transformer") + .inputItems(lowAmp) + .inputItems(GTCraftingComponents.CABLE_TIER_UP_DOUBLE.get(tier)) + .inputItems(GTCraftingComponents.CABLE_DOUBLE.get(tier), 4) + .outputItems(hiAmp) + .duration(100).EUt(VA[tier]) + .addMaterialInfo(true); + + if (tier >= MV) { + b.inputItems(GTCraftingComponents.POWER_COMPONENT.get(tier), 2); + } + + b.save(provider); + } + + // Hi-Amp (4x) Transformers + for (int tier = 0; tier < TRANSFORMER.length; tier++) { + var hiAmp = HI_AMP_TRANSFORMER_4A[tier]; + var lowAmp = TRANSFORMER[tier]; + if (hiAmp == null || lowAmp == null) continue; + + GTRecipeBuilder b = ASSEMBLER_RECIPES + .recipeBuilder(VN[tier].toLowerCase(Locale.ROOT) + "_hi_amp_4a_transformer") + .inputItems(lowAmp) + .inputItems(GTCraftingComponents.CABLE_TIER_UP_QUAD.get(tier)) + .inputItems(GTCraftingComponents.CABLE_QUAD.get(tier), 4) + .outputItems(hiAmp) + .duration(100).EUt(VA[tier]) + .addMaterialInfo(true); + + if (tier >= MV) { + b.inputItems(GTCraftingComponents.POWER_COMPONENT.get(tier), 2); + } + + b.save(provider); + } + // Power Transformers for (int tier = 0; tier < POWER_TRANSFORMER.length; tier++) { var hatch = POWER_TRANSFORMER[tier]; diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MiscRecipeLoader.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MiscRecipeLoader.java index a6039a4260f..b7fa1679e3f 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MiscRecipeLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MiscRecipeLoader.java @@ -428,6 +428,8 @@ public static void init(Consumer provider) { builder.copy("colorless_lens").inputFluids(DyeWhite.getFluid(dyeAmount)).outputItems(lens, Glass) .save(provider); + VanillaRecipeHelper.addShapelessRecipe(provider, "brown_dye_from_metal_mixture", new ItemStack(Items.BROWN_DYE), + new MaterialEntry(dust, MetalMixture)); // NAN Certificate EXTRUDER_RECIPES.recipeBuilder("nan_certificate") @@ -499,11 +501,11 @@ public static void init(Consumer provider) { if (!ConfigHolder.INSTANCE.recipes.hardMiscRecipes) { VanillaRecipeHelper.addShapedRecipe(provider, "flour_to_dough", new ItemStack(DOUGH, 8), "FFF", "FWF", "FFF", - 'F', ChemicalHelper.get(dust, Wheat), + 'F', CustomTags.WHEAT_GRAINS, 'W', Water.getBucket()); MIXER_RECIPES.recipeBuilder("flour_to_dough") - .inputItems(dust, Wheat, 2) + .inputItems(CustomTags.WHEAT_GRAINS, 2) .inputFluids(Water.getFluid(250)) .outputItems(DOUGH, 3) .EUt(VA[ULV]) @@ -511,14 +513,14 @@ public static void init(Consumer provider) { .save(provider); VanillaRecipeHelper.addShapelessRecipe(provider, "pumpkin_pie_from_dough", new ItemStack(Items.PUMPKIN_PIE), - new ItemStack(Blocks.PUMPKIN), new ItemStack(Items.SUGAR), new ItemStack(DOUGH)); + new ItemStack(Blocks.PUMPKIN), new ItemStack(Items.SUGAR), CustomTags.DOUGHS); VanillaRecipeHelper.addShapelessRecipe(provider, "cookie_from_dough", new ItemStack(Items.COOKIE, 8), - new ItemStack(DOUGH), new ItemStack(Items.COCOA_BEANS)); + CustomTags.DOUGHS, new ItemStack(Items.COCOA_BEANS)); FORMING_PRESS_RECIPES.recipeBuilder("cookie") .notConsumable(SHAPE_MOLD_CYLINDER) - .inputItems(DOUGH) + .inputItems(CustomTags.DOUGHS) .inputItems(Items.COCOA_BEANS, 2) .outputItems(Items.COOKIE, 12) .EUt(VA[LV]) @@ -530,15 +532,15 @@ public static void init(Consumer provider) { 'E', Items.EGG, 'S', Items.SUGAR, 'M', new FluidContainerIngredient(Milk.getFluidTag(), 1000), - 'D', DOUGH); + 'D', CustomTags.DOUGHS); } else { VanillaRecipeHelper.addShapedRecipe(provider, "flour_to_dough", new ItemStack(DOUGH, 4), "FFF", "FWF", "FFF", - 'F', ChemicalHelper.get(dust, Wheat), + 'F', CustomTags.WHEAT_GRAINS, 'W', Water.getBucket()); MIXER_RECIPES.recipeBuilder("flour_to_dough") - .inputItems(dust, Wheat, 4) + .inputItems(CustomTags.WHEAT_GRAINS, 4) .inputItems(Items.EGG, 2) .inputFluids(Milk.getFluid(250)) // 1 bucket = 1000mB, hence 250mb. Also its infinitely renewable .outputItems(DOUGH, 7) @@ -547,14 +549,14 @@ public static void init(Consumer provider) { .save(provider); VanillaRecipeHelper.addShapelessRecipe(provider, "pumpkin_pie_from_dough", new ItemStack(Items.PUMPKIN_PIE), - new ItemStack(Blocks.PUMPKIN), new ItemStack(DOUGH), new ItemStack(Items.SUGAR), 'r', 'k'); + new ItemStack(Blocks.PUMPKIN), CustomTags.DOUGHS, new ItemStack(Items.SUGAR), 'r', 'k'); VanillaRecipeHelper.addShapelessRecipe(provider, "cookie", new ItemStack(Items.COOKIE, 4), - new ItemStack(Items.COCOA_BEANS), new ItemStack(DOUGH), new ItemStack(Items.SUGAR), 'r'); + new ItemStack(Items.COCOA_BEANS), CustomTags.DOUGHS, new ItemStack(Items.SUGAR), 'r'); FORMING_PRESS_RECIPES.recipeBuilder("cookie") .notConsumable(SHAPE_MOLD_CYLINDER) - .inputItems(DOUGH) + .inputItems(CustomTags.DOUGHS) .inputItems(Items.COCOA_BEANS, 2) .inputItems(Items.SUGAR) .outputItems(Items.COOKIE, 8) @@ -567,12 +569,12 @@ public static void init(Consumer provider) { 'B', Items.SWEET_BERRIES, 'S', Items.SUGAR, 'M', new FluidContainerIngredient(Milk.getFluidTag(), 1000), - 'D', DOUGH); + 'D', CustomTags.DOUGHS); } FORMING_PRESS_RECIPES.recipeBuilder("pumpkin_pie") .notConsumable(SHAPE_MOLD_CYLINDER) - .inputItems(DOUGH, 2) + .inputItems(CustomTags.DOUGHS, 2) .inputItems(Items.PUMPKIN) .inputItems(Items.SUGAR) .outputItems(Items.PUMPKIN_PIE, 2) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/RecyclingRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/RecyclingRecipes.java index 81d0dd057b8..a8479d652dc 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/RecyclingRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/RecyclingRecipes.java @@ -23,6 +23,7 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -38,9 +39,6 @@ public class RecyclingRecipes { - // TODO - Fix recipe order with some things (noticed Hermetic Casings) - // TODO - Figure out solution to LuV+ components - // TODO - (to remember) Do NOT calculate any material component lists for circuits, they are simply totally lost // TODO - Work on durations and EUt's public static void init(Consumer provider) { @@ -431,14 +429,14 @@ private static int calculateDuration(List materials) { */ private static List combineStacks(List rawList) { // Combine any stacks in the List that have the same Item. - Map materialStacksExploded = new HashMap<>(); + Object2LongOpenHashMap materialStacksExploded = new Object2LongOpenHashMap<>(); for (MaterialStack ms : rawList) { - long amount = materialStacksExploded.getOrDefault(ms.material(), 0L); - materialStacksExploded.put(ms.material(), ms.amount() + amount); + materialStacksExploded.addTo(ms.material(), ms.amount()); } - return materialStacksExploded.entrySet().stream() - .map(e -> new MaterialStack(e.getKey(), e.getValue())) - .collect(Collectors.toList()); + return materialStacksExploded.object2LongEntrySet() + .stream() + .map(e -> new MaterialStack(e.getKey(), e.getLongValue())) + .toList(); } private static List finalizeOutputs(List materials, int maxOutputs, diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/VanillaStandardRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/VanillaStandardRecipes.java index ad1c87f832f..7543739d90e 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/VanillaStandardRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/VanillaStandardRecipes.java @@ -278,7 +278,7 @@ private static void smashingRecipes(Consumer provider) { MACERATOR_RECIPES.recipeBuilder("gravel_to_flint") .inputItems(new ItemStack(Blocks.GRAVEL, 1)) .outputItems(dust, Stone) - .chancedOutput(new ItemStack(Items.FLINT), 1000, 1000) + .chancedOutput(new ItemStack(Items.FLINT), 3300, 0) .duration(400).EUt(2) .save(provider); @@ -345,7 +345,7 @@ private static void smashingRecipes(Consumer provider) { MACERATOR_RECIPES.recipeBuilder("macerate_melon_block") .inputItems(new ItemStack(Blocks.MELON)) .outputItems(new ItemStack(Items.MELON_SLICE, 8)) - .chancedOutput(new ItemStack(Items.MELON_SEEDS), 8000, 500) + .chancedOutput(new ItemStack(Items.MELON_SEEDS), 8500, 0) .duration(400).EUt(2) .save(provider); @@ -378,7 +378,7 @@ private static void woodRecipes(Consumer provider) { MACERATOR_RECIPES.recipeBuilder("macerate_logs") .inputItems(ItemTags.LOGS) .outputItems(dust, Wood, 6) - .chancedOutput(dust, Wood, 8000, 680) + .chancedOutput(dust, Wood, 8500, 0) .duration(150).EUt(2) .save(provider); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/ChemistryRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/ChemistryRecipes.java index adbb7dcd595..4a19e622c0a 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/ChemistryRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/ChemistryRecipes.java @@ -34,6 +34,7 @@ public static void init(Consumer provider) { ReactorRecipes.init(provider); SeparationRecipes.init(provider); AntidoteRecipes.init(provider); + TitaniumRecipes.init(provider); // A Few Random Recipes FLUID_HEATER_RECIPES.recipeBuilder("ethenone") diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/ReactorRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/ReactorRecipes.java index 6adfd79ae5f..66bb796dd48 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/ReactorRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/ReactorRecipes.java @@ -84,14 +84,6 @@ public static void init(Consumer provider) { .outputFluids(SiliconeRubber.getFluid(1296)) .duration(600).EUt(VA[LV]).save(provider); - CHEMICAL_RECIPES.recipeBuilder("titanium_tetrachloride") - .inputItems(dust, Carbon, 2) - .inputItems(dust, Rutile) - .inputFluids(Chlorine.getFluid(4000)) - .outputFluids(CarbonMonoxide.getFluid(2000)) - .outputFluids(TitaniumTetrachloride.getFluid(1000)) - .duration(400).EUt(VA[HV]).save(provider); - CHEMICAL_RECIPES.recipeBuilder("polydimethylsiloxane_from_dimethyldichlorosilane") .inputFluids(Dimethyldichlorosilane.getFluid(1000)) .inputFluids(Water.getFluid(1000)) @@ -553,13 +545,6 @@ public static void init(Consumer provider) { .outputItems(dust, Magnesite, 5) .duration(80).EUt(VA[LV]).save(provider); - CHEMICAL_RECIPES.recipeBuilder("quicklime_from_calcite") - .circuitMeta(1) - .inputItems(dust, Calcite, 5) - .outputItems(dust, Quicklime, 2) - .outputFluids(CarbonDioxide.getFluid(1000)) - .duration(240).EUt(VA[LV]).save(provider); - CHEMICAL_RECIPES.recipeBuilder("magnesia_from_magnesite") .inputItems(dust, Magnesite, 5) .outputItems(dust, Magnesia, 2) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/SeparationRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/SeparationRecipes.java index d9a22a273da..53b9d3108d5 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/SeparationRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/SeparationRecipes.java @@ -49,13 +49,13 @@ public static void init(Consumer provider) { CENTRIFUGE_RECIPES.recipeBuilder("oilsands_ore_separation") .inputItems(ore, Oilsands) - .chancedOutput(new ItemStack(Blocks.SAND), 5000, 5000) + .chancedOutput(new ItemStack(Blocks.SAND), 7500, 0) .outputFluids(Oil.getFluid(2000)) .duration(200).EUt(30).save(provider); CENTRIFUGE_RECIPES.recipeBuilder("oilsands_dust_separation") .inputItems(dust, Oilsands) - .chancedOutput(new ItemStack(Blocks.SAND), 5000, 5000) + .chancedOutput(new ItemStack(Blocks.SAND), 7500, 0) .outputFluids(OilHeavy.getFluid(2000)) .duration(200).EUt(30).save(provider); @@ -105,40 +105,40 @@ public static void init(Consumer provider) { CENTRIFUGE_RECIPES.recipeBuilder("sticky_resin_separation").duration(400).EUt(5) .inputItems(STICKY_RESIN) .outputItems(dust, RawRubber, 3) - .chancedOutput(PLANT_BALL.asStack(), 1000, 850) + .chancedOutput(PLANT_BALL.asStack(), 1500, 0) .outputFluids(Glue.getFluid(100)) .save(provider); - CENTRIFUGE_RECIPES.recipeBuilder("rubber_log_separation").duration(200).EUt(20) + CENTRIFUGE_RECIPES.recipeBuilder("rubber_log_separation").duration(200).EUt(5) .inputItems(GTBlocks.RUBBER_LOG.asStack()) - .chancedOutput(STICKY_RESIN.asStack(), 5000, 1200) - .chancedOutput(PLANT_BALL.asStack(), 3750, 900) - .chancedOutput(dust, Carbon, 2500, 600) - .chancedOutput(dust, Wood, 2500, 700) + .chancedOutput(STICKY_RESIN.asStack(), 6400, 0) + .chancedOutput(PLANT_BALL.asStack(), 4000, 0) + .chancedOutput(dust, Carbon, 3000, 0) + .chancedOutput(dust, Wood, 3000, 0) .outputFluids(Methane.getFluid(60)) .save(provider); // TODO Other kinds of dirt? CENTRIFUGE_RECIPES.recipeBuilder("dirt_separation").duration(250).EUt(VA[LV]) .inputItems(Blocks.DIRT.asItem()) - .chancedOutput(PLANT_BALL.asStack(), 1250, 700) - .chancedOutput(new ItemStack(Blocks.SAND), 5000, 1200) - .chancedOutput(dust, Clay, 450, 100) + .chancedOutput(PLANT_BALL.asStack(), 1400, 0) + .chancedOutput(new ItemStack(Blocks.SAND), 6000, 0) + .chancedOutput(dust, Clay, 550, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("grass_block_separation").duration(250).EUt(VA[LV]) .inputItems(Blocks.GRASS_BLOCK.asItem()) - .chancedOutput(PLANT_BALL.asStack(), 3000, 1200) - .chancedOutput(new ItemStack(Blocks.SAND), 5000, 1200) - .chancedOutput(dust, Clay, 450, 100) + .chancedOutput(PLANT_BALL.asStack(), 3500, 0) + .chancedOutput(new ItemStack(Blocks.SAND), 5500, 0) + .chancedOutput(dust, Clay, 550, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("mycelium_separation").duration(650).EUt(VA[LV]) .inputItems(new ItemStack(Blocks.MYCELIUM)) - .chancedOutput(new ItemStack(Blocks.RED_MUSHROOM), 2500, 900) - .chancedOutput(new ItemStack(Blocks.BROWN_MUSHROOM), 2500, 900) - .chancedOutput(new ItemStack(Blocks.SAND), 5000, 1200) - .chancedOutput(dust, Clay, 450, 100) + .chancedOutput(new ItemStack(Blocks.RED_MUSHROOM), 2800, 0) + .chancedOutput(new ItemStack(Blocks.BROWN_MUSHROOM), 2800, 0) + .chancedOutput(new ItemStack(Blocks.SAND), 6200, 0) + .chancedOutput(dust, Clay, 550, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("ash_separation").duration(240).EUt(VA[LV]) @@ -170,65 +170,65 @@ public static void init(Consumer provider) { CENTRIFUGE_RECIPES.recipeBuilder("uranium_238_separation").duration(800).EUt(320) .inputItems(dust, Uranium238) - .chancedOutput(dustTiny, Plutonium239, 200, 80) - .chancedOutput(dustTiny, Uranium235, 2000, 350) + .chancedOutput(dustTiny, Plutonium239, 280, 0) + .chancedOutput(dustTiny, Uranium235, 2300, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("plutonium_239_separation").duration(1600).EUt(320) .inputItems(dust, Plutonium239) - .chancedOutput(dustTiny, Uranium238, 3000, 450) - .chancedOutput(dust, Plutonium241, 2000, 300) + .chancedOutput(dustTiny, Uranium238, 3400, 0) + .chancedOutput(dust, Plutonium241, 2500, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("endstone_separation").duration(320).EUt(20) .inputItems(dust, Endstone) - .chancedOutput(new ItemStack(Blocks.SAND), 9000, 300) - .chancedOutput(dust, Tungstate, 315, 110) - .chancedOutput(dust, Platinum, 70, 15) + .chancedOutput(new ItemStack(Blocks.SAND), 9000, 0) + .chancedOutput(dust, Tungstate, 445, 0) + .chancedOutput(dust, Platinum, 80, 0) .outputFluids(Helium.getFluid(120)) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("netherrack_separation").duration(160).EUt(20) .inputItems(dust, Netherrack) - .chancedOutput(dust, Redstone, 625, 95) - .chancedOutput(dust, Gold, 70, 15) - .chancedOutput(dust, Sulfur, 2475, 25) - .chancedOutput(dust, Coal, 625, 95) + .chancedOutput(dust, Redstone, 700, 0) + .chancedOutput(dust, Gold, 75, 0) + .chancedOutput(dust, Sulfur, 2500, 0) + .chancedOutput(dust, Coal, 700, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("soul_sand_separation").duration(200).EUt(80) .inputItems(Blocks.SOUL_SAND.asItem()) - .chancedOutput(new ItemStack(Blocks.SAND), 9000, 130) - .chancedOutput(dust, Saltpeter, 2000, 160) - .chancedOutput(dust, Coal, 225, 40) + .chancedOutput(new ItemStack(Blocks.SAND), 9250, 0) + .chancedOutput(dust, Saltpeter, 2250, 0) + .chancedOutput(dust, Coal, 225, 0) .outputFluids(Oil.getFluid(80)) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("lava_separation").duration(80).EUt(80) .inputFluids(Lava.getFluid(100)) - .chancedOutput(dust, SiliconDioxide, 1250, 80) - .chancedOutput(dust, Magnesia, 250, 70) - .chancedOutput(dust, Quicklime, 250, 70) - .chancedOutput(nugget, Gold, 250, 80) - .chancedOutput(dust, Sapphire, 315, 70) - .chancedOutput(dust, Tantalite, 125, 35) + .chancedOutput(dust, SiliconDioxide, 1250, 0) + .chancedOutput(dust, Magnesia, 250, 0) + .chancedOutput(dust, Quicklime, 250, 0) + .chancedOutput(nugget, Gold, 250, 0) + .chancedOutput(dust, Sapphire, 315, 0) + .chancedOutput(dust, Tantalite, 125, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("rare_earth_separation").duration(64).EUt(20) .inputItems(dust, RareEarth) - .chancedOutput(dustSmall, Cadmium, 2500, 400) - .chancedOutput(dustSmall, Neodymium, 2500, 400) - .chancedOutput(dustSmall, Samarium, 2500, 400) - .chancedOutput(dustSmall, Cerium, 2500, 400) - .chancedOutput(dustSmall, Yttrium, 2500, 400) - .chancedOutput(dustSmall, Lanthanum, 2500, 400) + .chancedOutput(dustSmall, Cadmium, 3500, 0) + .chancedOutput(dustSmall, Neodymium, 4500, 0) + .chancedOutput(dustSmall, Samarium, 3500, 0) + .chancedOutput(dustSmall, Cerium, 5500, 0) + .chancedOutput(dustSmall, Yttrium, 3500, 0) + .chancedOutput(dustSmall, Lanthanum, 2500, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("red_sand_separation").duration(50).EUt(VA[LV]) .inputItems(Blocks.RED_SAND.asItem()) - .chancedOutput(dust, Iron, 5000, 500) - .chancedOutput(dust, Diamond, 10, 10) - .chancedOutput(new ItemStack(Blocks.SAND), 5000, 5000) + .chancedOutput(dust, Iron, 5000, 0) + .chancedOutput(dust, Diamond, 35, 0) + .chancedOutput(new ItemStack(Blocks.SAND), 8500, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("hydrogen_separation").duration(160).EUt(20) @@ -271,8 +271,8 @@ public static void init(Consumer provider) { .chancedOutput(dust, PotassiumFeldspar, 2500, 0) .chancedOutput(dust, Marble, "2/9", 0) .chancedOutput(dust, Biotite, "1/9", 0) - .chancedOutput(dust, MetalMixture, 825, 80) - .chancedOutput(dust, Sodalite, 550, 55) + .chancedOutput(dust, MetalMixture, 925, 0) + .chancedOutput(dust, Sodalite, 650, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("metal_mixture_separation").duration(1000).EUt(900) @@ -281,14 +281,14 @@ public static void init(Consumer provider) { .chancedOutput(dust, Bauxite, 2500, 0) .chancedOutput(dust, Pyrolusite, "2/9", 0) .chancedOutput(dust, Barite, "1/9", 0) - .chancedOutput(dust, Chromite, 825, 80) - .chancedOutput(dust, Ilmenite, 550, 55) + .chancedOutput(dust, Chromite, 855, 0) + .chancedOutput(dust, Ilmenite, 575, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("quartz_sand_separation").duration(60).EUt(VA[LV]) .inputItems(dust, QuartzSand, 2) .outputItems(dust, Quartzite) - .chancedOutput(dust, CertusQuartz, 2000, 200) + .chancedOutput(dust, CertusQuartz, 2500, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("red_alloy_separation").duration(900).EUt(VA[LV]) @@ -339,7 +339,7 @@ public static void init(Consumer provider) { .inputItems(dust, Sphalerite, 2) .outputItems(dust, Zinc) .outputItems(dust, Sulfur) - .chancedOutput(dust, Gallium, 500, 250) + .chancedOutput(dust, Gallium, 750, 0) .duration(200).EUt(VA[LV]).save(provider); ELECTROLYZER_RECIPES.recipeBuilder("water_electrolysis") @@ -552,7 +552,7 @@ public static void init(Consumer provider) { EXTRACTOR_RECIPES.recipeBuilder("wood_dust_extraction").duration(16).EUt(4) .inputItems(dust, Wood) - .chancedOutput(PLANT_BALL.asStack(), 200, 30) + .chancedOutput(PLANT_BALL.asStack(), 225, 0) .outputFluids(Creosote.getFluid(5)) .save(provider); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/TitaniumRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/TitaniumRecipes.java new file mode 100644 index 00000000000..7c7cc348dc4 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/TitaniumRecipes.java @@ -0,0 +1,175 @@ +package com.gregtechceu.gtceu.data.recipe.serialized.chemistry; + +import net.minecraft.data.recipes.FinishedRecipe; + +import java.util.function.Consumer; + +import static com.gregtechceu.gtceu.api.GTValues.*; +import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.*; +import static com.gregtechceu.gtceu.common.data.GTMaterials.*; +import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.*; + +public class TitaniumRecipes { + + private TitaniumRecipes() {} + + public static void init(Consumer provider) { + titaniumProcess(provider); + solvayProcess(provider); + bauxiteProcess(provider); + ilmeniteProcess(provider); + } + + private static void titaniumProcess(Consumer provider) { + // Rutile extraction from Ilmenite + // FeTiO3 + C -> Fe + TiO2 + CO + BLAST_RECIPES.recipeBuilder("rutile_from_ilmenite") + .inputItems(dust, Ilmenite, 5) + .inputItems(dust, Carbon) + .outputItems(ingot, WroughtIron) + .outputItems(dust, Rutile, 3) + .outputFluids(CarbonDioxide.getFluid(1000)) + .blastFurnaceTemp(1700) + .duration(1600).EUt(VA[HV]).save(provider); + + // Chloride Process + // TiO2 + 2C + 4Cl -> TiCl4 + 2CO + CHEMICAL_RECIPES.recipeBuilder("titanium_tetrachloride") + .inputItems(dust, Carbon, 2) + .inputItems(dust, Rutile) + .inputFluids(Chlorine.getFluid(4000)) + .outputFluids(CarbonMonoxide.getFluid(2000)) + .outputFluids(TitaniumTetrachloride.getFluid(1000)) + .duration(400).EUt(VA[HV]).save(provider); + + // Kroll Process + // TiCl4 + 2Mg -> Ti + 2MgCl2 + BLAST_RECIPES.recipeBuilder("titanium_from_tetrachloride") + .inputItems(dust, Magnesium, 2) + .inputFluids(TitaniumTetrachloride.getFluid(1000)) + .outputItems(ingotHot, Titanium) + .outputItems(dust, MagnesiumChloride, 6) + .blastFurnaceTemp(Titanium.getBlastTemperature() + 200) + .duration(800).EUt(VA[HV]).save(provider); + + CHEMICAL_RECIPES.recipeBuilder("salt_from_magnesium_chloride") + .inputItems(dust, MagnesiumChloride, 3) + .inputItems(dust, Sodium, 2) + .outputItems(dust, Magnesium, 1) + .outputItems(dust, Salt, 4) + .duration(200).EUt(VA[HV]).save(provider); + } + + private static void solvayProcess(Consumer provider) { + // CaCO3 -> CaO + CO2 + CHEMICAL_RECIPES.recipeBuilder("quicklime_from_calcite") + .circuitMeta(1) + .inputItems(dust, Calcite, 5) + .outputItems(dust, Quicklime, 2) + .outputFluids(CarbonDioxide.getFluid(1000)) + .duration(200).EUt(VA[LV]).save(provider); + + // NaCl(H2O) + CO2 + NH3 -> NH4Cl + NaHCO3 + CHEMICAL_RECIPES.recipeBuilder("sodium_bicarbonate_from_salt") + .inputItems(dust, Salt, 4) + .inputFluids(CarbonDioxide.getFluid(1000)) + .inputFluids(Ammonia.getFluid(1000)) + .inputFluids(Water.getFluid(1000)) + .outputItems(dust, AmmoniumChloride, 2) + .outputItems(dust, SodiumBicarbonate, 6) + .duration(400).EUt(VA[MV]).save(provider); + + // 2NaHCO3 -> Na2CO3 + CO2 + H2O + ELECTROLYZER_RECIPES.recipeBuilder("soda_ash_from_bicarbonate") + .inputItems(dust, SodiumBicarbonate, 12) + .outputItems(dust, SodaAsh, 6) + .outputFluids(CarbonDioxide.getFluid(1000)) + .outputFluids(Water.getFluid(1000)) + .duration(200).EUt(VA[MV]).save(provider); + + // 2NH4Cl + CaO -> CaCl2 + 2NH3 + H2O + CHEMICAL_RECIPES.recipeBuilder("calcium_chloride_from_quicklime") + .inputItems(dust, AmmoniumChloride, 4) + .inputItems(dust, Quicklime, 2) + .outputItems(dust, CalciumChloride, 3) + .outputFluids(Ammonia.getFluid(2000)) + .outputFluids(Water.getFluid(1000)) + .duration(200).EUt(VA[MV]).save(provider); + } + + private static void bauxiteProcess(Consumer provider) { + // Bauxite (crushed) + Soda Ash + Calcium Chloride -> Bauxite Slurry + MIXER_RECIPES.recipeBuilder("bauxite_slurry_from_crushed_bauxite") + .inputItems(crushed, Bauxite, 32) + .inputItems(dust, SodaAsh, 12) + .inputItems(dust, CalciumChloride, 6) + .inputFluids(Water.getFluid(1000)) + .outputFluids(BauxiteSlurry.getFluid(4000)) + .duration(500).EUt(VA[HV]).save(provider); + + // Bauxite (washed) + Soda Ash + Calcium Chloride -> Bauxite Slurry + MIXER_RECIPES.recipeBuilder("bauxite_slurry_from_washed_bauxite") + .inputItems(crushedPurified, Bauxite, 32) + .inputItems(dust, SodaAsh, 12) + .inputItems(dust, CalciumChloride, 6) + .inputFluids(Water.getFluid(1000)) + .outputFluids(BauxiteSlurry.getFluid(4000)) + .duration(500).EUt(VA[HV]).save(provider); + + // Bauxite Slurry -> Cracked Bauxite Slurry + CRACKING_RECIPES.recipeBuilder("cracked_bauxite_slurry") + .circuitMeta(1) + .inputFluids(BauxiteSlurry.getFluid(16000)) + .inputFluids(Steam.getFluid(1000)) + .outputFluids(CrackedBauxiteSlurry.getFluid(16000)) + .duration(500).EUt(VA[HV]).save(provider); + + // Bauxite Slurry + Sulfuric -> Aluminium, Slag, Sludge, and SO3 (for looping back to Sulfuric Acid) + LARGE_CHEMICAL_RECIPES.recipeBuilder("bauxite_sludge_from_slurry") + .inputFluids(CrackedBauxiteSlurry.getFluid(4000)) + .inputFluids(SulfuricAcid.getFluid(1000)) + .outputItems(dust, Aluminium, 24) + .outputItems(dust, BauxiteSlag, 8) + .outputFluids(BauxiteSludge.getFluid(2500)) + .outputFluids(SulfurTrioxide.getFluid(1000)) + .duration(500).EUt(VA[HV]).save(provider); + + // Bauxite Slag -> Salt (looped) + Nd + Cr (byproducts) + ELECTROMAGNETIC_SEPARATOR_RECIPES.recipeBuilder("bauxite_slag_separation") + .inputItems(dust, BauxiteSlag) + .outputItems(dust, Salt) + .chancedOutput(dust, Neodymium, 2000, 250) + .chancedOutput(dust, Chromium, 1000, 250) + .duration(50).EUt(VA[MV]).save(provider); + + // Bauxite Sludge -> Calcite (looped) + Decalcified Bauxite Sludge + DISTILLERY_RECIPES.recipeBuilder("bauxite_sludge_decalcification") + .circuitMeta(1) + .inputFluids(BauxiteSludge.getFluid(500)) + .outputItems(dust, Calcite, 2) + .outputFluids(DecalcifiedBauxiteSludge.getFluid(500)) + .duration(100).EUt(VA[MV]).save(provider); + + // Decalcified Bauxite Sludge -> Rutile, Gallium, SiO2, Iron, Water + CENTRIFUGE_RECIPES.recipeBuilder("bauxite_sludge_centrifuge") + .inputFluids(DecalcifiedBauxiteSludge.getFluid(250)) + .outputItems(dust, Rutile, 2) + .chancedOutput(dust, Gallium, 5000, 550) + .chancedOutput(dust, Gallium, 3000, 800) + .chancedOutput(dust, Gallium, 1000, 1000) + .chancedOutput(dust, SiliconDioxide, 9000, 250) + .chancedOutput(dust, Iron, 8000, 250) + .outputFluids(Water.getFluid(250)) + .duration(100).EUt(VA[MV]).save(provider); + } + + private static void ilmeniteProcess(Consumer provider) { + // Byproduct separation for Ilmenite + ELECTROMAGNETIC_SEPARATOR_RECIPES.recipeBuilder("ilmenite_separation") + .inputItems(dust, IlmeniteSlag) + .chancedOutput(dust, Iron, 8000, 0) + .chancedOutput(dust, Tantalum, 2000, 0) + .chancedOutput(dust, Niobium, 500, 0) + .duration(50).EUt(VA[MV]).save(provider); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/data/tags/BlockTagLoader.java b/src/main/java/com/gregtechceu/gtceu/data/tags/BlockTagLoader.java index 713ec4855e8..1d78464c339 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/tags/BlockTagLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/tags/BlockTagLoader.java @@ -1,18 +1,11 @@ package com.gregtechceu.gtceu.data.tags; -import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; -import com.gregtechceu.gtceu.api.data.chemical.material.Material; -import com.gregtechceu.gtceu.api.data.tag.TagPrefix; -import com.gregtechceu.gtceu.common.data.GTBlocks; import com.gregtechceu.gtceu.common.data.GTMachines; import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.data.recipe.CustomTags; -import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BlockTags; -import net.minecraft.tags.TagEntry; -import net.minecraft.tags.TagKey; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraftforge.common.Tags; @@ -21,32 +14,32 @@ public class BlockTagLoader { - public static void init(RegistrateTagsProvider provider) { - create(provider, CustomTags.CONCRETE_BLOCK, Blocks.WHITE_CONCRETE, Blocks.ORANGE_CONCRETE, - Blocks.MAGENTA_CONCRETE, Blocks.LIGHT_BLUE_CONCRETE, Blocks.YELLOW_CONCRETE, Blocks.LIME_CONCRETE, - Blocks.PINK_CONCRETE, Blocks.GRAY_CONCRETE, Blocks.LIGHT_GRAY_CONCRETE, Blocks.CYAN_CONCRETE, - Blocks.PURPLE_CONCRETE, Blocks.BLUE_CONCRETE, Blocks.BROWN_CONCRETE, Blocks.GREEN_CONCRETE, - Blocks.RED_CONCRETE, Blocks.BLACK_CONCRETE); - create(provider, CustomTags.CONCRETE_POWDER_BLOCK, Blocks.WHITE_CONCRETE_POWDER, Blocks.ORANGE_CONCRETE_POWDER, - Blocks.MAGENTA_CONCRETE_POWDER, Blocks.LIGHT_BLUE_CONCRETE_POWDER, Blocks.YELLOW_CONCRETE_POWDER, - Blocks.LIME_CONCRETE_POWDER, Blocks.PINK_CONCRETE_POWDER, Blocks.GRAY_CONCRETE_POWDER, - Blocks.LIGHT_GRAY_CONCRETE_POWDER, Blocks.CYAN_CONCRETE_POWDER, Blocks.PURPLE_CONCRETE_POWDER, - Blocks.BLUE_CONCRETE_POWDER, Blocks.BROWN_CONCRETE_POWDER, Blocks.GREEN_CONCRETE_POWDER, - Blocks.RED_CONCRETE_POWDER, Blocks.BLACK_CONCRETE_POWDER); - create(provider, CustomTags.ENDSTONE_ORE_REPLACEABLES, Blocks.END_STONE); - create(provider, Tags.Blocks.STORAGE_BLOCKS, Blocks.NETHER_BRICKS, - GTBlocks.CASING_PRIMITIVE_BRICKS.get(), GTBlocks.CASING_COKE_BRICKS.get()); + public static void init(RegistrateTagsProvider.IntrinsicImpl provider) { + provider.addTag(CustomTags.CONCRETE_BLOCK) + .add(Blocks.WHITE_CONCRETE, Blocks.ORANGE_CONCRETE, Blocks.MAGENTA_CONCRETE, Blocks.LIGHT_BLUE_CONCRETE, + Blocks.YELLOW_CONCRETE, Blocks.LIME_CONCRETE, Blocks.PINK_CONCRETE, Blocks.GRAY_CONCRETE, + Blocks.LIGHT_GRAY_CONCRETE, Blocks.CYAN_CONCRETE, Blocks.PURPLE_CONCRETE, Blocks.BLUE_CONCRETE, + Blocks.BROWN_CONCRETE, Blocks.GREEN_CONCRETE, Blocks.RED_CONCRETE, Blocks.BLACK_CONCRETE); + provider.addTag(CustomTags.CONCRETE_POWDER_BLOCK) + .add(Blocks.WHITE_CONCRETE_POWDER, Blocks.ORANGE_CONCRETE_POWDER, Blocks.MAGENTA_CONCRETE_POWDER, + Blocks.LIGHT_BLUE_CONCRETE_POWDER, Blocks.YELLOW_CONCRETE_POWDER, Blocks.LIME_CONCRETE_POWDER, + Blocks.PINK_CONCRETE_POWDER, Blocks.GRAY_CONCRETE_POWDER, Blocks.LIGHT_GRAY_CONCRETE_POWDER, + Blocks.CYAN_CONCRETE_POWDER, Blocks.PURPLE_CONCRETE_POWDER, Blocks.BLUE_CONCRETE_POWDER, + Blocks.BROWN_CONCRETE_POWDER, Blocks.GREEN_CONCRETE_POWDER, Blocks.RED_CONCRETE_POWDER, + Blocks.BLACK_CONCRETE_POWDER); - create(provider, BlockTags.REPLACEABLE, - GTMaterials.Oil.getFluid().defaultFluidState().createLegacyBlock().getBlock(), - GTMaterials.OilLight.getFluid().defaultFluidState().createLegacyBlock().getBlock(), - GTMaterials.OilHeavy.getFluid().defaultFluidState().createLegacyBlock().getBlock(), - GTMaterials.RawOil.getFluid().defaultFluidState().createLegacyBlock().getBlock(), - GTMaterials.NaturalGas.getFluid().defaultFluidState().createLegacyBlock().getBlock()); + provider.addTag(CustomTags.ENDSTONE_ORE_REPLACEABLES).add(Blocks.END_STONE); + + provider.addTag(BlockTags.REPLACEABLE) + .add(GTMaterials.Oil.getFluid().defaultFluidState().createLegacyBlock().getBlock()) + .add(GTMaterials.OilLight.getFluid().defaultFluidState().createLegacyBlock().getBlock()) + .add(GTMaterials.OilHeavy.getFluid().defaultFluidState().createLegacyBlock().getBlock()) + .add(GTMaterials.RawOil.getFluid().defaultFluidState().createLegacyBlock().getBlock()) + .add(GTMaterials.NaturalGas.getFluid().defaultFluidState().createLegacyBlock().getBlock()); provider.addTag(BlockTags.MINEABLE_WITH_AXE) - .add(TagEntry.element(GTMachines.WOODEN_DRUM.getId())) - .add(TagEntry.element(GTMachines.WOODEN_CRATE.getId())); + .add(GTMachines.WOODEN_DRUM.getBlock()) + .add(GTMachines.WOODEN_CRATE.getBlock()); // always add the wrench/pickaxe tag as a valid tag to mineable/wrench etc. provider.addTag(CustomTags.MINEABLE_WITH_WRENCH) @@ -61,24 +54,14 @@ public static void init(RegistrateTagsProvider provider) { .addOptional(new ResourceLocation("rftoolsutility:matter_receiver")) .addOptional(new ResourceLocation("rftoolsutility:dialing_device")) .addOptional(new ResourceLocation("travelanchors:travel_anchor")); - } - private static void create(RegistrateTagsProvider provider, TagPrefix prefix, Material material, - Block... rls) { - create(provider, ChemicalHelper.getBlockTag(prefix, material), rls); - } - - public static void create(RegistrateTagsProvider provider, TagKey tagKey, Block... rls) { - var builder = provider.addTag(tagKey); - for (Block block : rls) { - builder.add(BuiltInRegistries.BLOCK.getResourceKey(block).get()); - } - } + provider.addTag(CustomTags.CHARCOAL_PILE_IGNITER_WALLS) + .addTag(BlockTags.DIRT) // any dirt blocks + .remove(Blocks.MOSS_BLOCK, Blocks.MUD, Blocks.MUDDY_MANGROVE_ROOTS) // except moss and mud + .add(Blocks.DIRT_PATH) // path blocks + .addTag(Tags.Blocks.SAND).addTag(BlockTags.SAND) // any sand blocks + .addTag(BlockTags.TERRACOTTA); // any terracotta - public static void create(RegistrateTagsProvider provider, TagKey tagKey, ResourceLocation... rls) { - var builder = provider.addTag(tagKey); - for (ResourceLocation rl : rls) { - builder.addOptional(rl); - } + provider.addTag(CustomTags.CLEANROOM_DOORS).add(Blocks.IRON_DOOR).addTag(BlockTags.WOODEN_DOORS); } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/tags/EntityTypeTagLoader.java b/src/main/java/com/gregtechceu/gtceu/data/tags/EntityTypeTagLoader.java index 00567f1f7e2..0241dbae579 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/tags/EntityTypeTagLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/tags/EntityTypeTagLoader.java @@ -2,34 +2,17 @@ import com.gregtechceu.gtceu.data.recipe.CustomTags; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.TagKey; import net.minecraft.world.entity.EntityType; import com.tterrag.registrate.providers.RegistrateTagsProvider; public class EntityTypeTagLoader { - public static void init(RegistrateTagsProvider> provider) { - create(provider, CustomTags.HEAT_IMMUNE, EntityType.BLAZE, EntityType.MAGMA_CUBE, EntityType.WITHER_SKELETON, - EntityType.WITHER); - create(provider, CustomTags.CHEMICAL_IMMUNE, EntityType.SKELETON, EntityType.STRAY); - } - - public static void create(RegistrateTagsProvider> provider, TagKey> tagKey, - EntityType... rls) { - var builder = provider.addTag(tagKey); - for (EntityType entityType : rls) { - builder.add(BuiltInRegistries.ENTITY_TYPE.getResourceKey(entityType).get()); - } - } - - public static void create(RegistrateTagsProvider> provider, TagKey> tagKey, - ResourceLocation... rls) { - var builder = provider.addTag(tagKey); - for (ResourceLocation rl : rls) { - builder.addOptional(rl); - } + public static void init(RegistrateTagsProvider.IntrinsicImpl> provider) { + provider.addTag(CustomTags.HEAT_IMMUNE) + .add(EntityType.BLAZE, EntityType.MAGMA_CUBE) + .add(EntityType.WITHER_SKELETON, EntityType.WITHER); + provider.addTag(CustomTags.CHEMICAL_IMMUNE) + .add(EntityType.SKELETON, EntityType.STRAY); } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/tags/FluidTagLoader.java b/src/main/java/com/gregtechceu/gtceu/data/tags/FluidTagLoader.java index 7db3b089ff5..81b8c437c38 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/tags/FluidTagLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/tags/FluidTagLoader.java @@ -3,30 +3,13 @@ import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.data.recipe.CustomTags; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.TagKey; import net.minecraft.world.level.material.Fluid; import com.tterrag.registrate.providers.RegistrateTagsProvider; public class FluidTagLoader { - public static void init(RegistrateTagsProvider provider) { - create(provider, CustomTags.LIGHTER_FLUIDS, GTMaterials.Butane.getFluid(), GTMaterials.Propane.getFluid()); - } - - public static void create(RegistrateTagsProvider provider, TagKey tag, ResourceLocation... rls) { - var builder = provider.addTag(tag); - for (ResourceLocation rl : rls) { - builder.addOptional(rl); - } - } - - public static void create(RegistrateTagsProvider provider, TagKey tag, Fluid... fluids) { - var builder = provider.addTag(tag); - for (Fluid fluid : fluids) { - builder.add(BuiltInRegistries.FLUID.getResourceKey(fluid).get()); - } + public static void init(RegistrateTagsProvider.IntrinsicImpl provider) { + provider.addTag(CustomTags.LIGHTER_FLUIDS).add(GTMaterials.Butane.getFluid(), GTMaterials.Propane.getFluid()); } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/tags/ItemTagLoader.java b/src/main/java/com/gregtechceu/gtceu/data/tags/ItemTagLoader.java index 3adb237be0b..05d22cd698a 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/tags/ItemTagLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/tags/ItemTagLoader.java @@ -2,70 +2,92 @@ import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.material.MarkerMaterials.Color; -import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.common.data.GTItems; import com.gregtechceu.gtceu.common.data.GTMaterialItems; import com.gregtechceu.gtceu.data.recipe.CustomTags; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagEntry; -import net.minecraft.tags.TagKey; -import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; import net.minecraftforge.common.Tags; -import com.tterrag.registrate.providers.RegistrateTagsProvider; +import com.tterrag.registrate.providers.RegistrateItemTagsProvider; import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.*; import static com.gregtechceu.gtceu.common.data.GTMaterials.*; public class ItemTagLoader { - public static void init(RegistrateTagsProvider provider) { - create(provider, CustomTags.CONCRETE_ITEM, Items.WHITE_CONCRETE, Items.ORANGE_CONCRETE, Items.MAGENTA_CONCRETE, - Items.LIGHT_BLUE_CONCRETE, Items.YELLOW_CONCRETE, Items.LIME_CONCRETE, Items.PINK_CONCRETE, - Items.GRAY_CONCRETE, Items.LIGHT_GRAY_CONCRETE, Items.CYAN_CONCRETE, Items.PURPLE_CONCRETE, - Items.BLUE_CONCRETE, Items.BROWN_CONCRETE, Items.GREEN_CONCRETE, Items.RED_CONCRETE, - Items.BLACK_CONCRETE); - create(provider, CustomTags.CONCRETE_POWDER_ITEM, Items.WHITE_CONCRETE_POWDER, Items.ORANGE_CONCRETE_POWDER, - Items.MAGENTA_CONCRETE_POWDER, Items.LIGHT_BLUE_CONCRETE_POWDER, Items.YELLOW_CONCRETE_POWDER, - Items.LIME_CONCRETE_POWDER, Items.PINK_CONCRETE_POWDER, Items.GRAY_CONCRETE_POWDER, - Items.LIGHT_GRAY_CONCRETE_POWDER, Items.CYAN_CONCRETE_POWDER, Items.PURPLE_CONCRETE_POWDER, - Items.BLUE_CONCRETE_POWDER, Items.BROWN_CONCRETE_POWDER, Items.GREEN_CONCRETE_POWDER, - Items.RED_CONCRETE_POWDER, Items.BLACK_CONCRETE_POWDER); - create(provider, CustomTags.CORAL_BLOCK_ITEMS, Items.BRAIN_CORAL_BLOCK, Items.BUBBLE_CORAL_BLOCK, - Items.FIRE_CORAL_BLOCK, Items.TUBE_CORAL_BLOCK, Items.HORN_CORAL_BLOCK, Items.DEAD_BRAIN_CORAL_BLOCK, - Items.DEAD_BUBBLE_CORAL_BLOCK, Items.DEAD_FIRE_CORAL_BLOCK, Items.DEAD_TUBE_CORAL_BLOCK, - Items.DEAD_HORN_CORAL_BLOCK); - create(provider, CustomTags.CORAL_ITEMS, Items.BRAIN_CORAL, Items.BUBBLE_CORAL, Items.FIRE_CORAL, - Items.TUBE_CORAL, Items.HORN_CORAL, Items.DEAD_BRAIN_CORAL, Items.DEAD_BUBBLE_CORAL, - Items.DEAD_FIRE_CORAL, Items.DEAD_TUBE_CORAL, Items.DEAD_HORN_CORAL, Items.BRAIN_CORAL_FAN, - Items.BUBBLE_CORAL_FAN, Items.FIRE_CORAL_FAN, Items.TUBE_CORAL_FAN, Items.HORN_CORAL_FAN, - Items.DEAD_BRAIN_CORAL_FAN, Items.DEAD_BUBBLE_CORAL_FAN, Items.DEAD_FIRE_CORAL_FAN, - Items.DEAD_TUBE_CORAL_FAN, Items.DEAD_HORN_CORAL_FAN); - create(provider, lens, Color.White, GTMaterialItems.MATERIAL_ITEMS.get(lens, Glass).get()); - create(provider, lens, Color.White, GTMaterialItems.MATERIAL_ITEMS.get(lens, NetherStar).get()); - create(provider, lens, Color.LightBlue, GTMaterialItems.MATERIAL_ITEMS.get(lens, Diamond).get()); - create(provider, lens, Color.Red, GTMaterialItems.MATERIAL_ITEMS.get(lens, Ruby).get()); - create(provider, lens, Color.Green, GTMaterialItems.MATERIAL_ITEMS.get(lens, Emerald).get()); - create(provider, lens, Color.Blue, GTMaterialItems.MATERIAL_ITEMS.get(lens, Sapphire).get()); - create(provider, lens, Color.Purple, GTMaterialItems.MATERIAL_ITEMS.get(lens, Amethyst).get()); - - create(provider, CustomTags.PISTONS, Items.PISTON, Items.STICKY_PISTON); - - create(provider, dye, Color.Brown, GTMaterialItems.MATERIAL_ITEMS.get(dust, MetalMixture).get()); + @SuppressWarnings("DataFlowIssue") + public static void init(RegistrateItemTagsProvider provider) { + provider.addTag(CustomTags.DOUGHS).addTag(CustomTags.WHEAT_DOUGHS); + provider.addTag(CustomTags.WHEAT_GRAINS).add(GTMaterialItems.MATERIAL_ITEMS.get(dust, Wheat).get()); + provider.addTag(CustomTags.GRAINS).addTag(CustomTags.WHEAT_GRAINS); + + provider.copy(CustomTags.CONCRETE_BLOCK, CustomTags.CONCRETE_ITEM); + provider.copy(CustomTags.CONCRETE_POWDER_BLOCK, CustomTags.CONCRETE_POWDER_ITEM); + + // spotless:off + // the coral blocks: alive, dead, both + provider.addTag(CustomTags.ALIVE_CORAL_BLOCK_ITEMS) + .add(Items.BRAIN_CORAL_BLOCK, Items.BUBBLE_CORAL_BLOCK, Items.FIRE_CORAL_BLOCK, Items.TUBE_CORAL_BLOCK, Items.HORN_CORAL_BLOCK); + provider.addTag(CustomTags.DEAD_CORAL_BLOCK_ITEMS) + .add(Items.DEAD_BRAIN_CORAL_BLOCK, Items.DEAD_BUBBLE_CORAL_BLOCK, Items.DEAD_FIRE_CORAL_BLOCK, Items.DEAD_TUBE_CORAL_BLOCK, Items.DEAD_HORN_CORAL_BLOCK); + provider.addTag(CustomTags.CORAL_BLOCK_ITEMS) + .addTag(CustomTags.ALIVE_CORAL_BLOCK_ITEMS) + .addTag(CustomTags.DEAD_CORAL_BLOCK_ITEMS); + + // the coral plants (the V-shaped pointy ones) + provider.addTag(CustomTags.ALIVE_CORAL_PLANT_ITEMS) + .add(Items.BRAIN_CORAL, Items.BUBBLE_CORAL, Items.FIRE_CORAL, Items.TUBE_CORAL, Items.HORN_CORAL); + provider.addTag(CustomTags.DEAD_CORAL_PLANT_ITEMS) + .add(Items.DEAD_BRAIN_CORAL, Items.DEAD_BUBBLE_CORAL, Items.DEAD_FIRE_CORAL, Items.DEAD_TUBE_CORAL, Items.DEAD_HORN_CORAL); + provider.addTag(CustomTags.CORAL_PLANT_ITEMS) + .addTag(CustomTags.ALIVE_CORAL_PLANT_ITEMS) + .addTag(CustomTags.DEAD_CORAL_PLANT_ITEMS); + + // the coral fans (the flat circular ones) + provider.addTag(CustomTags.ALIVE_CORAL_FAN_ITEMS) + .add(Items.BRAIN_CORAL_FAN, Items.BUBBLE_CORAL_FAN, Items.FIRE_CORAL_FAN, Items.TUBE_CORAL_FAN, Items.HORN_CORAL_FAN); + provider.addTag(CustomTags.DEAD_CORAL_FAN_ITEMS) + .add(Items.DEAD_BRAIN_CORAL_FAN, Items.DEAD_BUBBLE_CORAL_FAN, Items.DEAD_FIRE_CORAL_FAN, Items.DEAD_TUBE_CORAL_FAN, Items.DEAD_HORN_CORAL_FAN); + provider.addTag(CustomTags.CORAL_FAN_ITEMS) + .addTag(CustomTags.ALIVE_CORAL_FAN_ITEMS) + .addTag(CustomTags.DEAD_CORAL_FAN_ITEMS); + + // all the coral items (except the blocks) + provider.addTag(CustomTags.ALIVE_CORAL_ITEMS) + .addTag(CustomTags.ALIVE_CORAL_PLANT_ITEMS) + .addTag(CustomTags.ALIVE_CORAL_FAN_ITEMS); + provider.addTag(CustomTags.DEAD_CORAL_ITEMS) + .addTag(CustomTags.DEAD_CORAL_PLANT_ITEMS) + .addTag(CustomTags.DEAD_CORAL_FAN_ITEMS); + provider.addTag(CustomTags.CORAL_ITEMS) + .addTag(CustomTags.ALIVE_CORAL_ITEMS) + .addTag(CustomTags.DEAD_CORAL_ITEMS); + // spotless:on + + provider.addTag(ChemicalHelper.getTag(lens, Color.White)) + .add(GTMaterialItems.MATERIAL_ITEMS.get(lens, Glass).get()) + .add(GTMaterialItems.MATERIAL_ITEMS.get(lens, NetherStar).get()); + provider.addTag(ChemicalHelper.getTag(lens, Color.LightBlue)) + .add(GTMaterialItems.MATERIAL_ITEMS.get(lens, Diamond).get()); + provider.addTag(ChemicalHelper.getTag(lens, Color.Red)) + .add(GTMaterialItems.MATERIAL_ITEMS.get(lens, Ruby).get()); + provider.addTag(ChemicalHelper.getTag(lens, Color.Green)) + .add(GTMaterialItems.MATERIAL_ITEMS.get(lens, Emerald).get()); + provider.addTag(ChemicalHelper.getTag(lens, Color.Blue)) + .add(GTMaterialItems.MATERIAL_ITEMS.get(lens, Sapphire).get()); + provider.addTag(ChemicalHelper.getTag(lens, Color.Purple)) + .add(GTMaterialItems.MATERIAL_ITEMS.get(lens, Amethyst).get()); + + provider.addTag(CustomTags.PISTONS).add(Items.PISTON, Items.STICKY_PISTON); // add treated wood stick to vanilla sticks tag // noinspection DataFlowIssue ChemicalHelper#getTag can't return null with treated wood rod provider.addTag(Tags.Items.RODS_WOODEN) - .add(TagEntry.element(GTMaterialItems.MATERIAL_ITEMS.get(TagPrefix.rod, TreatedWood).getId())); - - // todo match ae2 certus quartz tag - // OreDictionary.registerUnificationEntry("crystalCertusQuartz", ChemicalHelper.get(TagPrefix.gem, - // GTMaterials.CertusQuartz)); + .add(GTMaterialItems.MATERIAL_ITEMS.get(TagPrefix.rod, TreatedWood).get()); // add treated and untreated wood plates to vanilla planks tag provider.addTag(ItemTags.PLANKS) @@ -164,28 +186,8 @@ public static void init(RegistrateTagsProvider provider) { .addOptional(GTItems.SENSOR_UIV.getId()) .addOptional(GTItems.SENSOR_UXV.getId()) .addOptional(GTItems.SENSOR_OpV.getId()); - } - - private static void create(RegistrateTagsProvider provider, TagPrefix prefix, Material material, - Item... rls) { - create(provider, ChemicalHelper.getTag(prefix, material), rls); - } - - public static void create(RegistrateTagsProvider provider, TagKey tagKey, ResourceLocation... rls) { - var builder = provider.addTag(tagKey); - for (ResourceLocation rl : rls) { - builder.addOptional(rl); - } - } - - public static void create(RegistrateTagsProvider provider, TagKey tagKey, Item... rls) { - var builder = provider.addTag(tagKey); - for (Item item : rls) { - builder.add(BuiltInRegistries.ITEM.getResourceKey(item).get()); - } - } - private static ResourceLocation rl(String name) { - return new ResourceLocation(name); + provider.addTag(CustomTags.TOOLS_IGNITER) + .addTag(ItemTags.CREEPER_IGNITERS); } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/tags/TagsHandler.java b/src/main/java/com/gregtechceu/gtceu/data/tags/TagsHandler.java index 006733a6895..93cd7e46ac6 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/tags/TagsHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/tags/TagsHandler.java @@ -2,41 +2,14 @@ import com.gregtechceu.gtceu.api.data.chemical.material.MarkerMaterials.Color; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.material.Fluid; - -import com.tterrag.registrate.providers.RegistrateTagsProvider; import static com.gregtechceu.gtceu.api.data.chemical.material.ItemMaterialData.registerMaterialEntry; import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.*; import static com.gregtechceu.gtceu.common.data.GTMaterials.*; -/** - * @author KilaBash - * @date 2023/2/28 - * @implNote ItemTagsHandler - */ public class TagsHandler { - public static void initItem(RegistrateTagsProvider provider) { - ItemTagLoader.init(provider); - } - - public static void initBlock(RegistrateTagsProvider provider) { - BlockTagLoader.init(provider); - } - - public static void initFluid(RegistrateTagsProvider provider) { - FluidTagLoader.init(provider); - } - - public static void initEntity(RegistrateTagsProvider> provider) { - EntityTypeTagLoader.init(provider); - } - public static void initExtraUnificationEntries() { registerMaterialEntry(Items.CLAY_BALL, ingot, Clay); diff --git a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java index f30851df3da..4394258a4bf 100644 --- a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java @@ -3,26 +3,24 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.block.MaterialBlock; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.IElectricItem; import com.gregtechceu.gtceu.api.capability.IMedicalConditionTracker; import com.gregtechceu.gtceu.api.capability.compat.EUToFEProvider; import com.gregtechceu.gtceu.api.capability.forge.GTCapability; +import com.gregtechceu.gtceu.api.cosmetics.CapeRegistry; +import com.gregtechceu.gtceu.api.cosmetics.event.RegisterGTCapesEvent; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.HazardProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.medicalcondition.MedicalCondition; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; -import com.gregtechceu.gtceu.api.item.DrumMachineItem; -import com.gregtechceu.gtceu.api.item.IComponentItem; -import com.gregtechceu.gtceu.api.item.TagPrefixItem; import com.gregtechceu.gtceu.api.item.armor.ArmorComponentItem; import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine; -import com.gregtechceu.gtceu.api.misc.forge.FilteredFluidHandlerItemStack; +import com.gregtechceu.gtceu.api.misc.virtualregistry.VirtualEnderRegistry; import com.gregtechceu.gtceu.api.pattern.MultiblockWorldSavedData; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.capability.EnvironmentalHazardSavedData; @@ -32,15 +30,20 @@ import com.gregtechceu.gtceu.common.commands.GTCommands; import com.gregtechceu.gtceu.common.commands.HazardCommands; import com.gregtechceu.gtceu.common.commands.MedicalConditionCommands; +import com.gregtechceu.gtceu.common.cosmetics.GTCapes; import com.gregtechceu.gtceu.common.data.*; import com.gregtechceu.gtceu.common.data.machines.GTAEMachines; -import com.gregtechceu.gtceu.common.fluid.potion.PotionFluidHelper; +import com.gregtechceu.gtceu.common.fluid.potion.BottleItemFluidHandler; +import com.gregtechceu.gtceu.common.fluid.potion.PotionItemFluidHandler; import com.gregtechceu.gtceu.common.item.ToggleEnergyConsumerBehavior; import com.gregtechceu.gtceu.common.item.armor.IJetpack; import com.gregtechceu.gtceu.common.item.armor.QuarkTechSuite; import com.gregtechceu.gtceu.common.machine.owner.MachineOwner; import com.gregtechceu.gtceu.common.network.GTNetwork; -import com.gregtechceu.gtceu.common.network.packets.*; +import com.gregtechceu.gtceu.common.network.packets.SPacketSendWorldID; +import com.gregtechceu.gtceu.common.network.packets.SPacketSyncBedrockOreVeins; +import com.gregtechceu.gtceu.common.network.packets.SPacketSyncFluidVeins; +import com.gregtechceu.gtceu.common.network.packets.SPacketSyncOreVeins; import com.gregtechceu.gtceu.common.network.packets.hazard.SPacketAddHazardZone; import com.gregtechceu.gtceu.common.network.packets.hazard.SPacketRemoveHazardZone; import com.gregtechceu.gtceu.common.network.packets.hazard.SPacketSyncLevelHazards; @@ -67,15 +70,15 @@ import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.monster.Zombie; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.PotionItem; -import net.minecraft.world.item.alchemy.PotionUtils; import net.minecraft.world.level.ChunkPos; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.capabilities.ICapabilityProvider; import net.minecraftforge.common.capabilities.ICapabilitySerializable; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.event.*; @@ -91,10 +94,6 @@ import net.minecraftforge.eventbus.api.Event; import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.IFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandlerItem; -import net.minecraftforge.fluids.capability.templates.FluidHandlerItemStack; import net.minecraftforge.fml.LogicalSide; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.items.IItemHandler; @@ -108,86 +107,18 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import static com.gregtechceu.gtceu.utils.FormattingUtil.toLowerCaseUnder; +import static com.gregtechceu.gtceu.utils.FormattingUtil.toLowerCaseUnderscore; -/** - * @author KilaBash - * @date 2022/8/27 - * @implNote ForgeCommonEventListener - */ @Mod.EventBusSubscriber(modid = GTCEu.MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class ForgeCommonEventListener { @SubscribeEvent public static void registerItemStackCapabilities(AttachCapabilitiesEvent event) { final ItemStack itemStack = event.getObject(); - if (itemStack.getItem() instanceof IComponentItem componentItem) { - event.addCapability(GTCEu.id("capability"), new ICapabilityProvider() { - - @NotNull - @Override - public LazyOptional getCapability(@NotNull Capability cap, @Nullable Direction side) { - return componentItem.getCapability(itemStack, cap); - } - }); - } else if (itemStack.getItem() instanceof DrumMachineItem drumMachineItem) { - event.addCapability(GTCEu.id("fluid"), new ICapabilityProvider() { - - @Override - public @NotNull LazyOptional getCapability(@NotNull Capability capability, - @Nullable Direction arg) { - return drumMachineItem.getCapability(itemStack, capability); - } - }); - } else if (itemStack.getItem() instanceof PotionItem) { - LazyOptional handler = LazyOptional.of(() -> { - var fluidHandler = new FluidHandlerItemStack.SwapEmpty(itemStack, new ItemStack(Items.GLASS_BOTTLE), - PotionFluidHelper.BOTTLE_AMOUNT) { - - @Override - protected void setFluid(FluidStack fluid) { - // do nada - } - - @Override - public @NotNull FluidStack getFluid() { - return PotionFluidHelper.getFluidFromPotionItem(itemStack, PotionFluidHelper.BOTTLE_AMOUNT); - } - }; - fluidHandler.fill(PotionFluidHelper.getFluidFromPotionItem(itemStack, PotionFluidHelper.BOTTLE_AMOUNT), - IFluidHandler.FluidAction.EXECUTE); - return fluidHandler; - }); - event.addCapability(GTCEu.id("potion_item_handler"), new ICapabilityProvider() { - - @Override - public @NotNull LazyOptional getCapability(@NotNull Capability cap, - @Nullable Direction side) { - return ForgeCapabilities.FLUID_HANDLER_ITEM.orEmpty(cap, handler); - } - }); + if (itemStack.getItem() instanceof PotionItem) { + event.addCapability(GTCEu.id("potion_item_handler"), new PotionItemFluidHandler(itemStack)); } else if (itemStack.is(Items.GLASS_BOTTLE)) { - LazyOptional handler = LazyOptional.of(() -> new FilteredFluidHandlerItemStack(itemStack, - 250, s -> s.getFluid().is(CustomTags.POTION_FLUIDS)) { - - @Override - protected void setFluid(FluidStack fluid) { - super.setFluid(fluid); - if (!fluid.isEmpty()) { - container = PotionUtils.setPotion(new ItemStack(Items.POTION), - PotionUtils.getPotion(fluid.getTag())); - } - } - }); - event.addCapability(GTCEu.id("bottle_item_handler"), new ICapabilityProvider() { - - @Override - public @NotNull LazyOptional getCapability(@NotNull Capability cap, - @Nullable Direction side) { - return ForgeCapabilities.FLUID_HANDLER_ITEM.orEmpty(cap, handler); - } - }); - + event.addCapability(GTCEu.id("bottle_item_handler"), new BottleItemFluidHandler(itemStack)); } } @@ -218,10 +149,16 @@ public void deserializeNBT(CompoundTag arg) { } @SubscribeEvent - public static void attachCapabilities(AttachCapabilitiesEvent event) { + public static void registerBlockEntityCapabilities(AttachCapabilitiesEvent event) { event.addCapability(GTCEu.id("fe_capability"), new EUToFEProvider(event.getObject())); } + @SubscribeEvent + public static void registerCapes(RegisterGTCapesEvent event) { + GTCapes.registerGTCapes(event); + GTCapes.giveDevCapes(event); + } + @SubscribeEvent public static void tickPlayerInventoryHazards(TickEvent.PlayerTickEvent event) { if (event.side == LogicalSide.CLIENT || event.phase != TickEvent.Phase.END) { @@ -270,8 +207,8 @@ public static void onMobEffectEvent(MobEffectEvent.Applicable event) { if (item.is(GTItems.QUANTUM_HELMET.asItem()) && GTCapabilityHelper.getElectricItem(item) != null) { IElectricItem helmet = GTCapabilityHelper.getElectricItem(item); MobEffectInstance effect = event.getEffectInstance(); - Integer cost = QuarkTechSuite.potionRemovalCost.get(effect.getEffect()); - if (cost != null) { + int cost = QuarkTechSuite.potionRemovalCost.getOrDefault(effect.getEffect(), -1); + if (cost != -1) { cost = cost * (effect.getAmplifier() + 1); if (helmet.canUse(cost)) { helmet.discharge(cost, helmet.getTier(), true, false, false); @@ -313,10 +250,11 @@ public static void registerCommand(RegisterCommandsEvent event) { @SubscribeEvent public static void registerReloadListeners(AddReloadListenerEvent event) { + GTRegistries.updateFrozenRegistry(event.getRegistryAccess()); + event.addListener(new GTOreLoader()); event.addListener(new BedrockFluidLoader()); event.addListener(new BedrockOreLoader()); - GTRegistries.updateFrozenRegistry(event.getRegistryAccess()); } @SubscribeEvent @@ -352,12 +290,15 @@ public static void worldUnload(LevelEvent.Unload event) { @SubscribeEvent public static void serverStarting(ServerStartingEvent event) { - WorldIDSaveData.init(event.getServer().overworld()); + ServerLevel mainLevel = event.getServer().overworld(); + WorldIDSaveData.init(mainLevel); + CapeRegistry.registerToServer(mainLevel); } @SubscribeEvent public static void serverStopped(ServerStoppedEvent event) { ServerCache.instance.clear(); + VirtualEnderRegistry.release(); } @SubscribeEvent @@ -372,16 +313,19 @@ public static void serverStopping(ServerStoppingEvent event) { @SubscribeEvent public static void onPlayerJoinServer(PlayerEvent.PlayerLoggedInEvent event) { - if (event.getEntity() instanceof ServerPlayer serverPlayer) { - GTNetwork.NETWORK.sendToPlayer(new SPacketSendWorldID(), serverPlayer); + Player player = event.getEntity(); + if (player instanceof ServerPlayer serverPlayer) { + GTNetwork.sendToPlayer(serverPlayer, new SPacketSendWorldID()); if (!ConfigHolder.INSTANCE.gameplay.environmentalHazards) return; ServerLevel level = serverPlayer.serverLevel(); var data = EnvironmentalHazardSavedData.getOrCreate(level); - GTNetwork.NETWORK.sendToPlayer(new SPacketSyncLevelHazards(data.getHazardZones()), serverPlayer); + GTNetwork.sendToPlayer(serverPlayer, new SPacketSyncLevelHazards(data.getHazardZones())); } + CapeRegistry.detectNewCapes(player); + CapeRegistry.loadCurrentCapesOnLogin(player); } @SubscribeEvent @@ -389,17 +333,16 @@ public static void onDatapackSync(OnDatapackSyncEvent event) { ServerPlayer player = event.getPlayer(); if (player == null) { // if player == null, the /reload command was ran. sync to all players. - GTNetwork.NETWORK.sendToAll(new SPacketSyncOreVeins(GTRegistries.ORE_VEINS.registry())); - GTNetwork.NETWORK.sendToAll(new SPacketSyncFluidVeins(GTRegistries.BEDROCK_FLUID_DEFINITIONS.registry())); - GTNetwork.NETWORK - .sendToAll(new SPacketSyncBedrockOreVeins(GTRegistries.BEDROCK_ORE_DEFINITIONS.registry())); + GTNetwork.sendToAll(new SPacketSyncOreVeins(GTRegistries.ORE_VEINS.registry())); + GTNetwork.sendToAll(new SPacketSyncFluidVeins(GTRegistries.BEDROCK_FLUID_DEFINITIONS.registry())); + GTNetwork.sendToAll(new SPacketSyncBedrockOreVeins(GTRegistries.BEDROCK_ORE_DEFINITIONS.registry())); } else { // else it's a player logging in. sync to only that player. - GTNetwork.NETWORK.sendToPlayer(new SPacketSyncOreVeins(GTRegistries.ORE_VEINS.registry()), player); - GTNetwork.NETWORK.sendToPlayer(new SPacketSyncFluidVeins(GTRegistries.BEDROCK_FLUID_DEFINITIONS.registry()), - player); - GTNetwork.NETWORK.sendToPlayer( - new SPacketSyncBedrockOreVeins(GTRegistries.BEDROCK_ORE_DEFINITIONS.registry()), player); + GTNetwork.sendToPlayer(player, new SPacketSyncOreVeins(GTRegistries.ORE_VEINS.registry())); + GTNetwork.sendToPlayer(player, + new SPacketSyncFluidVeins(GTRegistries.BEDROCK_FLUID_DEFINITIONS.registry())); + GTNetwork.sendToPlayer(player, + new SPacketSyncBedrockOreVeins(GTRegistries.BEDROCK_ORE_DEFINITIONS.registry())); } } @@ -476,8 +419,7 @@ public static void onPlayerLevelChange(PlayerEvent.PlayerChangedDimensionEvent e ServerLevel newLevel = event.getEntity().getServer().getLevel(event.getTo()); var data = EnvironmentalHazardSavedData.getOrCreate(newLevel); - GTNetwork.NETWORK.sendToPlayer(new SPacketSyncLevelHazards(data.getHazardZones()), - (ServerPlayer) event.getEntity()); + GTNetwork.sendToPlayer((ServerPlayer) event.getEntity(), new SPacketSyncLevelHazards(data.getHazardZones())); } @SubscribeEvent @@ -488,7 +430,7 @@ public static void onChunkWatch(ChunkWatchEvent.Watch event) { var zone = data.getZoneByPos(pos); if (zone != null) { - GTNetwork.NETWORK.sendToPlayer(new SPacketAddHazardZone(pos, zone), player); + GTNetwork.sendToPlayer(player, new SPacketAddHazardZone(pos, zone)); } } @@ -500,7 +442,20 @@ public static void onChunkUnWatch(ChunkWatchEvent.UnWatch event) { var zone = data.getZoneByPos(pos); if (zone != null) { - GTNetwork.NETWORK.sendToPlayer(new SPacketRemoveHazardZone(pos), player); + GTNetwork.sendToPlayer(player, new SPacketRemoveHazardZone(pos)); + } + } + + @SubscribeEvent + public static void onEquipmentChange(LivingEquipmentChangeEvent event) { + if (!event.getSlot().isArmor()) return; + if (!(event.getEntity() instanceof Player player)) return; + + if (!event.getFrom().isEmpty() && event.getFrom().getItem() instanceof ArmorComponentItem armor) { + armor.getArmorLogic().onUnequip(player); + } + if (!event.getTo().isEmpty() && event.getTo().getItem() instanceof ArmorComponentItem armor) { + armor.getArmorLogic().onEquip(player); } } @@ -632,13 +587,13 @@ public static void remapIds(MissingMappingsEvent event) { }); for (TagPrefix prefix : TagPrefix.values()) { - String first = prefix.invertedName ? toLowerCaseUnder(prefix.name) : "(.+?)"; - String last = prefix.invertedName ? "(.+?)" : toLowerCaseUnder(prefix.name); + String first = prefix.invertedName ? toLowerCaseUnderscore(prefix.name) : "(.+?)"; + String last = prefix.invertedName ? "(.+?)" : toLowerCaseUnderscore(prefix.name); Pattern idPattern = Pattern.compile(first + "_" + last); event.getMappings(Registries.BLOCK, GTCEu.MOD_ID).forEach(mapping -> { Matcher matcher = idPattern.matcher(mapping.getKey().getPath()); if (matcher.matches()) { - BlockEntry block = GTMaterialBlocks.MATERIAL_BLOCKS.get(prefix, + BlockEntry block = GTMaterialBlocks.MATERIAL_BLOCKS.get(prefix, GTCEuAPI.materialManager.getRegistry(GTCEu.MOD_ID).get(matcher.group(1))); if (block != null && block.isPresent()) { mapping.remap(block.get()); @@ -648,12 +603,12 @@ public static void remapIds(MissingMappingsEvent event) { event.getMappings(Registries.ITEM, GTCEu.MOD_ID).forEach(mapping -> { Matcher matcher = idPattern.matcher(mapping.getKey().getPath()); if (matcher.matches()) { - BlockEntry block = GTMaterialBlocks.MATERIAL_BLOCKS.get(prefix, + BlockEntry block = GTMaterialBlocks.MATERIAL_BLOCKS.get(prefix, GTCEuAPI.materialManager.getRegistry(GTCEu.MOD_ID).get(matcher.group(1))); if (block != null && block.isPresent()) { mapping.remap(block.asItem()); } else { - ItemEntry item = GTMaterialItems.MATERIAL_ITEMS.get(prefix, + ItemEntry item = GTMaterialItems.MATERIAL_ITEMS.get(prefix, GTCEuAPI.materialManager.getRegistry(GTCEu.MOD_ID).get(matcher.group(1))); if (item != null && item.isPresent()) { mapping.remap(item.asItem()); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/GTAEPlaceholders.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/GTAEPlaceholders.java new file mode 100644 index 00000000000..fc5d0466e2e --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/GTAEPlaceholders.java @@ -0,0 +1,240 @@ +package com.gregtechceu.gtceu.integration.ae2; + +import com.gregtechceu.gtceu.api.cover.filter.ItemFilter; +import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.placeholder.*; +import com.gregtechceu.gtceu.api.placeholder.exceptions.*; +import com.gregtechceu.gtceu.utils.GTStringUtils; + +import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.material.Fluid; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.registries.ForgeRegistries; + +import appeng.api.networking.GridHelper; +import appeng.api.networking.IGrid; +import appeng.api.networking.IGridNode; +import appeng.api.networking.IInWorldGridNodeHost; +import appeng.api.networking.crafting.CraftingJobStatus; +import appeng.api.networking.crafting.ICraftingCPU; +import appeng.api.networking.crafting.ICraftingService; +import appeng.api.stacks.AEFluidKey; +import appeng.api.stacks.AEItemKey; +import appeng.api.stacks.GenericStack; +import appeng.api.stacks.KeyCounter; +import appeng.me.helpers.IGridConnectedBlockEntity; +import org.jetbrains.annotations.Nullable; +import org.joml.Vector3i; + +import java.util.List; + +import javax.annotation.ParametersAreNonnullByDefault; + +@MethodsReturnNonnullByDefault +@ParametersAreNonnullByDefault +public class GTAEPlaceholders { + + private GTAEPlaceholders() {} + + private static IGrid getGrid(PlaceholderContext ctx) throws PlaceholderException { + if (ctx.pos() == null) throw new NotSupportedException(); + IInWorldGridNodeHost nodeHost = GridHelper.getNodeHost(ctx.level(), ctx.pos()); + if (nodeHost != null) { + IGridNode node = nodeHost.getGridNode(ctx.side()); + if (node != null) return node.getGrid(); + } ; + BlockEntity blockEntity = ctx.level().getBlockEntity(ctx.pos()); + if (blockEntity instanceof IMachineBlockEntity machineBlockEntity) { + if (machineBlockEntity.getMetaMachine() instanceof IGridConnectedBlockEntity gridMachine) { + IGrid nullable = gridMachine.getMainNode().getGrid(); + if (nullable == null) throw new NoMENetworkException(); + return nullable; + } + } + if (blockEntity instanceof IGridConnectedBlockEntity gridBlockEntity) { + IGridNode node = gridBlockEntity.getGridNode(); + if (node != null) return gridBlockEntity.getGridNode().getGrid(); + } + throw new NoMENetworkException(); + } + + private static long countItems(String id, IGrid grid) { + Item item = ForgeRegistries.ITEMS.getValue(new ResourceLocation(id)); + if (item == null) return 0; + GenericStack stack = GenericStack.fromItemStack(new ItemStack(item, 1)); + if (stack == null) return 0; + return grid.getStorageService().getInventory().getAvailableStacks().get(stack.what()); + } + + private static long countItems(@Nullable ItemFilter filter, IGrid grid) { + KeyCounter stacks = grid.getStorageService().getCachedInventory(); + long count = 0; + for (var stack : stacks) { + if (stack.getKey() instanceof AEItemKey && + (filter == null || filter.test(stack.getKey().wrapForDisplayOrFilter()))) + count += stack.getLongValue(); + } + return count; + } + + private static long countFluids(@Nullable String id, IGrid grid) { + if (id == null) { + KeyCounter stacks = grid.getStorageService().getCachedInventory(); + long count = 0; + for (var stack : stacks) { + if (stack.getKey() instanceof AEFluidKey) count += stack.getLongValue(); + } + return count; + } + Fluid fluid = ForgeRegistries.FLUIDS.getValue(new ResourceLocation(id)); + if (fluid == null) return 0; + GenericStack stack = GenericStack.fromFluidStack(new FluidStack(fluid, 1)); + if (stack == null) return 0; + return grid.getStorageService().getInventory().getAvailableStacks().get(stack.what()); + } + + private static Vector3i getSpatialSize(IGrid grid) { + BlockPos start = grid.getSpatialService().getMin(); + BlockPos end = grid.getSpatialService().getMax(); + BlockPos tmp = end.subtract(start); + return new Vector3i(tmp.getX(), tmp.getY(), tmp.getZ()).absolute(); + } + + public static void init() { + PlaceholderHandler.addPlaceholder(new Placeholder("ae2itemCount") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + IGrid grid = getGrid(ctx); + if (args.isEmpty()) return MultiLineComponent.literal(countItems((ItemFilter) null, grid)); + if (args.size() == 1) + return MultiLineComponent.literal(countItems(GTStringUtils.componentsToString(args.get(0)), grid)); + if (GTStringUtils.equals(args.get(0), "filter")) { + int slot = PlaceholderUtils.toInt(args.get(1)); + try { + PlaceholderUtils.checkRange("slot index", 1, 8, slot); + if (ctx.itemStackHandler() == null) throw new NotSupportedException(); + return MultiLineComponent.literal(countItems( + ItemFilter.loadFilter(ctx.itemStackHandler().getStackInSlot(slot - 1)), grid)); + } catch (NullPointerException e) { + throw new MissingItemException("filter", slot); + } + } + throw new InvalidArgsException(); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("ae2fluidCount") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + IGrid grid = getGrid(ctx); + if (args.isEmpty()) return MultiLineComponent.literal(countFluids(null, grid)); + if (args.size() == 1) + return MultiLineComponent.literal(countFluids(GTStringUtils.componentsToString(args.get(0)), grid)); + throw new WrongNumberOfArgsException(1, args.size()); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("ae2power") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + IGrid grid = getGrid(ctx); + PlaceholderUtils.checkArgs(args, 0); + return MultiLineComponent.literal(grid.getEnergyService().getStoredPower()); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("ae2maxPower") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + IGrid grid = getGrid(ctx); + PlaceholderUtils.checkArgs(args, 0); + return MultiLineComponent.literal(grid.getEnergyService().getMaxStoredPower()); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("ae2powerUsage") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + IGrid grid = getGrid(ctx); + PlaceholderUtils.checkArgs(args, 0); + return MultiLineComponent.literal(grid.getEnergyService().getAvgPowerUsage()); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("ae2spatial") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + IGrid grid = getGrid(ctx); + PlaceholderUtils.checkArgs(args, 1); + if (GTStringUtils.equals(args.get(0), "power")) { + return MultiLineComponent.literal(grid.getSpatialService().requiredPower()); + } else if (GTStringUtils.equals(args.get(0), "efficiency")) { + return MultiLineComponent.literal(grid.getSpatialService().currentEfficiency()); + } else if (GTStringUtils.equals(args.get(0), "sizeX")) { + return MultiLineComponent.literal(getSpatialSize(grid).x); + } else if (GTStringUtils.equals(args.get(0), "sizeY")) { + return MultiLineComponent.literal(getSpatialSize(grid).y); + } else if (GTStringUtils.equals(args.get(0), "sizeZ")) { + return MultiLineComponent.literal(getSpatialSize(grid).z); + } else throw new InvalidArgsException(); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("ae2crafting") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + IGrid grid = getGrid(ctx); + PlaceholderUtils.checkArgs(args, 1, true); + ICraftingService crafting = grid.getCraftingService(); + if (GTStringUtils.equals(args.get(0), "get")) { + if (GTStringUtils.equals(args.get(1), "amount")) + return MultiLineComponent.literal(crafting.getCpus().size()); + int index = PlaceholderUtils.toInt(args.get(1)); + int i = 0; + for (ICraftingCPU cpu : crafting.getCpus()) { + if (index - 1 == i) { + CraftingJobStatus job = cpu.getJobStatus(); + if (GTStringUtils.equals(args.get(2), "storage")) + return MultiLineComponent.literal(cpu.getAvailableStorage()); + else if (GTStringUtils.equals(args.get(2), "threads")) + return MultiLineComponent.literal(cpu.getCoProcessors()); + else if (GTStringUtils.equals(args.get(2), "name")) + return MultiLineComponent + .of(cpu.getName() == null ? Component.literal("Crafting CPU " + i) : + cpu.getName().copy()); + else if (GTStringUtils.equals(args.get(2), "selectionMode")) + return MultiLineComponent.literal(cpu.getSelectionMode().name()); + else if (job == null) return MultiLineComponent.literal(0); + else if (GTStringUtils.equals(args.get(2), "amount")) + return MultiLineComponent.literal(job.crafting().amount()); + else if (GTStringUtils.equals(args.get(2), "item")) + return MultiLineComponent.of(job.crafting().what().getDisplayName().copy()); + else if (GTStringUtils.equals(args.get(2), "progress")) + return MultiLineComponent.literal(job.progress()); + else if (GTStringUtils.equals(args.get(2), "time")) + return MultiLineComponent.literal(job.elapsedTimeNanos()); + else throw new InvalidArgsException(); + } + i++; + } + throw new OutOfRangeException("cpu number", 1, crafting.getCpus().size(), index); + } // else if (GTStringUtils.equals(args.get(0), "request")) {} gonna implement that someday :) + throw new InvalidArgsException(); + } + }); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AEFluidConfigWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AEFluidConfigWidget.java index a97ff4eeca2..2ebe1b3164e 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AEFluidConfigWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AEFluidConfigWidget.java @@ -7,11 +7,6 @@ import appeng.api.stacks.GenericStack; -/** - * @Author GlodBlock - * @Description Display {@link net.minecraftforge.fluids.FluidStack} config - * @Date 2023/4/21-1:45 - */ public class AEFluidConfigWidget extends ConfigWidget { private final ExportOnlyAEFluidList fluidList; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AEItemConfigWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AEItemConfigWidget.java index 8ffe8140eba..167afbb34a5 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AEItemConfigWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AEItemConfigWidget.java @@ -7,11 +7,6 @@ import appeng.api.stacks.GenericStack; -/** - * @Author GlodBlock - * @Description Display {@link net.minecraft.world.item.ItemStack} config - * @Date 2023/4/22-1:02 - */ public class AEItemConfigWidget extends ConfigWidget { private final ExportOnlyAEItemList itemList; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AmountSetWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AmountSetWidget.java index c27bc5babd2..1139bd36c2f 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AmountSetWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AmountSetWidget.java @@ -18,11 +18,6 @@ import static com.lowdragmc.lowdraglib.gui.util.DrawerHelper.drawStringSized; -/** - * @Author GlodBlock - * @Description The amount set widget for config slot - * @Date 2023/4/21-21:20 - */ public class AmountSetWidget extends Widget { private int index = -1; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEFluidDisplayWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEFluidDisplayWidget.java index cc1e11d916e..08dd66ce998 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEFluidDisplayWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEFluidDisplayWidget.java @@ -28,9 +28,7 @@ import static com.lowdragmc.lowdraglib.gui.util.DrawerHelper.drawText; /** - * @author GlodBlock - * @ Display a certain {@link FluidStack} element. - * @date 2023/4/19-0:30 + * Display a certain {@link FluidStack} element. */ public class AEFluidDisplayWidget extends Widget { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEItemDisplayWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEItemDisplayWidget.java index 17109ab8e1f..3c28a821248 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEItemDisplayWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEItemDisplayWidget.java @@ -19,9 +19,7 @@ import static com.lowdragmc.lowdraglib.gui.util.DrawerHelper.drawText; /** - * @Author GlodBlock - * @Description Display a certain {@link appeng.api.stacks.GenericStack} element. - * @Date 2023/4/19-21:23 + * Display a certain {@link appeng.api.stacks.GenericStack} element. */ public class AEItemDisplayWidget extends Widget { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEListGridWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEListGridWidget.java index 496e1d3d29a..fe52076fd63 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEListGridWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEListGridWidget.java @@ -20,9 +20,7 @@ import java.util.List; /** - * @Author GlodBlock - * @Description A display only widget for {@link KeyStorage} - * @Date 2023/4/19-0:18 + * A display only widget for {@link KeyStorage} */ public abstract class AEListGridWidget extends DraggableScrollableWidgetGroup { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEConfigSlotWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEConfigSlotWidget.java index 71c10c62e2b..b6d04d492ce 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEConfigSlotWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEConfigSlotWidget.java @@ -23,11 +23,6 @@ import static com.lowdragmc.lowdraglib.gui.util.DrawerHelper.drawGradientRect; -/** - * @Author GlodBlock - * @Description A configurable slot - * @Date 2023/4/22-0:30 - */ public class AEConfigSlotWidget extends Widget { protected ConfigWidget parentWidget; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEFluidConfigSlotWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEFluidConfigSlotWidget.java index 21db46113c4..bbf171ffbe9 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEFluidConfigSlotWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEFluidConfigSlotWidget.java @@ -38,11 +38,6 @@ import static com.lowdragmc.lowdraglib.gui.util.DrawerHelper.drawStringFixedCorner; -/** - * @Author GlodBlock - * @Description A configurable slot for {@link FluidStack} - * @Date 2023/4/21-0:50 - */ public class AEFluidConfigSlotWidget extends AEConfigSlotWidget implements IGhostFluidTarget { public AEFluidConfigSlotWidget(int x, int y, ConfigWidget widget, int index) { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEItemConfigSlotWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEItemConfigSlotWidget.java index a08c822f0b2..574b4fdf276 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEItemConfigSlotWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEItemConfigSlotWidget.java @@ -24,11 +24,6 @@ import static com.lowdragmc.lowdraglib.gui.util.DrawerHelper.drawItemStack; import static com.lowdragmc.lowdraglib.gui.util.DrawerHelper.drawStringFixedCorner; -/** - * @Author GlodBlock - * @Description A configurable slot for {@link ItemStack} - * @Date 2023/4/22-0:48 - */ public class AEItemConfigSlotWidget extends AEConfigSlotWidget implements IGhostItemTarget { public AEItemConfigSlotWidget(int x, int y, ConfigWidget widget, int index) { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEBusPartMachine.java index 1bc7a2dcd6c..7bd09427d3b 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEBusPartMachine.java @@ -86,4 +86,11 @@ public void onRotated(Direction oldFacing, Direction newFacing) { public ManagedFieldHolder getFieldHolder() { return MANAGED_FIELD_HOLDER; } + + // By returning false here, we don't allow shift-clicking + // with a screwdriver to swap the IO. + @Override + public boolean swapIO() { + return false; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEHatchPartMachine.java index 52064460f02..c7237baaf41 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEHatchPartMachine.java @@ -87,4 +87,11 @@ public void onRotated(Direction oldFacing, Direction newFacing) { public ManagedFieldHolder getFieldHolder() { return MANAGED_FIELD_HOLDER; } + + // By returning false here, we don't allow shift-clicking + // with a screwdriver to swap the IO. + @Override + public boolean swapIO() { + return false; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java index 572813512cd..6914f7782a3 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java @@ -30,9 +30,7 @@ import javax.annotation.ParametersAreNonnullByDefault; /** - * @Author GlodBlock - * @Description The Output Bus that can directly send its contents to ME storage network. - * @Date 2023/4/19-20:37 + * The Output Bus that can directly send its contents to ME storage network. */ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java index 72af850138a..32f0d60d73c 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java @@ -115,11 +115,6 @@ public void setItemDirect(int slotIndex, ItemStack stack) { @DescSynced // Maybe an Expansion Option in the future? a bit redundant for rn. Maybe Packdevs want to add their own // version. private final CustomItemStackHandler patternInventory = new CustomItemStackHandler(MAX_PATTERN_COUNT); - // DO NOT remove this and use a default circuitInventory. It will cause the circuit inventory to vanish entirely and - // crash clients as well as cause unintended behaviors. - @Getter - @Persisted - protected final NotifiableItemStackHandler circuitInventorySimulated; @Getter @Persisted @@ -159,9 +154,6 @@ public MEPatternBufferPartMachine(IMachineBlockEntity holder, Object... args) { this.internalInventory[i] = new InternalSlot(); } getMainNode().addService(ICraftingProvider.class, this); - this.circuitInventorySimulated = new NotifiableItemStackHandler(this, 1, IO.IN, IO.NONE) - .setFilter(IntCircuitBehaviour::isIntegratedCircuit) - .shouldSearchContent(false); this.shareInventory = new NotifiableItemStackHandler(this, 9, IO.IN, IO.NONE); this.shareTank = new NotifiableFluidTank(this, 9, 8 * FluidType.BUCKET_VOLUME, IO.IN, IO.NONE); this.internalRecipeHandler = new InternalSlotRecipeHandler(this, internalInventory); @@ -188,11 +180,6 @@ public List getRecipeHandlers() { return internalRecipeHandler.getSlotHandlers(); } - @Override - public NotifiableItemStackHandler getCircuitInventory() { - return getCircuitInventorySimulated(); - } - @Override public boolean isWorkingEnabled() { return true; @@ -286,8 +273,8 @@ public void attachConfigurators(ConfiguratorPanel configuratorPanel) { configuratorPanel.attachConfigurators(new ButtonConfigurator( new GuiTextureGroup(GuiTextures.BUTTON, GuiTextures.REFUND_OVERLAY), this::refundAll) .setTooltips(List.of(Component.translatable("gui.gtceu.refund_all.desc")))); - if (isCircuitSlotEnabled()) { - configuratorPanel.attachConfigurators(new CircuitFancyConfigurator(circuitInventorySimulated.storage)); + if (isHasCircuitSlot() && isCircuitSlotEnabled()) { + configuratorPanel.attachConfigurators(new CircuitFancyConfigurator(circuitInventory.storage)); } configuratorPanel.attachConfigurators(new FancyInvConfigurator( shareInventory.storage, Component.translatable("gui.gtceu.share_inventory.title")) @@ -404,7 +391,8 @@ public PatternContainerGroup getTerminalGroup() { Component.literal(customName), Collections.emptyList()); } else { - ItemStack circuitStack = circuitInventorySimulated.storage.getStackInSlot(0); + ItemStack circuitStack = isHasCircuitSlot() ? circuitInventory.storage.getStackInSlot(0) : + ItemStack.EMPTY; int circuitConfiguration = circuitStack.isEmpty() ? -1 : IntCircuitBehaviour.getCircuitConfiguration(circuitStack); @@ -506,9 +494,10 @@ public List getItems() { public List getFluids() { if (fluidStacks == null) { - fluidStacks = fluidInventory.object2LongEntrySet().stream() - .map(e -> new FluidStack(e.getKey(), GTMath.saturatedCast(e.getLongValue()))) - .toList(); + fluidStacks = new ArrayList<>(); + fluidInventory.object2LongEntrySet().stream() + .map(e -> GTMath.splitFluidStacks(e.getKey(), e.getLongValue())) + .forEach(fluidStacks::addAll); } return fluidStacks; } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingBusPartMachine.java index 3feffb05054..288dac498f5 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingBusPartMachine.java @@ -1,12 +1,15 @@ package com.gregtechceu.gtceu.integration.ae2.machine; import com.gregtechceu.gtceu.api.gui.fancy.ConfiguratorPanel; +import com.gregtechceu.gtceu.api.gui.fancy.TabsWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.machine.fancyconfigurator.AutoStockingFancyConfigurator; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; import com.gregtechceu.gtceu.common.item.IntCircuitBehaviour; +import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.integration.ae2.machine.feature.multiblock.IMEStockingPart; import com.gregtechceu.gtceu.integration.ae2.slot.ExportOnlyAEItemList; import com.gregtechceu.gtceu.integration.ae2.slot.ExportOnlyAEItemSlot; @@ -14,6 +17,7 @@ import com.gregtechceu.gtceu.integration.ae2.slot.IConfigurableSlotList; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; +import com.lowdragmc.lowdraglib.syncdata.annotation.DropSaved; import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; @@ -38,6 +42,8 @@ import lombok.Setter; import org.jetbrains.annotations.Nullable; +import java.util.Comparator; +import java.util.PriorityQueue; import java.util.function.Predicate; import javax.annotation.ParametersAreNonnullByDefault; @@ -54,6 +60,17 @@ public class MEStockingBusPartMachine extends MEInputBusPartMachine implements I @Getter private boolean autoPull; + @Getter + @Setter + @Persisted + @DropSaved + private int minStackSize = 1; + @Getter + @Setter + @Persisted + @DropSaved + private int ticksPerCycle = 40; + @Setter private Predicate autoPullTest; @@ -96,8 +113,12 @@ public ManagedFieldHolder getFieldHolder() { @Override public void autoIO() { super.autoIO(); - if (autoPull && getOffsetTimer() % 100 == 0) { - refreshList(); + if (ticksPerCycle == 0) ticksPerCycle = ConfigHolder.INSTANCE.compat.ae2.updateIntervals; // Emergency Check to + // Avoid Crash loops. + if (getOffsetTimer() % ticksPerCycle == 0) { + if (autoPull) { + refreshList(); + } syncME(); } } @@ -113,7 +134,7 @@ protected void syncME() { // Try to fill the slot var key = config.what(); long extracted = networkInv.extract(key, Long.MAX_VALUE, Actionable.SIMULATE, actionSource); - if (extracted > 0) { + if (extracted >= minStackSize) { slot.setStock(new GenericStack(key, extracted)); continue; } @@ -122,6 +143,11 @@ protected void syncME() { } } + @Override + public void attachSideTabs(TabsWidget sideTabs) { + sideTabs.setMainTab(this); // removes the cover configurator, it's pointless and clashes with layout. + } + @Override protected void flushInventory() { // no-op, nothing to send back to the network @@ -179,7 +205,7 @@ public void setAutoPull(boolean autoPull) { /** * Refresh the configuration list in auto-pull mode. - * Sets the config to the first 16 valid items found in the network. + * Sets the config to the CONFIG_SIZE items with the highest amount in the ME system. */ private void refreshList() { IGrid grid = this.getMainNode().getGrid(); @@ -190,11 +216,15 @@ private void refreshList() { MEStorage networkStorage = grid.getStorageService().getInventory(); var counter = networkStorage.getAvailableStacks(); - int index = 0; + + // Use a PriorityQueue to sort the stacks on size, take the first CONFIG_SIZE + // biggest stacks. + PriorityQueue> topItems = new PriorityQueue<>( + Comparator.comparingLong(Object2LongMap.Entry::getLongValue)); + for (Object2LongMap.Entry entry : counter) { - if (index >= CONFIG_SIZE) break; - AEKey what = entry.getKey(); long amount = entry.getLongValue(); + AEKey what = entry.getKey(); if (amount <= 0) continue; if (!(what instanceof AEItemKey itemKey)) continue; @@ -204,11 +234,34 @@ private void refreshList() { // Ensure that it is valid to configure with this stack if (autoPullTest != null && !autoPullTest.test(new GenericStack(itemKey, amount))) continue; + if (amount >= minStackSize) { + if (topItems.size() < CONFIG_SIZE) { + topItems.offer(entry); + } else if (amount > topItems.peek().getLongValue()) { + topItems.poll(); + topItems.offer(entry); + } + } + } + + // Now, topItems is a PQ with CONFIG_SIZE highest amount items in the system. + int index; + int itemAmount = topItems.size(); + for (index = 0; index < CONFIG_SIZE; index++) { + if (topItems.isEmpty()) break; + Object2LongMap.Entry entry = topItems.poll(); + + AEKey what = entry.getKey(); + long amount = entry.getLongValue(); + + // If we get here, the item has already been checked by the PQ. + long request = networkStorage.extract(what, amount, Actionable.SIMULATE, actionSource); - var slot = this.aeItemHandler.getInventory()[index]; + // Since we want our items to be displayed from highest to lowest, but poll() returns + // the lowest first, we fill in the slots starting at itemAmount-1 + var slot = this.aeItemHandler.getInventory()[itemAmount - index - 1]; slot.setConfig(new GenericStack(what, 1)); slot.setStock(new GenericStack(what, request)); - index++; } aeItemHandler.clearInventory(index); @@ -222,6 +275,7 @@ private void refreshList() { public void attachConfigurators(ConfiguratorPanel configuratorPanel) { IMEStockingPart.super.attachConfigurators(configuratorPanel); super.attachConfigurators(configuratorPanel); + configuratorPanel.attachConfigurators(new AutoStockingFancyConfigurator(this)); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingHatchPartMachine.java index 27b70b4ac3d..8b07ee7ad05 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingHatchPartMachine.java @@ -1,12 +1,15 @@ package com.gregtechceu.gtceu.integration.ae2.machine; import com.gregtechceu.gtceu.api.gui.fancy.ConfiguratorPanel; +import com.gregtechceu.gtceu.api.gui.fancy.TabsWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.machine.fancyconfigurator.AutoStockingFancyConfigurator; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.common.item.IntCircuitBehaviour; +import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.integration.ae2.machine.feature.multiblock.IMEStockingPart; import com.gregtechceu.gtceu.integration.ae2.slot.ExportOnlyAEFluidList; import com.gregtechceu.gtceu.integration.ae2.slot.ExportOnlyAEFluidSlot; @@ -15,6 +18,7 @@ import com.gregtechceu.gtceu.integration.ae2.utils.AEUtil; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; +import com.lowdragmc.lowdraglib.syncdata.annotation.DropSaved; import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; @@ -39,6 +43,8 @@ import lombok.Setter; import org.jetbrains.annotations.Nullable; +import java.util.Comparator; +import java.util.PriorityQueue; import java.util.function.Predicate; import javax.annotation.ParametersAreNonnullByDefault; @@ -57,6 +63,18 @@ public class MEStockingHatchPartMachine extends MEInputHatchPartMachine implemen @Getter private boolean autoPull; + @Getter + @Setter + @Persisted + @DropSaved + private int minStackSize = 1; + + @Getter + @Setter + @Persisted + @DropSaved + private int ticksPerCycle = 40; + @Setter private Predicate autoPullTest; @@ -99,8 +117,12 @@ public ManagedFieldHolder getFieldHolder() { @Override public void autoIO() { super.autoIO(); - if (autoPull && getOffsetTimer() % 100 == 0) { - refreshList(); + if (ticksPerCycle == 0) ticksPerCycle = ConfigHolder.INSTANCE.compat.ae2.updateIntervals; // Emergency Check to + // Avoid Crash loops. + if (getOffsetTimer() % ticksPerCycle == 0) { + if (autoPull) { + refreshList(); + } syncME(); } } @@ -114,7 +136,7 @@ protected void syncME() { // Try to fill the slot var key = config.what(); long extracted = networkInv.extract(key, Long.MAX_VALUE, Actionable.SIMULATE, actionSource); - if (extracted > 0) { + if (extracted >= minStackSize) { slot.setStock(new GenericStack(key, extracted)); continue; } @@ -123,6 +145,11 @@ protected void syncME() { } } + @Override + public void attachSideTabs(TabsWidget sideTabs) { + sideTabs.setMainTab(this); // removes the cover configurator, it's pointless and clashes with layout. + } + @Override protected void flushInventory() { // no-op, nothing to send back to the network @@ -173,11 +200,15 @@ private void refreshList() { MEStorage networkStorage = grid.getStorageService().getInventory(); var counter = networkStorage.getAvailableStacks(); - int index = 0; + + // Use a PriorityQueue to sort the stacks on size, take the first CONFIG_SIZE + // biggest stacks. + PriorityQueue> topFluids = new PriorityQueue<>( + Comparator.comparingLong(Object2LongMap.Entry::getLongValue)); + for (Object2LongMap.Entry entry : counter) { - if (index >= CONFIG_SIZE) break; - AEKey what = entry.getKey(); long amount = entry.getLongValue(); + AEKey what = entry.getKey(); if (amount <= 0) continue; if (!(what instanceof AEFluidKey fluidKey)) continue; @@ -187,11 +218,33 @@ private void refreshList() { // Ensure that it is valid to configure with this stack if (autoPullTest != null && !autoPullTest.test(new GenericStack(fluidKey, amount))) continue; + if (amount >= minStackSize) { + if (topFluids.size() < CONFIG_SIZE) { + topFluids.offer(entry); + } else if (amount > topFluids.peek().getLongValue()) { + topFluids.poll(); + topFluids.offer(entry); + } + } + } + + // Now, topFluids is a PQ with CONFIG_SIZE highest amount fluids in the system. + int index; + int fluidAmount = topFluids.size(); + for (index = 0; index < CONFIG_SIZE; index++) { + if (topFluids.isEmpty()) break; + Object2LongMap.Entry entry = topFluids.poll(); + AEKey what = entry.getKey(); + long amount = entry.getLongValue(); + + // If we get here, the fluid has already been checked by the PQ. + long request = networkStorage.extract(what, amount, Actionable.SIMULATE, actionSource); - var slot = this.aeFluidHandler.getInventory()[index]; + // Since we want our fluids to be displayed from highest to lowest, but poll() returns + // the lowest first, we fill in the slots starting at fluidAmount-1 + var slot = this.aeFluidHandler.getInventory()[fluidAmount - index - 1]; slot.setConfig(new GenericStack(what, 1)); slot.setStock(new GenericStack(what, request)); - index++; } aeFluidHandler.clearInventory(index); @@ -205,6 +258,7 @@ private void refreshList() { public void attachConfigurators(ConfiguratorPanel configuratorPanel) { IMEStockingPart.super.attachConfigurators(configuratorPanel); super.attachConfigurators(configuratorPanel); + configuratorPanel.attachConfigurators(new AutoStockingFancyConfigurator(this)); } //////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/feature/IGridConnectedMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/feature/IGridConnectedMachine.java index 8285d766637..8dcbca56391 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/feature/IGridConnectedMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/feature/IGridConnectedMachine.java @@ -11,9 +11,6 @@ /** * A machine that can connect to ME network. - * - * @author GateGuardian - * @date : 2024/7/14 */ public interface IGridConnectedMachine extends IMachineFeature, IGridConnectedBlockEntity { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/feature/multiblock/IMEStockingPart.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/feature/multiblock/IMEStockingPart.java index c54b79a102e..75515fcaaab 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/feature/multiblock/IMEStockingPart.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/feature/multiblock/IMEStockingPart.java @@ -56,4 +56,12 @@ default void validateConfig() { } } } + + int getMinStackSize(); + + void setMinStackSize(int newSize); + + int getTicksPerCycle(); + + void setTicksPerCycle(int newSize); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/GridNodeHolder.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/GridNodeHolder.java index d9c05f589e8..50933b53c0f 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/GridNodeHolder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/GridNodeHolder.java @@ -24,9 +24,6 @@ /** * A MachineTrait that is only used for hosting grid node and does not provide grid node capability. * Because IGridConnectedMachine has already extended IInWorldGridNodeHost. - * - * @author GateGuardian - * @date : 2024/7/14 */ public class GridNodeHolder extends MachineTrait { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/InternalSlotRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/InternalSlotRecipeHandler.java index 0437e13b1ef..4a2e4e49431 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/InternalSlotRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/InternalSlotRecipeHandler.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.api.capability.recipe.*; import com.gregtechceu.gtceu.api.machine.trait.NotifiableRecipeHandlerTrait; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroupDistinctness; import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; @@ -43,6 +44,7 @@ public SlotRHL(MEPatternBufferPartMachine buffer, InternalSlot slot, int idx) { fluidRecipeHandler = new SlotFluidRecipeHandler(buffer, slot, idx); addHandlers(buffer.getCircuitInventory(), buffer.getShareInventory(), buffer.getShareTank(), itemRecipeHandler, fluidRecipeHandler); + this.setGroup(RecipeHandlerGroupDistinctness.BUS_DISTINCT); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/ProxySlotRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/ProxySlotRecipeHandler.java index f3fb60c8a91..4d40ca03ebe 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/ProxySlotRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/ProxySlotRecipeHandler.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.trait.IRecipeHandlerTrait; import com.gregtechceu.gtceu.api.machine.trait.NotifiableRecipeHandlerTrait; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroupDistinctness; import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; @@ -65,6 +66,7 @@ public ProxyRHL(MEPatternBufferProxyPartMachine machine) { sharedFluid = new ProxyFluidRecipeHandler(machine); slotFluid = new ProxyFluidRecipeHandler(machine); addHandlers(circuit, sharedItem, slotItem, sharedFluid, slotFluid); + this.setGroup(RecipeHandlerGroupDistinctness.BUS_DISTINCT); } public void setBuffer(MEPatternBufferPartMachine buffer, SlotRHL slotRHL) { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/slot/ExportOnlyAESlot.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/slot/ExportOnlyAESlot.java index 230dbd85f81..b98fe200f5a 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/slot/ExportOnlyAESlot.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/slot/ExportOnlyAESlot.java @@ -11,9 +11,7 @@ import org.jetbrains.annotations.Nullable; /** - * @author GlodBlock - * @Description An export only slot to hold {@link appeng.api.stacks.GenericStack} - * @date 2023/4/22-13:42 + * An export only slot to hold {@link appeng.api.stacks.GenericStack} */ public abstract class ExportOnlyAESlot implements IConfigurableSlot, ITagSerializable, IContentChangeAware { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/slot/IConfigurableSlot.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/slot/IConfigurableSlot.java index 970779a41ab..98451f68a42 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/slot/IConfigurableSlot.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/slot/IConfigurableSlot.java @@ -3,9 +3,7 @@ import appeng.api.stacks.GenericStack; /** - * @Author GlodBlock - * @Description A slot that can be set to keep requesting. - * @Date 2023/4/21-0:34 + * A slot that can be set to keep requesting. */ public interface IConfigurableSlot { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/utils/KeyStorage.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/utils/KeyStorage.java index c002cbae861..81bb00f1216 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/utils/KeyStorage.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/utils/KeyStorage.java @@ -22,9 +22,6 @@ /** * Used to store {@link appeng.api.stacks.GenericStack } in a way that associates key and amount. * Provides methods for serialization and deserialization. - * - * @author GateGuardian - * @date : 2024/7/18 */ @MethodsReturnNonnullByDefault public class KeyStorage implements ITagSerializable, IContentChangeAware, diff --git a/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java new file mode 100644 index 00000000000..2bcced8d85d --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java @@ -0,0 +1,23 @@ +package com.gregtechceu.gtceu.integration.cctweaked; + +import com.gregtechceu.gtceu.api.capability.forge.GTCapability; +import com.gregtechceu.gtceu.integration.cctweaked.peripherals.*; + +import dan200.computercraft.api.ComputerCraftAPI; +import dan200.computercraft.api.ForgeComputerCraftAPI; + +public class CCTweakedPlugin { + + public static void init() { + ComputerCraftAPI.registerGenericSource(new ControllablePeripheral()); + ComputerCraftAPI.registerGenericSource(new EnergyInfoPeripheral()); + ComputerCraftAPI.registerGenericSource(new TurbineMachinePeripheral()); + ComputerCraftAPI.registerGenericSource(new WorkablePeripheral()); + ComputerCraftAPI.registerGenericSource(new CoverHolderPeripheral()); + ForgeComputerCraftAPI.registerGenericCapability(GTCapability.CAPABILITY_CONTROLLABLE); + ForgeComputerCraftAPI.registerGenericCapability(GTCapability.CAPABILITY_ENERGY_INFO_PROVIDER); + ForgeComputerCraftAPI.registerGenericCapability(GTCapability.CAPABILITY_TURBINE_MACHINE); + ForgeComputerCraftAPI.registerGenericCapability(GTCapability.CAPABILITY_WORKABLE); + ForgeComputerCraftAPI.registerGenericCapability(GTCapability.CAPABILITY_COVERABLE); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/ControllablePeripheral.java b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/ControllablePeripheral.java new file mode 100644 index 00000000000..c70ca17d6a2 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/ControllablePeripheral.java @@ -0,0 +1,29 @@ +package com.gregtechceu.gtceu.integration.cctweaked.peripherals; + +import com.gregtechceu.gtceu.api.capability.IControllable; + +import dan200.computercraft.api.lua.LuaFunction; +import dan200.computercraft.api.lua.MethodResult; +import dan200.computercraft.api.peripheral.GenericPeripheral; + +public class ControllablePeripheral implements GenericPeripheral { + + public String id() { + return "gtceu:workable"; + } + + @LuaFunction + public static MethodResult isWorkingEnabled(IControllable controllable) { + return MethodResult.of(controllable.isWorkingEnabled()); + } + + @LuaFunction + public static void setWorkingEnabled(IControllable controllable, boolean enabled) { + controllable.setWorkingEnabled(enabled); + } + + @LuaFunction + public static void setSuspendAfterFinish(IControllable controllable, boolean suspendAfterFinish) { + controllable.setSuspendAfterFinish(suspendAfterFinish); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/CoverHolderPeripheral.java b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/CoverHolderPeripheral.java new file mode 100644 index 00000000000..18ba54ae798 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/CoverHolderPeripheral.java @@ -0,0 +1,30 @@ +package com.gregtechceu.gtceu.integration.cctweaked.peripherals; + +import com.gregtechceu.gtceu.api.capability.ICoverable; +import com.gregtechceu.gtceu.api.placeholder.IPlaceholderInfoProviderCover; + +import net.minecraft.core.Direction; +import net.minecraft.network.chat.Component; + +import dan200.computercraft.api.lua.LuaFunction; +import dan200.computercraft.api.lua.MethodResult; +import dan200.computercraft.api.peripheral.GenericPeripheral; + +public class CoverHolderPeripheral implements GenericPeripheral { + + @Override + public String id() { + return "gtceu:coverable"; + } + + @LuaFunction + public static MethodResult setBufferedText(ICoverable coverable, String face, int line, String text) { + Direction direction = Direction.byName(face); + if (direction == null) return MethodResult.of(false, "invalid face"); + if (line < 1 || line > 100) return MethodResult.of(false, "line must be from 1 to 100 (inclusive)"); + if (coverable.getCoverAtSide(direction) instanceof IPlaceholderInfoProviderCover cover) { + cover.setDisplayTargetBufferLine(line, Component.literal(text)); + return MethodResult.of(true, "success"); + } else return MethodResult.of(false, "invalid cover"); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/EnergyInfoPeripheral.java b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/EnergyInfoPeripheral.java new file mode 100644 index 00000000000..d897fffef8c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/EnergyInfoPeripheral.java @@ -0,0 +1,34 @@ +package com.gregtechceu.gtceu.integration.cctweaked.peripherals; + +import com.gregtechceu.gtceu.api.capability.IEnergyInfoProvider; + +import dan200.computercraft.api.lua.LuaFunction; +import dan200.computercraft.api.lua.MethodResult; +import dan200.computercraft.api.peripheral.GenericPeripheral; + +public class EnergyInfoPeripheral implements GenericPeripheral { + + public String id() { + return "gtceu:energy_info"; + } + + @LuaFunction + public static MethodResult getEnergyStored(IEnergyInfoProvider infoProvider) { + return MethodResult.of(infoProvider.getEnergyInfo().stored()); + } + + @LuaFunction + public static MethodResult getEnergyCapacity(IEnergyInfoProvider infoProvider) { + return MethodResult.of(infoProvider.getEnergyInfo().capacity()); + } + + @LuaFunction + public static MethodResult getInputPerSec(IEnergyInfoProvider changeProvider) { + return MethodResult.of(changeProvider.getInputPerSec()); + } + + @LuaFunction + public static MethodResult getOutputPerSec(IEnergyInfoProvider changeProvider) { + return MethodResult.of(changeProvider.getOutputPerSec()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/TurbineMachinePeripheral.java b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/TurbineMachinePeripheral.java new file mode 100644 index 00000000000..555d17301a2 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/TurbineMachinePeripheral.java @@ -0,0 +1,49 @@ +package com.gregtechceu.gtceu.integration.cctweaked.peripherals; + +import com.gregtechceu.gtceu.api.capability.ITurbineMachine; + +import dan200.computercraft.api.lua.LuaFunction; +import dan200.computercraft.api.lua.MethodResult; +import dan200.computercraft.api.peripheral.GenericPeripheral; + +public class TurbineMachinePeripheral implements GenericPeripheral { + + public String id() { + return "gtceu:large_turbine"; + } + + @LuaFunction + public static MethodResult hasRotor(ITurbineMachine turbine) { + return MethodResult.of(turbine.hasRotor()); + } + + @LuaFunction + public static MethodResult getRotorSpeed(ITurbineMachine turbine) { + return MethodResult.of(turbine.getRotorSpeed()); + } + + @LuaFunction + public static MethodResult getMaxRotorHolderSpeed(ITurbineMachine turbine) { + return MethodResult.of(turbine.getMaxRotorHolderSpeed()); + } + + @LuaFunction + public static MethodResult getTotalEfficiency(ITurbineMachine turbine) { + return MethodResult.of(turbine.getTotalEfficiency()); + } + + @LuaFunction + public static MethodResult getCurrentProduction(ITurbineMachine turbine) { + return MethodResult.of(turbine.getCurrentProduction()); + } + + @LuaFunction + public static MethodResult getOverclockVoltage(ITurbineMachine turbine) { + return MethodResult.of(turbine.getOverclockVoltage()); + } + + @LuaFunction + public static MethodResult getRotorDurabilityPercent(ITurbineMachine turbine) { + return MethodResult.of(turbine.getRotorDurabilityPercent()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/WorkablePeripheral.java b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/WorkablePeripheral.java new file mode 100644 index 00000000000..58f969208b4 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/WorkablePeripheral.java @@ -0,0 +1,29 @@ +package com.gregtechceu.gtceu.integration.cctweaked.peripherals; + +import com.gregtechceu.gtceu.api.capability.IWorkable; + +import dan200.computercraft.api.lua.LuaFunction; +import dan200.computercraft.api.lua.MethodResult; +import dan200.computercraft.api.peripheral.GenericPeripheral; + +public class WorkablePeripheral implements GenericPeripheral { + + public String id() { + return "gtceu:workable"; + } + + @LuaFunction + public static MethodResult getProgress(IWorkable workable) { + return MethodResult.of(workable.getProgress()); + } + + @LuaFunction + public static MethodResult getMaxProgress(IWorkable workable) { + return MethodResult.of(workable.getMaxProgress()); + } + + @LuaFunction + public static MethodResult isActive(IWorkable workable) { + return MethodResult.of(workable.isActive()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/create/GTCreateDisplaySources.java b/src/main/java/com/gregtechceu/gtceu/integration/create/GTCreateDisplaySources.java new file mode 100644 index 00000000000..55e9e0aa1c2 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/create/GTCreateDisplaySources.java @@ -0,0 +1,36 @@ +package com.gregtechceu.gtceu.integration.create; + +import com.gregtechceu.gtceu.api.registry.GTRegistries; +import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; +import com.gregtechceu.gtceu.common.registry.GTRegistration; +import com.gregtechceu.gtceu.integration.create.display.ComputerMonitorCoverDisplaySource; + +import net.minecraft.core.registries.Registries; + +import com.simibubi.create.api.behaviour.display.DisplaySource; +import com.simibubi.create.api.registry.registrate.SimpleBuilder; +import com.tterrag.registrate.util.entry.RegistryEntry; + +import java.util.function.Supplier; + +@SuppressWarnings("unused") +public class GTCreateDisplaySources { + + public static final RegistryEntry COMPUTER_MONITOR_COVER = registerToAllMachines( + "computer_monitor_cover", ComputerMonitorCoverDisplaySource::new); + + @SuppressWarnings("SameParameterValue") + private static RegistryEntry registerToAllMachines(String name, Supplier supplier) { + SimpleBuilder builder = GTCreateIntegration + .displaySource(GTRegistration.REGISTRATE, name, supplier); + builder.onRegisterAfter( + Registries.BLOCK_ENTITY_TYPE, + source -> GTRegistries.MACHINES.entries().forEach( + (entry) -> DisplaySource.BY_BLOCK_ENTITY.add( + entry.getValue().getBlockEntityType(), + source))); + return builder.register(); + } + + public static void init() {} +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/create/GTCreateDisplayTargets.java b/src/main/java/com/gregtechceu/gtceu/integration/create/GTCreateDisplayTargets.java new file mode 100644 index 00000000000..9c7c0ad62f4 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/create/GTCreateDisplayTargets.java @@ -0,0 +1,35 @@ +package com.gregtechceu.gtceu.integration.create; + +import com.gregtechceu.gtceu.api.registry.GTRegistries; +import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; +import com.gregtechceu.gtceu.common.registry.GTRegistration; +import com.gregtechceu.gtceu.integration.create.display.ComputerMonitorCoverDisplayTarget; + +import net.minecraft.core.registries.Registries; + +import com.simibubi.create.api.behaviour.display.DisplayTarget; +import com.simibubi.create.api.registry.registrate.SimpleBuilder; +import com.tterrag.registrate.util.entry.RegistryEntry; + +import java.util.function.Supplier; + +public class GTCreateDisplayTargets { + + public static final RegistryEntry COMPUTER_MONITOR_COVER = registerToAllMachines( + "computer_monitor_cover", ComputerMonitorCoverDisplayTarget::new); + + @SuppressWarnings("SameParameterValue") + private static RegistryEntry registerToAllMachines(String name, Supplier supplier) { + SimpleBuilder builder = GTCreateIntegration + .displayTarget(GTRegistration.REGISTRATE, name, supplier); + builder.onRegisterAfter( + Registries.BLOCK_ENTITY_TYPE, + target -> GTRegistries.MACHINES.entries().forEach( + (entry) -> DisplayTarget.BY_BLOCK_ENTITY.register( + entry.getValue().getBlockEntityType(), + target))); + return builder.register(); + } + + public static void init() {} +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/create/GTCreateIntegration.java b/src/main/java/com/gregtechceu/gtceu/integration/create/GTCreateIntegration.java new file mode 100644 index 00000000000..523e95a6ed1 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/create/GTCreateIntegration.java @@ -0,0 +1,243 @@ +package com.gregtechceu.gtceu.integration.create; + +import com.gregtechceu.gtceu.api.placeholder.*; +import com.gregtechceu.gtceu.api.placeholder.exceptions.InvalidArgsException; +import com.gregtechceu.gtceu.api.placeholder.exceptions.MissingItemException; +import com.gregtechceu.gtceu.api.placeholder.exceptions.NotSupportedException; +import com.gregtechceu.gtceu.api.placeholder.exceptions.PlaceholderException; +import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; +import com.gregtechceu.gtceu.utils.GTStringUtils; + +import net.createmod.catnip.data.Couple; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; + +import com.simibubi.create.AllItems; +import com.simibubi.create.Create; +import com.simibubi.create.api.behaviour.display.DisplaySource; +import com.simibubi.create.api.behaviour.display.DisplayTarget; +import com.simibubi.create.api.registry.CreateRegistries; +import com.simibubi.create.api.registry.registrate.SimpleBuilder; +import com.simibubi.create.content.redstone.link.IRedstoneLinkable; +import com.simibubi.create.content.redstone.link.RedstoneLinkNetworkHandler; +import com.simibubi.create.content.redstone.link.controller.LinkedControllerItem; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.function.Supplier; + +public class GTCreateIntegration { + + private GTCreateIntegration() {} + + public static void init() { + GTCreateDisplaySources.init(); + GTCreateDisplayTargets.init(); + + PlaceholderHandler.addPlaceholder(new Placeholder("redstone", 1) { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + return processRedstonePlaceholder(ctx, args); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("displayTarget") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + if (!(ctx.cover() instanceof IPlaceholderInfoProviderCover cover)) throw new NotSupportedException(); + int i = PlaceholderUtils.toInt(args.get(0)); + PlaceholderUtils.checkRange("line number", 1, 100, i); + return MultiLineComponent.of(cover.getCreateDisplayTargetBuffer().get(i - 1)); + } + }); + } + + private static int getRedstoneLinkPower(PlaceholderContext ctx, + Couple freq) { + IRedstoneLinkable linkable = new IRedstoneLinkable() { + + @Override + public int getTransmittedStrength() { + return 0; + } + + @Override + public void setReceivedStrength(int power) {} + + @Override + public boolean isListening() { + return true; + } + + @Override + public boolean isAlive() { + return true; + } + + @Override + public Couple getNetworkKey() { + return freq; + } + + @Override + public BlockPos getLocation() { + return ctx.pos(); + } + }; + Set network = Create.REDSTONE_LINK_NETWORK_HANDLER.getNetworkOf(ctx.level(), + linkable); + int power = 0; + for (IRedstoneLinkable i : network) { + if (!i.isAlive()) continue; + if (!RedstoneLinkNetworkHandler.withinRange(i, linkable)) continue; + power = Math.max(power, i.getTransmittedStrength()); + } + return power; + } + + private static void setRedstoneLinkPower(PlaceholderContext ctx, + Couple freq, int power) { + TemporaryRedstoneLinkTransmitter linkable = new TemporaryRedstoneLinkTransmitter(freq, power, + ctx.pos(), ctx.level()); + Create.REDSTONE_LINK_NETWORK_HANDLER.addToNetwork(ctx.level(), linkable); + } + + private static MultiLineComponent processRedstonePlaceholder(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1, true); + if (GTStringUtils.equals(args.get(0), "get")) { + PlaceholderUtils.checkArgs(args, 2, true); + if (GTStringUtils.equals(args.get(1), "link")) { + PlaceholderUtils.checkArgs(args, 4); + int slot = PlaceholderUtils.toInt(args.get(2)); + int freq_slot = PlaceholderUtils.toInt(args.get(3)); + PlaceholderUtils.checkRange("slot index", 1, 8, slot); + if (ctx.itemStackHandler() == null) throw new NotSupportedException(); + ItemStack item = ctx.itemStackHandler().getStackInSlot(slot - 1); + if (item.is(AllItems.LINKED_CONTROLLER.get())) { + Couple freq = LinkedControllerItem.toFrequency(item, + freq_slot); + return MultiLineComponent.literal(getRedstoneLinkPower(ctx, freq)); + } else throw new MissingItemException("redstone link", slot); + } else { + Direction direction = Direction.byName(args.get(1).toString()); + if (direction == null) + throw new InvalidArgsException(); + return MultiLineComponent.literal(ctx.level().getSignal(ctx.pos().relative(direction), direction)); + } + } else if (GTStringUtils.equals(args.get(0), "set")) { + PlaceholderUtils.checkArgs(args, 2, true); + if (GTStringUtils.equals(args.get(1), "link")) { + PlaceholderUtils.checkArgs(args, 5); + int slot = PlaceholderUtils.toInt(args.get(2)); + int freq_slot = PlaceholderUtils.toInt(args.get(3)); + int power = PlaceholderUtils.toInt(args.get(4)); + PlaceholderUtils.checkRange("redstone power", 0, 15, power); + PlaceholderUtils.checkRange("slot", 1, 8, slot); + if (ctx.itemStackHandler() == null) throw new NotSupportedException(); + ItemStack item = ctx.itemStackHandler().getStackInSlot(slot - 1); + if (item.is(AllItems.LINKED_CONTROLLER.get())) { + Couple freq = LinkedControllerItem.toFrequency(item, + freq_slot); + setRedstoneLinkPower(ctx, freq, power); + return MultiLineComponent.empty(); + } else throw new MissingItemException("redstone link", slot); + } else { + int power = PlaceholderUtils.toInt(args.get(1)); + PlaceholderUtils.checkRange("redstone power", 0, 15, power); + if (ctx.cover() == null) throw new NotSupportedException(); + ctx.cover().setRedstoneSignalOutput(power); + return MultiLineComponent.empty(); + } + } else { + throw new InvalidArgsException(); + } + } + + public static < + T extends DisplaySource> SimpleBuilder displaySource(GTRegistrate registrate, + String name, + Supplier supplier) { + return registrate.entry(name, callback -> new SimpleBuilder<>( + registrate, registrate, name, callback, CreateRegistries.DISPLAY_SOURCE, supplier) + .byBlock(DisplaySource.BY_BLOCK) + .byBlockEntity(DisplaySource.BY_BLOCK_ENTITY)); + } + + public static < + T extends DisplayTarget> SimpleBuilder displayTarget(GTRegistrate registrate, + String name, + Supplier supplier) { + return registrate.entry(name, callback -> new SimpleBuilder<>( + registrate, registrate, name, callback, CreateRegistries.DISPLAY_TARGET, supplier) + .byBlock(DisplayTarget.BY_BLOCK) + .byBlockEntity(DisplayTarget.BY_BLOCK_ENTITY)); + } + + public static class TemporaryRedstoneLinkTransmitter implements IRedstoneLinkable { + + private static final ArrayList transmitters = new ArrayList<>(); + private final int power; + private final Couple freq; + private final BlockPos pos; + private final Level level; + private boolean alive; + + public TemporaryRedstoneLinkTransmitter(Couple frequency, int power, + BlockPos pos, Level level) { + this.power = power; + this.freq = frequency; + this.alive = true; + this.pos = pos; + this.level = level; + transmitters.add(this); + } + + @Override + public int getTransmittedStrength() { + return power; + } + + @Override + public void setReceivedStrength(int power) {} + + @Override + public boolean isListening() { + return false; + } + + @Override + public boolean isAlive() { + return alive; + } + + @Override + public Couple getNetworkKey() { + return freq; + } + + @Override + public BlockPos getLocation() { + return pos; + } + + public void destroy() { + this.alive = false; + Create.REDSTONE_LINK_NETWORK_HANDLER.updateNetworkOf(level, this); + } + + public static void destroyAll() { + while (!transmitters.isEmpty()) { + transmitters.get(transmitters.size() - 1).destroy(); + transmitters.remove(transmitters.size() - 1); + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/create/display/ComputerMonitorCoverDisplaySource.java b/src/main/java/com/gregtechceu/gtceu/integration/create/display/ComputerMonitorCoverDisplaySource.java new file mode 100644 index 00000000000..5853ef40337 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/create/display/ComputerMonitorCoverDisplaySource.java @@ -0,0 +1,38 @@ +package com.gregtechceu.gtceu.integration.create.display; + +import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; +import com.gregtechceu.gtceu.api.capability.ICoverable; +import com.gregtechceu.gtceu.common.cover.ComputerMonitorCover; +import com.gregtechceu.gtceu.utils.GTStringUtils; + +import net.minecraft.network.chat.MutableComponent; + +import com.simibubi.create.api.behaviour.display.DisplaySource; +import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext; +import com.simibubi.create.content.redstone.displayLink.target.DisplayTargetStats; + +import java.util.List; + +public class ComputerMonitorCoverDisplaySource extends DisplaySource { + + private int refreshTicks = 100; + + @Override + public List provideText(DisplayLinkContext context, DisplayTargetStats stats) { + ICoverable coverable = GTCapabilityHelper.getCoverable(context.level(), context.getSourcePos(), + context.blockEntity().getDirection().getOpposite()); + if (coverable != null) { + if (coverable.getCoverAtSide( + context.blockEntity().getDirection().getOpposite()) instanceof ComputerMonitorCover cover) { + refreshTicks = cover.getUpdateInterval(); + return cover.getText(); + } + } + return GTStringUtils.literalLine("No cover!"); + } + + @Override + public int getPassiveRefreshTicks() { + return refreshTicks; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/create/display/ComputerMonitorCoverDisplayTarget.java b/src/main/java/com/gregtechceu/gtceu/integration/create/display/ComputerMonitorCoverDisplayTarget.java new file mode 100644 index 00000000000..1599ea4ce04 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/create/display/ComputerMonitorCoverDisplayTarget.java @@ -0,0 +1,37 @@ +package com.gregtechceu.gtceu.integration.create.display; + +import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; +import com.gregtechceu.gtceu.api.capability.ICoverable; +import com.gregtechceu.gtceu.api.placeholder.IPlaceholderInfoProviderCover; + +import net.minecraft.core.Direction; +import net.minecraft.network.chat.ComponentContents; +import net.minecraft.network.chat.MutableComponent; + +import com.simibubi.create.api.behaviour.display.DisplayTarget; +import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext; +import com.simibubi.create.content.redstone.displayLink.target.DisplayTargetStats; + +import java.util.List; + +public class ComputerMonitorCoverDisplayTarget extends DisplayTarget { + + @Override + public void acceptText(int line, List text, DisplayLinkContext context) { + ICoverable coverable = GTCapabilityHelper.getCoverable(context.level(), context.getTargetPos(), Direction.DOWN); + MutableComponent component = MutableComponent.create(ComponentContents.EMPTY); + text.forEach(component::append); + if (coverable != null) { + for (Direction face : Direction.values()) { + if (coverable.getCoverAtSide(face) instanceof IPlaceholderInfoProviderCover cover) { + cover.setDisplayTargetBufferLine(line, component); + } + } + } + } + + @Override + public DisplayTargetStats provideStats(DisplayLinkContext context) { + return new DisplayTargetStats(100, 1000, this); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/emi/GTEMIPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/emi/GTEMIPlugin.java index f6847ef23b4..187e873feac 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/emi/GTEMIPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/emi/GTEMIPlugin.java @@ -37,11 +37,6 @@ import dev.emi.emi.api.stack.Comparison; import dev.emi.emi.api.stack.EmiStack; -/** - * @author KilaBash - * @date 2023/4/4 - * @implNote EMIPlugin - */ @EmiEntrypoint public class GTEMIPlugin implements EmiPlugin { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/emi/multipage/MultiblockInfoEmiRecipe.java b/src/main/java/com/gregtechceu/gtceu/integration/emi/multipage/MultiblockInfoEmiRecipe.java index 52e17dbfcb0..a3957423362 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/emi/multipage/MultiblockInfoEmiRecipe.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/emi/multipage/MultiblockInfoEmiRecipe.java @@ -9,17 +9,34 @@ import net.minecraft.resources.ResourceLocation; import dev.emi.emi.api.recipe.EmiRecipeCategory; +import dev.emi.emi.api.stack.EmiStack; +import dev.emi.emi.api.widget.SlotWidget; +import dev.emi.emi.api.widget.WidgetHolder; import org.jetbrains.annotations.Nullable; +import java.util.List; + public class MultiblockInfoEmiRecipe extends ModularEmiRecipe { - public final MultiblockMachineDefinition definition; + private final MultiblockMachineDefinition definition; + private SlotWidget slotWidget; public MultiblockInfoEmiRecipe(MultiblockMachineDefinition definition) { super(() -> PatternPreviewWidget.getPatternWidget(definition)); this.definition = definition; } + @Override + public void addWidgets(WidgetHolder widgets) { + super.addWidgets(widgets); + // numbers gotten from the size of the widget + slotWidget = new SlotWidget(EmiStack.of(definition.getItem().asItem()), 138, 12) + .recipeContext(this) + .drawBack(false); + + widgets.add(slotWidget); + } + @Override public EmiRecipeCategory getCategory() { return MultiblockInfoEmiCategory.CATEGORY; @@ -29,4 +46,9 @@ public EmiRecipeCategory getCategory() { public @Nullable ResourceLocation getId() { return definition.getId(); } + + @Override + public List getOutputs() { + return List.of(EmiStack.of(definition.getItem())); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/emi/oreprocessing/GTOreProcessingEmiCategory.java b/src/main/java/com/gregtechceu/gtceu/integration/emi/oreprocessing/GTOreProcessingEmiCategory.java index 2837f0d6fdc..912d2a908e0 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/emi/oreprocessing/GTOreProcessingEmiCategory.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/emi/oreprocessing/GTOreProcessingEmiCategory.java @@ -44,13 +44,11 @@ public static void registerWorkStations(EmiRegistry registry) { CHEMICAL_BATH_RECIPES, ELECTROMAGNETIC_SEPARATOR_RECIPES, SIFTER_RECIPES }; for (MachineDefinition machine : GTRegistries.MACHINES) { - if (machine.getRecipeTypes() != null) { - for (GTRecipeType type : machine.getRecipeTypes()) { - for (GTRecipeType validType : validTypes) { - if (type == validType && !registeredMachines.contains(machine)) { - registry.addWorkstation(CATEGORY, EmiStack.of(machine.asStack())); - registeredMachines.add(machine); - } + for (GTRecipeType type : machine.getRecipeTypes()) { + for (GTRecipeType validType : validTypes) { + if (type == validType && !registeredMachines.contains(machine)) { + registry.addWorkstation(CATEGORY, EmiStack.of(machine.asStack())); + registeredMachines.add(machine); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/emi/recipe/GTRecipeEMICategory.java b/src/main/java/com/gregtechceu/gtceu/integration/emi/recipe/GTRecipeEMICategory.java index 403c15e755b..ad817bea6cc 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/emi/recipe/GTRecipeEMICategory.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/emi/recipe/GTRecipeEMICategory.java @@ -44,9 +44,7 @@ public static void registerDisplays(EmiRegistry registry) { public static void registerWorkStations(EmiRegistry registry) { for (MachineDefinition machine : GTRegistries.MACHINES) { - if (machine.getRecipeTypes() == null) continue; for (GTRecipeType type : machine.getRecipeTypes()) { - if (type == null) continue; for (GTRecipeCategory category : type.getCategories()) { if (!category.isXEIVisible() && !GTCEu.isDev()) continue; registry.addWorkstation(machineCategory(category), EmiStack.of(machine.asStack())); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/GTJadePlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/GTJadePlugin.java index c5449c4fd13..1219dcd168e 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/GTJadePlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/GTJadePlugin.java @@ -42,6 +42,7 @@ public void register(IWailaCommonRegistration registration) { registration.registerBlockDataProvider(new HazardCleanerBlockProvider(), BlockEntity.class); registration.registerBlockDataProvider(new TransformerBlockProvider(), BlockEntity.class); registration.registerBlockDataProvider(new PrimitivePumpBlockProvider(), BlockEntity.class); + registration.registerBlockDataProvider(new EnergyConverterModeProvider(), BlockEntity.class); if (GTCEu.Mods.isAE2Loaded()) { registration.registerBlockDataProvider(new MEPatternBufferProvider(), BlockEntity.class); registration.registerBlockDataProvider(new MEPatternBufferProxyProvider(), BlockEntity.class); @@ -71,6 +72,7 @@ public void registerClient(IWailaClientRegistration registration) { registration.registerBlockComponent(new HazardCleanerBlockProvider(), Block.class); registration.registerBlockComponent(new TransformerBlockProvider(), Block.class); registration.registerBlockComponent(new PrimitivePumpBlockProvider(), Block.class); + registration.registerBlockComponent(new EnergyConverterModeProvider(), Block.class); if (GTCEu.Mods.isAE2Loaded()) { registration.registerBlockComponent(new MEPatternBufferProvider(), Block.class); registration.registerBlockComponent(new MEPatternBufferProxyProvider(), Block.class); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/EnergyConverterModeProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/EnergyConverterModeProvider.java new file mode 100644 index 00000000000..4eccc045b03 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/EnergyConverterModeProvider.java @@ -0,0 +1,43 @@ +package com.gregtechceu.gtceu.integration.jade.provider; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; +import com.gregtechceu.gtceu.common.machine.electric.ConverterMachine; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; + +import snownee.jade.api.BlockAccessor; +import snownee.jade.api.IBlockComponentProvider; +import snownee.jade.api.IServerDataProvider; +import snownee.jade.api.ITooltip; +import snownee.jade.api.config.IPluginConfig; + +public class EnergyConverterModeProvider implements IBlockComponentProvider, IServerDataProvider { + + @Override + public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { + if (blockAccessor.getServerData().contains("converterMode")) { + boolean isFeToEu = blockAccessor.getServerData().getBoolean("converterMode"); + if (isFeToEu) { + iTooltip.add(Component.translatable("gtceu.top.convert_fe")); + } else { + iTooltip.add(Component.translatable("gtceu.top.convert_eu")); + } + } + } + + @Override + public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { + if (blockAccessor.getBlockEntity() instanceof MetaMachineBlockEntity blockEntity && + blockEntity.getMetaMachine() instanceof ConverterMachine converter) { + compoundTag.putBoolean("converterMode", converter.isFeToEu()); + } + } + + @Override + public ResourceLocation getUid() { + return GTCEu.id("energy_converter_provider"); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MultiblockStructureProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MultiblockStructureProvider.java index da6ca49a643..cb4c2d5cf31 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MultiblockStructureProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MultiblockStructureProvider.java @@ -33,7 +33,7 @@ public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPlugi public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { if (blockAccessor.getBlockEntity() instanceof MetaMachineBlockEntity blockEntity) { if (blockEntity.getMetaMachine() instanceof IMultiController controller) { - compoundTag.putBoolean("hasError", controller.getMultiblockState().hasError()); + compoundTag.putBoolean("hasError", !controller.isFormed()); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeLogicProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeLogicProvider.java index 655b9792723..fe19983dbdb 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeLogicProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeLogicProvider.java @@ -18,6 +18,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; +import net.minecraft.util.Mth; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; @@ -27,8 +28,6 @@ import snownee.jade.api.ITooltip; import snownee.jade.api.config.IPluginConfig; -import static net.minecraft.ChatFormatting.*; - public class RecipeLogicProvider extends CapabilityBlockProvider { public RecipeLogicProvider() { @@ -47,15 +46,11 @@ protected void write(CompoundTag data, RecipeLogic capability) { var recipeInfo = new CompoundTag(); var recipe = capability.getLastRecipe(); if (recipe != null) { - var EUt = RecipeHelper.getInputEUt(recipe); - var isInput = true; - if (EUt == 0) { - isInput = false; - EUt = RecipeHelper.getOutputEUt(recipe); - } + var EUt = RecipeHelper.getRealEUtWithIO(recipe); - recipeInfo.putLong("EUt", EUt); - recipeInfo.putBoolean("isInput", isInput); + recipeInfo.putLong("EUt", EUt.getTotalEU()); + recipeInfo.putLong("voltage", EUt.voltage()); + recipeInfo.putBoolean("isInput", EUt.isInput()); } if (!recipeInfo.isEmpty()) { @@ -88,29 +83,34 @@ protected void addTooltip(CompoundTag capData, ITooltip tooltip, Player player, MutableComponent text; if (isSteam) { - text = Component.literal(FormattingUtil.formatNumbers(EUt)).withStyle(ChatFormatting.GREEN) - .append(Component.literal(" mB/t").withStyle(ChatFormatting.RESET)); + text = Component.translatable("gtceu.jade.fluid_use", FormattingUtil.formatNumbers(EUt)) + .withStyle(ChatFormatting.GREEN); } else { - var tier = GTUtil.getOCTierByVoltage(EUt); - - text = Component.literal(FormattingUtil.formatNumbers(EUt)).withStyle(ChatFormatting.RED) - .append(Component.literal(" EU/t").withStyle(ChatFormatting.RESET) - .append(Component.literal(" (").withStyle(ChatFormatting.GREEN))); + var voltage = recipeInfo.getLong("voltage"); + var tier = GTUtil.getTierByVoltage(voltage); + float minAmperage = (float) EUt / GTValues.V[tier]; + + text = Component + .translatable("gtceu.jade.amperage_use", + FormattingUtil.formatNumber2Places(minAmperage)) + .withStyle(ChatFormatting.RED) + .append(Component.translatable("gtceu.jade.at").withStyle(ChatFormatting.GREEN)); if (tier < GTValues.TIER_COUNT) { text = text.append(Component.literal(GTValues.VNF[tier]) .withStyle(style -> style.withColor(GTValues.VC[tier]))); } else { - int speed = tier - 14; - text = text.append(Component - .literal("MAX") + int speed = Mth.clamp(tier - GTValues.TIER_COUNT - 1, 0, GTValues.TIER_COUNT); + text = text.append(Component.literal("MAX") .withStyle(style -> style.withColor(TooltipHelper.rainbowColor(speed))) .append(Component.literal("+") .withStyle(style -> style.withColor(GTValues.VC[speed])) - .append(Component.literal(FormattingUtil.formatNumbers(tier - 14))) - .withStyle(style -> style.withColor(GTValues.VC[speed])))); + .append(FormattingUtil.formatNumbers(speed)))); } - text = text.append(Component.literal(")").withStyle(ChatFormatting.GREEN)); + text.append(Component.translatable("gtceu.universal.padded_parentheses", + (Component.translatable("gtceu.recipe.eu.total", + FormattingUtil.formatNumbers(EUt)))) + .withStyle(ChatFormatting.WHITE)); } if (isInput) { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeOutputProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeOutputProvider.java index 1107ed5f059..c6569920c53 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeOutputProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeOutputProvider.java @@ -6,6 +6,10 @@ import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.recipe.RecipeHelper; +import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; +import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderFluidIngredient; +import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderIngredient; +import com.gregtechceu.gtceu.api.recipe.ingredient.SizedIngredient; import com.gregtechceu.gtceu.integration.jade.GTElementHelper; import com.gregtechceu.gtceu.utils.GTUtil; @@ -14,15 +18,21 @@ import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.NbtOps; import net.minecraft.nbt.Tag; +import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.ComponentUtils; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraftforge.fluids.FluidStack; +import com.google.gson.JsonObject; +import com.mojang.serialization.JsonOps; import org.jetbrains.annotations.Nullable; import snownee.jade.api.BlockAccessor; import snownee.jade.api.ITooltip; @@ -59,19 +69,22 @@ protected void write(CompoundTag data, RecipeLogic recipeLogic) { ListTag itemTags = new ListTag(); for (var item : itemContents) { - var stacks = ItemRecipeCapability.CAP.of(item.content).getItems(); - if (stacks.length == 0) continue; - if (stacks[0].isEmpty()) continue; - var stack = stacks[0]; - var itemTag = new CompoundTag(); - GTUtil.saveItemStack(stack, itemTag); - if (item.chance < item.maxChance) { - int count = stack.getCount(); - double countD = (double) count * recipe.parallels * - function.getBoostedChance(item, recipeTier, chanceTier) / item.maxChance; - count = countD < 1 ? 1 : (int) Math.round(countD); - itemTag.putInt("Count", count); + if (item.content instanceof IntProviderIngredient provider) { + // don't bother rolling output + itemTag = (CompoundTag) JsonOps.INSTANCE.convertTo(NbtOps.INSTANCE, provider.toJson()); + } else { + var stacks = ItemRecipeCapability.CAP.of(item.content).getItems(); + if (stacks.length == 0 || stacks[0].isEmpty()) continue; + var stack = stacks[0]; + GTUtil.saveItemStack(stack, itemTag); + if (item.chance < item.maxChance) { + int count = stack.getCount(); + double countD = (double) count * recipe.parallels * + function.getBoostedChance(item, recipeTier, chanceTier) / item.maxChance; + count = countD < 1 ? 1 : (int) Math.round(countD); + itemTag.putInt("Count", count); + } } itemTags.add(itemTag); } @@ -82,19 +95,24 @@ protected void write(CompoundTag data, RecipeLogic recipeLogic) { ListTag fluidTags = new ListTag(); for (var fluid : fluidContents) { - var stacks = FluidRecipeCapability.CAP.of(fluid.content).getStacks(); - if (stacks.length == 0) continue; - if (stacks[0].isEmpty()) continue; - var stack = stacks[0]; - var fluidTag = new CompoundTag(); - stack.writeToNBT(fluidTag); - if (fluid.chance < fluid.maxChance) { - int amount = stack.getAmount(); - double amountD = (double) amount * recipe.parallels * - function.getBoostedChance(fluid, recipeTier, chanceTier) / fluid.maxChance; - amount = amountD < 1 ? 1 : (int) Math.round(amountD); - fluidTag.putInt("Amount", amount); + if (fluid.content instanceof IntProviderFluidIngredient provider) { + // don't bother rolling output for nothing + fluidTag = provider.toNBT(); + } else { + FluidStack[] stacks = FluidRecipeCapability.CAP.of(fluid.content).getStacks(); + if (stacks.length == 0) continue; + if (stacks[0].isEmpty()) continue; + var stack = stacks[0]; + stack.writeToNBT(fluidTag); + + if (fluid.chance < fluid.maxChance) { + int amount = stacks[0].getAmount(); + double amountD = (double) amount * recipe.parallels * + function.getBoostedChance(fluid, recipeTier, chanceTier) / fluid.maxChance; + amount = amountD < 1 ? 1 : (int) Math.round(amountD); + fluidTag.putInt("Amount", amount); + } } fluidTags.add(fluidTag); } @@ -110,28 +128,39 @@ protected void write(CompoundTag data, RecipeLogic recipeLogic) { protected void addTooltip(CompoundTag capData, ITooltip tooltip, Player player, BlockAccessor block, BlockEntity blockEntity, IPluginConfig config) { if (capData.getBoolean("Working")) { - List outputItems = new ArrayList<>(); + List outputItems = new ArrayList<>(); if (capData.contains("OutputItems", Tag.TAG_LIST)) { ListTag itemTags = capData.getList("OutputItems", Tag.TAG_COMPOUND); if (!itemTags.isEmpty()) { for (Tag tag : itemTags) { if (tag instanceof CompoundTag tCompoundTag) { - var stack = GTUtil.loadItemStack(tCompoundTag); - if (!stack.isEmpty()) { - outputItems.add(stack); + if (tCompoundTag.contains("count_provider")) { + var ingredient = IntProviderIngredient.SERIALIZER + .parse((JsonObject) NbtOps.INSTANCE.convertTo(JsonOps.INSTANCE, tCompoundTag)); + outputItems.add(ingredient); + } else { + var stack = GTUtil.loadItemStack(tCompoundTag); + if (!stack.isEmpty()) { + outputItems.add(SizedIngredient.create(stack)); + } } } } } } - List outputFluids = new ArrayList<>(); + List outputFluids = new ArrayList<>(); if (capData.contains("OutputFluids", Tag.TAG_LIST)) { ListTag fluidTags = capData.getList("OutputFluids", Tag.TAG_COMPOUND); for (Tag tag : fluidTags) { if (tag instanceof CompoundTag tCompoundTag) { - var stack = FluidStack.loadFluidStackFromNBT(tCompoundTag); - if (!stack.isEmpty()) { - outputFluids.add(stack); + if (tCompoundTag.contains("count_provider")) { + var ingredient = IntProviderFluidIngredient.fromNBT(tCompoundTag); + outputFluids.add(ingredient); + } else { + var stack = FluidStack.loadFluidStackFromNBT(tCompoundTag); + if (!stack.isEmpty()) { + outputFluids.add(FluidIngredient.of(stack)); + } } } } @@ -144,32 +173,51 @@ protected void addTooltip(CompoundTag capData, ITooltip tooltip, Player player, } } - private void addItemTooltips(ITooltip iTooltip, List outputItems) { + private void addItemTooltips(ITooltip iTooltip, List outputItems) { IElementHelper helper = iTooltip.getElementHelper(); - for (ItemStack itemOutput : outputItems) { + for (Ingredient itemOutput : outputItems) { if (itemOutput != null && !itemOutput.isEmpty()) { - int count = itemOutput.getCount(); - itemOutput.setCount(1); - iTooltip.add(helper.smallItem(itemOutput)); - Component text = Component.literal(" ") - .append(String.valueOf(count)) - .append("× ") - .append(getItemName(itemOutput)) - .withStyle(ChatFormatting.WHITE); + ItemStack item; + MutableComponent text = CommonComponents.space(); + if (itemOutput instanceof IntProviderIngredient provider) { + item = provider.getInner().getItems()[0]; + text = text.append(Component.translatable("gtceu.gui.content.range", + String.valueOf(provider.getCountProvider().getMinValue()), + String.valueOf(provider.getCountProvider().getMaxValue()))); + } else { + item = itemOutput.getItems()[0]; + text.append(String.valueOf(item.getCount())); + item.setCount(1); + } + text.append(Component.translatable("gtceu.gui.content.times_item", + getItemName(item)) + .withStyle(ChatFormatting.WHITE)); + + iTooltip.add(helper.smallItem(item)); iTooltip.append(text); } } } - private void addFluidTooltips(ITooltip iTooltip, List outputFluids) { - for (FluidStack fluidOutput : outputFluids) { + private void addFluidTooltips(ITooltip iTooltip, List outputFluids) { + for (FluidIngredient fluidOutput : outputFluids) { if (fluidOutput != null && !fluidOutput.isEmpty()) { - iTooltip.add(GTElementHelper.smallFluid(getFluid(fluidOutput))); - Component text = Component.literal(" ") - .append(FluidTextHelper.getUnicodeMillibuckets(fluidOutput.getAmount(), true)) - .append(" ") - .append(getFluidName(fluidOutput)) + FluidStack stack; + MutableComponent text = CommonComponents.space(); + if (fluidOutput instanceof IntProviderFluidIngredient provider) { + stack = provider.getInner().getStacks()[0]; + text.append(Component.translatable("gtceu.gui.content.range", + FluidTextHelper.getUnicodeMillibuckets(provider.getCountProvider().getMinValue(), true), + FluidTextHelper.getUnicodeMillibuckets(provider.getCountProvider().getMaxValue(), true))); + } else { + stack = fluidOutput.getStacks()[0]; + text.append(FluidTextHelper.getUnicodeMillibuckets(stack.getAmount(), true)); + } + text.append(CommonComponents.space()) + .append(getFluidName(stack)) .withStyle(ChatFormatting.WHITE); + + iTooltip.add(GTElementHelper.smallFluid(getFluid(stack))); iTooltip.append(text); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/StainedColorProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/StainedColorProvider.java index f1954da8282..3eea99a037a 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/StainedColorProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/StainedColorProvider.java @@ -1,13 +1,10 @@ package com.gregtechceu.gtceu.integration.jade.provider; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.blockentity.PipeBlockEntity; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.blockentity.IPaintable; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.Style; import net.minecraft.resources.ResourceLocation; import snownee.jade.api.BlockAccessor; @@ -16,33 +13,23 @@ import snownee.jade.api.ITooltip; import snownee.jade.api.config.IPluginConfig; -import java.util.Locale; - public class StainedColorProvider implements IBlockComponentProvider, IServerDataProvider { @Override public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { if (blockAccessor.getServerData().contains("StainedColor")) { int paintingColor = blockAccessor.getServerData().getInt("StainedColor"); - if (paintingColor != -1) { - iTooltip.add(Component - .translatable("gtceu.top.stained", - "#" + Integer.toHexString(paintingColor).toUpperCase(Locale.ROOT)) - .withStyle(Style.EMPTY.withColor(paintingColor))); + if (paintingColor != IPaintable.UNPAINTED_COLOR) { + iTooltip.add(Component.translatable("gtceu.top.stained", String.format("#%06X", paintingColor)) + .withStyle(style -> style.withColor(paintingColor))); } } } @Override public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { - if (blockAccessor.getBlockEntity() instanceof IMachineBlockEntity blockEntity) { - MetaMachine metaMachine = blockEntity.getMetaMachine(); - if (metaMachine != null) { - int paintingColor = metaMachine.getPaintingColor(); - compoundTag.putInt("StainedColor", paintingColor); - } - } else if (blockAccessor.getBlockEntity() instanceof PipeBlockEntity pipe) { - int paintingColor = pipe.getPaintingColor(); + if (blockAccessor.getBlockEntity() instanceof IPaintable paintable) { + int paintingColor = paintable.isPainted() ? paintable.getPaintingColor() : IPaintable.UNPAINTED_COLOR; compoundTag.putInt("StainedColor", paintingColor); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/SteamBoilerBlockProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/SteamBoilerBlockProvider.java index 7d57cd8cec8..23152ef2ec6 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/SteamBoilerBlockProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/SteamBoilerBlockProvider.java @@ -3,10 +3,13 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.steam.SteamBoilerMachine; +import com.gregtechceu.gtceu.utils.FormattingUtil; +import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; @@ -33,21 +36,63 @@ protected SteamBoilerMachine getCapability(Level level, BlockPos blockPos) { @Override protected void write(CompoundTag data, SteamBoilerMachine capability, BlockAccessor block) { - data.putBoolean("heatingUp", capability.getRecipeLogic().isWorking()); - data.putBoolean("coolingDown", capability.getCurrentTemperature() > 0); - data.putBoolean("producingSteam", !capability.isHasNoWater() && capability.getCurrentTemperature() >= 100); + data.putBoolean("isBurning", capability.getRecipeLogic().isWorking()); + data.putBoolean("hasWater", !capability.isHasNoWater()); + data.putLong("steamProduction", capability.getTotalSteamOutput()); + data.putInt("currentTemperature", capability.getCurrentTemperature()); + data.putInt("maxTemperature", capability.getMaxTemperature()); } @Override protected void addTooltip(CompoundTag capData, ITooltip tooltip, Player player, BlockAccessor block, BlockEntity blockEntity, IPluginConfig config) { - var producing = capData.getBoolean("producingSteam"); - if (capData.getBoolean("heatingUp")) { - tooltip.add(Component.translatable("gtceu.machine.boiler.info.heating.up", - producing ? Component.translatable("gtceu.machine.boiler.info.producing.steam") : "")); - } else if (capData.getBoolean("coolingDown")) { - tooltip.add(Component.translatable("gtceu.machine.boiler.info.cooling.down", - producing ? Component.translatable("gtceu.machine.boiler.info.producing.steam") : "")); + boolean isBurning = capData.getBoolean("isBurning"); + boolean hasWater = capData.getBoolean("hasWater"); + long production = capData.getLong("steamProduction"); + int temperature = capData.getInt("currentTemperature"); + int maxTemperature = capData.getInt("maxTemperature"); + + boolean makingSteam = hasWater && temperature >= 100; + + // Determine the first section + MutableComponent root; + if (isBurning && temperature < maxTemperature) { + // Heating up + root = Component.translatable("gtceu.machine.boiler.info.heating.up"); + } else if (!isBurning && temperature > 0) { + // Cooling down + root = Component.translatable("gtceu.machine.boiler.info.cooling.down"); + } else { + root = null; // neither heating nor cooling, is either max temperature or temperature of zero + } + + // Determine the second section + MutableComponent extra; + if (makingSteam) { + // Producing some amount of steam + extra = Component.translatable("gtceu.machine.boiler.info.production.data", + Component.literal(FormattingUtil.formatNumbers(production / 10)) + .withStyle(ChatFormatting.GREEN)); + if (root != null) { + // append some nice separation here to the root + extra = Component.literal(" | ").append(extra); + } + } else if (temperature > 0 && temperature < 100) { + // Still warming up (or cooling down) + extra = Component.literal(String.format(" (%s%%)", temperature)) + // Either heating up or cooling down + .withStyle(isBurning ? ChatFormatting.RED : ChatFormatting.BLUE); + } else { + // Nothing to add + extra = null; + } + + if (root != null && extra != null) { + tooltip.add(root.append(extra)); + } else if (root != null) { + tooltip.add(root); + } else if (extra != null) { + tooltip.add(extra); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jei/GTJEIPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/jei/GTJEIPlugin.java index 56b86a2b21a..43e6a704253 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jei/GTJEIPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jei/GTJEIPlugin.java @@ -39,11 +39,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/25 - * @implNote JEIPlugin - */ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault @JeiPlugin diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jei/recipe/GTRecipeJEICategory.java b/src/main/java/com/gregtechceu/gtceu/integration/jei/recipe/GTRecipeJEICategory.java index d6b73dd1602..14488980e52 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jei/recipe/GTRecipeJEICategory.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jei/recipe/GTRecipeJEICategory.java @@ -63,9 +63,7 @@ public static void registerRecipes(IRecipeRegistration registration) { public static void registerRecipeCatalysts(IRecipeCatalystRegistration registration) { for (MachineDefinition machine : GTRegistries.MACHINES) { - if (machine.getRecipeTypes() == null) continue; for (GTRecipeType type : machine.getRecipeTypes()) { - if (type == null) continue; for (GTRecipeCategory category : type.getCategories()) { if (!category.isXEIVisible() && !GTCEu.isDev()) continue; registration.addRecipeCatalyst(machine.asStack(), machineType(category)); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuServerEvents.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuServerEvents.java index 5e4823c2dc8..8920c33cbeb 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuServerEvents.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuServerEvents.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.integration.kjs.events.GTBedrockOreVeinEventJS; import com.gregtechceu.gtceu.integration.kjs.events.GTFluidVeinEventJS; import com.gregtechceu.gtceu.integration.kjs.events.GTOreVeinEventJS; +import com.gregtechceu.gtceu.integration.kjs.events.RegisterCapesEventJS; import dev.latvian.mods.kubejs.event.EventGroup; import dev.latvian.mods.kubejs.event.EventHandler; @@ -14,4 +15,6 @@ public interface GTCEuServerEvents { EventHandler ORE_VEIN_MODIFICATION = GROUP.server("oreVeins", () -> GTOreVeinEventJS.class); EventHandler BEDROCK_ORE_VEIN_MODIFICATION = GROUP.server("bedrockOreVeins", () -> GTBedrockOreVeinEventJS.class); EventHandler FLUID_VEIN_MODIFICATION = GROUP.server("fluidVeins", () -> GTFluidVeinEventJS.class); + + EventHandler REGISTER_CAPES = GROUP.server("registerCapes", () -> RegisterCapesEventJS.class); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuStartupEvents.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuStartupEvents.java index a2e85489b25..59764783f61 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuStartupEvents.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuStartupEvents.java @@ -18,7 +18,7 @@ public interface GTCEuStartupEvents { private static boolean validateRegistry(Object o) { try { - var id = GTCEu.appendId(o.toString()); + var id = GTCEu.id(o.toString()); return GTRegistry.REGISTERED.containsKey(id) || GTRegistryInfo.EXTRA_IDS.contains(id); } catch (Exception ex) { return false; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java index 4da5a15f562..a00fb7e7add 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; +import com.gregtechceu.gtceu.api.cosmetics.CapeRegistry; import com.gregtechceu.gtceu.api.data.DimensionMarker; import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; @@ -14,6 +15,7 @@ import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconType; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.HazardProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.chemical.material.properties.ToolProperty; @@ -40,6 +42,7 @@ import com.gregtechceu.gtceu.api.machine.SimpleTieredMachine; import com.gregtechceu.gtceu.api.machine.multiblock.CleanroomType; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.pattern.FactoryBlockPattern; import com.gregtechceu.gtceu.api.pattern.MultiblockShapeInfo; import com.gregtechceu.gtceu.api.pattern.Predicates; @@ -50,17 +53,23 @@ import com.gregtechceu.gtceu.api.recipe.OverclockingLogic; import com.gregtechceu.gtceu.api.recipe.category.GTRecipeCategory; import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.api.recipe.modifier.ModifierFunction; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.registry.registrate.MultiblockMachineBuilder; +import com.gregtechceu.gtceu.common.cosmetics.GTCapes; import com.gregtechceu.gtceu.common.data.*; import com.gregtechceu.gtceu.common.data.machines.GCYMMachines; import com.gregtechceu.gtceu.common.data.machines.GTMachineUtils; import com.gregtechceu.gtceu.common.data.machines.GTMultiMachines; +import com.gregtechceu.gtceu.common.data.models.GTMachineModels; +import com.gregtechceu.gtceu.common.data.models.GTModels; import com.gregtechceu.gtceu.common.item.armor.PowerlessJetpack; import com.gregtechceu.gtceu.common.machine.multiblock.primitive.PrimitiveFancyUIWorkableMachine; +import com.gregtechceu.gtceu.common.registry.GTRegistration; import com.gregtechceu.gtceu.common.unification.material.MaterialRegistryManager; import com.gregtechceu.gtceu.core.mixins.IngredientAccessor; +import com.gregtechceu.gtceu.data.pack.GTDynamicResourcePack; import com.gregtechceu.gtceu.data.recipe.CraftingComponent; import com.gregtechceu.gtceu.data.recipe.GTCraftingComponents; import com.gregtechceu.gtceu.data.recipe.builder.GTRecipeBuilder; @@ -76,11 +85,14 @@ import com.gregtechceu.gtceu.integration.kjs.helpers.MaterialStackWrapper; import com.gregtechceu.gtceu.integration.kjs.recipe.GTRecipeSchema; import com.gregtechceu.gtceu.integration.kjs.recipe.GTShapedRecipeSchema; +import com.gregtechceu.gtceu.integration.kjs.recipe.KJSHelpers; import com.gregtechceu.gtceu.integration.kjs.recipe.WrappingRecipeSchemaType; import com.gregtechceu.gtceu.integration.kjs.recipe.components.ExtendedOutputItem; import com.gregtechceu.gtceu.integration.kjs.recipe.components.GTRecipeComponents; +import com.gregtechceu.gtceu.utils.data.RuntimeBlockStateProvider; import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.data.PackOutput; import net.minecraft.nbt.NbtOps; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.inventory.CraftingContainer; @@ -94,6 +106,7 @@ import net.minecraftforge.items.ItemStackHandler; import com.mojang.serialization.DataResult; +import dev.latvian.mods.kubejs.KubeJSPaths; import dev.latvian.mods.kubejs.KubeJSPlugin; import dev.latvian.mods.kubejs.block.state.BlockStatePredicate; import dev.latvian.mods.kubejs.client.LangEventJS; @@ -125,11 +138,6 @@ import static dev.latvian.mods.kubejs.recipe.schema.minecraft.ShapedRecipeSchema.PATTERN; import static dev.latvian.mods.kubejs.recipe.schema.minecraft.ShapedRecipeSchema.RESULT; -/** - * @author KilaBash - * @date 2023/3/26 - * @implNote GregTechKubeJSPlugin - */ public class GregTechKubeJSPlugin extends KubeJSPlugin { @Override @@ -156,7 +164,7 @@ public void init() { GTRegistryInfo.MACHINE.addType("simple", KJSWrappingMachineBuilder.class, (id) -> new KJSWrappingMachineBuilder(id, new KJSTieredMachineBuilder(id, SimpleTieredMachine::new, - SimpleTieredMachine.EDITABLE_UI_CREATOR)), + SimpleTieredMachine.EDITABLE_UI_CREATOR, false)), true); GTRegistryInfo.MACHINE.addType("custom", KJSWrappingMachineBuilder.class, (id) -> new KJSWrappingMachineBuilder(id, new KJSTieredMachineBuilder(id)), @@ -166,7 +174,7 @@ public void init() { GTRegistryInfo.MACHINE.addType("generator", KJSWrappingMachineBuilder.class, (id) -> new KJSWrappingMachineBuilder(id, new KJSTieredMachineBuilder(id, SimpleGeneratorMachine::new, - SimpleGeneratorMachine.EDITABLE_UI_CREATOR)), + SimpleGeneratorMachine.EDITABLE_UI_CREATOR, true)), false); GTRegistryInfo.MACHINE.addType("multiblock", MultiblockMachineBuilder.class, KJSWrappingMultiblockBuilder::createKJSMulti, false); @@ -200,6 +208,25 @@ public void generateDataJsons(DataJsonGenerator generator) { GTRegistryInfo.ALL_BUILDERS.forEach(builderBase -> builderBase.generateDataJsons(generator)); } + // Fake a data provider for the GT model builders so we don't need to handle this ourselves in any way :3 + public static RuntimeBlockStateProvider RUNTIME_BLOCKSTATE_PROVIDER = new RuntimeBlockStateProvider( + GTRegistration.REGISTRATE, new PackOutput(KubeJSPaths.DIRECTORY), + (loc, json) -> { + if (!loc.getPath().endsWith(".json")) { + loc = loc.withSuffix(".json"); + } + GTDynamicResourcePack.addResource(loc, json); + }); + + public static void generateMachineBlockModels() { + GTRegistryInfo.ALL_BUILDERS.forEach(builderBase -> { + try { + builderBase.generateAssetJsons(null); + } catch (IllegalStateException ignored) {} + }); + GregTechKubeJSPlugin.RUNTIME_BLOCKSTATE_PROVIDER.run(); + } + @Override public void generateAssetJsons(AssetJsonGenerator generator) { GTRegistryInfo.ALL_BUILDERS.forEach(builderBase -> builderBase.generateAssetJsons(generator)); @@ -215,6 +242,8 @@ public void registerClasses(ScriptType type, ClassFilter filter) { super.registerClasses(type, filter); // allow user to access all gtceu classes by importing them. filter.allow("com.gregtechceu.gtceu"); + filter.deny("com.gregtechceu.gtceu.core"); + filter.deny("com.gregtechceu.gtceu.common.network"); } @Override @@ -247,12 +276,13 @@ public void registerRecipeComponents(RecipeComponentFactoryRegistryEvent event) event.register("gtFluidOut", GTRecipeComponents.FLUID_OUT); event.register("gtEuIn", GTRecipeComponents.EU_IN); event.register("gtEuOut", GTRecipeComponents.EU_OUT); + event.register("gtCwuIn", GTRecipeComponents.CWU_IN); + event.register("gtCwuOut", GTRecipeComponents.CWU_OUT); event.register("gtChance", GTRecipeComponents.CHANCE_LOGIC_MAP); event.register("extendedOutputItem", GTRecipeComponents.EXTENDED_OUTPUT); event.register("fluidIngredient", GTRecipeComponents.FLUID_INGREDIENT); - event.register("fluidIngredientOut", GTRecipeComponents.FLUID_INGREDIENT_OUT); } @Override @@ -280,17 +310,25 @@ public void registerBindings(BindingsEvent event) { event.add("ChemicalHelper", ChemicalHelper.class); event.add("PropertyKey", PropertyKey.class); event.add("ToolProperty", ToolProperty.class); + event.add("ArmorProperty", ArmorProperty.class); event.add("GTToolType", GTToolType.class); // Block/Item related event.add("GTBlocks", GTBlocks.class); event.add("GTMaterialBlocks", GTMaterialBlocks.class); event.add("GCYMBlocks", GCYMBlocks.class); + event.add("GTItems", GTItems.class); + event.add("GTMaterialItems", GTMaterialItems.class); + // Machine related event.add("GTMachines", GTMachines.class); event.add("GTMultiMachines", GTMultiMachines.class); event.add("GTMachineUtils", GTMachineUtils.class); event.add("GCYMMachines", GCYMMachines.class); - event.add("GTItems", GTItems.class); - event.add("GTMaterialItems", GTMaterialItems.class); + // Multiblock related + event.add("RotationState", RotationState.class); + event.add("FactoryBlockPattern", FactoryBlockPattern.class); + event.add("MultiblockShapeInfo", MultiblockShapeInfo.class); + event.add("Predicates", Predicates.class); + event.add("PartAbility", PartAbility.class); // Recipe related event.add("GTRecipeTypes", GTRecipeTypes.class); event.add("GTRecipeCategories", GTRecipeCategories.class); @@ -305,17 +343,17 @@ public void registerBindings(BindingsEvent event) { event.add("CleanroomType", CleanroomType.class); event.add("CraftingComponent", CraftingComponent.class); event.add("GTCraftingComponents", GTCraftingComponents.class); + event.add("EnergyStack", EnergyStack.class); + event.add("IOEnergyStack", EnergyStack.WithIO.class); // Sound related event.add("GTSoundEntries", GTSoundEntries.class); event.add("SoundType", SoundType.class); // GUI related event.add("GuiTextures", GuiTextures.class); - // Multiblock related - event.add("RotationState", RotationState.class); - event.add("FactoryBlockPattern", FactoryBlockPattern.class); - event.add("MultiblockShapeInfo", MultiblockShapeInfo.class); - event.add("Predicates", Predicates.class); - event.add("PartAbility", PartAbility.class); + // Client/Server data related + event.add("GTModels", GTModels.class); + event.add("GTMachineModels", GTMachineModels.class); + event.add("GTModelProperties", GTMachineModelProperties.class); // Hazard Related event.add("HazardProperty", HazardProperty.class); @@ -327,7 +365,9 @@ public void registerBindings(BindingsEvent event) { event.add("GTDikeBlockDefinition", DikeVeinGenerator.DikeBlockDefinition.class); event.add("GTOres", GTOres.class); event.add("GTWorldGenLayers", WorldGenLayers.class); - // MaterialColor stuff, for TagPrefix + // Cape related + event.add("GTCapes", GTCapes.class); + event.add("CapeRegistry", CapeRegistry.class); } @Override @@ -446,7 +486,6 @@ public void registerTypeWrappers(ScriptType type, TypeWrappers typeWrappers) { if (o instanceof CharSequence str) return MedicalCondition.CONDITIONS.get(str.toString()); return null; }); - // jank because Rhino doesn't agree that it's an interface typeWrappers.registerSimple(IWorldGenLayer.RuleTestSupplier.class, o -> { if (o instanceof IWorldGenLayer.RuleTestSupplier supplier) return supplier; return () -> BlockStatePredicate.ruleTestOf(o); @@ -458,6 +497,8 @@ public void registerTypeWrappers(ScriptType type, TypeWrappers typeWrappers) { }); typeWrappers.registerSimple(GTRecipeComponents.FluidIngredientJS.class, GTRecipeComponents.FluidIngredientJS::of); + typeWrappers.registerSimple(EnergyStack.class, KJSHelpers::parseEnergyStack); + typeWrappers.registerSimple(EnergyStack.WithIO.class, KJSHelpers::parseIOEnergyStack); } @Override @@ -521,6 +562,7 @@ private static void handleGTRecipe(Map> recipesByNam } if (gtRecipe.getValue(GTRecipeSchema.CONDITIONS) != null) { builder.conditions.addAll(Arrays.stream(gtRecipe.getValue(GTRecipeSchema.CONDITIONS)).toList()); + builder.recipeType.setMinRecipeConditions(builder.conditions.size()); } if (gtRecipe.getValue(GTRecipeSchema.CATEGORY) != null) { builder.recipeCategory = GTRegistries.RECIPE_CATEGORIES.get(gtRecipe.getValue(GTRecipeSchema.CATEGORY)); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/GTRecipeTypeBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/GTRecipeTypeBuilder.java index c000a2e58ca..cc3e4a9b48c 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/GTRecipeTypeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/GTRecipeTypeBuilder.java @@ -12,9 +12,6 @@ import com.lowdragmc.lowdraglib.gui.texture.ProgressTexture; import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; -import com.lowdragmc.lowdraglib.utils.Position; -import com.lowdragmc.lowdraglib.utils.Rect; -import com.lowdragmc.lowdraglib.utils.Size; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; @@ -28,6 +25,7 @@ import java.util.function.BiConsumer; import java.util.function.Supplier; +@SuppressWarnings("unused") public class GTRecipeTypeBuilder extends BuilderBase { public transient String name, category; @@ -36,8 +34,6 @@ public class GTRecipeTypeBuilder extends BuilderBase { private ProgressTexture progressBarTexture; private SteamTexture steamProgressBarTexture; private ProgressTexture.FillDirection steamMoveType; - private transient IGuiTexture specialTexture; - private transient Rect specialTexturePosition; private transient final Byte2ObjectMap slotOverlays; @Nullable protected SoundEntry sound; @@ -60,7 +56,7 @@ public GTRecipeTypeBuilder(ResourceLocation i) { slotOverlays = new Byte2ObjectArrayMap<>(); this.sound = null; this.hasResearchSlot = false; - this.maxTooltips = 3; + this.maxTooltips = 4; this.smallRecipeMap = null; this.iconSupplier = null; this.uiBuilder = null; @@ -98,13 +94,6 @@ public GTRecipeTypeBuilder setMaxSize(IO io, RecipeCapability cap, int max) { return this; } - @Deprecated - public GTRecipeTypeBuilder setSpecialTexture(int x, int y, int width, int height, IGuiTexture area) { - this.specialTexturePosition = Rect.of(new Position(x, y), new Size(width, height)); - this.specialTexture = area; - return this; - } - public GTRecipeTypeBuilder setSlotOverlay(boolean isOutput, boolean isFluid, IGuiTexture slotOverlay) { return this.setSlotOverlay(isOutput, isFluid, false, slotOverlay).setSlotOverlay(isOutput, isFluid, true, slotOverlay); @@ -163,7 +152,7 @@ public GTRecipeType register() { var type = GTRecipeTypes.register(name, category); type.maxInputs.putAll(maxInputs); type.maxOutputs.putAll(maxOutputs); - type.getSlotOverlays().putAll(slotOverlays); + type.getRecipeUI().getSlotOverlays().putAll(slotOverlays); type.getRecipeUI().setProgressBarTexture(progressBarTexture); type.getRecipeUI().setSteamProgressBarTexture(steamProgressBarTexture); type.getRecipeUI().setSteamMoveType(steamMoveType); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/ActiveBlockBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/ActiveBlockBuilder.java index e5c0da75002..30ea178a773 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/ActiveBlockBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/ActiveBlockBuilder.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.integration.kjs.builders.block; import com.gregtechceu.gtceu.api.block.ActiveBlock; +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; @@ -23,7 +24,7 @@ private enum Type { public ActiveBlockBuilder(ResourceLocation id) { super(id); - property(ActiveBlock.ACTIVE); + property(GTBlockStateProperties.ACTIVE); renderType("cutout_mipped"); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/CoilBlockBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/CoilBlockBuilder.java index acb7b292ef5..15d183a1a7c 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/CoilBlockBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/CoilBlockBuilder.java @@ -1,8 +1,8 @@ package com.gregtechceu.gtceu.integration.kjs.builders.block; import com.gregtechceu.gtceu.api.GTCEuAPI; -import com.gregtechceu.gtceu.api.block.ActiveBlock; import com.gregtechceu.gtceu.api.block.SimpleCoilType; +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.common.block.CoilBlock; import com.gregtechceu.gtceu.common.data.GTMaterials; @@ -31,7 +31,7 @@ public class CoilBlockBuilder extends BlockBuilder { public CoilBlockBuilder(ResourceLocation i) { super(i); - property(ActiveBlock.ACTIVE); + property(GTBlockStateProperties.ACTIVE); renderType("cutout_mipped"); noValidSpawns(true); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java index 0544b690391..9ae91e279bc 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java @@ -4,29 +4,34 @@ import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.steam.SimpleSteamMachine; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.api.registry.registrate.BuilderBase; import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; -import com.gregtechceu.gtceu.client.renderer.machine.WorkableSteamMachineRenderer; import com.gregtechceu.gtceu.common.registry.GTRegistration; import com.gregtechceu.gtceu.utils.FormattingUtil; import net.minecraft.resources.ResourceLocation; import dev.latvian.mods.kubejs.client.LangEventJS; +import dev.latvian.mods.kubejs.generator.AssetJsonGenerator; import lombok.Setter; import lombok.experimental.Accessors; +import org.jetbrains.annotations.Nullable; @Accessors(fluent = true, chain = true) public class KJSSteamMachineBuilder extends BuilderBase { @Setter - public volatile boolean hasHighPressure = true; + public volatile boolean hasLowPressure = true, hasHighPressure = true; @Setter public volatile SteamCreationFunction machine = SimpleSteamMachine::new; @Setter public volatile SteamDefinitionFunction definition = (isHP, def) -> def.tier(isHP ? 1 : 0); - private volatile MachineDefinition hp = null; + + private volatile MachineBuilder lowPressureBuilder = null, highPressureBuilder = null; + private volatile MachineDefinition hpValue = null; public KJSSteamMachineBuilder(ResourceLocation id) { super(id); @@ -34,40 +39,62 @@ public KJSSteamMachineBuilder(ResourceLocation id) { @Override public MachineDefinition register() { - MachineBuilder lowPressureBuilder = GTRegistration.REGISTRATE.machine( - String.format("lp_%s", this.id.getPath()), - holder -> machine.create(holder, false)); - lowPressureBuilder.langValue("Low Pressure " + FormattingUtil.toEnglishName(this.id.getPath())) - .tier(0) - .recipeModifier(SimpleSteamMachine::recipeModifier) - .renderer(() -> new WorkableSteamMachineRenderer(false, id.withPrefix("block/machines/"))); - definition.apply(false, lowPressureBuilder); - var lowPressure = lowPressureBuilder.register(); + if (hasLowPressure) { + this.lowPressureBuilder = GTRegistration.REGISTRATE.machine( + String.format("lp_%s", this.id.getPath()), + holder -> machine.create(holder, false)); + lowPressureBuilder.langValue("Low Pressure " + FormattingUtil.toEnglishName(this.id.getPath())) + .tier(0) + .recipeModifier(SimpleSteamMachine::recipeModifier) + .modelProperty(GTMachineModelProperties.VENT_DIRECTION, RelativeDirection.BACK) + .workableSteamHullModel(false, id.withPrefix("block/machines/")); + definition.apply(false, lowPressureBuilder); + value = lowPressureBuilder.register(); + } if (hasHighPressure) { - MachineBuilder highPressureBuilder = GTRegistration.REGISTRATE.machine( + this.highPressureBuilder = GTRegistration.REGISTRATE.machine( String.format("hp_%s", this.id.getPath()), holder -> machine.create(holder, true)); highPressureBuilder.langValue("High Pressure " + FormattingUtil.toEnglishName(this.id.getPath())) .tier(1) .recipeModifier(SimpleSteamMachine::recipeModifier) - .renderer(() -> new WorkableSteamMachineRenderer(true, id.withPrefix("block/machines/"))); + .modelProperty(GTMachineModelProperties.VENT_DIRECTION, RelativeDirection.BACK) + .workableSteamHullModel(true, id.withPrefix("block/machines/")); definition.apply(true, highPressureBuilder); - hp = highPressureBuilder.register(); + hpValue = highPressureBuilder.register(); } - return value = lowPressure; + return value != null ? value : hpValue; + } + + @Override + public void generateAssetJsons(@Nullable AssetJsonGenerator generator) { + super.generateAssetJsons(generator); + if (this.lowPressureBuilder != null) { + this.lowPressureBuilder.generateAssetJsons(generator); + } + if (this.highPressureBuilder != null) { + this.highPressureBuilder.generateAssetJsons(generator); + } } @Override public void generateLang(LangEventJS lang) { super.generateLang(lang); - lang.add(GTCEu.MOD_ID, value.getDescriptionId(), value.getLangValue()); - if (hp != null) { - lang.add(GTCEu.MOD_ID, hp.getDescriptionId(), hp.getLangValue()); + if (value != null) { + lang.add(GTCEu.MOD_ID, value.getDescriptionId(), value.getLangValue()); + } + if (hpValue != null) { + lang.add(GTCEu.MOD_ID, hpValue.getDescriptionId(), hpValue.getLangValue()); } } + @Override + public MachineDefinition get() { + return value != null ? value : hpValue; + } + @FunctionalInterface public interface SteamCreationFunction { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java index edaffd37c01..148aa32b922 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.integration.kjs.builders.machine; -import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.gui.editor.EditableMachineUI; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -16,11 +15,14 @@ import com.google.common.base.Preconditions; import dev.latvian.mods.kubejs.client.LangEventJS; +import dev.latvian.mods.kubejs.generator.AssetJsonGenerator; import it.unimi.dsi.fastutil.ints.Int2IntFunction; import lombok.Setter; import lombok.experimental.Accessors; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -import java.util.Locale; +import java.util.*; import java.util.function.BiFunction; import static com.gregtechceu.gtceu.api.GTValues.*; @@ -29,6 +31,8 @@ @Accessors(fluent = true, chain = true) public class KJSTieredMachineBuilder extends BuilderBase { + private final MachineBuilder[] builders = new MachineBuilder[TIER_COUNT]; + @Setter public volatile int[] tiers = GTMachineUtils.ELECTRIC_TIERS; @Setter @@ -39,31 +43,52 @@ public class KJSTieredMachineBuilder extends BuilderBase { public volatile Int2IntFunction tankScalingFunction = GTMachineUtils.defaultTankSizeFunction; @Setter public volatile boolean addDefaultTooltips = true; + @Setter + public volatile boolean addDefaultModel = true; + @Setter + public volatile boolean isGenerator = false; public volatile BiFunction editableUI; public KJSTieredMachineBuilder(ResourceLocation id) { super(id); + this.addDefaultTooltips = false; + this.addDefaultModel = false; } public KJSTieredMachineBuilder(ResourceLocation id, TieredCreationFunction machine, - BiFunction editableUI) { + BiFunction editableUI, + boolean isGenerator) { super(id); this.machine = machine; this.editableUI = editableUI; + this.isGenerator = isGenerator; + } + + @Override + public void generateAssetJsons(@Nullable AssetJsonGenerator generator) { + super.generateAssetJsons(generator); + for (int tier : this.tiers) { + MachineBuilder builder = this.builders[tier]; + if (builder != null) { + builder.generateAssetJsons(generator); + } + } } @Override - public void generateLang(LangEventJS lang) { + public void generateLang(@NotNull LangEventJS lang) { super.generateLang(lang); - for (int tier : tiers) { - MachineDefinition def = value[tier]; - lang.add(GTCEu.MOD_ID, def.getDescriptionId(), def.getLangValue()); + for (int tier : this.tiers) { + MachineBuilder builder = this.builders[tier]; + if (builder != null) { + builder.generateLang(lang); + } } } @Override - public MachineDefinition[] register() { + public @Nullable MachineDefinition @NotNull [] register() { Preconditions.checkNotNull(tiers, "Tiers can't be null!"); Preconditions.checkArgument(tiers.length > 0, "tiers must have at least one tier!"); Preconditions.checkNotNull(machine, "You must set a machine creation function! " + @@ -72,16 +97,19 @@ public MachineDefinition[] register() { "See GTMachines for examples"); MachineDefinition[] definitions = new MachineDefinition[TIER_COUNT]; for (final int tier : tiers) { - String tierName = GTValues.VN[tier].toLowerCase(Locale.ROOT); + String tierName = VN[tier].toLowerCase(Locale.ROOT); MachineBuilder builder = GTRegistration.REGISTRATE.machine( String.format("%s_%s", tierName, this.id.getPath()), holder -> machine.create(holder, tier, tankScalingFunction)); builder.langValue("%s %s %s".formatted(VLVH[tier], toEnglishName(this.id.getPath()), VLVT[tier])) - .workableTieredHullRenderer(id.withPrefix("block/machines/")) .tier(tier); + if (this.addDefaultModel) { + builder.workableTieredHullModel(id.withPrefix("block/machines/")); + } this.definition.apply(tier, builder); - if (builder.recipeTypes() != null && builder.recipeTypes().length > 0) { + + if (builder.recipeTypes().length > 0) { GTRecipeType recipeType = builder.recipeTypes()[0]; if (this.editableUI != null && builder.editableUI() == null) { builder.editableUI(this.editableUI.apply(this.id, recipeType)); @@ -89,9 +117,11 @@ public MachineDefinition[] register() { if (tankScalingFunction != null && addDefaultTooltips) { builder.tooltips( GTMachineUtils.workableTiered(tier, GTValues.V[tier], GTValues.V[tier] * 64, recipeType, - tankScalingFunction.apply(tier), true)); + tankScalingFunction.applyAsInt(tier), !isGenerator)); } } + + this.builders[tier] = builder; definitions[tier] = builder.register(); } return value = definitions; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java index 1cee26dcf36..f2b4dc7aa65 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java @@ -1,9 +1,6 @@ package com.gregtechceu.gtceu.integration.kjs.builders.machine; -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.registry.registrate.BuilderBase; @@ -16,14 +13,21 @@ import com.google.common.base.Preconditions; import dev.latvian.mods.kubejs.client.LangEventJS; +import dev.latvian.mods.kubejs.generator.AssetJsonGenerator; import lombok.Setter; import lombok.experimental.Accessors; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Locale; +import static com.gregtechceu.gtceu.api.GTValues.*; + @Accessors(fluent = true, chain = true) public class KJSTieredMultiblockBuilder extends BuilderBase { + private final MultiblockMachineBuilder[] builders = new MultiblockMachineBuilder[TIER_COUNT]; + @Setter public volatile int[] tiers = GTMachineUtils.ELECTRIC_TIERS; @Setter @@ -40,35 +44,47 @@ public KJSTieredMultiblockBuilder(ResourceLocation id, TieredCreationFunction ma this.machine = machine; } + @Override + public void generateAssetJsons(@Nullable AssetJsonGenerator generator) { + super.generateAssetJsons(generator); + for (int tier : this.tiers) { + MultiblockMachineBuilder builder = this.builders[tier]; + if (builder != null) { + builder.generateAssetJsons(generator); + } + } + } + @Override public void generateLang(LangEventJS lang) { super.generateLang(lang); for (int tier : tiers) { - MachineDefinition def = value[tier]; - if (def.getLangValue() != null) { - lang.add(GTCEu.MOD_ID, def.getDescriptionId(), def.getLangValue()); + MultiblockMachineBuilder builder = this.builders[tier]; + if (builder != null) { + builder.generateLang(lang); } } } @Override - public MultiblockMachineDefinition[] register() { + public @Nullable MultiblockMachineDefinition @NotNull [] register() { Preconditions.checkNotNull(tiers, "Tiers can't be null!"); Preconditions.checkArgument(tiers.length > 0, "tiers must have at least one tier!"); Preconditions.checkNotNull(machine, "You must set a machine creation function! " + "example: `builder.machine((holder, tier) => new SimpleTieredMachine(holder, tier, t => t * 3200)`"); Preconditions.checkNotNull(definition, "You must set a definition function! " + "See GTMachines for examples"); - MultiblockMachineDefinition[] definitions = new MultiblockMachineDefinition[GTValues.TIER_COUNT]; + MultiblockMachineDefinition[] definitions = new MultiblockMachineDefinition[TIER_COUNT]; for (final int tier : tiers) { - String tierName = GTValues.VN[tier].toLowerCase(Locale.ROOT); + String tierName = VN[tier].toLowerCase(Locale.ROOT); MultiblockMachineBuilder builder = GTRegistration.REGISTRATE.multiblock( String.format("%s_%s", tierName, this.id.getPath()), holder -> machine.create(holder, tier)); - builder.workableTieredHullRenderer(id.withPrefix("block/machines/")) + builder.workableTieredHullModel(id.withPrefix("block/machines/")) .tier(tier); this.definition.apply(tier, builder); + this.builders[tier] = builder; definitions[tier] = builder.register(); } return value = definitions; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMachineBuilder.java index e891f7f70d7..0efd04f3e62 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMachineBuilder.java @@ -6,16 +6,20 @@ import net.minecraft.resources.ResourceLocation; import dev.latvian.mods.kubejs.client.LangEventJS; +import dev.latvian.mods.kubejs.generator.AssetJsonGenerator; +import dev.latvian.mods.kubejs.generator.DataJsonGenerator; import dev.latvian.mods.rhino.util.HideFromJS; import it.unimi.dsi.fastutil.ints.Int2IntFunction; import lombok.Getter; +import org.jetbrains.annotations.Nullable; import java.util.Arrays; +@SuppressWarnings("unused") public class KJSWrappingMachineBuilder extends BuilderBase { @HideFromJS - @Getter(onMethod_ = @HideFromJS) + @Getter private final KJSTieredMachineBuilder tieredBuilder; public KJSWrappingMachineBuilder(ResourceLocation id, KJSTieredMachineBuilder tieredBuilder) { @@ -48,9 +52,28 @@ public KJSWrappingMachineBuilder addDefaultTooltips(boolean addDefaultTooltips) return this; } + public KJSWrappingMachineBuilder addDefaultModel(boolean addDefaultModel) { + tieredBuilder.addDefaultModel(addDefaultModel); + return this; + } + + public KJSWrappingMachineBuilder isGenerator(boolean isGenerator) { + tieredBuilder.isGenerator(isGenerator); + return this; + } + + @Override + public void generateDataJsons(DataJsonGenerator generator) { + tieredBuilder.generateDataJsons(generator); + } + + @Override + public void generateAssetJsons(@Nullable AssetJsonGenerator generator) { + tieredBuilder.generateAssetJsons(generator); + } + @Override public void generateLang(LangEventJS lang) { - super.generateLang(lang); tieredBuilder.generateLang(lang); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java index c9b6c137cca..113b517de61 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java @@ -13,15 +13,18 @@ import net.minecraft.resources.ResourceLocation; import dev.latvian.mods.kubejs.client.LangEventJS; +import dev.latvian.mods.kubejs.generator.AssetJsonGenerator; +import dev.latvian.mods.kubejs.generator.DataJsonGenerator; import dev.latvian.mods.rhino.util.HideFromJS; import lombok.Getter; +import org.jetbrains.annotations.Nullable; import java.util.Arrays; public class KJSWrappingMultiblockBuilder extends BuilderBase { @HideFromJS - @Getter(onMethod_ = @HideFromJS) + @Getter private final KJSTieredMultiblockBuilder tieredBuilder; public KJSWrappingMultiblockBuilder(ResourceLocation id, KJSTieredMultiblockBuilder tieredBuilder) { @@ -44,9 +47,18 @@ public KJSWrappingMultiblockBuilder definition(KJSTieredMultiblockBuilder.Defini return this; } + @Override + public void generateDataJsons(DataJsonGenerator generator) { + tieredBuilder.generateDataJsons(generator); + } + + @Override + public void generateAssetJsons(@Nullable AssetJsonGenerator generator) { + tieredBuilder.generateAssetJsons(generator); + } + @Override public void generateLang(LangEventJS lang) { - super.generateLang(lang); tieredBuilder.generateLang(lang); } @@ -64,19 +76,19 @@ public MultiblockMachineDefinition register() { } public static MultiblockMachineBuilder createKJSMulti(ResourceLocation id) { - return MultiblockMachineBuilder.createMulti(GTRegistration.REGISTRATE, id.getPath(), + return new MultiblockMachineBuilder(GTRegistration.REGISTRATE, id.getPath(), WorkableElectricMultiblockMachine::new, MetaMachineBlock::new, MetaMachineItem::new, - MetaMachineBlockEntity::createBlockEntity); + MetaMachineBlockEntity::new); } public static MultiblockMachineBuilder createKJSMulti(ResourceLocation id, KJSTieredMachineBuilder.CreationFunction machine) { - return MultiblockMachineBuilder.createMulti(GTRegistration.REGISTRATE, id.getPath(), + return new MultiblockMachineBuilder(GTRegistration.REGISTRATE, id.getPath(), machine::create, MetaMachineBlock::new, MetaMachineItem::new, - MetaMachineBlockEntity::createBlockEntity); + MetaMachineBlockEntity::new); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/package-info.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/package-info.java new file mode 100644 index 00000000000..aec79b6b81d --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package com.gregtechceu.gtceu.integration.kjs.builders.machine; + +import net.minecraft.MethodsReturnNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/package-info.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/package-info.java new file mode 100644 index 00000000000..c9aaf70d6ab --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package com.gregtechceu.gtceu.integration.kjs.builders; + +import net.minecraft.MethodsReturnNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/built/KJSTagPrefix.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/built/KJSTagPrefix.java index d2bf2777f9e..0a58a4276c3 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/built/KJSTagPrefix.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/built/KJSTagPrefix.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.integration.kjs.built; +import com.gregtechceu.gtceu.api.block.OreBlock; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconType; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; @@ -24,15 +25,21 @@ public KJSTagPrefix(String name) { public static KJSTagPrefix oreTagPrefix(String name) { return new KJSTagPrefix(name) - .prefixTagPath("ores/%s/%s") .defaultTagPath("ores/%s") .prefixOnlyTagPath("ores_in_ground/%s") .unformattedTagPath("ores") .materialIconType(MaterialIconType.ore) .unificationEnabled(true) + .blockConstructor(OreBlock::new) .generationCondition(hasOreProperty); } + @Override + public KJSTagPrefix blockConstructor(BlockConstructor blockConstructor) { + super.blockConstructor(blockConstructor); + return this; + } + @Override public KJSTagPrefix defaultTagPath(String path) { return this.defaultTagPath(path, false); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/GTRegistryEventJS.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/GTRegistryEventJS.java index 54a38313929..0cbf73bf135 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/GTRegistryEventJS.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/GTRegistryEventJS.java @@ -24,7 +24,7 @@ public BuilderBase create(String id, String type) { } var b = t.factory() - .createBuilder(UtilsJS.getMCID(ScriptType.STARTUP.manager.get().context, GTCEu.appendId(id))); + .createBuilder(UtilsJS.getMCID(ScriptType.STARTUP.manager.get().context, GTCEu.id(id))); if (b == null) { throw new IllegalArgumentException("Unknown type '" + type + "' for object '" + id + "'!"); @@ -44,7 +44,7 @@ public BuilderBase create(String id) { } var b = t.factory() - .createBuilder(UtilsJS.getMCID(ScriptType.STARTUP.manager.get().context, GTCEu.appendId(id))); + .createBuilder(UtilsJS.getMCID(ScriptType.STARTUP.manager.get().context, GTCEu.id(id))); if (b == null) { throw new IllegalArgumentException("Unknown type '" + t.type() + "' for object '" + id + "'!"); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/RegisterCapesEventJS.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/RegisterCapesEventJS.java new file mode 100644 index 00000000000..b81bc089148 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/RegisterCapesEventJS.java @@ -0,0 +1,56 @@ +package com.gregtechceu.gtceu.integration.kjs.events; + +import com.gregtechceu.gtceu.api.cosmetics.event.RegisterGTCapesEvent; + +import net.minecraft.resources.ResourceLocation; + +import dev.latvian.mods.kubejs.event.EventJS; +import dev.latvian.mods.kubejs.typings.Info; +import dev.latvian.mods.kubejs.typings.Param; + +import java.util.UUID; + +@Info(""" + Invoked when the server is first loaded. + """) +public class RegisterCapesEventJS extends EventJS { + + private final RegisterGTCapesEvent event; + + public RegisterCapesEventJS(RegisterGTCapesEvent event) { + this.event = event; + } + + @Info(value = """ + Registers a cape. + """, + params = { + @Param(name = "id", value = "An identifier for the cape"), + @Param(name = "texture", value = "The full path to the cape's texture in a resource pack") + }) + public void registerCape(ResourceLocation id, ResourceLocation texture) { + event.registerCape(id, texture); + } + + @Info(value = """ + Registers a cape that will always be unlocked for all players. + """, + params = { + @Param(name = "id", value = "An identifier for the cape"), + @Param(name = "texture", value = "The full path to the cape's texture in a resource pack") + }) + public void registerFreeCape(ResourceLocation id, ResourceLocation texture) { + event.registerFreeCape(id, texture); + } + + @Info(value = """ + Automatically makes a cape available to a player. + """, + params = { + @Param(name = "owner", value = "The UUID of the player to give the cape to."), + @Param(name = "capeId", value = "The cape to give") + }) + public void unlockCapeFor(UUID owner, ResourceLocation capeId) { + event.unlockCapeFor(owner, capeId); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/MaterialStackWrapper.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/MaterialStackWrapper.java index 216251e43a6..10bfbf8f4f8 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/MaterialStackWrapper.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/MaterialStackWrapper.java @@ -33,7 +33,8 @@ public static MaterialStackWrapper fromString(CharSequence str) { } final String copyFinal = copy; - cached = new MaterialStackWrapper(() -> GTMaterials.get(copyFinal), count); + Supplier mat = () -> GTMaterials.get(copyFinal); + cached = new MaterialStackWrapper(mat, count); PARSE_CACHE.put(trimmed, cached); return cached.copy(); } @@ -44,7 +45,7 @@ public MaterialStackWrapper copy() { } public boolean isEmpty() { - return this.amount < 1 || this.material.get().isNull(); + return this.amount < 1 || this.material == null; } public MaterialStack toMatStack() { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java index a5f79a5903b..acb6a78f081 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java @@ -29,27 +29,35 @@ import com.gregtechceu.gtceu.integration.kjs.recipe.components.GTRecipeComponents; import com.gregtechceu.gtceu.utils.ResearchManager; +import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; +import net.minecraft.util.valueproviders.IntProvider; import net.minecraft.util.valueproviders.UniformInt; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.level.biome.Biome; +import net.minecraftforge.common.crafting.StrictNBTIngredient; +import net.minecraftforge.fluids.FluidStack; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import dev.ftb.mods.ftbquests.quest.QuestObjectBase; import dev.latvian.mods.kubejs.fluid.FluidStackJS; import dev.latvian.mods.kubejs.fluid.InputFluid; +import dev.latvian.mods.kubejs.fluid.OutputFluid; import dev.latvian.mods.kubejs.item.InputItem; import dev.latvian.mods.kubejs.item.OutputItem; import dev.latvian.mods.kubejs.recipe.RecipeExceptionJS; import dev.latvian.mods.kubejs.recipe.RecipeJS; import dev.latvian.mods.kubejs.recipe.RecipeKey; import dev.latvian.mods.kubejs.recipe.component.TimeComponent; +import dev.latvian.mods.kubejs.recipe.schema.RecipeConstructor; import dev.latvian.mods.kubejs.recipe.schema.RecipeSchema; import dev.latvian.mods.kubejs.util.ConsoleJS; import dev.latvian.mods.rhino.util.HideFromJS; @@ -100,8 +108,8 @@ public GTRecipeJS id(ResourceLocation _id) { this.idWithoutType = new ResourceLocation( _id.getNamespace().equals("minecraft") ? this.type.id.getNamespace() : _id.getNamespace(), _id.getPath()); - this.id = new ResourceLocation(idWithoutType.getNamespace(), - "%s/%s".formatted(this.type.id.getPath(), idWithoutType.getPath())); + this.id = idWithoutType.withPrefix(this.type.id.getPath() + "/"); + save(); return this; } @@ -156,7 +164,9 @@ public GTRecipeJS output(RecipeCapability capability, Object... obj) { } public GTRecipeJS addCondition(RecipeCondition condition) { - setValue(CONDITIONS, ArrayUtils.add(getValue(CONDITIONS), condition)); + if (getValue(CONDITIONS) == null) setValue(CONDITIONS, new RecipeCondition[] { condition }); + else setValue(CONDITIONS, ArrayUtils.add(getValue(CONDITIONS), condition)); + save(); return this; } @@ -167,29 +177,45 @@ public GTRecipeJS category(GTRecipeCategory category) { return this; } - public GTRecipeJS inputEU(long eu) { + public GTRecipeJS inputEU(EnergyStack eu) { return input(EURecipeCapability.CAP, eu); } - public GTRecipeJS EUt(long eu) { - if (eu == 0) { + public GTRecipeJS inputEU(long voltage, long amperage) { + return inputEU(new EnergyStack(voltage, amperage)); + } + + @SuppressWarnings("ConstantValue") + public GTRecipeJS EUt(EnergyStack.WithIO eu) { + if (eu.isEmpty()) { throw new RecipeExceptionJS(String.format("EUt can't be explicitly set to 0, id: %s", id)); } + if (eu.amperage() < 1) { + throw new RecipeExceptionJS(String.format("Amperage must be a positive integer, id: %s", id)); + } var lastPerTick = perTick; perTick = true; - if (eu > 0) { - inputEU(eu); - } else if (eu < 0) { - outputEU(-eu); + if (eu.isInput()) { + inputEU(eu.stack()); + } else if (eu.isOutput()) { + outputEU(eu.stack()); } perTick = lastPerTick; return this; } - public GTRecipeJS outputEU(long eu) { + public GTRecipeJS EUt(long voltage, long amperage) { + return EUt(EnergyStack.WithIO.fromVA(voltage, amperage)); + } + + public GTRecipeJS outputEU(EnergyStack eu) { return output(EURecipeCapability.CAP, eu); } + public GTRecipeJS outputEU(long voltage, long amperage) { + return outputEU(new EnergyStack(voltage, amperage)); + } + public GTRecipeJS inputCWU(int cwu) { return input(CWURecipeCapability.CAP, cwu); } @@ -203,7 +229,7 @@ public GTRecipeJS CWUt(int cwu) { if (cwu > 0) { inputCWU(cwu); } else if (cwu < 0) { - outputCWU(cwu); + outputCWU(-cwu); } perTick = lastPerTick; return this; @@ -234,9 +260,11 @@ public GTRecipeJS itemInput(MaterialEntry input, int count) { public GTRecipeJS inputItems(InputItem... inputs) { for (var stack : inputs) { - var matStack = ChemicalHelper.getMaterialStack(stack.ingredient); - if (!matStack.isEmpty()) { - itemMaterialStacks.add(new MaterialStack(matStack.material(), matStack.amount() * stack.count)); + var matInfo = ChemicalHelper.getMaterialInfo(stack.ingredient); + if (matInfo != null && chance == maxChance && chance != 0) { + for (var matStack : matInfo.getMaterials()) { + itemMaterialStacks.add(matStack.multiply(stack.count)); + } } } return input(ItemRecipeCapability.CAP, (Object[]) inputs); @@ -255,14 +283,14 @@ public GTRecipeJS inputItems(ItemStack... inputs) { } return input(ItemRecipeCapability.CAP, Arrays.stream(inputs) - .map(stack -> InputItem.of(SizedIngredient.create( - stack.hasTag() ? NBTIngredient.createNBTIngredient(stack) : Ingredient.of(stack), - stack.getCount()), stack.getCount())) + .map(stack -> InputItem.of( + stack.hasTag() ? StrictNBTIngredient.of(stack) : Ingredient.of(stack), + stack.getCount())) .toArray()); } public GTRecipeJS inputItems(TagKey tag, int amount) { - return inputItems(InputItem.of(SizedIngredient.create(tag, amount))); + return inputItems(InputItem.of(Ingredient.of(tag), amount)); } public GTRecipeJS inputItems(Item input, int amount) { @@ -274,7 +302,7 @@ public GTRecipeJS inputItems(Item input) { } public GTRecipeJS inputItems(Supplier input) { - return inputItems(InputItem.of(Ingredient.of(input.get()), 1)); + return inputItems(input.get()); } public GTRecipeJS inputItems(Supplier input, int amount) { @@ -328,11 +356,11 @@ public GTRecipeJS outputItems(ExtendedOutputItem... outputs) { } public GTRecipeJS outputItems(Item input, int amount) { - return outputItems(ExtendedOutputItem.of(new ItemStack(input, amount))); + return outputItems(new ExtendedOutputItem(new ItemStack(input, amount), null)); } public GTRecipeJS outputItems(Item input) { - return outputItems(ExtendedOutputItem.of(new ItemStack(input))); + return outputItems(new ExtendedOutputItem(new ItemStack(input), null)); } public GTRecipeJS outputItems(TagPrefix orePrefix, Material material) { @@ -340,7 +368,7 @@ public GTRecipeJS outputItems(TagPrefix orePrefix, Material material) { } public GTRecipeJS outputItems(TagPrefix orePrefix, Material material, int count) { - return outputItems(ExtendedOutputItem.of(ChemicalHelper.get(orePrefix, material, count))); + return outputItems(new ExtendedOutputItem(ChemicalHelper.get(orePrefix, material, count), null)); } public GTRecipeJS outputItems(MachineDefinition machine) { @@ -348,7 +376,7 @@ public GTRecipeJS outputItems(MachineDefinition machine) { } public GTRecipeJS outputItems(MachineDefinition machine, int count) { - return outputItems(new ExtendedOutputItem(machine.asStack(count))); + return outputItems(new ExtendedOutputItem(machine.asStack(count), null)); } public GTRecipeJS itemOutputsRanged(ExtendedOutputItem ingredient, int min, int max) { @@ -356,11 +384,11 @@ public GTRecipeJS itemOutputsRanged(ExtendedOutputItem ingredient, int min, int } public GTRecipeJS outputItemsRanged(Ingredient ingredient, int min, int max) { - return output(ItemRecipeCapability.CAP, new IntProviderIngredient(ingredient, UniformInt.of(min, max))); + return output(ItemRecipeCapability.CAP, new ExtendedOutputItem(ingredient, 1, UniformInt.of(min, max))); } public GTRecipeJS outputItemsRanged(ItemStack stack, int min, int max) { - return outputItemsRanged(Ingredient.of(stack), min, max); + return output(ItemRecipeCapability.CAP, new ExtendedOutputItem(stack, UniformInt.of(min, max))); } public GTRecipeJS outputItemsRanged(TagPrefix orePrefix, Material material, int min, int max) { @@ -393,16 +421,16 @@ public GTRecipeJS notConsumableFluid(GTRecipeComponents.FluidIngredientJS fluid) public GTRecipeJS circuit(int configuration) { if (configuration < 0 || configuration > IntCircuitBehaviour.CIRCUIT_MAX) { - throw new RecipeExceptionJS(String.format("Circuit configuration must be in the bounds 0 - 32")); + throw new RecipeExceptionJS("Circuit configuration must be in the bounds 0 - 32"); } - return notConsumable(InputItem.of(IntCircuitIngredient.circuitInput(configuration), 1)); + return notConsumable(InputItem.of(IntCircuitIngredient.of(configuration), 1)); } public GTRecipeJS chancedInput(InputItem stack, int chance, int tierChanceBoost) { if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { throw new RecipeExceptionJS( String.format("Chance cannot be less or equal to 0 or more than %s, Actual: %s, id: %s", - ChanceLogic.getMaxChancedValue(), chance, id, new Throwable())); + ChanceLogic.getMaxChancedValue(), chance, id)); } int lastChance = this.chance; int lastTierChanceBoost = this.tierChanceBoost; @@ -419,7 +447,7 @@ public GTRecipeJS chancedFluidInput(GTRecipeComponents.FluidIngredientJS stack, if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { throw new RecipeExceptionJS( String.format("Chance cannot be less or equal to 0 or more than %s, Actual: %s, id: %s", - ChanceLogic.getMaxChancedValue(), chance, id, new Throwable())); + ChanceLogic.getMaxChancedValue(), chance, id)); } int lastChance = this.chance; int lastTierChanceBoost = this.tierChanceBoost; @@ -435,7 +463,7 @@ public GTRecipeJS chancedOutput(ExtendedOutputItem stack, int chance, int tierCh if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { throw new RecipeExceptionJS( String.format("Chance cannot be less or equal to 0 or more than %s, Actual: %s, id: %s", - ChanceLogic.getMaxChancedValue(), chance, id, new Throwable())); + ChanceLogic.getMaxChancedValue(), chance, id)); } int lastChance = this.chance; int lastTierChanceBoost = this.tierChanceBoost; @@ -448,11 +476,12 @@ public GTRecipeJS chancedOutput(ExtendedOutputItem stack, int chance, int tierCh } public GTRecipeJS chancedOutput(TagPrefix tag, Material mat, int chance, int tierChanceBoost) { - return chancedOutput(ExtendedOutputItem.of(ChemicalHelper.get(tag, mat)), chance, tierChanceBoost); + return chancedOutput(new ExtendedOutputItem(ChemicalHelper.get(tag, mat), null), chance, tierChanceBoost); } public GTRecipeJS chancedOutput(TagPrefix tag, Material mat, int count, int chance, int tierChanceBoost) { - return chancedOutput(ExtendedOutputItem.of(ChemicalHelper.get(tag, mat, count)), chance, tierChanceBoost); + return chancedOutput(new ExtendedOutputItem(ChemicalHelper.get(tag, mat, count), null), chance, + tierChanceBoost); } public GTRecipeJS chancedOutput(ExtendedOutputItem stack, String fraction, int tierChanceBoost) { @@ -464,7 +493,7 @@ public GTRecipeJS chancedOutput(ExtendedOutputItem stack, String fraction, int t if (split.length > 2) { throw new RecipeExceptionJS(String.format( "Fraction or number was not parsed correctly! Expected format is \"1/3\" or \"1000\". Actual: \"%s\".", - fraction, new Throwable())); + fraction)); } int chance; @@ -476,7 +505,7 @@ public GTRecipeJS chancedOutput(ExtendedOutputItem stack, String fraction, int t } catch (NumberFormatException e) { throw new RecipeExceptionJS(String.format( "Fraction or number was not parsed correctly! Expected format is \"1/3\" or \"1000\". Actual: \"%s\".", - fraction, new Throwable())); + fraction)); } return chancedOutput(stack, chance, tierChanceBoost); } @@ -486,18 +515,18 @@ public GTRecipeJS chancedOutput(ExtendedOutputItem stack, String fraction, int t } catch (NumberFormatException e) { throw new RecipeExceptionJS(String.format( "Fraction or number was not parsed correctly! Expected format is \"1/3\" or \"1000\". Actual: \"%s\".", - fraction, new Throwable())); + fraction)); } if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { throw new RecipeExceptionJS( String.format("Chance cannot be less or equal to 0 or more than %s, Actual: %s, id: %s", - ChanceLogic.getMaxChancedValue(), chance, id, new Throwable())); + ChanceLogic.getMaxChancedValue(), chance, id)); } if (chance >= maxChance || maxChance > ChanceLogic.getMaxChancedValue()) { throw new RecipeExceptionJS(String.format( "Max Chance cannot be less or equal to Chance or more than %s, Actual: %s, id: %s", - ChanceLogic.getMaxChancedValue(), maxChance, id, new Throwable())); + ChanceLogic.getMaxChancedValue(), maxChance, id)); } int scalar = Math.floorDiv(ChanceLogic.getMaxChancedValue(), maxChance); @@ -520,8 +549,8 @@ public GTRecipeJS chancedOutput(ExtendedOutputItem stack, String fraction, int t public GTRecipeJS chancedOutput(TagPrefix prefix, Material material, int count, String fraction, int tierChanceBoost) { - return chancedOutput(ExtendedOutputItem.of(ChemicalHelper.get(prefix, material, count)), fraction, - tierChanceBoost); + return chancedOutput(new ExtendedOutputItem(ChemicalHelper.get(prefix, material, count), null), + fraction, tierChanceBoost); } public GTRecipeJS chancedOutput(TagPrefix prefix, Material material, String fraction, int tierChanceBoost) { @@ -532,7 +561,7 @@ public GTRecipeJS chancedFluidOutput(FluidStackJS stack, int chance, int tierCha if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { throw new RecipeExceptionJS( String.format("Chance cannot be less or equal to 0 or more than %s, Actual: %s, id: %s", - ChanceLogic.getMaxChancedValue(), chance, id, new Throwable())); + ChanceLogic.getMaxChancedValue(), chance, id)); } int lastChance = this.chance; int lastTierChanceBoost = this.tierChanceBoost; @@ -553,7 +582,7 @@ public GTRecipeJS chancedFluidOutput(FluidStackJS stack, String fraction, int ti if (split.length > 2) { throw new RecipeExceptionJS(String.format( "Fraction or number was not parsed correctly! Expected format is \"1/3\" or \"1000\". Actual: \"%s\".", - fraction, new Throwable())); + fraction)); } int chance; @@ -565,7 +594,7 @@ public GTRecipeJS chancedFluidOutput(FluidStackJS stack, String fraction, int ti } catch (NumberFormatException e) { throw new RecipeExceptionJS(String.format( "Fraction or number was not parsed correctly! Expected format is \"1/3\" or \"1000\". Actual: \"%s\".", - fraction, new Throwable())); + fraction)); } return chancedFluidOutput(stack, chance, tierChanceBoost); } @@ -576,18 +605,18 @@ public GTRecipeJS chancedFluidOutput(FluidStackJS stack, String fraction, int ti } catch (NumberFormatException e) { throw new RecipeExceptionJS(String.format( "Fraction or number was not parsed correctly! Expected format is \"1/3\" or \"1000\". Actual: \"%s\".", - fraction, e)); + fraction), e); } if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { throw new RecipeExceptionJS( String.format("Chance cannot be less or equal to 0 or more than %s, Actual: %s, id: %s", - ChanceLogic.getMaxChancedValue(), chance, id, new Throwable())); + ChanceLogic.getMaxChancedValue(), chance, id)); } if (chance >= maxChance || maxChance > ChanceLogic.getMaxChancedValue()) { throw new RecipeExceptionJS(String.format( "Max Chance cannot be less or equal to Chance or more than %s, Actual: %s, id: %s", - ChanceLogic.getMaxChancedValue(), maxChance, id, new Throwable())); + ChanceLogic.getMaxChancedValue(), maxChance, id)); } int scalar = Math.floorDiv(ChanceLogic.getMaxChancedValue(), maxChance); @@ -654,7 +683,7 @@ public GTRecipeJS chancedTickInputLogic(RecipeCapability cap, ChanceLogic log public GTRecipeJS inputFluids(GTRecipeComponents.FluidIngredientJS... inputs) { for (var fluidIng : inputs) { - for (var stack : fluidIng.getIngredient().getStacks()) { + for (var stack : fluidIng.ingredient().getStacks()) { var mat = ChemicalHelper.getMaterial(stack.getFluid()); if (!mat.isNull()) { fluidMaterialStacks.add(new MaterialStack(mat, @@ -669,6 +698,16 @@ public GTRecipeJS outputFluids(FluidStackJS... outputs) { return output(FluidRecipeCapability.CAP, (Object[]) outputs); } + public GTRecipeJS outputFluidsRanged(FluidStackJS output, int min, int max) { + return outputFluidsRanged(output, UniformInt.of(min, max)); + } + + public GTRecipeJS outputFluidsRanged(FluidStackJS output, IntProvider range) { + FluidStack stack = new FluidStack(output.getFluid(), (int) output.getAmount(), output.getNbt()); + return output(FluidRecipeCapability.CAP, + IntProviderFluidIngredient.of(FluidIngredient.of(stack), range)); + } + ////////////////////////////////////// // ********** DATA ***********// ////////////////////////////////////// @@ -777,13 +816,21 @@ public GTRecipeJS dimension(ResourceLocation dimension) { } public GTRecipeJS biome(ResourceLocation biome, boolean reverse) { - return addCondition(new BiomeCondition(biome).setReverse(reverse)); + return biome(ResourceKey.create(Registries.BIOME, biome), reverse); } public GTRecipeJS biome(ResourceLocation biome) { return biome(biome, false); } + public GTRecipeJS biome(ResourceKey biome, boolean reverse) { + return addCondition(new BiomeCondition(biome).setReverse(reverse)); + } + + public GTRecipeJS biome(ResourceKey biome) { + return biome(biome, false); + } + public GTRecipeJS rain(float level, boolean reverse) { return addCondition(new RainingCondition(level).setReverse(reverse)); } @@ -870,13 +917,13 @@ public GTRecipeJS ftbQuest(String questId) { private boolean applyResearchProperty(ResearchData.ResearchEntry researchEntry) { if (!ConfigHolder.INSTANCE.machines.enableResearch) return false; if (researchEntry == null) { - throw new RecipeExceptionJS( - String.format("Assembly Line Research Entry cannot be empty.", new IllegalArgumentException())); + throw new RecipeExceptionJS("Assembly Line Research Entry cannot be empty.", + new IllegalArgumentException()); } if (!generatingRecipes) { - throw new RecipeExceptionJS(String.format("Cannot generate recipes when using researchWithoutRecipe()", - new IllegalArgumentException())); + throw new RecipeExceptionJS("Cannot generate recipes when using researchWithoutRecipe()", + new IllegalStateException()); } if (getValue(CONDITIONS) == null) setValue(CONDITIONS, new RecipeCondition[0]); @@ -972,12 +1019,11 @@ public GTRecipeJS removePreviousMaterialInfo() { @Override public ResourceLocation getOrCreateId() { - if (id == null) { - String prefix = type.id.getNamespace() + ":"; - String path = "%s/%s".formatted(type.id.getPath(), "kjs_custom"); - id = type.event.takeId(this, prefix, path); - String pathWithoutType = StringUtils.substringAfter(id.getPath(), '/'); - idWithoutType = new ResourceLocation(id.getNamespace(), pathWithoutType); + boolean wasNull = id == null; + + super.getOrCreateId(); + if (wasNull) { + idWithoutType = id.withPath(p -> StringUtils.substringAfter(p, '/')); } return id; } @@ -1005,7 +1051,8 @@ public InputItem readInputItem(Object from) { } public JsonElement writeInputItem(InputItem value) { - return SizedIngredient.create(value.ingredient, value.count).toJson(); + if (value.ingredient instanceof SizedIngredient sized) return sized.toJson(); + else return SizedIngredient.create(value.ingredient, value.count).toJson(); } @Override @@ -1014,13 +1061,8 @@ public OutputItem readOutputItem(Object from) { return outputItem; } else if (from instanceof OutputItem outputItem) { return outputItem; - } else if (from instanceof SizedIngredient ingredient) { - if (ingredient.getInner() instanceof IntProviderIngredient intProvider) { - return new ExtendedOutputItem(intProvider, 1); - } - return OutputItem.of(ingredient.getInner().getItems()[0], Double.NaN); - } else if (from instanceof IntProviderIngredient ingredient) { - return new ExtendedOutputItem(ingredient, 1); + } else if (from instanceof Ingredient ingredient) { + return ExtendedOutputItem.of(ingredient, 1); } else if (from instanceof JsonObject jsonObject) { float chance = 1.0f; if (jsonObject.has("chance")) { @@ -1037,7 +1079,9 @@ public OutputItem readOutputItem(Object from) { @Override public JsonElement writeOutputItem(OutputItem value) { - if (value instanceof ExtendedOutputItem extended) { + if (value.rolls != null) { + return IntProviderIngredient.of(value.item, value.rolls).toJson(); + } else if (value instanceof ExtendedOutputItem extended) { if (extended.ingredient.getInner() instanceof IntProviderIngredient intProvider) { return intProvider.toJson(); } @@ -1046,15 +1090,36 @@ public JsonElement writeOutputItem(OutputItem value) { return SizedIngredient.create(value.item).toJson(); } + @Override + public InputFluid readInputFluid(Object from) { + return GTRecipeComponents.FluidIngredientJS.of(from); + } + @Override public JsonElement writeInputFluid(InputFluid value) { + if (value instanceof GTRecipeComponents.FluidIngredientJS ing) { + return ing.ingredient().toJson(); + } + var fluid = ((FluidStackJS) value).getFluidStack(); - return FluidIngredient.of((int) fluid.getAmount(), fluid.getFluid()).toJson(); + return FluidIngredient.of(fluid.getFluid(), (int) fluid.getAmount(), fluid.getTag()).toJson(); } @Override - public InputFluid readInputFluid(Object from) { - return super.readInputFluid(from); + public OutputFluid readOutputFluid(Object from) { + return GTRecipeComponents.FluidIngredientJS.of(from); + } + + @Override + public JsonElement writeOutputFluid(OutputFluid value) { + if (value instanceof GTRecipeComponents.FluidIngredientJS ing) { + return ing.ingredient().toJson(); + } else if (value instanceof FluidIngredient ingredient) { + return ingredient.toJson(); + } + + var fluid = ((FluidStackJS) value).getFluidStack(); + return FluidIngredient.of(fluid.getFluid(), (int) fluid.getAmount(), fluid.getTag()).toJson(); } } @@ -1084,5 +1149,54 @@ public InputFluid readInputFluid(Object from) { ALL_INPUTS, ALL_TICK_INPUTS, ALL_OUTPUTS, ALL_TICK_OUTPUTS, INPUT_CHANCE_LOGICS, OUTPUT_CHANCE_LOGICS, TICK_INPUT_CHANCE_LOGICS, TICK_OUTPUT_CHANCE_LOGICS, CATEGORY) .constructor((recipe, schemaType, keys, from) -> recipe.id(from.getValue(recipe, ID)), ID) - .constructor(DURATION, CONDITIONS, ALL_INPUTS, ALL_OUTPUTS, ALL_TICK_INPUTS, ALL_TICK_OUTPUTS); + .constructor(RecipeConstructor.Factory.DEFAULT) + .constructor(DURATION, CONDITIONS, ALL_INPUTS, ALL_OUTPUTS, ALL_TICK_INPUTS, ALL_TICK_OUTPUTS) + .uniqueId(GTRecipeSchema::makeDefaultRecipeId); + + static @Nullable String makeDefaultRecipeId(RecipeJS recipe) { + String outputId = resolveRecipeIdFromOutputs(recipe, recipe.getValue(ALL_OUTPUTS)); + if (outputId == null) { + outputId = resolveRecipeIdFromOutputs(recipe, recipe.getValue(ALL_TICK_OUTPUTS)); + } + if (outputId == null) { + return null; + } + return RecipeSchema.normalizeId(outputId).replace('/', '_'); + } + + private static @Nullable String resolveRecipeIdFromOutputs(RecipeJS recipe, @Nullable CapabilityMap map) { + if (map == null || map.isEmpty()) return null; + + String item = parseItemOutputId(recipe, map); + if (item != null) return item; + else return parseFluidOutputId(recipe, map); + } + + private static @Nullable String parseItemOutputId(RecipeJS recipe, CapabilityMap map) { + var outputs = map.get(ItemRecipeCapability.CAP); + if (outputs != null && outputs.length > 0) { + var output = GTRecipeComponents.ITEM_OUT.baseComponent().read(recipe, outputs[0].content); + var id = output.item.getItemHolder().unwrapKey(); + if (id.isPresent()) { + return id.get().location().getPath(); + } + } + return null; + } + + @SuppressWarnings("deprecation") + private static @Nullable String parseFluidOutputId(RecipeJS recipe, CapabilityMap map) { + var outputs = map.get(FluidRecipeCapability.CAP); + if (outputs != null && outputs.length > 0) { + var output = GTRecipeComponents.FLUID_OUT.baseComponent().read(recipe, outputs[0].content); + var fluids = output.ingredient().getStacks(); + if (fluids.length == 0) return null; + + var id = fluids[0].getFluid().builtInRegistryHolder().unwrapKey(); + if (id.isPresent()) { + return id.get().location().getPath(); + } + } + return null; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/KJSHelpers.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/KJSHelpers.java new file mode 100644 index 00000000000..78cc410e131 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/KJSHelpers.java @@ -0,0 +1,107 @@ +package com.gregtechceu.gtceu.integration.kjs.recipe; + +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; + +import dev.latvian.mods.kubejs.util.MapJS; +import dev.latvian.mods.kubejs.util.UtilsJS; +import dev.latvian.mods.rhino.Wrapper; +import it.unimi.dsi.fastutil.longs.LongLongPair; +import org.jetbrains.annotations.Nullable; + +import java.util.Map; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class KJSHelpers { + + // this regex should match any of these, with or without spaces and/or 'V' & 'A' + // - V @ A + // - x + // - * + // also allows specifying a negative voltage for input/output in GTRecipeSchema#EUt + public static final Pattern VALUE_REGEX = Pattern.compile( + "^(?[+-]?\\d+)V?\\s*(?:@|x|\\*)?\\s*?(?\\+?[1-9]\\d*)A?$", + Pattern.CASE_INSENSITIVE); + + private static final Set VOLTAGE_KEYS = Set.of("voltage", "v", "V", "eu", "EU", ""); + private static final Set AMPERAGE_KEYS = Set.of("amperage", "a", "A"); + private static final long DEFAULT_VOLTAGE = 0; + private static final long DEFAULT_AMPERAGE = 1; + + public static EnergyStack.WithIO parseIOEnergyStack(Object o) { + if (o instanceof Wrapper w) { + o = w.unwrap(); + } + + if (o instanceof EnergyStack.WithIO stack) { + return stack; + } else if (o instanceof EnergyStack stack) { + return new EnergyStack.WithIO(stack, IO.IN); + } else if (o instanceof Number n) { + long value = n.longValue(); + return EnergyStack.WithIO.fromVoltage(value); + } else { + LongLongPair pair = parseEnergyStackValues(o); + if (pair == null) { + return EnergyStack.WithIO.EMPTY; + } + return EnergyStack.WithIO.fromVA(pair.firstLong(), pair.secondLong()); + } + } + + public static EnergyStack parseEnergyStack(Object o) { + if (o instanceof Wrapper w) { + o = w.unwrap(); + } + + if (o instanceof EnergyStack stack) { + return stack; + } else if (o instanceof EnergyStack.WithIO stack) { + return stack.stack(); + } else if (o instanceof Number n) { + return new EnergyStack(n.longValue()); + } else { + LongLongPair pair = parseEnergyStackValues(o); + if (pair == null) { + return EnergyStack.EMPTY; + } + return new EnergyStack(Math.abs(pair.firstLong()), Math.abs(pair.secondLong())); + } + } + + private static @Nullable LongLongPair parseEnergyStackValues(Object o) { + long voltage = DEFAULT_VOLTAGE; + long amperage = DEFAULT_AMPERAGE; + + if (o instanceof CharSequence) { + String s = o.toString(); + + Matcher match = VALUE_REGEX.matcher(s); + if (!match.matches()) { + return null; + } + voltage = Long.parseLong(match.group("v")); + if (match.group("a") != null) { + amperage = Long.parseLong(match.group("a")); + } + } else { + Map map = MapJS.of(o); + if (map == null) { + return null; + } + for (String key : VOLTAGE_KEYS) { + if (!map.containsKey(key)) continue; + voltage = UtilsJS.parseLong(map.get(key), DEFAULT_VOLTAGE); + if (voltage != DEFAULT_VOLTAGE) break; + } + for (String key : AMPERAGE_KEYS) { + if (!map.containsKey(key)) continue; + amperage = UtilsJS.parseLong(map.get(key), DEFAULT_AMPERAGE); + if (amperage != DEFAULT_AMPERAGE) break; + } + } + return LongLongPair.of(voltage, amperage); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/ExtendedOutputItem.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/ExtendedOutputItem.java index 749684ebf79..4c881a4505b 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/ExtendedOutputItem.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/ExtendedOutputItem.java @@ -3,13 +3,11 @@ import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderIngredient; import com.gregtechceu.gtceu.api.recipe.ingredient.SizedIngredient; -import net.minecraft.nbt.CompoundTag; +import net.minecraft.util.valueproviders.ConstantInt; import net.minecraft.util.valueproviders.IntProvider; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; -import net.minecraftforge.common.crafting.StrictNBTIngredient; -import com.google.gson.JsonElement; import dev.latvian.mods.kubejs.core.IngredientKJS; import dev.latvian.mods.kubejs.item.InputItem; import dev.latvian.mods.kubejs.item.OutputItem; @@ -17,89 +15,87 @@ import dev.latvian.mods.kubejs.recipe.RecipeJS; import dev.latvian.mods.kubejs.recipe.ReplacementMatch; import dev.latvian.mods.kubejs.util.ConsoleJS; -import dev.latvian.mods.rhino.NativeObject; - -import java.util.Map; +import dev.latvian.mods.kubejs.util.MapJS; +import dev.latvian.mods.kubejs.util.UtilsJS; +import dev.latvian.mods.rhino.Wrapper; +import org.jetbrains.annotations.Nullable; public class ExtendedOutputItem extends OutputItem implements OutputReplacement { public SizedIngredient ingredient; - public ExtendedOutputItem(Ingredient ingredient, int count) { - super(((IngredientKJS) ingredient).kjs$getFirst().copyWithCount(count), Double.NaN, null); - // reset the ingredient if it's an int provider. - if (ingredient instanceof IntProviderIngredient intProvider) { - intProvider.setItemStacks(null); - intProvider.setSampledCount(null); - } + public ExtendedOutputItem(Ingredient ingredient, int count, IntProvider rolls) { + super(((IngredientKJS) ingredient).kjs$getFirst().copyWithCount(count), Double.NaN, rolls); this.ingredient = SizedIngredient.create(ingredient, count); } - public ExtendedOutputItem(ItemStack stack) { - super(stack, Double.NaN, null); - this.ingredient = SizedIngredient.create(StrictNBTIngredient.of(stack)); + public ExtendedOutputItem(ItemStack stack, IntProvider rolls) { + super(stack, Double.NaN, rolls); + this.ingredient = SizedIngredient.create(stack); } - private ExtendedOutputItem(OutputItem item) { - this(Ingredient.of(item.item), item.getCount()); + public static ExtendedOutputItem of(Ingredient ingredient, int count) { + if (ingredient instanceof SizedIngredient sized) { + ingredient = sized.getInner(); + if (count == 1) return of(ingredient, sized.getAmount()); + } + IntProvider rolls = null; + if (ingredient instanceof IntProviderIngredient intProvider) { + rolls = intProvider.getCountProvider(); + ingredient = intProvider.getInner(); + } + return new ExtendedOutputItem(ingredient, count, rolls); } public static ExtendedOutputItem of(Object o) { + return of(o, null); + } + + public static ExtendedOutputItem of(Object o, @Nullable RecipeJS recipe) { + if (o instanceof Wrapper w) { + o = w.unwrap(); + } + if (o instanceof ExtendedOutputItem extendedOutput) { return extendedOutput; - } else if (o instanceof ItemStack stack) { - if (stack.hasTag()) { - return new ExtendedOutputItem(StrictNBTIngredient.of(stack), stack.getCount()); - } else { - return new ExtendedOutputItem(Ingredient.of(stack), stack.getCount()); - } } else if (o instanceof InputItem input) { - return new ExtendedOutputItem(input.ingredient, input.count); - } else if (o instanceof OutputItem output) { - return ExtendedOutputItem.fromOutputItem(output); - } else if (o instanceof NativeObject nativeObject) { - InputItem input = InputItem.of(nativeObject); - return new ExtendedOutputItem(input.ingredient, input.count); - } else if (o instanceof JsonElement json) { - InputItem input = InputItem.of(json); - return new ExtendedOutputItem(input.ingredient, input.count); - } else if (o instanceof CompoundTag tag) { - InputItem input = InputItem.of(tag); - return new ExtendedOutputItem(input.ingredient, input.count); - } else if (o instanceof Map map) { - InputItem input = InputItem.of(map); - return new ExtendedOutputItem(input.ingredient, input.count); + return ExtendedOutputItem.of(input.ingredient, input.count); + } else if (o instanceof IntProviderIngredient intProvider) { + return new ExtendedOutputItem(intProvider.getInner(), 1, intProvider.getCountProvider()); } - OutputItem output = OutputItem.of(o); - if (output.item.hasTag()) { - return new ExtendedOutputItem(StrictNBTIngredient.of(output.item), output.getCount()); + OutputItem item = recipe != null ? recipe.readOutputItem(o) : OutputItem.of(o); + IntProvider rolls = item.rolls; + + var map = MapJS.of(o); + if (map != null && map.containsKey("count_provider")) { + IntProvider intProvider = UtilsJS.intProviderOf(map.get("count_provider")); + if (!(intProvider instanceof ConstantInt c && c.getValue() == 0)) { + rolls = intProvider; + } } - return new ExtendedOutputItem(output); + return new ExtendedOutputItem(item.item, rolls); } public static ExtendedOutputItem fromOutputItem(OutputItem item) { if (item instanceof ExtendedOutputItem extended) { return extended; } - return new ExtendedOutputItem(item); + return new ExtendedOutputItem(item.item, item.rolls); } @Override public OutputItem withCount(int count) { - ingredient = SizedIngredient.create(ingredient.getInner(), count); - return super.withCount(count); + return new ExtendedOutputItem(ingredient.getInner(), count, rolls); } @Override public OutputItem withRolls(IntProvider rolls) { - IntProviderIngredient ingredient; - if (this.ingredient.getInner() instanceof IntProviderIngredient intProvider) { - ingredient = new IntProviderIngredient(intProvider.getInner(), rolls); - } else { - ingredient = new IntProviderIngredient(this.ingredient.getInner(), rolls); + Ingredient ingredient = this.ingredient.getInner(); + if (ingredient instanceof IntProviderIngredient intProvider) { + ingredient = intProvider.getInner(); } - return new ExtendedOutputItem(ingredient, this.ingredient.getAmount()); + return new ExtendedOutputItem(ingredient, 1, rolls); } @Override @@ -109,10 +105,10 @@ public int getCount() { @Override public Object replaceOutput(RecipeJS recipe, ReplacementMatch match, OutputReplacement original) { - if (original instanceof ExtendedOutputItem o) { - return new ExtendedOutputItem(this.ingredient, o.getCount()); + if (original instanceof OutputItem o) { + return new ExtendedOutputItem(this.ingredient.getInner(), o.getCount(), o.rolls); } - return super.replaceOutput(recipe, match, original); + return new ExtendedOutputItem(this.ingredient.getInner(), this.getCount(), rolls); } @SuppressWarnings("deprecation") diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java index 99767540aa5..b98e40fde87 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java @@ -5,25 +5,33 @@ import com.gregtechceu.gtceu.api.capability.recipe.*; import com.gregtechceu.gtceu.api.recipe.RecipeCondition; import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; -import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderIngredient; +import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderFluidIngredient; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.data.GTRecipeCapabilities; +import com.gregtechceu.gtceu.integration.kjs.recipe.KJSHelpers; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtOps; import net.minecraft.nbt.Tag; +import net.minecraft.nbt.TagParser; import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; import net.minecraft.util.GsonHelper; +import net.minecraft.world.level.material.Fluid; import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidType; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonPrimitive; +import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.mojang.datafixers.util.Pair; -import dev.latvian.mods.kubejs.fluid.FluidLike; -import dev.latvian.mods.kubejs.fluid.FluidStackJS; -import dev.latvian.mods.kubejs.fluid.InputFluid; -import dev.latvian.mods.kubejs.fluid.OutputFluid; +import com.mojang.serialization.JsonOps; +import dev.latvian.mods.kubejs.fluid.*; import dev.latvian.mods.kubejs.item.InputItem; import dev.latvian.mods.kubejs.item.OutputItem; import dev.latvian.mods.kubejs.recipe.*; @@ -31,8 +39,9 @@ import dev.latvian.mods.kubejs.typings.desc.DescriptionContext; import dev.latvian.mods.kubejs.typings.desc.TypeDescJS; import dev.latvian.mods.kubejs.util.ListJS; +import dev.latvian.mods.kubejs.util.UtilsJS; import dev.latvian.mods.rhino.mod.util.NBTUtils; -import lombok.Getter; +import org.jetbrains.annotations.Nullable; import java.util.*; @@ -225,7 +234,7 @@ public String toString() { @Override public String componentType() { - return "input_fluid"; + return "fluid_ingredient"; } @Override @@ -233,43 +242,11 @@ public Class componentClass() { return FluidIngredientJS.class; } - @Override - public ComponentRole role() { - return ComponentRole.INPUT; - } - @Override public boolean isInput(RecipeJS recipe, FluidIngredientJS value, ReplacementMatch match) { return match instanceof FluidLike m && value.matches(m); } - @Override - public JsonElement write(RecipeJS recipe, FluidIngredientJS value) { - return value.ingredient.toJson(); - } - - @Override - public FluidIngredientJS read(RecipeJS recipe, Object from) { - return FluidIngredientJS.of(from); - } - }; - public static final RecipeComponent FLUID_INGREDIENT_OUT = new RecipeComponent<>() { - - @Override - public String componentType() { - return "output_fluid"; - } - - @Override - public Class componentClass() { - return FluidIngredientJS.class; - } - - @Override - public ComponentRole role() { - return ComponentRole.OUTPUT; - } - @Override public boolean isOutput(RecipeJS recipe, FluidIngredientJS value, ReplacementMatch match) { return match instanceof FluidLike m && value.matches(m); @@ -314,10 +291,7 @@ public JsonElement write(RecipeJS recipe, ExtendedOutputItem value) { @Override public ExtendedOutputItem read(RecipeJS recipe, Object from) { - if (from instanceof IntProviderIngredient intProvider) { - return new ExtendedOutputItem(intProvider, 1); - } - return ExtendedOutputItem.fromOutputItem(recipe.readOutputItem(from)); + return ExtendedOutputItem.of(from, recipe); } @Override @@ -346,6 +320,28 @@ public String toString() { return componentType(); } }; + public static final RecipeComponent ENERGY_STACK = new RecipeComponent<>() { + + @Override + public String componentType() { + return "energy_stack"; + } + + @Override + public Class componentClass() { + return EnergyStack.class; + } + + @Override + public JsonElement write(RecipeJS recipe, EnergyStack.WithIO value) { + return EnergyStack.WithIO.CODEC.encodeStart(JsonOps.INSTANCE, value).result().orElse(null); + } + + @Override + public EnergyStack.WithIO read(RecipeJS recipe, Object from) { + return KJSHelpers.parseIOEnergyStack(from); + } + }; public static final ContentJS ITEM_IN = new ContentJS<>(ItemComponents.INPUT, GTRecipeCapabilities.ITEM, false); @@ -353,15 +349,15 @@ public String toString() { GTRecipeCapabilities.ITEM, true); public static final ContentJS FLUID_IN = new ContentJS<>(FLUID_INGREDIENT, GTRecipeCapabilities.FLUID, false); - public static final ContentJS FLUID_OUT = new ContentJS<>(FLUID_INGREDIENT_OUT, + public static final ContentJS FLUID_OUT = new ContentJS<>(FLUID_INGREDIENT, GTRecipeCapabilities.FLUID, true); - public static final ContentJS EU_IN = new ContentJS<>(NumberComponent.ANY_LONG, GTRecipeCapabilities.EU, + public static final ContentJS EU_IN = new ContentJS<>(ENERGY_STACK, GTRecipeCapabilities.EU, false); - public static final ContentJS EU_OUT = new ContentJS<>(NumberComponent.ANY_LONG, GTRecipeCapabilities.EU, + public static final ContentJS EU_OUT = new ContentJS<>(ENERGY_STACK, GTRecipeCapabilities.EU, true); - public static final ContentJS CWU_IN = new ContentJS<>(NumberComponent.ANY_INT, GTRecipeCapabilities.CWU, + public static final ContentJS CWU_IN = new ContentJS<>(NumberComponent.INT, GTRecipeCapabilities.CWU, false); - public static final ContentJS CWU_OUT = new ContentJS<>(NumberComponent.ANY_INT, GTRecipeCapabilities.CWU, + public static final ContentJS CWU_OUT = new ContentJS<>(NumberComponent.INT, GTRecipeCapabilities.CWU, true); public static final CapabilityMapComponent IN = new CapabilityMapComponent(false); @@ -388,13 +384,18 @@ public String toString() { VALID_CAPS.putAll(event.getRegisteredKeys()); } - public static class FluidIngredientJS implements InputFluid, OutputFluid { + public record FluidIngredientJS(FluidIngredient ingredient) implements InputFluid, OutputFluid { - @Getter - private final FluidIngredient ingredient; + public FluidIngredientJS(FluidStack stack) { + this(FluidIngredient.of(stack)); + } - public FluidIngredientJS(FluidIngredient ingredient) { - this.ingredient = ingredient; + public FluidIngredientJS(TagKey tag, int amount, @Nullable CompoundTag nbt) { + this(FluidIngredient.of(tag, amount, nbt)); + } + + public FluidIngredientJS(Fluid fluid, int amount, @Nullable CompoundTag nbt) { + this(FluidIngredient.of(fluid, amount, nbt)); } @Override @@ -411,9 +412,11 @@ public FluidIngredientJS(FluidIngredient ingredient) { @Override public boolean matches(FluidLike other) { - if (other instanceof FluidStackJS fluidStack) { - return ingredient - .test(new FluidStack(fluidStack.getFluid(), (int) fluidStack.getAmount(), fluidStack.getNbt())); + if (other instanceof FluidStackJS stackJS) { + FluidStack stack = new FluidStack(stackJS.getFluid(), (int) stackJS.getAmount(), stackJS.getNbt()); + return ingredient.test(stack); + } else if (other instanceof FluidStack stack) { + return ingredient.test(stack); } return other.matches(this); } @@ -421,14 +424,46 @@ public boolean matches(FluidLike other) { public static FluidIngredientJS of(Object o) { if (o instanceof FluidIngredientJS ingredientJS) { return ingredientJS; + } else if (o instanceof IntProviderFluidIngredient ingredient) { + return new FluidIngredientJS(ingredient.copy()); } else if (o instanceof FluidIngredient ingredient) { return new FluidIngredientJS(ingredient); } else if (o instanceof JsonElement json) { return new FluidIngredientJS(FluidIngredient.fromJson(json)); - } else if (o instanceof FluidStackJS fluidStackJS) { - return new FluidIngredientJS(FluidIngredient.of( - new FluidStack(fluidStackJS.getFluid(), (int) fluidStackJS.getAmount(), - fluidStackJS.getNbt()))); + } else if (o instanceof Tag nbt) { + JsonElement json = NbtOps.INSTANCE.convertTo(JsonOps.INSTANCE, nbt); + return new FluidIngredientJS(FluidIngredient.fromJson(json)); + } else if (o instanceof FluidStack stack) { + return new FluidIngredientJS(stack); + } else if (o instanceof FluidStackJS stackJS) { + return new FluidIngredientJS(stackJS.getFluid(), (int) stackJS.getAmount(), stackJS.getNbt()); + } else if (o instanceof CharSequence || o instanceof ResourceLocation) { + var s = o.toString(); + + if (s.isEmpty() || s.equals("-") || s.equals("empty") || s.equals("minecraft:empty")) { + return new FluidIngredientJS(FluidIngredient.EMPTY); + } + + boolean isTag = false; + if (s.startsWith("#")) { + s = s.substring(1); + isTag = true; + } + var split = s.split(" ", 3); + ResourceLocation id = new ResourceLocation(split[0]); + int amount = UtilsJS.parseInt(split.length >= 2 ? split[1] : "", FluidType.BUCKET_VOLUME); + CompoundTag nbt = null; + if (split.length == 3) { + try { + nbt = TagParser.parseTag(split[2]); + } catch (CommandSyntaxException ignored) {} + } + + if (isTag) { + return new FluidIngredientJS(TagKey.create(Registries.FLUID, id), amount, nbt); + } else { + return new FluidIngredientJS(BuiltInRegistries.FLUID.get(id), amount, nbt); + } } var list = ListJS.of(o); @@ -438,11 +473,10 @@ public static FluidIngredientJS of(Object o) { FluidStackJS stackJS = FluidStackJS.of(object); stacks.add(new FluidStack(stackJS.getFluid(), (int) stackJS.getAmount(), stackJS.getNbt())); } - return new FluidIngredientJS(FluidIngredient.of(stacks.toArray(FluidStack[]::new))); + return new FluidIngredientJS(FluidIngredient.of(stacks)); } else { FluidStackJS stackJS = FluidStackJS.of(o); - return new FluidIngredientJS(FluidIngredient - .of(new FluidStack(stackJS.getFluid(), (int) stackJS.getAmount(), stackJS.getNbt()))); + return new FluidIngredientJS(stackJS.getFluid(), (int) stackJS.getAmount(), stackJS.getNbt()); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/map/WaypointManager.java b/src/main/java/com/gregtechceu/gtceu/integration/map/WaypointManager.java index 7b4e19abeb7..48f7e72ed29 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/map/WaypointManager.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/map/WaypointManager.java @@ -6,6 +6,7 @@ import com.gregtechceu.gtceu.integration.map.ftbchunks.FTBChunksWaypointHandler; import com.gregtechceu.gtceu.integration.map.journeymap.JourneymapWaypointHandler; import com.gregtechceu.gtceu.integration.map.xaeros.XaeroWaypointHandler; +import com.gregtechceu.gtceu.utils.GTMath; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.resources.ResourceKey; @@ -17,7 +18,6 @@ import lombok.Getter; import java.util.HashSet; -import java.util.Objects; import java.util.Set; public class WaypointManager { @@ -104,7 +104,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(dim, x, y, z); + return GTMath.hashInts(dim.hashCode(), x, y, z); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/map/cache/GridPos.java b/src/main/java/com/gregtechceu/gtceu/integration/map/cache/GridPos.java index a9de8fc9977..ba041b8e6ee 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/map/cache/GridPos.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/map/cache/GridPos.java @@ -1,12 +1,11 @@ package com.gregtechceu.gtceu.integration.map.cache; import com.gregtechceu.gtceu.config.ConfigHolder; +import com.gregtechceu.gtceu.utils.GTMath; import net.minecraft.core.BlockPos; import net.minecraft.world.level.ChunkPos; -import java.util.Objects; - public class GridPos { public int x; @@ -45,7 +44,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(x, z); + return GTMath.hashInts(x, z); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/integration/map/cache/server/ServerCache.java b/src/main/java/com/gregtechceu/gtceu/integration/map/cache/server/ServerCache.java index 61c2acebca8..629e6447852 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/map/cache/server/ServerCache.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/map/cache/server/ServerCache.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.material.Material; -import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialStack; import com.gregtechceu.gtceu.api.data.worldgen.ores.GeneratedVeinMetadata; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.network.GTNetwork; @@ -69,19 +68,21 @@ public void prospectBySurfaceRockMaterial(ResourceKey dim, final Material List nearbyVeins = getNearbyVeins(dim, pos, radius); List foundVeins = new ArrayList<>(); for (GeneratedVeinMetadata nearbyVein : nearbyVeins) { - if (nearbyVein.definition().indicatorGenerators().stream() - .anyMatch(generator -> generator.block() != null && Objects.requireNonNull(generator.block()) - .map(state -> { - MaterialStack mat = ChemicalHelper.getMaterialStack(state.getBlock().asItem()); - if (mat.isEmpty()) return false; - return mat.material() == material; - }, - mat -> mat == material))) { - foundVeins.add(nearbyVein); + for (var gen : nearbyVein.definition().indicatorGenerators()) { + var block = gen.block(); + if (block == null) continue; + boolean found = block.map(state -> { + var ms = ChemicalHelper.getMaterialStack(state.getBlock().asItem()); + return !ms.isEmpty() && ms.material() == material; + }, mat -> mat == material); + if (found) { + foundVeins.add(nearbyVein); + break; + } } } - GTNetwork.NETWORK.sendToPlayer(new SPacketProspectOre(dim, foundVeins), player); + GTNetwork.sendToPlayer(player, new SPacketProspectOre(dim, foundVeins)); } public void prospectByOreMaterial(ResourceKey dim, Material material, BlockPos origin, ServerPlayer player, @@ -94,7 +95,7 @@ public void prospectByOreMaterial(ResourceKey dim, Material material, Blo foundVeins.add(nearbyVein); } } - GTNetwork.NETWORK.sendToPlayer(new SPacketProspectOre(dim, foundVeins), player); + GTNetwork.sendToPlayer(player, new SPacketProspectOre(dim, foundVeins)); } public void prospectByDepositName(ResourceKey dim, String depositName, BlockPos origin, ServerPlayer player, @@ -107,7 +108,7 @@ public void prospectByDepositName(ResourceKey dim, String depositName, Bl foundVeins.add(nearbyVein); } } - GTNetwork.NETWORK.sendToPlayer(new SPacketProspectOre(dim, foundVeins), player); + GTNetwork.sendToPlayer(player, new SPacketProspectOre(dim, foundVeins)); } public void prospectAllInChunk(ResourceKey dim, ChunkPos pos, ServerPlayer player) { @@ -118,7 +119,7 @@ public void prospectAllInChunk(ResourceKey dim, ChunkPos pos, ServerPlaye foundVeins.add(nearbyVein); } } - GTNetwork.NETWORK.sendToPlayer(new SPacketProspectOre(dim, foundVeins), player); + GTNetwork.sendToPlayer(player, new SPacketProspectOre(dim, foundVeins)); } public void removeAllInChunk(ResourceKey dim, ChunkPos pos) { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/map/layer/builtin/OreRenderLayer.java b/src/main/java/com/gregtechceu/gtceu/integration/map/layer/builtin/OreRenderLayer.java index 0c6f8af41d1..31237f97976 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/map/layer/builtin/OreRenderLayer.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/map/layer/builtin/OreRenderLayer.java @@ -67,7 +67,7 @@ public static List getTooltip(String name, GeneratedVeinMetadata vein tooltip.add(title); for (var filler : vein.definition().veinGenerator().getAllEntries()) { - filler.getKey().ifLeft(state -> { + filler.vein().ifLeft(state -> { tooltip.add(Component.literal(ConfigHolder.INSTANCE.compat.minimap.oreNamePrefix) .append(state.getBlock().getName())); }).ifRight(material -> { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/modernfix/GTModernFixIntegration.java b/src/main/java/com/gregtechceu/gtceu/integration/modernfix/GTModernFixIntegration.java new file mode 100644 index 00000000000..a36f05bde92 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/modernfix/GTModernFixIntegration.java @@ -0,0 +1,55 @@ +package com.gregtechceu.gtceu.integration.modernfix; + +import com.gregtechceu.gtceu.client.model.machine.MachineModel; + +import com.lowdragmc.lowdraglib.client.model.custommodel.CustomBakedModel; + +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.*; +import net.minecraft.resources.ResourceLocation; + +import lombok.Getter; +import org.embeddedt.modernfix.ModernFixClient; +import org.embeddedt.modernfix.api.entrypoint.ModernFixClientIntegration; +import org.jetbrains.annotations.ApiStatus; + +import java.util.function.Function; + +public class GTModernFixIntegration implements ModernFixClientIntegration { + + private static GTModernFixIntegration INSTANCE = null; + @Getter + private static boolean dynamicResourcesEnabled = false; + + @ApiStatus.Internal + public GTModernFixIntegration() { + INSTANCE = this; + } + + public static void setAsLast() { + if (INSTANCE != null) { + ModernFixClient.CLIENT_INTEGRATIONS.remove(INSTANCE); + } else { + INSTANCE = new GTModernFixIntegration(); + } + ModernFixClient.CLIENT_INTEGRATIONS.add(INSTANCE); + } + + @Override + public void onDynamicResourcesStatusChange(boolean enabled) { + dynamicResourcesEnabled = enabled; + } + + @Override + public BakedModel onBakedModelLoad(ResourceLocation location, UnbakedModel baseModel, + BakedModel originalModel, ModelState state, ModelBakery bakery, + Function textureGetter) { + if (originalModel instanceof CustomBakedModel ctmModel) { + // Unwrap all machine models from LDLib CTM models so we don't need to be as aggressive with mixins + if (ctmModel.getParent() instanceof MachineModel machineModel) { + return machineModel; + } + } + return originalModel; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/rei/GTREIPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/rei/GTREIPlugin.java index b74443746ad..6d3db3661eb 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/rei/GTREIPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/rei/GTREIPlugin.java @@ -40,11 +40,6 @@ import java.util.List; import java.util.Locale; -/** - * @author KilaBash - * @date 2023/2/25 - * @implNote REIPlugin - */ @REIPluginClient public class GTREIPlugin implements REIClientPlugin { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/rei/recipe/GTRecipeREICategory.java b/src/main/java/com/gregtechceu/gtceu/integration/rei/recipe/GTRecipeREICategory.java index b9b318b68cb..8ef0565ca28 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/rei/recipe/GTRecipeREICategory.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/rei/recipe/GTRecipeREICategory.java @@ -58,9 +58,7 @@ public static void registerDisplays(DisplayRegistry registry) { public static void registerWorkStations(CategoryRegistry registry) { for (MachineDefinition machine : GTRegistries.MACHINES) { - if (machine.getRecipeTypes() == null) continue; for (GTRecipeType type : machine.getRecipeTypes()) { - if (type == null) continue; for (GTRecipeCategory category : type.getCategories()) { if (!category.isXEIVisible() && !GTCEu.isDev()) continue; registry.addWorkstations(machineCategory(category), EntryStacks.of(machine.asStack())); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/TheOneProbePlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/top/TheOneProbePlugin.java index aedc5ef3db3..380613d6ce7 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/TheOneProbePlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/TheOneProbePlugin.java @@ -46,7 +46,7 @@ public ResourceLocation getId() { oneProbe.registerProvider(new RecipeLogicInfoProvider()); oneProbe.registerProvider(new ParallelProvider()); oneProbe.registerProvider(new RecipeOutputProvider()); - oneProbe.registerProvider(new MulitblockStructureProvider()); + oneProbe.registerProvider(new MultiblockStructureProvider()); oneProbe.registerProvider(new MaintenanceInfoProvider()); oneProbe.registerProvider(new ExhaustVentInfoProvider()); oneProbe.registerProvider(new SteamBoilerInfoProvider()); @@ -58,5 +58,6 @@ public ResourceLocation getId() { oneProbe.registerProvider(new CoverProvider()); oneProbe.registerProvider(new HazardCleanerInfoProvider()); oneProbe.registerProvider(new TransformerInfoProvider()); + oneProbe.registerProvider(new EnergyConverterModeProvider()); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/forge/TheOneProbePluginImpl.java b/src/main/java/com/gregtechceu/gtceu/integration/top/forge/TheOneProbePluginImpl.java index 2790fa9cbfd..2adbda701ff 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/forge/TheOneProbePluginImpl.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/forge/TheOneProbePluginImpl.java @@ -4,11 +4,6 @@ import mcjty.theoneprobe.TheOneProbe; -/** - * @author KilaBash - * @date 2023/3/18 - * @implNote TheOneProbePluginImpl - */ public class TheOneProbePluginImpl { public static void init() { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/EnergyConverterModeProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/EnergyConverterModeProvider.java new file mode 100644 index 00000000000..6d978358f5a --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/EnergyConverterModeProvider.java @@ -0,0 +1,37 @@ +package com.gregtechceu.gtceu.integration.top.provider; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; +import com.gregtechceu.gtceu.common.machine.electric.ConverterMachine; + +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; + +import mcjty.theoneprobe.api.IProbeHitData; +import mcjty.theoneprobe.api.IProbeInfo; +import mcjty.theoneprobe.api.IProbeInfoProvider; +import mcjty.theoneprobe.api.ProbeMode; + +public class EnergyConverterModeProvider implements IProbeInfoProvider { + + @Override + public ResourceLocation getID() { + return GTCEu.id("energy_converter_top"); + } + + @Override + public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player player, Level level, + BlockState blockState, IProbeHitData iProbeHitData) { + if (level.getBlockEntity(iProbeHitData.getPos()) instanceof MetaMachineBlockEntity blockEntity && + blockEntity.getMetaMachine() instanceof ConverterMachine converter) { + if (converter.isFeToEu()) { + iProbeInfo.text(Component.translatable("gtceu.top.convert_fe")); + } else { + iProbeInfo.text(Component.translatable("gtceu.top.convert_eu")); + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MachineModeProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MachineModeProvider.java index 7a292b409dd..8050bda6b7e 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MachineModeProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MachineModeProvider.java @@ -18,7 +18,6 @@ import mcjty.theoneprobe.api.IProbeInfo; import mcjty.theoneprobe.api.IProbeInfoProvider; import mcjty.theoneprobe.api.ProbeMode; -import org.jetbrains.annotations.Nullable; public class MachineModeProvider implements IProbeInfoProvider { @@ -31,16 +30,17 @@ public ResourceLocation getID() { public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player player, Level level, BlockState blockState, IProbeHitData iProbeHitData) { if (level.getBlockEntity(iProbeHitData.getPos()) instanceof MetaMachineBlockEntity blockEntity) { - @Nullable GTRecipeType[] recipeTypes = blockEntity.getMetaMachine().getDefinition().getRecipeTypes(); - if (recipeTypes != null && recipeTypes.length > 1) { + if (recipeTypes.length > 1) { if (blockEntity.getMetaMachine() instanceof IRecipeLogicMachine recipeLogicMachine) { GTRecipeType currentRecipeType = recipeLogicMachine.getRecipeType(); if (player.isShiftKeyDown()) { iProbeInfo.text(Component.translatable("gtceu.top.machine_mode")); + for (GTRecipeType recipeType : recipeTypes) { IProbeInfo horizontalPane = iProbeInfo.horizontal( iProbeInfo.defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); + if (recipeType == currentRecipeType) { horizontalPane.text(ChatFormatting.BLUE + " > "); horizontalPane.text(CompoundText.create().important("%s.%s".formatted( @@ -52,11 +52,8 @@ public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player play } } } else { - iProbeInfo.text( - Component.translatable("gtceu.top.machine_mode") - .append(Component.translatable("%s.%s".formatted( - currentRecipeType.registryName.getNamespace(), - currentRecipeType.registryName.getPath())))); + iProbeInfo.text(Component.translatable("gtceu.top.machine_mode") + .append(Component.translatable(currentRecipeType.registryName.toLanguageKey()))); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MulitblockStructureProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MulitblockStructureProvider.java deleted file mode 100644 index f7446f040eb..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MulitblockStructureProvider.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.gregtechceu.gtceu.integration.top.provider; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; - -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.state.BlockState; - -import mcjty.theoneprobe.api.CompoundText; -import mcjty.theoneprobe.api.IProbeHitData; -import mcjty.theoneprobe.api.IProbeInfo; -import mcjty.theoneprobe.api.IProbeInfoProvider; -import mcjty.theoneprobe.api.ProbeMode; - -public class MulitblockStructureProvider implements IProbeInfoProvider { - - @Override - public ResourceLocation getID() { - return GTCEu.id("multiblock_structure"); - } - - @Override - public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player player, Level level, - BlockState blockState, IProbeHitData iProbeHitData) { - if (level.getBlockEntity(iProbeHitData.getPos()) instanceof MetaMachineBlockEntity blockEntity) { - if (blockEntity.getMetaMachine() instanceof IMultiController controller) { - if (controller.getMultiblockState().hasError()) { - iProbeInfo.text(CompoundText.create().error("gtceu.top.invalid_structure")); - } else { - iProbeInfo.text(CompoundText.create().ok("gtceu.top.valid_structure")); - } - } - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MultiblockStructureProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MultiblockStructureProvider.java new file mode 100644 index 00000000000..1b0a999953b --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MultiblockStructureProvider.java @@ -0,0 +1,38 @@ +package com.gregtechceu.gtceu.integration.top.provider; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; + +import mcjty.theoneprobe.api.CompoundText; +import mcjty.theoneprobe.api.IProbeHitData; +import mcjty.theoneprobe.api.IProbeInfo; +import mcjty.theoneprobe.api.IProbeInfoProvider; +import mcjty.theoneprobe.api.ProbeMode; + +public class MultiblockStructureProvider implements IProbeInfoProvider { + + @Override + public ResourceLocation getID() { + return GTCEu.id("multiblock_structure"); + } + + @Override + public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player player, Level level, + BlockState blockState, IProbeHitData iProbeHitData) { + if (level.getBlockEntity(iProbeHitData.getPos()) instanceof MetaMachineBlockEntity blockEntity) { + if (blockEntity.getMetaMachine() instanceof IMultiController controller) { + if (!controller.isFormed()) { + iProbeInfo.text(CompoundText.create().error("gtceu.top.invalid_structure")); + } else { + iProbeInfo.text(CompoundText.create().ok("gtceu.top.valid_structure")); + } + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeLogicInfoProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeLogicInfoProvider.java index e8b46ba7cbd..9782adc8d4f 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeLogicInfoProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeLogicInfoProvider.java @@ -7,10 +7,9 @@ import com.gregtechceu.gtceu.api.machine.steam.SteamMachine; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.recipe.RecipeHelper; +import com.gregtechceu.gtceu.utils.FormattingUtil; import com.gregtechceu.gtceu.utils.GTUtil; -import com.lowdragmc.lowdraglib.utils.LocalizationUtils; - import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -42,49 +41,47 @@ protected RecipeLogic getCapability(Level level, BlockPos pos, @Nullable Directi @Override protected void addProbeInfo(RecipeLogic capability, IProbeInfo probeInfo, Player player, BlockEntity blockEntity, IProbeHitData data) { - // do not show energy usage on machines that do not use energy if (capability.isWorking()) { - // TODO PrimitiveRecipeLogic - // if (capability instanceof PrimitiveRecipeLogic) { - // return; // do not show info for primitive machines, as they are supposed to appear powerless - // } var recipe = capability.getLastRecipe(); if (recipe != null) { - var EUt = RecipeHelper.getInputEUt(recipe); - var isInput = true; - if (EUt == 0) { - isInput = false; - EUt = RecipeHelper.getOutputEUt(recipe); + var EUt = RecipeHelper.getRealEUtWithIO(recipe); + if (EUt.isEmpty()) { + // do not show energy usage on machines that do not use energy + return; } - long absEUt = Math.abs(EUt); - String text = null; + String formatted = FormattingUtil.formatNumbers(EUt.getTotalEU()) + TextStyleClass.INFO; + Component text = null; if (blockEntity instanceof IMachineBlockEntity machineBlockEntity) { var machine = machineBlockEntity.getMetaMachine(); if (machine instanceof SteamMachine) { - text = ChatFormatting.RED.toString() + absEUt + TextStyleClass.INFO + " mB/t " + - LocalizationUtils.format("material.steam"); + text = Component.translatable("gtceu.jade.fluid_use", formatted) + .withStyle(ChatFormatting.GREEN); } } if (text == null) { - // Default behavior, if this TE is not a steam machine (or somehow not instanceof - // IGregTechTileEntity...) - text = ChatFormatting.RED.toString() + absEUt + TextStyleClass.INFO + " EU/t" + - ChatFormatting.GREEN + " (" + GTValues.VNF[GTUtil.getTierByVoltage(absEUt)] + - ChatFormatting.GREEN + ")"; + var tier = GTUtil.getTierByVoltage(EUt.voltage()); + String minAmperage = FormattingUtil + .formatNumber2Places((float) (EUt.getTotalEU()) / GTValues.V[tier]) + TextStyleClass.INFO; + + text = Component.translatable("gtceu.jade.amperage_use", minAmperage).withStyle(ChatFormatting.RED) + .append(Component.translatable("gtceu.jade.at").withStyle(ChatFormatting.GREEN)) + .append(GTValues.VNF[GTUtil.getTierByVoltage(EUt.voltage())]) + .append(Component.translatable("gtceu.universal.padded_parentheses", + (Component.translatable("gtceu.recipe.eu.total", + formatted))) + .withStyle(ChatFormatting.WHITE)); } - if (EUt > 0) { - if (isInput) { - probeInfo.text(CompoundText.create() - .text(Component.translatable("gtceu.top.energy_consumption").append(" ").append(text)) - .style(TextStyleClass.INFO)); - } else { - probeInfo.text(CompoundText.create() - .text(Component.translatable("gtceu.top.energy_production").append(" ").append(text)) - .style(TextStyleClass.INFO)); - } + if (EUt.isInput()) { + probeInfo.text(CompoundText.create() + .text(Component.translatable("gtceu.top.energy_consumption").append(" ").append(text)) + .style(TextStyleClass.INFO)); + } else { + probeInfo.text(CompoundText.create() + .text(Component.translatable("gtceu.top.energy_production").append(" ").append(text)) + .style(TextStyleClass.INFO)); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeOutputProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeOutputProvider.java index 23215c14a6c..4fdc7e729c5 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeOutputProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeOutputProvider.java @@ -6,6 +6,9 @@ import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.recipe.RecipeHelper; +import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; +import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderFluidIngredient; +import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderIngredient; import com.gregtechceu.gtceu.integration.top.element.FluidStackElement; import com.gregtechceu.gtceu.integration.top.element.FluidStyle; @@ -15,6 +18,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraftforge.fluids.FluidStack; @@ -54,9 +58,15 @@ protected void addProbeInfo(RecipeLogic recipeLogic, IProbeInfo iProbeInfo, Play var itemContents = recipe.getOutputContents(ItemRecipeCapability.CAP); var fluidContents = recipe.getOutputContents(FluidRecipeCapability.CAP); - List itemOutputs = new ArrayList<>(); + List itemOutputs = new ArrayList<>(); for (var item : itemContents) { - var stacks = ItemRecipeCapability.CAP.of(item.content).getItems(); + ItemStack[] stacks; + Ingredient content = ItemRecipeCapability.CAP.of(item.content); + if (content instanceof IntProviderIngredient provider) { + stacks = provider.getInner().getItems(); + } else { + stacks = content.getItems(); + } if (stacks.length == 0) continue; if (stacks[0].isEmpty()) continue; var stack = stacks[0].copy(); @@ -68,12 +78,18 @@ protected void addProbeInfo(RecipeLogic recipeLogic, IProbeInfo iProbeInfo, Play count = countD < 1 ? 1 : (int) Math.round(countD); stack.setCount(count); } - itemOutputs.add(stack); + itemOutputs.add(Ingredient.of(stack)); } - List fluidOutputs = new ArrayList<>(); + List fluidOutputs = new ArrayList<>(); for (var fluid : fluidContents) { - var stacks = FluidRecipeCapability.CAP.of(fluid.content).getStacks(); + FluidStack[] stacks; + FluidIngredient content = FluidRecipeCapability.CAP.of(fluid.content); + if (content instanceof IntProviderFluidIngredient provider) { + stacks = provider.getInner().getStacks(); + } else { + stacks = content.getStacks(); + } if (stacks.length == 0) continue; if (stacks[0].isEmpty()) continue; var stack = stacks[0].copy(); @@ -85,7 +101,7 @@ protected void addProbeInfo(RecipeLogic recipeLogic, IProbeInfo iProbeInfo, Play amount = amountD < 1 ? 1 : (int) Math.round(amountD); stack.setAmount(amount); } - fluidOutputs.add(stack); + fluidOutputs.add(FluidIngredient.of(stack)); } if (!itemOutputs.isEmpty() || !fluidOutputs.isEmpty()) { @@ -99,25 +115,45 @@ protected void addProbeInfo(RecipeLogic recipeLogic, IProbeInfo iProbeInfo, Play } } - private void addItemInfo(IProbeInfo verticalPane, List outputItems) { + private void addItemInfo(IProbeInfo verticalPane, List outputItems) { IProbeInfo horizontalPane; - for (ItemStack itemOutput : outputItems) { + for (Ingredient itemOutput : outputItems) { if (itemOutput != null && !itemOutput.isEmpty()) { horizontalPane = verticalPane .horizontal(verticalPane.defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); - horizontalPane.item(itemOutput, new ItemStyle().width(16).height(16)).text(" ").itemLabel(itemOutput); + String spacer = " "; + if (itemOutput instanceof IntProviderIngredient provider) { + spacer += (Component.translatable("gtceu.gui.content.range", + String.valueOf(provider.getCountProvider().getMinValue()), + String.valueOf(provider.getCountProvider().getMaxValue()))) + " "; + provider.setItemStacks(null); // no roll + provider.setSampledCount(1); + } + horizontalPane.item(itemOutput.getItems()[0], + new ItemStyle().width(16).height(16)) + .text(spacer) + .itemLabel(itemOutput.getItems()[0]); } } } - private void addFluidInfo(IProbeInfo verticalPane, List outputFluids) { + private void addFluidInfo(IProbeInfo verticalPane, List outputFluids) { IProbeInfo horizontalPane; - for (FluidStack fluidOutput : outputFluids) { + for (FluidIngredient fluidOutput : outputFluids) { if (fluidOutput != null && !fluidOutput.isEmpty()) { horizontalPane = verticalPane .horizontal(verticalPane.defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); - horizontalPane.element(new FluidStackElement(fluidOutput, new FluidStyle())).text(" ") - .text(fluidOutput.getDisplayName()); + String spacer = " "; + if (fluidOutput instanceof IntProviderFluidIngredient provider) { + spacer += (Component.translatable("gtceu.gui.content.range", + String.valueOf(provider.getCountProvider().getMinValue()), + String.valueOf(provider.getCountProvider().getMaxValue()))) + " "; + fluidOutput.setAmount(provider.getCountProvider().getMaxValue()); // no roll + } + horizontalPane.element(new FluidStackElement(fluidOutput.getStacks()[0], + new FluidStyle())) + .text(spacer) + .text(fluidOutput.getStacks()[0].getDisplayName()); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/StainedColorProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/StainedColorProvider.java index 0ed59e7c605..c977bdd90ab 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/StainedColorProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/StainedColorProvider.java @@ -1,8 +1,7 @@ package com.gregtechceu.gtceu.integration.top.provider; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.blockentity.PipeBlockEntity; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.blockentity.IPaintable; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -17,8 +16,6 @@ import mcjty.theoneprobe.api.IProbeInfoProvider; import mcjty.theoneprobe.api.ProbeMode; -import java.util.Locale; - public class StainedColorProvider implements IProbeInfoProvider { @Override @@ -30,17 +27,15 @@ public ResourceLocation getID() { public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player player, Level level, BlockState blockState, IProbeHitData iProbeHitData) { BlockEntity blockEntity = level.getBlockEntity(iProbeHitData.getPos()); - int paintingColor = -1; - if (blockEntity instanceof IMachineBlockEntity machineBlockEntity) { - paintingColor = machineBlockEntity.getMetaMachine().getPaintingColor(); - } else if (blockEntity instanceof PipeBlockEntity pipe) { - paintingColor = pipe.getPaintingColor(); - } - if (paintingColor != -1) { - IProbeInfo horizontal = iProbeInfo - .horizontal(iProbeInfo.defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); - horizontal.mcText(Component.translatable("gtceu.top.stained", - "#" + Integer.toHexString(paintingColor).toUpperCase(Locale.ROOT))); + if (!(blockEntity instanceof IPaintable paintable)) { + return; } + if (!paintable.isPainted()) return; + int paintingColor = paintable.getPaintingColor(); + + IProbeInfo horizontal = iProbeInfo.horizontal(iProbeInfo + .defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); + horizontal.mcText(Component.translatable("gtceu.top.stained", String.format("#%06X", paintingColor)) + .withStyle(style -> style.withColor(paintingColor))); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/SteamBoilerInfoProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/SteamBoilerInfoProvider.java index 59e113a66a7..1ad3a5517f0 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/SteamBoilerInfoProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/SteamBoilerInfoProvider.java @@ -3,10 +3,13 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.steam.SteamBoilerMachine; +import com.gregtechceu.gtceu.utils.FormattingUtil; +import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; @@ -33,13 +36,54 @@ protected void addProbeInfo(SteamBoilerMachine capability, IProbeInfo probeInfo, IProbeInfo horizontalPane = probeInfo .horizontal(probeInfo.defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); - var producingSteam = !capability.isHasNoWater() && capability.getCurrentTemperature() >= 100; - if (capability.getRecipeLogic().isWorking()) { - horizontalPane.text("gtceu.machine.boiler.info.heating.up", - producingSteam ? Component.translatable("gtceu.machine.boiler.info.producing.steam") : ""); - } else if (capability.getCurrentTemperature() > 0) { - horizontalPane.text("gtceu.machine.boiler.info.cooling.down", - producingSteam ? Component.translatable("gtceu.machine.boiler.info.producing.steam") : ""); + boolean isBurning = capability.getRecipeLogic().isWorking(); + boolean hasWater = !capability.isHasNoWater(); + long production = capability.getTotalSteamOutput(); + int temperature = capability.getCurrentTemperature(); + int maxTemperature = capability.getMaxTemperature(); + + boolean makingSteam = hasWater && temperature >= 100; + + // Determine the first section + MutableComponent root; + if (isBurning && temperature < maxTemperature) { + // Heating up + root = Component.translatable("gtceu.machine.boiler.info.heating.up"); + } else if (!isBurning && temperature > 0) { + // Cooling down + root = Component.translatable("gtceu.machine.boiler.info.cooling.down"); + } else { + root = null; // neither heating nor cooling, is either max temperature or temperature of zero + } + + // Determine the second section + MutableComponent extra; + if (makingSteam) { + // Producing some amount of steam + extra = Component.translatable("gtceu.machine.boiler.info.production.data", + Component.literal(FormattingUtil.formatNumbers(production / 10)) + .withStyle(ChatFormatting.GREEN)); + if (root != null) { + // append some nice separation here to the root + extra = Component.literal(" | ").append(extra); + } + } else if (temperature > 0 && temperature < 100) { + // Still warming up (or cooling down) + extra = Component.literal(String.format(" %s(%s%%)", + // Either heating up or cooling down + isBurning ? ChatFormatting.RED : ChatFormatting.BLUE, + temperature)); + } else { + // Nothing to add + extra = null; + } + + if (root != null && extra != null) { + horizontalPane.text(root.append(extra)); + } else if (root != null) { + horizontalPane.text(root); + } else if (extra != null) { + horizontalPane.text(extra); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreByProduct.java b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreByProduct.java index 76b6924b892..6e1f89112d0 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreByProduct.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreByProduct.java @@ -26,9 +26,9 @@ import net.minecraft.world.level.block.Blocks; import com.google.common.collect.ImmutableList; -import com.mojang.datafixers.util.Pair; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import it.unimi.dsi.fastutil.objects.ObjectIntPair; import java.util.ArrayList; import java.util.List; @@ -90,7 +90,7 @@ public GTOreByProduct(Material material) { // "INPUTS" - Pair washedIn = property.getWashedIn(); + ObjectIntPair washedIn = property.getWashedIn(); List separatedInto = property.getSeparatedInto(); ItemTagList oreStacks = new ItemTagList(); @@ -121,7 +121,7 @@ public GTOreByProduct(Material material) { itemInputs.add(ItemStackList.of(simpleWashers)); itemInputs.add(ItemStackList.of(simpleWashers)); - if (washedIn != null && !washedIn.getFirst().isNull()) { + if (!washedIn.first().isNull()) { hasChemBath = true; addToInputs(GTMachines.CHEMICAL_BATH[GTValues.LV].asStack()); } else { @@ -176,12 +176,12 @@ public GTOreByProduct(Material material) { } else { addToOutputs(byproducts[0], TagPrefix.dust, 1); } - addChance(1400, 850); + addChance(1400, 0); // macerate crushed -> impure addToOutputs(material, TagPrefix.dustImpure, 1); addToOutputs(byproducts[0], TagPrefix.dust, byproductMultiplier); - addChance(1400, 850); + addChance(1400, 0); // centrifuge impure -> dust addToOutputs(material, TagPrefix.dust, 1); @@ -205,12 +205,12 @@ public GTOreByProduct(Material material) { // macerate centrifuged -> dust addToOutputs(material, TagPrefix.dust, 1); addToOutputs(byproducts[2], TagPrefix.dust, 1); - addChance(1400, 850); + addChance(1400, 0); // macerate crushed purified -> purified addToOutputs(material, TagPrefix.dustPure, 1); addToOutputs(byproducts[1], TagPrefix.dust, 1); - addChance(1400, 850); + addChance(1400, 0); // centrifuge purified -> dust addToOutputs(material, TagPrefix.dust, 1); @@ -231,8 +231,8 @@ public GTOreByProduct(Material material) { if (hasChemBath) { addToOutputs(material, TagPrefix.crushedPurified, 1); addToOutputs(byproducts[3], TagPrefix.dust, byproductMultiplier); - addChance(7000, 580); - fluidInputs.add(FluidTagList.of(washedIn.getFirst().getFluidTag(), washedIn.getSecond(), null)); + addChance(7000, 0); + fluidInputs.add(FluidTagList.of(washedIn.first().getFluidTag(), washedIn.secondInt(), null)); } else { addEmptyOutputs(2); fluidInputs.add(new FluidStackList()); @@ -249,9 +249,9 @@ public GTOreByProduct(Material material) { addToOutputs(material, TagPrefix.dust, 1); addToOutputs(separatedInto.get(0), TagPrefix.dust, 1); - addChance(1000, 250); + addChance(1000, 0); addToOutputs(separatedStack2); - addChance(prefix == TagPrefix.dust ? 500 : 2000, prefix == TagPrefix.dust ? 150 : 600); + addChance(prefix == TagPrefix.dust ? 500 : 2000, 0); } else { addEmptyOutputs(3); } @@ -263,23 +263,23 @@ public GTOreByProduct(Material material) { ItemStack chippedStack = ChemicalHelper.get(TagPrefix.gemChipped, material); addToOutputs(material, TagPrefix.gemExquisite, 1); - addGemChance(300, 100, 500, 150, highOutput); + addGemChance(300, 0, 500, 0, highOutput); addToOutputs(material, TagPrefix.gemFlawless, 1); - addGemChance(1000, 150, 1500, 200, highOutput); + addGemChance(1000, 0, 1500, 0, highOutput); addToOutputs(material, TagPrefix.gem, 1); - addGemChance(3500, 500, 5000, 1000, highOutput); + addGemChance(3500, 0, 5000, 0, highOutput); addToOutputs(material, TagPrefix.dustPure, 1); - addGemChance(5000, 750, 2500, 500, highOutput); + addGemChance(5000, 0, 2500, 0, highOutput); if (!flawedStack.isEmpty()) { addToOutputs(flawedStack); - addGemChance(2500, 300, 2000, 500, highOutput); + addGemChance(2500, 0, 2000, 0, highOutput); } else { addEmptyOutputs(1); } if (!chippedStack.isEmpty()) { addToOutputs(chippedStack); - addGemChance(3500, 400, 3000, 350, highOutput); + addGemChance(3500, 0, 3000, 0, highOutput); } else { addEmptyOutputs(1); } @@ -292,9 +292,13 @@ public void getTooltip(int slotIndex, List tooltips) { if (chances.containsKey(slotIndex)) { Content entry = chances.get(slotIndex); float chance = 100 * (float) entry.chance / entry.maxChance; - float boost = entry.tierChanceBoost / 100.0f; - tooltips.add(FormattingUtil.formatPercentage2Places("gtceu.gui.content.chance_base", chance)); - tooltips.add(FormattingUtil.formatPercentage2Places("gtceu.gui.content.chance_tier_boost_plus", boost)); + if (entry.tierChanceBoost != 0) { + float boost = entry.tierChanceBoost / 100.0f; + tooltips.add(FormattingUtil.formatPercentage2Places("gtceu.gui.content.chance_base", chance)); + tooltips.add(FormattingUtil.formatPercentage2Places("gtceu.gui.content.chance_tier_boost_plus", boost)); + } else { + tooltips.add(FormattingUtil.formatPercentage2Places("gtceu.gui.content.chance_no_boost", chance)); + } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreByProductWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreByProductWidget.java index cf2343e3aa4..750baa14cc2 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreByProductWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreByProductWidget.java @@ -20,16 +20,17 @@ import net.minecraft.core.NonNullList; import net.minecraft.world.item.ItemStack; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; +import it.unimi.dsi.fastutil.booleans.BooleanArrayList; +import it.unimi.dsi.fastutil.booleans.BooleanList; +import it.unimi.dsi.fastutil.ints.IntImmutableList; +import it.unimi.dsi.fastutil.ints.IntSet; -import java.util.ArrayList; import java.util.List; public class GTOreByProductWidget extends WidgetGroup { // XY positions of every item and fluid, in three enormous lists - protected final static ImmutableList ITEM_INPUT_LOCATIONS = ImmutableList.of( + protected final static IntImmutableList ITEM_INPUT_LOCATIONS = IntImmutableList.of( 3, 3, // ore 23, 3, // furnace (direct smelt) 3, 24, // macerator (ore -> crushed) @@ -48,7 +49,7 @@ public class GTOreByProductWidget extends WidgetGroup { 101, 25 // sifter ); - protected final static ImmutableList ITEM_OUTPUT_LOCATIONS = ImmutableList.of( + protected final static IntImmutableList ITEM_OUTPUT_LOCATIONS = IntImmutableList.of( 46, 3, // smelt result: 0 3, 47, // ore -> crushed: 2 3, 65, // byproduct: 4 @@ -85,13 +86,13 @@ public class GTOreByProductWidget extends WidgetGroup { 155, 21 // 66 ); - protected final static ImmutableList FLUID_LOCATIONS = ImmutableList.of( + protected final static IntImmutableList FLUID_LOCATIONS = IntImmutableList.of( 42, 25, // washer in 42, 48 // chem bath in ); // Used to set intermediates as both input and output - protected final static ImmutableSet FINAL_OUTPUT_INDICES = ImmutableSet.of( + protected final static IntSet FINAL_OUTPUT_INDICES = IntSet.of( 0, 4, 8, 10, 12, 16, 20, 22, 24, 28, 30, 32, 40, 44, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66); public GTOreByProductWidget(Material material) { @@ -101,10 +102,11 @@ public GTOreByProductWidget(Material material) { } public void setRecipe(GTOreByProduct recipeWrapper) { - List itemOutputExists = new ArrayList<>(); + BooleanList itemOutputExists = new BooleanArrayList(); // only draw slot on inputs if it is the ore - addWidget(new ImageWidget(ITEM_INPUT_LOCATIONS.get(0), ITEM_INPUT_LOCATIONS.get(1), 18, 18, GuiTextures.SLOT)); + addWidget(new ImageWidget(ITEM_INPUT_LOCATIONS.getInt(0), ITEM_INPUT_LOCATIONS.getInt(1), 18, 18, + GuiTextures.SLOT)); boolean hasSifter = recipeWrapper.hasSifter(); addWidget(new ImageWidget(0, 0, 176, 166, GuiTextures.OREBY_BASE)); @@ -126,8 +128,8 @@ public void setRecipe(GTOreByProduct recipeWrapper) { WidgetGroup itemStackGroup = new WidgetGroup(); for (int i = 0; i < ITEM_INPUT_LOCATIONS.size(); i += 2) { final int finalI = i; - itemStackGroup.addWidget(new SlotWidget(itemInputsHandler, i / 2, ITEM_INPUT_LOCATIONS.get(i), - ITEM_INPUT_LOCATIONS.get(i + 1)) + itemStackGroup.addWidget(new SlotWidget(itemInputsHandler, i / 2, ITEM_INPUT_LOCATIONS.getInt(i), + ITEM_INPUT_LOCATIONS.getInt(i + 1)) .setCanTakeItems(false) .setCanPutItems(false) .setIngredientIO(IngredientIO.INPUT) @@ -151,8 +153,8 @@ public void setRecipe(GTOreByProduct recipeWrapper) { continue; } - itemStackGroup.addWidget(new SlotWidget(itemOutputsHandler, slotIndex, ITEM_OUTPUT_LOCATIONS.get(i), - ITEM_OUTPUT_LOCATIONS.get(i + 1)) + itemStackGroup.addWidget(new SlotWidget(itemOutputsHandler, slotIndex, ITEM_OUTPUT_LOCATIONS.getInt(i), + ITEM_OUTPUT_LOCATIONS.getInt(i + 1)) .setCanTakeItems(false) .setCanPutItems(false) .setIngredientIO(FINAL_OUTPUT_INDICES.contains(i) ? IngredientIO.OUTPUT : IngredientIO.BOTH) @@ -170,7 +172,7 @@ public void setRecipe(GTOreByProduct recipeWrapper) { int slotIndex = i / 2; if (!fluidInputs.get(slotIndex).isEmpty()) { var tank = new TankWidget(new CustomFluidTank(fluidInputsHandler.getFluidInTank(slotIndex)), - FLUID_LOCATIONS.get(i), FLUID_LOCATIONS.get(i + 1), false, false) + FLUID_LOCATIONS.getInt(i), FLUID_LOCATIONS.getInt(i + 1), false, false) .setIngredientIO(IngredientIO.INPUT) .setBackground(GuiTextures.FLUID_SLOT) .setShowAmount(false); @@ -183,9 +185,9 @@ public void setRecipe(GTOreByProduct recipeWrapper) { for (int i = 0; i < ITEM_OUTPUT_LOCATIONS.size(); i += 2) { // stupid hack to show all sifter slots if the first one exists - if (itemOutputExists.get(i / 2) || (i > 28 * 2 && itemOutputExists.get(28) && hasSifter)) { - addWidget(this.widgets.size() - 3, new ImageWidget(ITEM_OUTPUT_LOCATIONS.get(i), - ITEM_OUTPUT_LOCATIONS.get(i + 1), 18, 18, GuiTextures.SLOT)); + if (itemOutputExists.getBoolean(i / 2) || (i > 28 * 2 && itemOutputExists.getBoolean(28) && hasSifter)) { + addWidget(this.widgets.size() - 3, new ImageWidget(ITEM_OUTPUT_LOCATIONS.getInt(i), + ITEM_OUTPUT_LOCATIONS.getInt(i + 1), 18, 18, GuiTextures.SLOT)); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreVeinWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreVeinWidget.java index c3a8dc5e426..c1dfe009a6c 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreVeinWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreVeinWidget.java @@ -34,6 +34,7 @@ import net.minecraft.world.level.material.Fluid; import net.minecraftforge.fluids.FluidStack; +import it.unimi.dsi.fastutil.ints.IntList; import lombok.Getter; import java.util.Comparator; @@ -42,10 +43,6 @@ import java.util.Set; import java.util.stream.Stream; -/** - * @author Arbor - * @implNote GTOreVeinWidget - */ @Getter public class GTOreVeinWidget extends WidgetGroup { @@ -128,7 +125,7 @@ private void setupBaseGui(BedrockFluidDefinition fluid) { private void setupBaseGui(BedrockOreDefinition bedrockOreDefinition) { NonNullList containedOresAsItemStacks = NonNullList.create(); - List chances = bedrockOreDefinition.getAllChances(); + IntList chances = bedrockOreDefinition.getAllChances(); containedOresAsItemStacks.addAll(getRawMaterialList(bedrockOreDefinition)); int n = containedOresAsItemStacks.size(); int x = (width - 18 * n) / 2; @@ -138,7 +135,8 @@ private void setupBaseGui(BedrockOreDefinition bedrockOreDefinition) { int finalIndex = i; oreSlot.setOnAddedTooltips((stack, tooltips) -> tooltips.add(Component .nullToEmpty( - LocalizationUtils.format("gtceu.jei.ore_vein_diagram.chance", chances.get(finalIndex))))); + LocalizationUtils.format("gtceu.jei.ore_vein_diagram.chance", + chances.getInt(finalIndex))))); oreSlot.setIngredientIO(IngredientIO.OUTPUT); addWidget(oreSlot); x += 18; @@ -218,7 +216,7 @@ private void setupDimensionMarker(int yPosition) { public static List getContainedOresAndBlocks(GTOreDefinition oreDefinition) { return oreDefinition.veinGenerator().getAllEntries().stream() - .flatMap(entry -> entry.getKey().map(state -> Stream.of(state.getBlock().asItem().getDefaultInstance()), + .flatMap(entry -> entry.map(state -> Stream.of(state.getBlock().asItem().getDefaultInstance()), material -> { Set ores = new HashSet<>(); ores.add(ChemicalHelper.get(TagPrefix.rawOre, material)); @@ -232,14 +230,14 @@ public static List getContainedOresAndBlocks(GTOreDefinition oreDefin public static List getRawMaterialList(GTOreDefinition oreDefinition) { return oreDefinition.veinGenerator().getAllEntries().stream() - .map(entry -> entry.getKey().map(state -> state.getBlock().asItem().getDefaultInstance(), + .map(entry -> entry.map(state -> state.getBlock().asItem().getDefaultInstance(), material -> ChemicalHelper.get(TagPrefix.rawOre, material))) .toList(); } public static List getRawMaterialList(BedrockOreDefinition bedrockOreDefinition) { return bedrockOreDefinition.materials().stream() - .map(entry -> ChemicalHelper.get(TagPrefix.rawOre, entry.getFirst())) + .map(entry -> ChemicalHelper.get(TagPrefix.rawOre, entry.material())) .toList(); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java index 1908def8e55..39335ee1b0e 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java @@ -15,10 +15,13 @@ import com.gregtechceu.gtceu.api.recipe.chance.boost.ChanceBoostFunction; import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; import com.gregtechceu.gtceu.api.recipe.content.Content; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.common.data.GTRecipeTypes; import com.gregtechceu.gtceu.common.machine.multiblock.electric.FusionReactorMachine; import com.gregtechceu.gtceu.common.recipe.condition.DimensionCondition; +import com.gregtechceu.gtceu.data.lang.LangHandler; import com.gregtechceu.gtceu.utils.FormattingUtil; +import com.gregtechceu.gtceu.utils.GTUtil; import com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup; import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; @@ -45,11 +48,6 @@ import static com.gregtechceu.gtceu.api.GTValues.*; -/** - * @author KilaBash - * @date 2023/2/25 - * @implNote GTRecipeWidget - */ public class GTRecipeWidget extends WidgetGroup { public static final String RECIPE_CONTENT_GROUP_ID = "recipeContentGroup"; @@ -60,6 +58,7 @@ public class GTRecipeWidget extends WidgetGroup { private final int xOffset; private final GTRecipe recipe; private final List recipeParaTexts = new ArrayList<>(); + private LabelWidget recipeVoltageText = null; private final int minTier; private int tier; private int yOffset; @@ -107,13 +106,10 @@ private void setRecipeWidget() { addWidget(group); - var EUt = RecipeHelper.getInputEUt(recipe); - if (EUt == 0) { - EUt = RecipeHelper.getOutputEUt(recipe); - } + EnergyStack EUt = RecipeHelper.getRealEUt(recipe); int yOffset = 5 + size.height; this.yOffset = yOffset; - yOffset += EUt > 0 ? 20 : 0; + yOffset += !EUt.isEmpty() ? 21 : 0; if (recipe.data.getBoolean("duration_is_total_cwu")) { yOffset -= 10; } @@ -152,16 +148,34 @@ private void initializeRecipeTextWidget() { String tierText = GTValues.VNF[tier]; int textsY = yOffset - 10; int duration = recipe.duration; - long inputEUt = RecipeHelper.getInputEUt(recipe); - long outputEUt = RecipeHelper.getOutputEUt(recipe); - List texts = getRecipeParaText(recipe, duration, inputEUt, outputEUt); + var EUt = RecipeHelper.getRealEUtWithIO(recipe); + var minVoltageTier = GTUtil.getTierByVoltage(EUt.voltage()); + float minAmperage = (float) EUt.getTotalEU() / GTValues.V[minVoltageTier]; + + List texts = getRecipeParaText(recipe, duration, EUt); for (Component text : texts) { textsY += 10; LabelWidget labelWidget = new LabelWidget(3 - xOffset, textsY, text).setTextColor(-1).setDropShadow(true); addWidget(labelWidget); recipeParaTexts.add(labelWidget); } - if (inputEUt > 0) { + + if (EUt.voltage() > 0) { + textsY += 10; + Component text = Component.translatable(EUt.isInput() ? "gtceu.recipe.eu" : "gtceu.recipe.eu_inverted", + FormattingUtil.formatNumber2Places(minAmperage), GTValues.VN[minVoltageTier]) + .withStyle(ChatFormatting.UNDERLINE); + recipeVoltageText = new LabelWidget(3 - xOffset, textsY, text).setTextColor(-1) + .setDropShadow(true); + recipeVoltageText.setHoverTooltips( + Component.translatable("gtceu.recipe.eu.total", FormattingUtil.formatNumbers(EUt.getTotalEU())) + .withStyle(ChatFormatting.UNDERLINE)); + if (recipeVoltageText != null) { + addWidget(recipeVoltageText); + } + } + + if (EUt.isInput()) { LabelWidget voltageTextWidget = new LabelWidget(getVoltageXOffset() - xOffset, getSize().height - 10, tierText).setTextColor(-1).setDropShadow(false); if (recipe.recipeType.isOffsetVoltageText()) { @@ -172,30 +186,21 @@ private void initializeRecipeTextWidget() { addWidget(new ButtonWidget(voltageTextWidget.getPositionX(), voltageTextWidget.getPositionY(), voltageTextWidget.getSizeWidth(), voltageTextWidget.getSizeHeight(), cd -> setRecipeOC(cd.button, cd.isShiftClick)) - .setHoverTooltips( - Component.translatable("gtceu.oc.tooltip.0", GTValues.VNF[minTier]), - Component.translatable("gtceu.oc.tooltip.1"), - Component.translatable("gtceu.oc.tooltip.2"), - Component.translatable("gtceu.oc.tooltip.3"), - Component.translatable("gtceu.oc.tooltip.4"))); + .setHoverTooltips(LangHandler.getMultiLang("gtceu.oc.tooltip", GTValues.VNF[minTier]) + .toArray(Component[]::new))); addWidget(this.voltageTextWidget = voltageTextWidget); } } @NotNull - private static List getRecipeParaText(GTRecipe recipe, int duration, long inputEUt, long outputEUt) { + private static List getRecipeParaText(GTRecipe recipe, int duration, + EnergyStack.WithIO eu) { List texts = new ArrayList<>(); if (!recipe.data.getBoolean("hide_duration")) { texts.add(Component.translatable("gtceu.recipe.duration", FormattingUtil.formatNumbers(duration / 20f))); } - var EUt = inputEUt; - boolean isOutput = false; - if (EUt == 0) { - EUt = outputEUt; - isOutput = true; - } - if (EUt > 0) { - long euTotal = EUt * duration; + if (eu.voltage() > 0) { + long euTotal = eu.getTotalEU() * duration; // sadly we still need a custom override here, since computation uses duration and EU/t very differently if (recipe.data.getBoolean("duration_is_total_cwu") && recipe.tickInputs.containsKey(CWURecipeCapability.CAP)) { @@ -206,8 +211,6 @@ private static List getRecipeParaText(GTRecipe recipe, int duration, } else { texts.add(Component.translatable("gtceu.recipe.total", FormattingUtil.formatNumbers(euTotal))); } - texts.add(Component.translatable(!isOutput ? "gtceu.recipe.eu" : "gtceu.recipe.eu_inverted", - FormattingUtil.formatNumbers(EUt))); } return texts; @@ -253,29 +256,40 @@ public void setRecipeOC(int button, boolean isShiftClick) { if (recipe.recipeType == GTRecipeTypes.FUSION_RECIPES) { oc = FusionReactorMachine.FUSION_OC; } - setRecipeTextWidget(oc); + setRecipeOverclockWidget(oc); setRecipeWidget(); } - private void setRecipeTextWidget(OverclockingLogic logic) { - long inputEUt = RecipeHelper.getInputEUt(recipe); + private void setRecipeOverclockWidget(OverclockingLogic logic) { + EnergyStack inputEUt = recipe.getInputEUt(); int duration = recipe.duration; String tierText = GTValues.VNF[tier]; - if (tier > minTier && inputEUt != 0) { + + if (tier > minTier && !inputEUt.isEmpty()) { int ocs = tier - minTier; if (minTier == ULV) ocs--; - var params = new OverclockingLogic.OCParams(inputEUt, recipe.duration, ocs, 1); + var params = new OverclockingLogic.OCParams(inputEUt.voltage(), recipe.duration, ocs, 1); var result = logic.runOverclockingLogic(params, V[tier]); duration = (int) (duration * result.durationMultiplier()); - inputEUt = (long) (inputEUt * result.eutMultiplier()); + inputEUt = inputEUt.multiplyVoltage(result.eutMultiplier()); tierText = tierText.formatted(ChatFormatting.ITALIC); } - List texts = getRecipeParaText(recipe, duration, inputEUt, 0); + var minVoltageTier = GTUtil.getTierByVoltage(inputEUt.voltage()); + float minAmperage = (float) inputEUt.getTotalEU() / GTValues.V[minVoltageTier]; + List texts = getRecipeParaText(recipe, duration, new EnergyStack.WithIO(inputEUt, IO.IN)); for (int i = 0; i < texts.size(); i++) { recipeParaTexts.get(i).setComponent(texts.get(i)); } voltageTextWidget.setText(tierText); voltageTextWidget.setSelfPositionX(getVoltageXOffset() - xOffset); + if (recipeVoltageText != null) { + recipeVoltageText.setComponent(Component.translatable("gtceu.recipe.eu", + FormattingUtil.formatNumber2Places(minAmperage), GTValues.VN[minVoltageTier]) + .withStyle(ChatFormatting.UNDERLINE)); + recipeVoltageText.setHoverTooltips( + Component.translatable("gtceu.recipe.eu.total", FormattingUtil.formatNumbers(inputEUt.getTotalEU())) + .withStyle(ChatFormatting.UNDERLINE)); + } detectAndSendChanges(); updateScreen(); } @@ -288,29 +302,43 @@ public static void setConsumedChance(Content content, ChanceLogic logic, List 0) ? "plus" : "minus"); tooltips.add(FormattingUtil.formatPercentage2Places(key, Math.abs(100f * content.tierChanceBoost / content.maxChance))); - } - if (logic != ChanceLogic.NONE && logic != ChanceLogic.OR) { - tooltips.add(Component.translatable("gtceu.gui.content.chance_boosted_logic", - FormattingUtil.formatNumber2Places(boostedChanceFloat), logic.getTranslation()) - .withStyle(ChatFormatting.YELLOW)); + + if (logic != ChanceLogic.NONE && logic != ChanceLogic.OR) { + tooltips.add(Component.translatable("gtceu.gui.content.chance_boosted_logic", + FormattingUtil.formatNumber2Places(boostedChanceFloat), logic.getTranslation()) + .withStyle(ChatFormatting.YELLOW)); + } else { + tooltips.add( + FormattingUtil.formatPercentage2Places("gtceu.gui.content.chance_boosted", + boostedChanceFloat)); + } } else { - tooltips.add( - FormattingUtil.formatPercentage2Places("gtceu.gui.content.chance_boosted", - boostedChanceFloat)); + if (logic != ChanceLogic.NONE && logic != ChanceLogic.OR) { + tooltips.add(Component.translatable("gtceu.gui.content.chance_no_boost_logic", + FormattingUtil.formatNumber2Places(baseChanceFloat), logic.getTranslation()) + .withStyle(ChatFormatting.YELLOW)); + } else { + tooltips.add( + FormattingUtil.formatPercentage2Places("gtceu.gui.content.chance_no_boost", + baseChanceFloat)); + } } } } diff --git a/src/main/java/com/gregtechceu/gtceu/syncdata/GTRecipePayload.java b/src/main/java/com/gregtechceu/gtceu/syncdata/GTRecipePayload.java index b944caae2a5..14c8f98b06c 100644 --- a/src/main/java/com/gregtechceu/gtceu/syncdata/GTRecipePayload.java +++ b/src/main/java/com/gregtechceu/gtceu/syncdata/GTRecipePayload.java @@ -19,11 +19,6 @@ import io.netty.buffer.Unpooled; import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/2/18 - * @implNote GTRecipePayload - */ public class GTRecipePayload extends ObjectTypedPayload { private static RecipeManager getRecipeManager() { diff --git a/src/main/java/com/gregtechceu/gtceu/syncdata/GTRecipeTypeAccessor.java b/src/main/java/com/gregtechceu/gtceu/syncdata/GTRecipeTypeAccessor.java index c97eb050d1d..75decc31a3f 100644 --- a/src/main/java/com/gregtechceu/gtceu/syncdata/GTRecipeTypeAccessor.java +++ b/src/main/java/com/gregtechceu/gtceu/syncdata/GTRecipeTypeAccessor.java @@ -12,10 +12,6 @@ import io.netty.buffer.Unpooled; -/** - * @author Screret - * @implNote GTRecipeTypeAccessor - */ public class GTRecipeTypeAccessor extends CustomObjectAccessor { public GTRecipeTypeAccessor() { diff --git a/src/main/java/com/gregtechceu/gtceu/syncdata/MachineRenderStatePayload.java b/src/main/java/com/gregtechceu/gtceu/syncdata/MachineRenderStatePayload.java new file mode 100644 index 00000000000..01955cbbeda --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/syncdata/MachineRenderStatePayload.java @@ -0,0 +1,41 @@ +package com.gregtechceu.gtceu.syncdata; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; + +import com.lowdragmc.lowdraglib.syncdata.payload.ObjectTypedPayload; + +import net.minecraft.nbt.NbtOps; +import net.minecraft.nbt.Tag; +import net.minecraft.network.FriendlyByteBuf; + +import lombok.NoArgsConstructor; +import org.jetbrains.annotations.Nullable; + +@NoArgsConstructor +public class MachineRenderStatePayload extends ObjectTypedPayload { + + @Override + public void writePayload(FriendlyByteBuf buf) { + buf.writeId(MachineDefinition.RENDER_STATE_REGISTRY, payload); + } + + @Override + public void readPayload(FriendlyByteBuf buf) { + payload = buf.readById(MachineDefinition.RENDER_STATE_REGISTRY); + } + + @Nullable + @Override + public Tag serializeNBT() { + return MachineRenderState.CODEC.encodeStart(NbtOps.INSTANCE, payload) + .getOrThrow(false, GTCEu.LOGGER::error); + } + + @Override + public void deserializeNBT(Tag tag) { + payload = MachineRenderState.CODEC.parse(NbtOps.INSTANCE, tag) + .getOrThrow(false, GTCEu.LOGGER::error); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/syncdata/MonitorGroupPayload.java b/src/main/java/com/gregtechceu/gtceu/syncdata/MonitorGroupPayload.java new file mode 100644 index 00000000000..acfa684cc4f --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/syncdata/MonitorGroupPayload.java @@ -0,0 +1,62 @@ +package com.gregtechceu.gtceu.syncdata; + +import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.monitor.MonitorGroup; + +import com.lowdragmc.lowdraglib.syncdata.payload.ObjectTypedPayload; + +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.NbtUtils; +import net.minecraft.nbt.Tag; + +import org.jetbrains.annotations.Nullable; + +public class MonitorGroupPayload extends ObjectTypedPayload { + + @Override + public @Nullable Tag serializeNBT() { + CompoundTag tag = new CompoundTag(); + tag.putString("name", payload.getName()); + ListTag list = new ListTag(); + payload.getRelativePositions().forEach(pos -> { + list.add(NbtUtils.writeBlockPos(pos)); + }); + if (payload.getTargetRaw() != null) { + tag.put("targetPos", NbtUtils.writeBlockPos(payload.getTargetRaw())); + if (payload.getTargetCoverSide() != null) { + tag.putString("targetSide", payload.getTargetCoverSide().getSerializedName()); + } + } + tag.put("positions", list); + tag.putInt("dataSlot", payload.getDataSlot()); + tag.put("items", payload.getItemStackHandler().serializeNBT()); + tag.put("placeholderSlots", payload.getPlaceholderSlotsHandler().serializeNBT()); + return tag; + } + + @Override + public void deserializeNBT(Tag tag) { + if (tag instanceof CompoundTag compoundTag) { + CustomItemStackHandler handler = new CustomItemStackHandler(), + placeholderSlotsHandler = new CustomItemStackHandler(); + handler.deserializeNBT(compoundTag.getCompound("items")); + placeholderSlotsHandler.deserializeNBT(compoundTag.getCompound("placeholderSlots")); + payload = new MonitorGroup(compoundTag.getString("name"), handler, placeholderSlotsHandler); + ListTag list = compoundTag.getList("positions", Tag.TAG_COMPOUND); + for (int i = 0; i < list.size(); i++) { + payload.add(NbtUtils.readBlockPos(list.getCompound(i))); + } + if (compoundTag.contains("targetPos", Tag.TAG_COMPOUND)) { + payload.setTarget(NbtUtils.readBlockPos(compoundTag.getCompound("targetPos"))); + if (compoundTag.contains("targetSide", Tag.TAG_STRING)) { + payload.setTargetCoverSide(Direction.byName(compoundTag.getString("targetSide"))); + } + if (compoundTag.contains("dataSlot", Tag.TAG_INT)) { + payload.setDataSlot(compoundTag.getInt("dataSlot")); + } + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/syncdata/VirtualTankAccessor.java b/src/main/java/com/gregtechceu/gtceu/syncdata/VirtualTankAccessor.java new file mode 100644 index 00000000000..f469f0f5d14 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/syncdata/VirtualTankAccessor.java @@ -0,0 +1,31 @@ +package com.gregtechceu.gtceu.syncdata; + +import com.gregtechceu.gtceu.api.misc.virtualregistry.entries.VirtualTank; + +import com.lowdragmc.lowdraglib.syncdata.AccessorOp; +import com.lowdragmc.lowdraglib.syncdata.accessor.CustomObjectAccessor; +import com.lowdragmc.lowdraglib.syncdata.payload.ITypedPayload; +import com.lowdragmc.lowdraglib.syncdata.payload.NbtTagPayload; + +import net.minecraft.nbt.CompoundTag; + +public class VirtualTankAccessor extends CustomObjectAccessor { + + public static final VirtualTankAccessor INSTANCE = new VirtualTankAccessor(); + + protected VirtualTankAccessor() { + super(VirtualTank.class, true); + } + + @Override + public ITypedPayload serialize(AccessorOp op, VirtualTank value) { + return NbtTagPayload.of(value.serializeNBT()); + } + + @Override + public VirtualTank deserialize(AccessorOp op, ITypedPayload payload) { + var tank = new VirtualTank(); + tank.deserializeNBT((CompoundTag) payload.getPayload()); + return tank; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/utils/BreadthFirstBlockSearch.java b/src/main/java/com/gregtechceu/gtceu/utils/BreadthFirstBlockSearch.java index 2c098b9c6a9..1de483faedc 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/BreadthFirstBlockSearch.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/BreadthFirstBlockSearch.java @@ -3,15 +3,19 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.Tuple; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraftforge.common.util.TriPredicate; import it.unimi.dsi.fastutil.objects.ObjectArrayFIFOQueue; import org.apache.commons.lang3.tuple.ImmutableTriple; import org.apache.commons.lang3.tuple.Triple; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.function.BiPredicate; +import java.util.function.Function; import java.util.function.Predicate; public class BreadthFirstBlockSearch { @@ -55,8 +59,15 @@ public static Collection getNeighbors(BlockPos pos) { public static Set conditionalBlockEntitySearch(Class clazz, T start, TriPredicate condition, int blockLimit, int iterationLimit) { - var level = start.getLevel(); - if (level == null) return Set.of(); + return conditionalSearch(clazz, start, start.getLevel(), + BlockEntity::getBlockPos, condition, blockLimit, iterationLimit); + } + + public static Set conditionalSearch(Class clazz, T start, @Nullable Level level, + Function posGetter, + TriPredicate condition, + int blockLimit, int iterationLimit) { + if (level == null) return Collections.emptySet(); var passed = new LinkedHashSet(); var queue = new ObjectArrayFIFOQueue>(16); @@ -69,10 +80,10 @@ public static Set conditionalBlockEntitySearch(Class< if (passed.contains(next)) { continue; } - if (condition.test(tuple.getLeft(), tuple.getMiddle(), tuple.getRight())) { + if (condition.test(tuple.getLeft(), next, tuple.getRight())) { passed.add(next); - for (var direction : Direction.values()) { - var neighbor = level.getBlockEntity(next.getBlockPos().relative(direction)); + for (var direction : GTUtil.DIRECTIONS) { + var neighbor = level.getBlockEntity(posGetter.apply(next).relative(direction)); if (!clazz.isInstance(neighbor)) continue; T casted = clazz.cast(neighbor); if (passed.contains(casted)) continue; diff --git a/src/main/java/com/gregtechceu/gtceu/utils/DummyMachineBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/utils/DummyMachineBlockEntity.java index 515325a67b7..f0988ca412e 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/DummyMachineBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/DummyMachineBlockEntity.java @@ -5,11 +5,20 @@ import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.lowdragmc.lowdraglib.syncdata.managed.MultiManagedStorage; +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.util.LazyOptional; + import it.unimi.dsi.fastutil.ints.Int2IntFunction; import lombok.Getter; +import lombok.Setter; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Collection; @@ -22,15 +31,19 @@ public class DummyMachineBlockEntity implements IMachineBlockEntity { public final DummyRecipeLogicMachine metaMachine; @Getter private final MachineDefinition definition; + @Getter + @Setter + private MachineRenderState renderState; // TODO: Fix the proxy parameter public DummyMachineBlockEntity(int tier, GTRecipeType type, Int2IntFunction tankScalingFunction, Collection handlers, Object... args) { - this.definition = MachineDefinition.createDefinition(GTCEu.id("dummy")); + this.definition = new MachineDefinition(GTCEu.id("dummy")); this.definition.setRecipeTypes(new GTRecipeType[] { type }); this.definition.setTier(tier); + this.renderState = getDefinition().defaultRenderState(); this.metaMachine = new DummyRecipeLogicMachine(this, tier, tankScalingFunction, handlers, args); } @@ -43,4 +56,14 @@ public long getOffset() { public MultiManagedStorage getRootStorage() { return null; } + + @Override + public CompoundTag getPersistentData() { + return new CompoundTag(); + } + + @Override + public @NotNull LazyOptional getCapability(@NotNull Capability cap, @Nullable Direction side) { + return LazyOptional.empty(); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/FluidKey.java b/src/main/java/com/gregtechceu/gtceu/utils/FluidKey.java deleted file mode 100644 index cd4a13b400d..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/utils/FluidKey.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.gregtechceu.gtceu.utils; - -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.fluids.FluidStack; - -import lombok.Getter; - -import java.util.Objects; - -public class FluidKey { - - @Getter - public final Fluid fluid; - // Don't make this final, so we can clear the NBT if we remove the only key, resulting in an NBT of {}. Thanks Forge - public CompoundTag tag; - private final int amount; - - public FluidKey(FluidStack fluidStack) { - this.fluid = fluidStack.getFluid(); - this.tag = fluidStack.getTag(); - this.amount = fluidStack.getAmount(); - } - - public FluidKey copy() { - return new FluidKey(new FluidStack(getFluid(), this.amount, tag)); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof FluidKey fluidKey)) return false; - if (!Objects.equals(fluid, fluidKey.fluid)) - return false; - if (tag == null && fluidKey.tag != null) return false; - else return tag == null || tag.equals(fluidKey.tag); - } - - @Override - public int hashCode() { - int hash = 0; - hash += Objects.hash(fluid); - if (tag != null && !tag.isEmpty()) { - hash += tag.hashCode(); - } - return hash; - } - - @Override - public String toString() { - return "FluidKey{" + - "fluid=" + fluid + - ", tag=" + tag + - '}'; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/utils/FormattingUtil.java b/src/main/java/com/gregtechceu/gtceu/utils/FormattingUtil.java index 316b1125b83..09edf06c3f3 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/FormattingUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/FormattingUtil.java @@ -4,8 +4,8 @@ import net.minecraft.network.chat.ComponentContents; import net.minecraft.network.chat.MutableComponent; -import com.google.common.base.CaseFormat; import org.apache.commons.lang3.StringUtils; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -18,11 +18,6 @@ import static net.minecraft.ChatFormatting.YELLOW; -/** - * @author KilaBash - * @date 2023/2/13 - * @implNote FormattingUtil - */ @SuppressWarnings("UnnecessaryUnicodeEscape") public class FormattingUtil { @@ -41,20 +36,21 @@ public class FormattingUtil { private static final int NUMBER_BASE = '0'; public static String toSmallUpNumbers(String string) { - return checkNumbers(string, SMALL_UP_NUMBER_BASE, true); + return checkNumbers(string, SMALL_UP_NUMBER_BASE); } public static String toSmallDownNumbers(String string) { - return checkNumbers(string, SMALL_DOWN_NUMBER_BASE, false); + return checkNumbers(string, SMALL_DOWN_NUMBER_BASE); } @NotNull - private static String checkNumbers(String string, int smallUpNumberBase, boolean isUp) { + private static String checkNumbers(String string, int startIndex) { char[] charArray = string.toCharArray(); for (int i = 0; i < charArray.length; i++) { int relativeIndex = charArray[i] - NUMBER_BASE; if (relativeIndex >= 0 && relativeIndex <= 9) { - if (isUp) { + // is superscript + if (startIndex == SMALL_UP_NUMBER_BASE) { if (relativeIndex == 1) { charArray[i] = SMALL_UP_NUMBER_ONE; continue; @@ -66,7 +62,7 @@ private static String checkNumbers(String string, int smallUpNumberBase, boolean continue; } } - int newChar = smallUpNumberBase + relativeIndex; + int newChar = startIndex + relativeIndex; charArray[i] = (char) newChar; } } @@ -74,34 +70,57 @@ private static String checkNumbers(String string, int smallUpNumberBase, boolean } /** - * Does almost the same thing as .to(LOWER_UNDERSCORE, string), but it also inserts underscores between words and - * numbers. + * Does almost the same thing as {@code UPPER_CAMEL.to(LOWER_UNDERSCORE, string)}, + * but it also inserts underscores between words and numbers. * * @param string Any string with ASCII characters. * @return A string that is all lowercase, with underscores inserted before word/number boundaries: - * "maragingSteel300" -> "maraging_steel_300" + * + *
+     *         
{@code "maragingSteel300" -> "maraging_steel_300"} + *
{@code "gtceu:maraging_steel_300" -> "gtceu:maraging_steel_300"} + *
{@code "maragingSteel_300" -> "maraging_steel_300"} + *
{@code "maragingSTEEL_300" -> "maraging_steel_300"} + *
{@code "MARAGING_STEEL_300" -> "maraging_steel_300"} + *
*/ public static String toLowerCaseUnderscore(String string) { StringBuilder result = new StringBuilder(); for (int i = 0; i < string.length(); i++) { - if (i != 0 && (Character.isUpperCase(string.charAt(i)) || - (Character.isDigit(string.charAt(i - 1)) ^ Character.isDigit(string.charAt(i))))) - result.append("_"); - result.append(Character.toLowerCase(string.charAt(i))); + char curChar = string.charAt(i); + result.append(Character.toLowerCase(curChar)); + if (i == string.length() - 1) break; + + char nextChar = string.charAt(i + 1); + if (curChar == '_' || nextChar == '_') continue; + boolean nextIsUpper = Character.isUpperCase(nextChar); + if (Character.isUpperCase(curChar) && nextIsUpper) continue; + if (nextIsUpper || Character.isDigit(curChar) ^ Character.isDigit(nextChar)) result.append('_'); } return result.toString(); } /** - * Does almost the same thing as .to(LOWER_UNDERSCORE, string), but it also inserts underscores between words and - * numbers. - * - * @param string Any string with ASCII characters. - * @return A string that is all lowercase, with underscores inserted before word/number boundaries: - * "maragingSteel300" -> "maraging_steel_300" + * @deprecated use {@link FormattingUtil#toLowerCaseUnderscore(String) toLowerCaseUnderscore} instead. */ + @ApiStatus.Obsolete(since = "7.0.0") + @Deprecated(since = "7.0.0") public static String toLowerCaseUnder(String string) { - return CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, string); + return toLowerCaseUnderscore(string); + } + + /** + * Check if {@code string} has any uppercase characters. + * + * @param string the string to check + * @return if the string has any uppercase characters. + */ + public static boolean hasUpperCase(String string) { + for (int i = 0; i < string.length(); i++) { + char ch = string.charAt(i); + if (Character.isUpperCase(ch)) return true; + } + return false; } /** diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTHashMaps.java b/src/main/java/com/gregtechceu/gtceu/utils/GTHashMaps.java index 57e909fccf4..5d654844e3d 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTHashMaps.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTHashMaps.java @@ -10,7 +10,6 @@ import java.util.Collection; import java.util.Map; -import java.util.Set; public final class GTHashMaps { @@ -93,48 +92,39 @@ public static Object2IntMap createItemStackMap(boolean linked) { } /** - * Maps all fluids in the {@link IFluidHandler} into a {@link FluidKey}, {@link Integer} value as amount + * Collects the FluidStacks in an IFluidHandler into a map of FluidStack -> total amount + * Note that FluidStacks are compared by their Fluid and Tag, not their amount * - * @param fluidInputs The combined fluid input inventory handler, in the form of an {@link IFluidHandler} - * @return a {@link Set} of unique {@link FluidKey}s for each fluid in the handler. Will be oversized stacks if - * required + * @param fluidInputs The {@link IFluidHandler} to query from + * @return a map of FluidStack -> amount */ - public static Map fromFluidHandler(IFluidHandler fluidInputs) { - final Object2IntMap map = new Object2IntLinkedOpenHashMap<>(); - + public static Map fromFluidHandler(IFluidHandler fluidInputs) { + Object2IntLinkedOpenHashMap map = new Object2IntLinkedOpenHashMap<>(); // Create a single stack of the combined count for each item - for (int i = 0; i < fluidInputs.getTanks(); i++) { FluidStack fluidStack = fluidInputs.getFluidInTank(i); - if (fluidStack != FluidStack.EMPTY && fluidStack.getAmount() > 0) { - FluidKey key = new FluidKey(fluidStack); - map.put(key, map.getInt(key) + fluidStack.getAmount()); + if (!fluidStack.isEmpty()) { + map.addTo(fluidStack, fluidStack.getAmount()); } } - return map; } /** - * Maps all fluids in the {@link FluidStack} {@link Collection} into a {@link FluidKey}, {@link Integer} value as - * amount + * Collects FluidStacks into a map of FluidStack -> total amount + * Note that FluidStacks are compared by their Fluid and Tag, not their amount * - * @param fluidInputs The combined fluid input inventory handler, in the form of an {@link IFluidHandler} - * @return a {@link Set} of unique {@link FluidKey}s for each fluid in the handler. Will be oversized stacks if - * required + * @param fluidInputs an iterable set of FluidStacks + * @return a map of FluidStack -> amount */ - public static Map fromFluidCollection(Collection fluidInputs) { - final Object2IntMap map = new Object2IntLinkedOpenHashMap<>(); - + public static Map fromFluidCollection(Iterable fluidInputs) { + Object2IntLinkedOpenHashMap map = new Object2IntLinkedOpenHashMap<>(); // Create a single stack of the combined count for each item - for (FluidStack fluidStack : fluidInputs) { - if (fluidStack != null && fluidStack.getAmount() > 0) { - FluidKey key = new FluidKey(fluidStack); - map.put(key, map.getInt(key) + fluidStack.getAmount()); + if (fluidStack != null && !fluidStack.isEmpty()) { + map.addTo(fluidStack, fluidStack.getAmount()); } } - return map; } } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTMath.java b/src/main/java/com/gregtechceu/gtceu/utils/GTMath.java index 5694846e9d9..dac3a82b79d 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTMath.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTMath.java @@ -2,10 +2,15 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.world.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.math.MathContext; +import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -20,15 +25,31 @@ public static long clamp(long value, long min, long max) { } public static List splitStacks(ItemStack stack, long amount) { - int count = saturatedCast(amount); - int fullStacks = count / 64; - int rem = count % 64; + int fullStacks = (int) (amount / Integer.MAX_VALUE); + int rem = (int) (amount % Integer.MAX_VALUE); List stacks = new ObjectArrayList<>(fullStacks + 1); - if (fullStacks > 0) stacks.addAll(Collections.nCopies(fullStacks, stack.copyWithCount(64))); + if (fullStacks > 0) stacks.addAll(Collections.nCopies(fullStacks, stack.copyWithCount(Integer.MAX_VALUE))); if (rem > 0) stacks.add(stack.copyWithCount(rem)); return stacks; } + public static List splitFluidStacks(FluidStack stack, long amount) { + int fullStacks = (int) (amount / Integer.MAX_VALUE); + int rem = (int) (amount % Integer.MAX_VALUE); + List stacks = new ObjectArrayList<>(fullStacks + 1); + if (fullStacks > 0) { + var copy = stack.copy(); + copy.setAmount(Integer.MAX_VALUE); + stacks.addAll(Collections.nCopies(fullStacks, copy)); + } + if (rem > 0) { + var copy = stack.copy(); + copy.setAmount(rem); + stacks.add(copy); + } + return stacks; + } + public static int[] split(long value) { IntArrayList result = new IntArrayList(); while (value > 0) { @@ -46,4 +67,25 @@ public static int saturatedCast(long value) { return value < -2147483648L ? Integer.MIN_VALUE : (int) value; } } + + public static int hashInts(int... vals) { + return Arrays.hashCode(vals); + } + + public static int hashLongs(long... vals) { + return Arrays.hashCode(vals); + } + + public static float ratio(BigInteger a, BigInteger b) { + return new BigDecimal(a).divide(new BigDecimal(b), MathContext.DECIMAL32).floatValue(); + } + + public static int ceilDiv(int x, int y) { + final int q = x / y; + // if the signs are the same and modulo not zero, round up + if ((x ^ y) >= 0 && (q * y != x)) { + return q + 1; + } + return q; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTMatrixUtils.java b/src/main/java/com/gregtechceu/gtceu/utils/GTMatrixUtils.java index 40e7f94d75e..44f6ad29e34 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTMatrixUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTMatrixUtils.java @@ -1,19 +1,20 @@ package com.gregtechceu.gtceu.utils; import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.Util; import net.minecraft.core.Direction; import net.minecraft.util.Mth; -import net.minecraftforge.client.model.SimpleModelState; import com.google.common.collect.HashBasedTable; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.Table; import com.google.common.collect.Tables; -import com.mojang.math.Transformation; import org.jetbrains.annotations.Contract; -import org.joml.Matrix4f; -import org.joml.Vector3f; +import org.joml.*; +import java.lang.Math; import java.security.InvalidParameterException; +import java.util.Objects; import javax.annotation.ParametersAreNonnullByDefault; @@ -21,7 +22,15 @@ @MethodsReturnNonnullByDefault public class GTMatrixUtils { - protected static final Table rotations = Tables + @SuppressWarnings("UnstableApiUsage") + private static final ImmutableMap directionAxises = Util.make(() -> { + ImmutableMap.Builder map = ImmutableMap.builderWithExpectedSize(6); + for (Direction dir : GTUtil.DIRECTIONS) { + map.put(dir, dir.step()); + } + return map.build(); + }); + private static final Table rotations = Tables .synchronizedTable(HashBasedTable.create()); /** @@ -30,7 +39,7 @@ public class GTMatrixUtils { * @return the angle of rotation to make {@code from} point in the direction of {@code to} */ @Contract(pure = true) - public static float getRotationAngle(final Vector3f from, final Vector3f to) { + public static float getRotationAngle(final Vector3fc from, final Vector3fc to) { return (float) Math.acos(from.dot(to)); } @@ -41,7 +50,7 @@ public static float getRotationAngle(final Vector3f from, final Vector3f to) { * @param to the wanted vector * @return the axis of rotation to make {@code from} point in the direction of {@code to} */ - public static Vector3f getRotationAxis(Vector3f from, final Vector3f to) { + public static Vector3f getRotationAxis(Vector3f from, final Vector3fc to) { return getRotationAxis(from, to, from); } @@ -51,10 +60,30 @@ public static Vector3f getRotationAxis(Vector3f from, final Vector3f to) { * @param dest the vector to save the result to * @return {@code dest} */ - public static Vector3f getRotationAxis(Vector3f from, Vector3f to, Vector3f dest) { + public static Vector3f getRotationAxis(final Vector3fc from, final Vector3fc to, Vector3f dest) { return from.cross(to, dest).normalize(); } + /** + * @param from the original vector + * @param to the wanted vector + * @return the quaternion to make {@code from} point in the direction of {@code to} + */ + @Contract(pure = true) + public static Quaternionf getRotation(final Vector3fc from, final Vector3fc to) { + return from.rotationTo(to, new Quaternionf()); + } + + /** + * @param from the original direction + * @param to the wanted direction + * @return the quaternion to make a vector based on {@code from} point towards {@code to} + */ + @Contract(pure = true) + public static Quaternionf getRotation(final Direction from, final Direction to) { + return getRotation(getDirectionAxis(from), getDirectionAxis(to)); + } + /** * Transforms the {@code matrix} and all {@code additional} vectors such that the {@code from} vector will be on the * {@code to} vector's axis @@ -64,31 +93,29 @@ public static Vector3f getRotationAxis(Vector3f from, Vector3f to, Vector3f dest * @param to the destination vector * @param additional additional vectors to transform */ - public static void rotateMatrix(Matrix4f matrix, Vector3f from, Vector3f to, Vector3f... additional) { + public static void rotateMatrix(Matrix4f matrix, Vector3f from, Vector3fc to, Vector3f... additional) { if (from.equals(to)) { return; } - if (-from.x == to.x && -from.y == to.y && -from.z == to.z) { - rotateMatrix(matrix, Mth.PI, 0, 1, 0, additional); + if (-from.x() == to.x() && -from.y() == to.y() && -from.z() == to.z()) { + rotateMatrix(matrix, Mth.PI, getDirectionAxis(Direction.UP), additional); } else { var angle = getRotationAngle(from, to); getRotationAxis(from, to); - rotateMatrix(matrix, angle, from.x, from.y, from.z, additional); + rotateMatrix(matrix, angle, from, additional); } } /** * @param matrix the matrix to transform * @param angle the angle of rotation (radians) - * @param x axis of rotation x value - * @param y axis of rotation y value - * @param z axis of rotation z value + * @param axis axis of rotation * @param additional additional vectors to transform */ - public static void rotateMatrix(Matrix4f matrix, float angle, float x, float y, float z, Vector3f... additional) { - matrix.rotate(angle, x, y, z); + public static void rotateMatrix(Matrix4f matrix, float angle, Vector3fc axis, Vector3f... additional) { + matrix.rotate(angle, axis); for (var vec : additional) { - vec.rotateAxis(angle, x, y, z); + vec.rotateAxis(angle, axis.x(), axis.y(), axis.z()); } } @@ -109,16 +136,16 @@ public static float upwardFacingAngle(Direction upward) { public static Vector3f rotateMatrixToFront(Matrix4f matrix, Direction frontFace) { // rotate frontFacing to correct cardinal direction var front = frontFace.step(); - rotateMatrix(matrix, Direction.NORTH.step(), frontFace.step(), front); + rotateMatrix(matrix, Direction.NORTH.step(), getDirectionAxis(frontFace), front); return front; } public static void rotateMatrixToUp(Matrix4f matrix, Vector3f front, Direction upwardsFace) { // rotate upwards face to the correct orientation - rotateMatrix(matrix, upwardFacingAngle(upwardsFace), front.x, front.y, front.z); + rotateMatrix(matrix, upwardFacingAngle(upwardsFace), front); } - public static SimpleModelState createRotationState(Direction frontFace, Direction upwardFace) { + public static Matrix4fc createRotationState(Direction frontFace, Direction upwardFace) { if (rotations.contains(frontFace, upwardFace)) { var rotation = rotations.get(frontFace, upwardFace); assert rotation != null; @@ -128,8 +155,11 @@ public static SimpleModelState createRotationState(Direction frontFace, Directio var front = rotateMatrixToFront(matrix, frontFace); front.absolute(); rotateMatrixToUp(matrix, front, upwardFace); - var rotation = new SimpleModelState(new Transformation(matrix)); - rotations.put(frontFace, upwardFace, rotation); - return rotation; + rotations.put(frontFace, upwardFace, matrix); + return matrix; + } + + public static Vector3fc getDirectionAxis(Direction dir) { + return Objects.requireNonNull(directionAxises.get(dir)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTStringUtils.java b/src/main/java/com/gregtechceu/gtceu/utils/GTStringUtils.java index 8565b27e242..70912110719 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTStringUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTStringUtils.java @@ -1,10 +1,21 @@ package com.gregtechceu.gtceu.utils; +import net.minecraft.ChatFormatting; import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.nbt.ListTag; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.ComponentContents; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; public class GTStringUtils { @@ -20,4 +31,195 @@ public static String itemStackToString(@NotNull ItemStack stack) { ResourceLocation itemId = BuiltInRegistries.ITEM.getKey(stack.getItem()); return stack.getCount() + "x_" + itemId.getNamespace() + "_" + itemId.getPath(); } + + @NotNull + public static String fluidStackToString(@NotNull FluidStack stack) { + ResourceLocation fluidId = BuiltInRegistries.FLUID.getKey(stack.getFluid()); + return stack.getAmount() + "x_" + fluidId.getNamespace() + "_" + fluidId.getPath(); + } + + /** + * This function does this: + *
    + *
  • {@code 1} -> {@code "1st"}
  • + *
  • {@code 2} -> {@code "2nd"}
  • + *
  • {@code 3} -> {@code "3rd"}
  • + *
  • {@code 4} -> {@code "4th"}
  • + *
  • ...
  • + *
+ */ + @NotNull + public static String getIntOrderingSuffix(int x) { + if ((x % 100) / 10 == 1) return x + "th"; + if (x % 10 == 1) return x + "st"; + if (x % 10 == 2) return x + "nd"; + if (x % 10 == 3) return x + "rd"; + return x + "th"; + } + + /** + * Returns a string with the result of the provided expression. + * This function is intended for use with user input. + * For example: + *
    + *
  • {@code {"12", "+", "34"}} -> {@code "46"}
  • + *
  • {@code {"sqrt", "16"}} -> {@code "4"}
  • + *
  • {@code {"round", "4.5"}} -> {@code "5"}
  • + *
  • {@code {"literally any string"}} -> {@code "literally any string"}
  • + *
  • {@code {"~", "0"}} -> {@code "-1"} // signed bitwise inversion
  • + *
+ * Currently the operations are: {@code {"+", "-", "*", "/", "%", ">>", "<<", "~", "round", "ceil", "floor", + * "sqrt"}} + * + * @param args the arguments, including operands and operation to calculate + * @return the result of the calculation, {@code "Invalid number!"} or {@code "Invalid expression!"} + */ + @NotNull + public static String calc(@NotNull List args) { + // yes I know this is terrible code, but I want to be able to do math in placeholders + // not going to do anything crazy like including lua or python here + if (args.size() == 3) { + try { + long a = Long.parseLong(args.get(0)); + long b = Long.parseLong(args.get(2)); + return switch (args.get(1)) { + case "+" -> String.valueOf(a + b); + case "-" -> String.valueOf(a - b); + case "*" -> String.valueOf(a * b); + case "/" -> String.valueOf(a / b); + case "%" -> String.valueOf(a % b); + case "<<" -> String.valueOf(a << b); + case ">>" -> String.valueOf(a >> b); + default -> "No such operation: '%s'".formatted(args.get(1)); + }; + } catch (NumberFormatException e) { + try { + double a = Double.parseDouble(args.get(0)); + double b = Double.parseDouble(args.get(2)); + return switch (args.get(1)) { + case "/" -> String.valueOf(a / b); + case "+" -> String.valueOf(a + b); + case "-" -> String.valueOf(a - b); + case "*" -> String.valueOf(a * b); + default -> "Invalid number: '%s' or operation '%s'".formatted(e.getMessage(), args.get(1)); + }; + } catch (NumberFormatException ex) { + return "Invalid number '%s'!".formatted(ex.getMessage()); + } + } + } else if (args.size() == 2) { + try { + long a = Long.parseLong(args.get(1)); + return switch (args.get(0)) { + case "~" -> String.valueOf(~a); + case "sqrt" -> String.valueOf(Math.sqrt(a)); + default -> "No such operation: '%s'".formatted(args.get(0)); + }; + } catch (NumberFormatException e) { + try { + double a = Double.parseDouble(args.get(1)); + return switch (args.get(0)) { + case "round" -> String.valueOf(Math.round(a)); + case "ceil" -> String.valueOf(Math.ceil(a)); + case "floor" -> String.valueOf(Math.floor(a)); + case "sqrt" -> String.valueOf(Math.sqrt(a)); + default -> "Invalid number '%s' or operation '%s'!".formatted(e.getMessage(), args.get(0)); + }; + } catch (NumberFormatException e2) { + return "Invalid number '%s'!".formatted(e2.getMessage()); + } + } + } else if (args.size() == 1) return args.get(0); + return "Invalid expression!"; + } + + public static List literalLine(String s) { + return new ArrayList<>(List.of(Component.literal(s))); + } + + public static List literalLine(long n) { + return literalLine(String.valueOf(n)); + } + + public static boolean equals(List components, String s) { + return Objects.equals(componentsToString(components), s); + } + + public static double toDouble(List components) throws NumberFormatException { + if (components.isEmpty()) return 0; + if (components.size() > 1) throw new NumberFormatException(componentsToString(components)); + return Double.parseDouble(components.get(0).getString()); + } + + public static int toInt(List components) throws NumberFormatException { + if (components.isEmpty()) return 0; + if (components.size() > 1) throw new NumberFormatException(componentsToString(components)); + return Integer.parseInt(components.get(0).getString()); + } + + public static String componentsToString(List components) { + StringBuilder out = new StringBuilder(); + if (components.isEmpty()) return out.toString(); + for (Component component : components) { + out.append(component.getString()); + out.append('\n'); + } + return out.substring(0, out.length() - 1); + } + + public static void append(List components, @Nullable String s) { + if (s != null) + GTUtil.getLast(components).append(s); + } + + public static void append(List components, char c) { + append(components, String.valueOf(c)); + } + + public static void append(List components, @Nullable List lines) { + if (lines == null) return; + if (lines.isEmpty()) return; + for (Component line : lines) { + GTUtil.getLast(components).append(line); + components.add(MutableComponent.create(ComponentContents.EMPTY)); + } + components.remove(components.size() - 1); + } + + public static List toImmutable(List singleOrMultiLang) { + return singleOrMultiLang.stream().map((c) -> (Component) c).toList(); + } + + public static List literalLine(double d) { + return literalLine(String.valueOf(d)); + } + + public static String replace(String s, String regex, List replacements) { + List out = new ArrayList<>(); + out.add(s); + replacements.forEach(replacement -> out.set(0, out.get(0).replaceFirst(regex, replacement))); + return out.get(0); + } + + public static Component toComponent(ListTag arr) { + MutableComponent component = Component.literal("["); + if (arr.size() <= 5) { + for (int i = 0; i < arr.size(); i++) { + component.append(Component.literal('"' + arr.getString(i) + '"').withStyle(ChatFormatting.DARK_AQUA)); + if (i != arr.size() - 1) component.append(", "); + } + } else { + for (int i = 0; i < 2; i++) { + component.append(Component.literal('"' + arr.getString(i) + '"').withStyle(ChatFormatting.DARK_AQUA)); + component.append(", "); + } + component.append("..., "); + for (int i = arr.size() - 2; i < arr.size(); i++) { + component.append(Component.literal('"' + arr.getString(i) + '"').withStyle(ChatFormatting.DARK_AQUA)); + if (i != arr.size() - 1) component.append(", "); + } + } + component.append("]"); + return component; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java b/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java index 68e20549509..7a2eebe1fbc 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java @@ -11,6 +11,7 @@ import com.gregtechceu.gtceu.data.recipe.CustomTags; import net.minecraft.ChatFormatting; +import net.minecraft.Util; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -23,6 +24,8 @@ import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.Style; import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; import net.minecraft.tags.BiomeTags; import net.minecraft.util.RandomSource; import net.minecraft.util.Tuple; @@ -33,6 +36,10 @@ import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.level.Level; import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.SnowLayerBlock; +import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Fluid; import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; import net.minecraftforge.common.ForgeHooks; @@ -40,6 +47,7 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidType; +import com.google.common.collect.ImmutableList; import com.mojang.blaze3d.platform.InputConstants; import com.mojang.datafixers.util.Pair; import it.unimi.dsi.fastutil.objects.Object2IntArrayMap; @@ -50,23 +58,24 @@ import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; +import java.util.*; import static com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey.HAZARD; -/** - * @author KilaBash - * @date 2023/2/17 - * @implNote GTUtil - */ public class GTUtil { public static final Direction[] DIRECTIONS = Direction.values(); + @SuppressWarnings("UnstableApiUsage") + public static final ImmutableList NON_CORNER_NEIGHBOURS = Util.make(() -> { + var builder = ImmutableList.builderWithExpectedSize(18); + BlockPos.betweenClosedStream(-1, -1, -1, 1, 1, 1) + .filter((pos) -> (pos.getX() == 0 || pos.getY() == 0 || pos.getZ() == 0) && !pos.equals(BlockPos.ZERO)) + .map(BlockPos::immutable) + .forEach(builder::add); + return builder.build(); + }); + private static final Object2IntMap RVN = new Object2IntArrayMap<>(GTValues.VN, GTValues.ALL_TIERS); /** @@ -282,29 +291,28 @@ public static M getItem(List list, int index, M replacement) { return replacement; } - public static int getRandomItem(RandomSource random, List> randomList, int size) { - if (randomList.isEmpty()) - return -1; + public static @Nullable T getRandomItem(RandomSource random, List randomList) { + if (randomList.isEmpty()) return null; + int size = randomList.size(); int[] baseOffsets = new int[size]; int currentIndex = 0; for (int i = 0; i < size; i++) { - Entry entry = randomList.get(i); - if (entry.getKey() <= 0) { - throw new IllegalArgumentException("Invalid weight: " + entry.getKey()); + int weight = randomList.get(i).weight(); + if (weight <= 0) { + throw new IllegalArgumentException("Invalid weight: " + weight); } - currentIndex += entry.getKey(); + currentIndex += weight; baseOffsets[i] = currentIndex; } int randomValue = random.nextInt(currentIndex); for (int i = 0; i < size; i++) { - if (randomValue < baseOffsets[i]) - return i; + if (randomValue < baseOffsets[i]) return randomList.get(i); } throw new IllegalArgumentException("Invalid weight"); } - public static int getRandomItem(List> randomList, int size) { - return getRandomItem(GTValues.RNG, randomList, size); + public static @Nullable T getRandomItem(List randomList) { + return getRandomItem(GTValues.RNG, randomList); } @SuppressWarnings("unchecked") @@ -384,18 +392,20 @@ public static int getPumpBiomeModifier(Holder biome) { public static DyeColor determineDyeColor(int rgbColor) { float[] c = GradientUtil.getRGB(rgbColor); - Map distances = new HashMap<>(); + double min = Double.MAX_VALUE; + DyeColor minColor = null; for (DyeColor dyeColor : DyeColor.values()) { float[] c2 = GradientUtil.getRGB(dyeColor.getTextColor()); double distance = (c[0] - c2[0]) * (c[0] - c2[0]) + (c[1] - c2[1]) * (c[1] - c2[1]) + (c[2] - c2[2]) * (c[2] - c2[2]); - distances.put(distance, dyeColor); + if (Double.compare(min, distance) < 0) { + minColor = dyeColor; + min = distance; + } } - - double min = Collections.min(distances.keySet()); - return distances.get(min); + return minColor; } public static int convertRGBtoARGB(int colorValue) { @@ -448,6 +458,45 @@ public static boolean canSeeSunClearly(Level world, BlockPos blockPos) { } else return world.isDay(); } + /** + * @param state the blockstate to check + * @return if the block is a snow layer or snow block + */ + public static boolean isBlockSnow(@NotNull BlockState state) { + return state.is(Blocks.SNOW) || state.is(Blocks.SNOW_BLOCK); + } + + /** + * Attempt to break a (single) snow layer at the given BlockPos. + * Will also turn snow blocks into snow layers at height 7. + * + * @return true if the passed IBlockState was valid snow block + */ + public static boolean tryBreakSnow(@NotNull Level level, @NotNull BlockPos pos, @NotNull BlockState state, + boolean playSound) { + boolean success = false; + if (state.is(Blocks.SNOW_BLOCK)) { + level.setBlock(pos, Blocks.SNOW.defaultBlockState().setValue(SnowLayerBlock.LAYERS, 7), + Block.UPDATE_ALL_IMMEDIATE); + success = true; + } else if (state.getBlock() == Blocks.SNOW) { + int layers = state.getValue(SnowLayerBlock.LAYERS); + if (layers == 1) { + level.destroyBlock(pos, false); + } else { + level.setBlock(pos, Blocks.SNOW.defaultBlockState().setValue(SnowLayerBlock.LAYERS, layers - 1), + Block.UPDATE_ALL_IMMEDIATE); + } + success = true; + } + + if (success && playSound) { + level.playSound(null, pos, SoundEvents.LAVA_EXTINGUISH, SoundSource.BLOCKS, 1.0f, 1.0f); + } + + return success; + } + public static void appendHazardTooltips(Material material, List tooltipComponents) { if (!ConfigHolder.INSTANCE.gameplay.hazardsEnabled || !material.hasProperty(HAZARD)) return; @@ -486,7 +535,7 @@ public static ItemStack loadItemStack(CompoundTag compoundTag) { } } - if (stack.getItem().canBeDepleted()) { + if (stack.isDamageableItem()) { stack.setDamageValue(stack.getDamageValue()); } return stack; @@ -531,4 +580,12 @@ public static void addPotionTooltip(List> effects .setStyle(Style.EMPTY.withColor(ChatFormatting.GREEN)))); }); } + + public static T getLast(List list) { + return list.get(list.size() - 1); + } + + public static ArrayList list(T obj) { + return new ArrayList<>(List.of(obj)); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GradientUtil.java b/src/main/java/com/gregtechceu/gtceu/utils/GradientUtil.java index 2e7c890a8a0..abf5ddf8e29 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GradientUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GradientUtil.java @@ -2,7 +2,7 @@ import net.minecraft.util.FastColor; -import org.apache.commons.lang3.tuple.Pair; +import it.unimi.dsi.fastutil.ints.IntIntPair; public class GradientUtil { @@ -72,7 +72,7 @@ public static int blend(int c1, int c2, float ratio) { return a << 24 | r << 16 | g << 8 | b; } - public static Pair getGradient(int rgb, int luminanceDifference) { + public static IntIntPair getGradient(int rgb, int luminanceDifference) { float[] hsl = RGBtoHSL(rgb); float[] upshade = new float[3]; float[] downshade = new float[3]; @@ -84,7 +84,7 @@ public static Pair getGradient(int rgb, int luminanceDifferenc if (downshade[2] < 0.0F) downshade[2] = 0.0F; int upshadeRgb = toRGB(upshade); int downshadeRgb = toRGB(downshade); - return Pair.of(downshadeRgb, upshadeRgb); + return IntIntPair.of(downshadeRgb, upshadeRgb); } public static float[] RGBtoHSL(int rgbColor) { diff --git a/src/main/java/com/gregtechceu/gtceu/utils/IngredientEquality.java b/src/main/java/com/gregtechceu/gtceu/utils/IngredientEquality.java index 951b0131881..ab292863e5e 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/IngredientEquality.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/IngredientEquality.java @@ -1,10 +1,11 @@ package com.gregtechceu.gtceu.utils; -import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderIngredient; import com.gregtechceu.gtceu.api.recipe.ingredient.SizedIngredient; import com.gregtechceu.gtceu.core.mixins.*; +import com.gregtechceu.gtceu.core.mixins.forge.*; import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraftforge.common.crafting.IntersectionIngredient; @@ -18,32 +19,24 @@ public class IngredientEquality { - public static final Comparator STACK_COMPARATOR = Comparator - .comparing(stack -> BuiltInRegistries.ITEM.getKey(stack.getItem())); + public static final Comparator ITEM_COMPARATOR = Comparator.comparing(BuiltInRegistries.ITEM::getKey); public static final Comparator INGREDIENT_VALUE_COMPARATOR = new Comparator<>() { @Override public int compare(Ingredient.Value value1, Ingredient.Value value2) { - if (value1 instanceof Ingredient.TagValue tagValue) { - if (!(value2 instanceof Ingredient.TagValue tagValue1)) { - return 1; - } - if (((TagValueAccessor) tagValue).getTag() != ((TagValueAccessor) tagValue1).getTag()) { - return 1; + if (value1 instanceof TagValueAccessor first) { + if (!(value2 instanceof TagValueAccessor second)) { + return 10; } - } else if (value1 instanceof Ingredient.ItemValue) { - if (!(value2 instanceof Ingredient.ItemValue)) { + if (first.getTag() != second.getTag()) { return 1; } - for (ItemStack item1 : value1.getItems()) { - for (ItemStack item2 : value2.getItems()) { - int result = STACK_COMPARATOR.compare(item1, item2); - if (result != 0) { - return result; - } - } + } else if (value1 instanceof ItemValueAccessor first) { + if (!(value2 instanceof ItemValueAccessor second)) { + return 10; } + return ITEM_COMPARATOR.compare(first.getItem().getItem(), second.getItem().getItem()); } return 0; } @@ -97,18 +90,18 @@ public int compare(Ingredient first, Ingredient second) { return 1; } - if (((IngredientAccessor) first).getValues().length != ((IngredientAccessor) second).getValues().length) - return 1; - Ingredient.Value[] values1 = ((IngredientAccessor) first).getValues(); - Ingredient.Value[] values2 = ((IngredientAccessor) second).getValues(); - if (values1.length != values2.length) return 1; + Ingredient.Value[] firstValues = ((IngredientAccessor) first).getValues(); + Ingredient.Value[] secondValues = ((IngredientAccessor) second).getValues(); + if (firstValues.length != secondValues.length) return 1; - Arrays.parallelSort(values1, INGREDIENT_VALUE_COMPARATOR); - Arrays.parallelSort(values2, INGREDIENT_VALUE_COMPARATOR); + firstValues = firstValues.clone(); + secondValues = secondValues.clone(); + Arrays.parallelSort(firstValues, INGREDIENT_VALUE_COMPARATOR); + Arrays.parallelSort(secondValues, INGREDIENT_VALUE_COMPARATOR); - for (int i = 0; i < values1.length; ++i) { - Ingredient.Value value1 = values1[i]; - Ingredient.Value value2 = values2[i]; + for (int i = 0; i < firstValues.length; ++i) { + Ingredient.Value value1 = firstValues[i]; + Ingredient.Value value2 = secondValues[i]; int result = INGREDIENT_VALUE_COMPARATOR.compare(value1, value2); if (result != 0) { return result; @@ -120,31 +113,10 @@ public int compare(Ingredient first, Ingredient second) { public static boolean ingredientEquals(Ingredient first, Ingredient second) { if (first == second) return true; - if ((first == null) != (second == null)) { - return false; - } + if (first == null || second == null) return false; - if (first instanceof SizedIngredient sized1) { - if (second instanceof SizedIngredient sized2) { - return cmp(sized1.getInner(), sized2.getInner()); - } else if (second instanceof IntProviderIngredient intProvider2) { - return cmp(sized1.getInner(), intProvider2.getInner()); - } else { - return cmp(sized1.getInner(), second); - } - } else if (first instanceof IntProviderIngredient intProvider1) { - if (second instanceof IntProviderIngredient intProvider2) { - return cmp(intProvider1.getInner(), intProvider2.getInner()); - } else if (second instanceof SizedIngredient sized) { - return cmp(intProvider1.getInner(), sized.getInner()); - } else { - return cmp(intProvider1.getInner(), second); - } - } else if (second instanceof SizedIngredient sized2) { - return cmp(first, sized2.getInner()); - } else if (second instanceof IntProviderIngredient intProvider2) { - return cmp(first, intProvider2.getInner()); - } + first = SizedIngredient.getInner(first); + second = SizedIngredient.getInner(second); return cmp(first, second); } @@ -155,27 +127,28 @@ private static boolean cmp(Ingredient first, Ingredient second) { public static final class IngredientHashStrategy implements Hash.Strategy { public static final IngredientHashStrategy INSTANCE = new IngredientHashStrategy(); - private static final ItemStackHashStrategy ITEM_STACK_HASH_STRATEGY = ItemStackHashStrategy.comparingAll(); + private static final ItemStackHashStrategy ITEM_TAG_STRATEGY = ItemStackHashStrategy.comparingAllButCount(); + private static final ItemStackHashStrategy ITEM_STRATEGY = ItemStackHashStrategy.comparingItem(); @Override public int hashCode(Ingredient o) { - int hashCode = 0; + int hashCode = 537; if (o instanceof StrictNBTIngredientAccessor strict) { - hashCode = ITEM_STACK_HASH_STRATEGY.hashCode(strict.getStack()) * 31; + hashCode *= 31 * ITEM_TAG_STRATEGY.hashCode(strict.getStack()); } else if (o instanceof PartialNBTIngredientAccessor partial) { - hashCode = partial.getNbt().hashCode() * 31; - hashCode += partial.getItems().hashCode() * 31; + hashCode *= 31 * partial.getNbt().hashCode(); + hashCode *= 31 * partial.getItems().hashCode(); } else if (o instanceof IntersectionIngredientAccessor intersection) { for (Ingredient ingredient : intersection.getChildren()) { - hashCode += this.hashCode(ingredient) * 31; + hashCode *= 31 * this.hashCode(ingredient); } } else if (o instanceof IngredientAccessor ingredient) { for (Ingredient.Value value : ingredient.getValues()) { if (value instanceof TagValueAccessor tagValue) { - hashCode += tagValue.getTag().hashCode(); + hashCode *= 31 * tagValue.getTag().hashCode(); } else { for (ItemStack stack : value.getItems()) { - hashCode += ITEM_STACK_HASH_STRATEGY.hashCode(stack); + hashCode *= 31 * ITEM_STRATEGY.hashCode(stack); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/ItemStackHashStrategy.java b/src/main/java/com/gregtechceu/gtceu/utils/ItemStackHashStrategy.java index a8f8de1a722..f8f8137a387 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/ItemStackHashStrategy.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/ItemStackHashStrategy.java @@ -26,10 +26,7 @@ static ItemStackHashStrategyBuilder builder() { * @return the ItemStackHashStrategy as described above. */ static ItemStackHashStrategy comparingAll() { - return builder().compareItem(true) - .compareCount(true) - .compareTag(true) - .build(); + return ItemStackHashStrategyBuilder.ALL; } /** @@ -39,14 +36,11 @@ static ItemStackHashStrategy comparingAll() { * @return the ItemStackHashStrategy as described above. */ static ItemStackHashStrategy comparingAllButCount() { - return builder().compareItem(true) - .compareTag(true) - .build(); + return ItemStackHashStrategyBuilder.ITEM_AND_TAG; } static ItemStackHashStrategy comparingItem() { - return builder().compareItem(true) - .build(); + return ItemStackHashStrategyBuilder.ITEM; } /** @@ -54,6 +48,15 @@ static ItemStackHashStrategy comparingItem() { */ class ItemStackHashStrategyBuilder { + private static final ItemStackHashStrategy ALL = builder().compareItem(true) + .compareCount(true) + .compareTag(true) + .build(); + private static final ItemStackHashStrategy ITEM_AND_TAG = builder().compareItem(true) + .compareTag(true) + .build(); + private static final ItemStackHashStrategy ITEM = builder().compareItem(true).build(); + private boolean item, count, tag; /** diff --git a/src/main/java/com/gregtechceu/gtceu/utils/OverlayingFluidStorage.java b/src/main/java/com/gregtechceu/gtceu/utils/OverlayingFluidStorage.java deleted file mode 100644 index b3c9c392192..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/utils/OverlayingFluidStorage.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.gregtechceu.gtceu.utils; - -import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; -import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; - -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.IFluidTank; - -import lombok.RequiredArgsConstructor; -import org.jetbrains.annotations.NotNull; - -@RequiredArgsConstructor -public class OverlayingFluidStorage implements IFluidHandlerModifiable, IFluidTank { - - private final IFluidHandlerModifiable handler; - private final int tank; - - @Override - public @NotNull FluidStack getFluid() { - return handler.getFluidInTank(tank); - } - - @Override - public int getFluidAmount() { - return getFluid().getAmount(); - } - - @Override - public int getCapacity() { - return handler.getTankCapacity(tank); - } - - @Override - public int getTankCapacity(int tank) { - return getCapacity(); - } - - @Override - public @NotNull FluidStack getFluidInTank(int tank) { - return getFluid(); - } - - @Override - public void setFluidInTank(int tank, FluidStack stack) { - handler.setFluidInTank(tank, stack); - } - - @Override - public int getTanks() { - return 1; - } - - @Override - public boolean isFluidValid(FluidStack stack) { - return isFluidValid(tank, stack); - } - - @Override - public boolean isFluidValid(int tank, @NotNull FluidStack stack) { - return handler.isFluidValid(tank, stack); - } - - @Override - public int fill(FluidStack resource, FluidAction action) { - if (handler instanceof NotifiableFluidTank notifiable) { - return notifiable.getStorages()[this.tank].fill(resource, action); - } - return handler.fill(resource, action); - } - - @NotNull - @Override - public FluidStack drain(FluidStack resource, FluidAction action) { - if (handler instanceof NotifiableFluidTank notifiable) { - return notifiable.getStorages()[this.tank].drain(resource, action); - } - return handler.drain(resource, action); - } - - @Override - public @NotNull FluidStack drain(int maxDrain, FluidAction action) { - if (handler instanceof NotifiableFluidTank notifiable) { - return notifiable.getStorages()[this.tank].drain(maxDrain, action); - } - return handler.drain(maxDrain, action); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/utils/RedstoneUtil.java b/src/main/java/com/gregtechceu/gtceu/utils/RedstoneUtil.java index b50aad899ab..1b5ee9abf28 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/RedstoneUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/RedstoneUtil.java @@ -1,5 +1,7 @@ package com.gregtechceu.gtceu.utils; +import java.math.BigInteger; + public class RedstoneUtil { /** @@ -12,19 +14,26 @@ public class RedstoneUtil { * @return an int from 0 (value <= min) to 15 (value >= max) normally, with a ratio when the value is between min * and max */ - public static int computeRedstoneBetweenValues(long value, float maxValue, float minValue, boolean isInverted) { - if (value >= maxValue) { - return isInverted ? 0 : 15; // value above maxValue should normally be 15, otherwise 0 - } else if (value <= minValue) { - return isInverted ? 15 : 0; // value below minValue should normally be 0, otherwise 15 - } + + public static int computeRedstoneBetweenValues(float value, float maxValue, float minValue, boolean isInverted) { + if (value >= maxValue) return isInverted ? 0 : 15; + else if (value <= minValue) return isInverted ? 15 : 0; + + float ratio; + if (isInverted) ratio = 15 * (maxValue - value) / (maxValue - minValue); + else ratio = 15 * (value - minValue) / (maxValue - minValue); + + return Math.round(ratio); + } + + public static int computeRedstoneBetweenValues(BigInteger value, BigInteger maxValue, BigInteger minValue, + boolean isInverted) { + if (value.compareTo(maxValue) >= 0) return isInverted ? 0 : 15; + else if (value.compareTo(maxValue) <= 0) return isInverted ? 15 : 0; float ratio; - if (!isInverted) { - ratio = 15 * (value - minValue) / (maxValue - minValue); // value closer to max results in higher output - } else { - ratio = 15 * (maxValue - value) / (maxValue - minValue); // value closer to min results in higher output - } + if (isInverted) ratio = 15 * GTMath.ratio(maxValue.subtract(value), maxValue.subtract(minValue)); + else ratio = 15 * GTMath.ratio(value.subtract(minValue), maxValue.subtract(minValue)); return Math.round(ratio); } @@ -40,11 +49,16 @@ public static int computeRedstoneBetweenValues(long value, float maxValue, float */ public static int computeLatchedRedstoneBetweenValues(float value, float maxValue, float minValue, boolean isInverted, int output) { - if (value >= maxValue) { - output = !isInverted ? 0 : 15; // value above maxValue should normally be 0, otherwise 15 - } else if (value <= minValue) { - output = !isInverted ? 15 : 0; // value below minValue should normally be 15, otherwise 0 - } + if (value >= maxValue) output = isInverted ? 15 : 0; // value above maxValue should normally be 0, otherwise 15 + else if (value <= minValue) output = isInverted ? 0 : 15; // value below minValue should normally be 15, + // otherwise 0 + return output; + } + + public static int computeLatchedRedstoneBetweenValues(BigInteger value, BigInteger maxValue, BigInteger minValue, + boolean isInverted, int output) { + if (value.compareTo(maxValue) >= 0) output = isInverted ? 15 : 0; + else if (value.compareTo(minValue) <= 0) output = isInverted ? 0 : 15; return output; } @@ -58,12 +72,14 @@ public static int computeLatchedRedstoneBetweenValues(float value, float maxValu * @throws ArithmeticException when max is 0 */ public static int computeRedstoneValue(long current, long max, boolean isInverted) throws ArithmeticException { - int outputAmount = (int) (14f * current / max) + (current > 0 ? 1 : 0); - - if (isInverted) { - outputAmount = 15 - outputAmount; - } + var output = (int) (14f * current / max) + (current > 0 ? 1 : 0); + return isInverted ? 15 - output : output; + } - return outputAmount; + public static int computeRedstoneValue(BigInteger current, BigInteger max, + boolean isInverted) throws ArithmeticException { + var isNotEmpty = current.compareTo(BigInteger.ZERO) > 0; + var output = (int) (14f * GTMath.ratio(current, max)) + (isNotEmpty ? 1 : 0); + return isInverted ? 15 - output : output; } } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/ResearchManager.java b/src/main/java/com/gregtechceu/gtceu/utils/ResearchManager.java index dc367fdbfa4..ee070529160 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/ResearchManager.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/ResearchManager.java @@ -8,6 +8,7 @@ import com.gregtechceu.gtceu.api.item.component.IItemComponent; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.data.GTItems; import com.gregtechceu.gtceu.common.data.GTRecipeTypes; @@ -16,14 +17,16 @@ import net.minecraft.data.recipes.FinishedRecipe; import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtOps; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.wrapper.CombinedInvWrapper; -import com.mojang.datafixers.util.Pair; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -67,16 +70,12 @@ public static void writeResearchToNBT(@NotNull CompoundTag stackCompound, @NotNu * @return the research id */ @Nullable - public static Pair readResearchId(@NotNull ItemStack stack) { + public static ResearchItem readResearchId(@NotNull ItemStack stack) { CompoundTag compound = stack.getTag(); if (!hasResearchTag(compound)) return null; CompoundTag researchCompound = compound.getCompound(RESEARCH_NBT_TAG); - String researchId = researchCompound.getString(RESEARCH_ID_NBT_TAG); - ResourceLocation researchRecipeType = ResourceLocation - .tryParse(researchCompound.getString(RESEARCH_TYPE_NBT_TAG)); - return researchId.isEmpty() || researchRecipeType == null ? null : - Pair.of(GTRegistries.RECIPE_TYPES.get(researchRecipeType), researchId); + return ResearchItem.CODEC.parse(NbtOps.INSTANCE, researchCompound).result().orElse(null); } /** @@ -122,40 +121,63 @@ public static void createDefaultResearchRecipe(@NotNull GTRecipeBuilder builder, if (!ConfigHolder.INSTANCE.machines.enableResearch) return; for (GTRecipeBuilder.ResearchRecipeEntry entry : builder.researchRecipeEntries()) { - createDefaultResearchRecipe(builder.recipeType, entry.researchId(), entry.researchStack(), + if (entry.researchItem().isEmpty() && entry.researchFluid().isEmpty()) + throw new IllegalStateException("Both entry types in the research entry are null!"); + + createDefaultResearchRecipe(builder.recipeType, entry.researchId(), entry.researchItem(), + entry.researchFluid(), entry.dataStack(), entry.duration(), entry.EUt(), entry.CWUt(), provider); } } public static void createDefaultResearchRecipe(@NotNull GTRecipeType recipeType, @NotNull String researchId, - @NotNull ItemStack researchItem, @NotNull ItemStack dataItem, - int duration, int EUt, int CWUt, Consumer provider) { + @NotNull ItemStack researchItem, @NotNull FluidStack researchFluid, + @NotNull ItemStack dataItem, + int duration, EnergyStack eut, int CWUt, + Consumer provider) { if (!ConfigHolder.INSTANCE.machines.enableResearch) return; CompoundTag compound = dataItem.getOrCreateTag(); writeResearchToNBT(compound, researchId, recipeType); if (CWUt > 0) { - GTRecipeTypes.RESEARCH_STATION_RECIPES.recipeBuilder(FormattingUtil.toLowerCaseUnderscore(researchId)) - .inputItems(dataItem.getItem()) - .inputItems(researchItem) - .outputItems(dataItem) - .EUt(EUt) + var builder = GTRecipeTypes.RESEARCH_STATION_RECIPES + .recipeBuilder(researchId) + .inputItems(dataItem.getItem()); + + if (!researchItem.isEmpty()) builder.inputItems(researchItem); + if (!researchFluid.isEmpty()) builder.inputFluids(researchFluid); + + builder.outputItems(dataItem) + .EUt(eut.voltage(), eut.amperage()) .CWUt(CWUt) .totalCWU(duration) .save(provider); } else { - GTRecipeTypes.SCANNER_RECIPES.recipeBuilder(FormattingUtil.toLowerCaseUnderscore(researchId)) - .inputItems(dataItem.getItem()) - .inputItems(researchItem) - .outputItems(dataItem) + var builder = GTRecipeTypes.SCANNER_RECIPES.recipeBuilder(FormattingUtil.toLowerCaseUnderscore(researchId)) + .inputItems(dataItem.getItem()); + + if (!researchItem.isEmpty()) builder.inputItems(researchItem); + if (!researchFluid.isEmpty()) builder.inputFluids(researchFluid); + + builder.outputItems(dataItem) .duration(duration) - .EUt(EUt) + .EUt(eut.voltage(), eut.amperage()) .researchScan(true) .save(provider); } } + public record ResearchItem(@NotNull String researchId, @NotNull GTRecipeType recipeType) { + + // spotless:off + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + Codec.STRING.fieldOf("research_id").forGetter(ResearchItem::researchId), + GTRegistries.RECIPE_TYPES.codec().fieldOf("research_type").forGetter(ResearchItem::recipeType) + ).apply(instance, ResearchItem::new)); + // spotless:on + } + public static class DataStickCopyScannerLogic implements GTRecipeType.ICustomRecipeLogic { private static final int EUT = 2; diff --git a/src/main/java/com/gregtechceu/gtceu/utils/TagExprFilter.java b/src/main/java/com/gregtechceu/gtceu/utils/TagExprFilter.java index c6e185ce42d..8897801b1e6 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/TagExprFilter.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/TagExprFilter.java @@ -11,9 +11,6 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; -/** - * @author brachy84 - */ public class TagExprFilter { public static class TagExprParser { diff --git a/src/main/java/com/gregtechceu/gtceu/utils/WeightedEntry.java b/src/main/java/com/gregtechceu/gtceu/utils/WeightedEntry.java new file mode 100644 index 00000000000..030aa572b0c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/utils/WeightedEntry.java @@ -0,0 +1,6 @@ +package com.gregtechceu.gtceu.utils; + +public interface WeightedEntry { + + int weight(); +} diff --git a/src/main/java/com/gregtechceu/gtceu/utils/data/RuntimeBlockStateProvider.java b/src/main/java/com/gregtechceu/gtceu/utils/data/RuntimeBlockStateProvider.java new file mode 100644 index 00000000000..b18f2bcd41d --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/utils/data/RuntimeBlockStateProvider.java @@ -0,0 +1,51 @@ +package com.gregtechceu.gtceu.utils.data; + +import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; + +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.data.PackOutput; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.client.model.generators.*; + +import com.google.gson.JsonElement; +import com.tterrag.registrate.AbstractRegistrate; + +import java.util.Map; +import java.util.function.BiConsumer; + +public class RuntimeBlockStateProvider extends GTBlockstateProvider { + + protected final BiConsumer consumer; + + public RuntimeBlockStateProvider(AbstractRegistrate parent, PackOutput packOutput, + BiConsumer consumer) { + super(parent, packOutput, RuntimeExistingFileHelper.INSTANCE); + this.consumer = consumer; + } + + @Override + protected void registerStatesAndModels() {} + + @SuppressWarnings("deprecation") + public void run() { + processModelProvider(models()); + processModelProvider(itemModels()); + + for (Map.Entry entry : registeredBlocks.entrySet()) { + ResourceLocation loc = BuiltInRegistries.BLOCK.getKey(entry.getKey()).withPrefix("blockstates/"); + this.consumer.accept(loc, entry.getValue().toJson()); + } + // only clear the data *after* saving so we can keep track of it during the KJS event + models().generatedModels.clear(); + itemModels().generatedModels.clear(); + registeredBlocks.clear(); + } + + public > void processModelProvider(ModelProvider provider) { + for (T model : provider.generatedModels.values()) { + ResourceLocation loc = model.getLocation().withPrefix("models/"); + this.consumer.accept(loc, model.toJson()); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/utils/data/RuntimeExistingFileHelper.java b/src/main/java/com/gregtechceu/gtceu/utils/data/RuntimeExistingFileHelper.java new file mode 100644 index 00000000000..e6e7c50d4c4 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/utils/data/RuntimeExistingFileHelper.java @@ -0,0 +1,86 @@ +package com.gregtechceu.gtceu.utils.data; + +import com.gregtechceu.gtceu.GTCEu; + +import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.client.Minecraft; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.PackType; +import net.minecraft.server.packs.resources.Resource; +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraftforge.common.data.ExistingFileHelper; + +import com.google.common.collect.HashMultimap; +import com.google.common.collect.Multimap; +import org.jetbrains.annotations.NotNull; + +import java.io.FileNotFoundException; +import java.util.Collections; +import java.util.List; + +import javax.annotation.ParametersAreNonnullByDefault; + +/** + * Existing file helper that wraps the client/server resource manager instead of creating its own.
+ * Useful for using data generators outside datagen. + */ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +public class RuntimeExistingFileHelper extends ExistingFileHelper { + + public static final RuntimeExistingFileHelper INSTANCE = new RuntimeExistingFileHelper(); + + protected final Multimap generated = HashMultimap.create(); + + protected RuntimeExistingFileHelper() { + super(Collections.emptySet(), Collections.emptySet(), false, null, null); + } + + public static @NotNull ResourceManager getManager(PackType packType) { + if (packType == PackType.CLIENT_RESOURCES) { + return Minecraft.getInstance().getResourceManager(); + } else if (packType == PackType.SERVER_DATA) { + if (GTCEu.getMinecraftServer() == null) { + throw new IllegalStateException("Cannot get server resources without a server or on a remote client."); + } + return GTCEu.getMinecraftServer().getResourceManager(); + } else { + throw new IllegalStateException("Invalid pack type " + packType); + } + } + + protected ResourceLocation getLocation(ResourceLocation base, String prefix, String suffix) { + return base.withPath(path -> prefix + "/" + path + suffix); + } + + @Override + public boolean exists(ResourceLocation loc, PackType packType) { + return generated.get(packType).contains(loc) || getManager(packType).getResource(loc).isPresent(); + } + + @Override + public void trackGenerated(ResourceLocation loc, IResourceType type) { + trackGenerated(loc, type.getPackType(), type.getSuffix(), type.getPrefix()); + } + + @Override + public void trackGenerated(ResourceLocation loc, PackType packType, String suffix, String prefix) { + this.generated.put(packType, getLocation(loc, prefix, suffix)); + } + + @Override + public Resource getResource(ResourceLocation loc, PackType packType, + String pathSuffix, String pathPrefix) throws FileNotFoundException { + return getResource(getLocation(loc, pathPrefix, pathSuffix), packType); + } + + @Override + public Resource getResource(ResourceLocation loc, PackType packType) throws FileNotFoundException { + return getManager(packType).getResourceOrThrow(loc); + } + + @Override + public List getResourceStack(ResourceLocation loc, PackType packType) { + return getManager(packType).getResourceStack(loc); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/utils/input/IKeyPressedListener.java b/src/main/java/com/gregtechceu/gtceu/utils/input/IKeyPressedListener.java new file mode 100644 index 00000000000..c7857530e9b --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/utils/input/IKeyPressedListener.java @@ -0,0 +1,15 @@ +package com.gregtechceu.gtceu.utils.input; + +import net.minecraft.server.level.ServerPlayer; + +@FunctionalInterface +public interface IKeyPressedListener { + + /** + * Called server-side only when a player presses a specified keybinding. + * + * @param player The player who pressed the key. + * @param keyPressed The key the player pressed. + */ + void onKeyPressed(ServerPlayer player, SyncedKeyMapping keyPressed, boolean isDown); +} diff --git a/src/main/java/com/gregtechceu/gtceu/utils/input/KeyBind.java b/src/main/java/com/gregtechceu/gtceu/utils/input/KeyBind.java index a242f340496..1b0feeb5b4d 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/input/KeyBind.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/input/KeyBind.java @@ -19,11 +19,15 @@ import net.minecraftforge.fml.common.Mod; import com.mojang.blaze3d.platform.InputConstants; -import org.apache.commons.lang3.tuple.MutablePair; +import it.unimi.dsi.fastutil.booleans.BooleanBooleanMutablePair; import java.util.*; import java.util.function.Supplier; +/** + * @deprecated Use {@link SyncedKeyMappings} instead + */ +@Deprecated @Mod.EventBusSubscriber(modid = GTCEu.MOD_ID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.FORGE) public enum KeyBind { @@ -68,7 +72,7 @@ public static void onInputEvent(InputEvent.Key event) { } if (!updating.isEmpty()) { try { - GTNetwork.NETWORK.sendToServer(new CPacketKeysPressed(updating)); + GTNetwork.sendToServer(new CPacketKeysPressed(updating)); } catch (NullPointerException exception) { GTCEu.LOGGER.error("Keys pressed packet failed to send with an exception", exception); } @@ -112,7 +116,7 @@ public static boolean scrollingDown() { @OnlyIn(Dist.CLIENT) private boolean isPressed, isKeyDown; - private final WeakHashMap> mapping = new WeakHashMap<>(); + private final WeakHashMap mapping = new WeakHashMap<>(); // For Vanilla/Other Mod keybinds // Double Supplier to keep client classes from loading @@ -150,12 +154,12 @@ public boolean isKeyDown() { } public void update(boolean pressed, boolean keyDown, ServerPlayer player) { - MutablePair pair = this.mapping.get(player); + BooleanBooleanMutablePair pair = this.mapping.get(player); if (pair == null) { - this.mapping.put(player, MutablePair.of(pressed, keyDown)); + this.mapping.put(player, BooleanBooleanMutablePair.of(pressed, keyDown)); } else { - pair.left = pressed; - pair.right = keyDown; + pair.left(pressed); + pair.right(keyDown); } } @@ -163,8 +167,8 @@ public boolean isPressed(Player player) { if (player.level().isClientSide) { return isPressed(); } else { - MutablePair pair = this.mapping.get((ServerPlayer) player); - return pair != null && pair.left; + BooleanBooleanMutablePair pair = this.mapping.get((ServerPlayer) player); + return pair != null && pair.leftBoolean(); } } @@ -172,8 +176,8 @@ public boolean isKeyDown(Player player) { if (player.level().isClientSide) { return isKeyDown(); } else { - MutablePair pair = this.mapping.get((ServerPlayer) player); - return pair != null && pair.right; + BooleanBooleanMutablePair pair = this.mapping.get((ServerPlayer) player); + return pair != null && pair.rightBoolean(); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMapping.java b/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMapping.java new file mode 100644 index 00000000000..fb011054de7 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMapping.java @@ -0,0 +1,254 @@ +package com.gregtechceu.gtceu.utils.input; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.common.network.GTNetwork; +import com.gregtechceu.gtceu.common.network.packets.CPacketKeyDown; + +import net.minecraft.client.KeyMapping; +import net.minecraft.client.Minecraft; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.player.Player; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.event.RegisterKeyMappingsEvent; +import net.minecraftforge.client.settings.IKeyConflictContext; +import net.minecraftforge.event.TickEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; + +import com.mojang.blaze3d.platform.InputConstants; +import it.unimi.dsi.fastutil.ints.Int2BooleanMap; +import it.unimi.dsi.fastutil.ints.Int2BooleanOpenHashMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import org.jetbrains.annotations.ApiStatus; + +import java.util.Collections; +import java.util.Set; +import java.util.WeakHashMap; +import java.util.function.Supplier; + +public final class SyncedKeyMapping { + + private static final Int2ObjectMap KEYMAPPINGS = new Int2ObjectOpenHashMap<>(); + private static int syncIndex = 0; + + @OnlyIn(Dist.CLIENT) + private KeyMapping keyMapping; + @OnlyIn(Dist.CLIENT) + private Supplier> keyMappingGetter; + private final boolean needsRegister; + @OnlyIn(Dist.CLIENT) + private int keyCode; + @OnlyIn(Dist.CLIENT) + private boolean isKeyDown; + + private static final Int2BooleanMap updatingKeyDown = new Int2BooleanOpenHashMap(); + + private final WeakHashMap serverMapping = new WeakHashMap<>(); + private final WeakHashMap> playerListeners = new WeakHashMap<>(); + private final Set globalListeners = Collections.newSetFromMap(new WeakHashMap<>()); + + private SyncedKeyMapping(Supplier> mcKeyMapping) { + if (GTCEu.isClientSide()) { + this.keyMappingGetter = mcKeyMapping; + } + // Does not need to be registered, will be registered by MC + this.needsRegister = false; + + KEYMAPPINGS.put(syncIndex++, this); + } + + private SyncedKeyMapping(int keyCode) { + if (GTCEu.isClientSide() && !GTCEu.isDataGen()) { + this.keyCode = keyCode; + } + // Does not need to be registered, is not a configurable key mapping + this.needsRegister = false; + + KEYMAPPINGS.put(syncIndex++, this); + } + + private SyncedKeyMapping(String nameKey, IKeyConflictContext ctx, int keyCode, String category) { + if (GTCEu.isClientSide() && !GTCEu.isDataGen()) { + this.keyMapping = (KeyMapping) createKeyMapping(nameKey, ctx, keyCode, category); + } + this.needsRegister = true; + KEYMAPPINGS.put(syncIndex++, this); + } + + /** + * Create a SyncedKeyMapping wrapper around a Minecraft {@link KeyMapping}. + * + * @param mcKeyMapping Doubly-wrapped supplier around a keymapping from + * {@link net.minecraft.client.Options Minecraft.getInstance().options}. + */ + public static SyncedKeyMapping createFromMC(Supplier> mcKeyMapping) { + return new SyncedKeyMapping(mcKeyMapping); + } + + /** + * Create a new SyncedKeyMapping for a specified key code. + * + * @param keyCode The key code. + */ + public static SyncedKeyMapping create(int keyCode) { + return new SyncedKeyMapping(keyCode); + } + + /** + * Create a new SyncedKeyMapping with server held and pressed syncing to server.
+ * Will automatically create a keymapping entry in the MC options page under the GregTechCEu category. + * + * @param nameKey Translation key for the keymapping name. + * @param ctx Conflict context for the keymapping options category. + * @param keyCode The key code, from {@link InputConstants}. + */ + public static SyncedKeyMapping createConfigurable(String nameKey, IKeyConflictContext ctx, int keyCode) { + return createConfigurable(nameKey, ctx, keyCode, GTCEu.NAME); + } + + /** + * Create a new SyncedKeyMapping with server held and pressed syncing to server.
+ * Will automatically create a keymapping entry in the MC options page under the specified category. + * + * @param nameKey Translation key for the keymapping name. + * @param ctx Conflict context for the keymapping options category. + * @param keyCode The key code, from {@link InputConstants}. + * @param category The category in the MC options page. + */ + public static SyncedKeyMapping createConfigurable(String nameKey, IKeyConflictContext ctx, int keyCode, + String category) { + return new SyncedKeyMapping(nameKey, ctx, keyCode, category); + } + + @OnlyIn(Dist.CLIENT) + private Object createKeyMapping(String nameKey, IKeyConflictContext ctx, int keyCode, String category) { + return new KeyMapping(nameKey, ctx, InputConstants.Type.KEYSYM, keyCode, category); + } + + /** + * Check if a player is currently holding down this key. + * + * @param player The player to check. + * + * @return If the key is held. + */ + public boolean isKeyDown(Player player) { + if (player.level().isClientSide) { + if (keyMapping != null) { + return keyMapping.isDown(); + } + long id = Minecraft.getInstance().getWindow().getWindow(); + return InputConstants.isKeyDown(id, keyCode); + } + Boolean isKeyDown = serverMapping.get((ServerPlayer) player); + return isKeyDown != null ? isKeyDown : false; + } + + /** + * Registers an {@link IKeyPressedListener} to this key, which will have its {@link IKeyPressedListener#onKeyPressed + * onKeyPressed} method called when the provided player presses this key. + * + * @param player The player who owns this listener. + * @param listener The handler for the key clicked event. + */ + public SyncedKeyMapping registerPlayerListener(ServerPlayer player, IKeyPressedListener listener) { + Set listenerSet = playerListeners + .computeIfAbsent(player, $ -> Collections.newSetFromMap(new WeakHashMap<>())); + listenerSet.add(listener); + return this; + } + + public static void onRegisterKeyBinds(RegisterKeyMappingsEvent event) { + for (SyncedKeyMapping value : KEYMAPPINGS.values()) { + if (value.keyMappingGetter != null) { + value.keyMapping = value.keyMappingGetter.get().get(); + value.keyMappingGetter = null; + } + if (value.keyMapping != null && value.needsRegister) { + event.register(value.keyMapping); + } + } + } + + /** + * Remove a player's listener on this keymapping for a provided player. + * + * @param player The player who owns this listener. + * @param listener The handler for the key clicked event. + */ + public void removePlayerListener(ServerPlayer player, IKeyPressedListener listener) { + Set listenerSet = playerListeners.get(player); + if (listenerSet != null) { + listenerSet.remove(listener); + } + } + + /** + * Registers an {@link IKeyPressedListener} to this key, which will have its {@link IKeyPressedListener#onKeyPressed + * onKeyPressed} method called when any player presses this key. + * + * @param listener The handler for the key clicked event. + */ + public SyncedKeyMapping registerGlobalListener(IKeyPressedListener listener) { + globalListeners.add(listener); + return this; + } + + /** + * Remove a global listener on this keybinding. + * + * @param listener The handler for the key clicked event. + */ + public void removeGlobalListener(IKeyPressedListener listener) { + globalListeners.remove(listener); + } + + @SubscribeEvent + @OnlyIn(Dist.CLIENT) + public static void onClientTick(TickEvent.ClientTickEvent event) { + if (event.phase == TickEvent.Phase.START) { + updatingKeyDown.clear(); + for (var entry : KEYMAPPINGS.int2ObjectEntrySet()) { + SyncedKeyMapping keyMapping = entry.getValue(); + boolean previousKeyDown = keyMapping.isKeyDown; + + if (keyMapping.keyMapping != null) { + keyMapping.isKeyDown = keyMapping.keyMapping.isDown(); + } else { + long id = Minecraft.getInstance().getWindow().getWindow(); + keyMapping.isKeyDown = InputConstants.isKeyDown(id, keyMapping.keyCode); + } + + if (previousKeyDown != keyMapping.isKeyDown) { + updatingKeyDown.put(entry.getIntKey(), keyMapping.isKeyDown); + } + } + if (!updatingKeyDown.isEmpty()) { + GTNetwork.sendToServer(new CPacketKeyDown(updatingKeyDown)); + } + } + } + + @ApiStatus.Internal + public void serverActivate(boolean keyDown, ServerPlayer player) { + this.serverMapping.put(player, keyDown); + + // Player listeners + Set listenerSet = playerListeners.get(player); + if (listenerSet != null && !listenerSet.isEmpty()) { + for (IKeyPressedListener listener : listenerSet) { + listener.onKeyPressed(player, this, keyDown); + } + } + // Global listeners + for (IKeyPressedListener listener : globalListeners) { + listener.onKeyPressed(player, this, keyDown); + } + } + + @ApiStatus.Internal + public static SyncedKeyMapping getFromSyncId(int id) { + return KEYMAPPINGS.get(id); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMappingEvent.java b/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMappingEvent.java new file mode 100644 index 00000000000..31ecab62c74 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMappingEvent.java @@ -0,0 +1,16 @@ +package com.gregtechceu.gtceu.utils.input; + +import net.minecraftforge.eventbus.api.Event; +import net.minecraftforge.fml.event.IModBusEvent; + +/** + * Event to register {@link SyncedKeyMapping}s in. + *
+ * Event is fired on the mod bus. + */ +public class SyncedKeyMappingEvent extends Event implements IModBusEvent { + + public SyncedKeyMappingEvent() { + super(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMappings.java b/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMappings.java new file mode 100644 index 00000000000..451acee9106 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMappings.java @@ -0,0 +1,30 @@ +package com.gregtechceu.gtceu.utils.input; + +import com.gregtechceu.gtceu.GTCEu; + +import net.minecraft.client.Minecraft; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.fml.ModLoader; + +public class SyncedKeyMappings { + + public static final SyncedKeyMapping VANILLA_JUMP = SyncedKeyMapping + .createFromMC(() -> () -> Minecraft.getInstance().options.keyJump); + public static final SyncedKeyMapping VANILLA_SNEAK = SyncedKeyMapping + .createFromMC(() -> () -> Minecraft.getInstance().options.keyShift); + public static final SyncedKeyMapping VANILLA_FORWARD = SyncedKeyMapping + .createFromMC(() -> () -> Minecraft.getInstance().options.keyUp); + public static final SyncedKeyMapping VANILLA_BACKWARD = SyncedKeyMapping + .createFromMC(() -> () -> Minecraft.getInstance().options.keyDown); + public static final SyncedKeyMapping VANILLA_LEFT = SyncedKeyMapping + .createFromMC(() -> () -> Minecraft.getInstance().options.keyLeft); + public static final SyncedKeyMapping VANILLA_RIGHT = SyncedKeyMapping + .createFromMC(() -> () -> Minecraft.getInstance().options.keyRight); + + public static void init() { + if (GTCEu.isClientSide()) { + MinecraftForge.EVENT_BUS.register(SyncedKeyMapping.class); + } + ModLoader.get().postEvent(new SyncedKeyMappingEvent()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/utils/memoization/ConcurrentWeakIdentityHashMap.java b/src/main/java/com/gregtechceu/gtceu/utils/memoization/ConcurrentWeakIdentityHashMap.java new file mode 100644 index 00000000000..9a93e5e7928 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/utils/memoization/ConcurrentWeakIdentityHashMap.java @@ -0,0 +1,239 @@ +package com.gregtechceu.gtceu.utils.memoization; + +import net.minecraft.MethodsReturnNonnullByDefault; + +import org.jetbrains.annotations.Nullable; + +import java.io.Serial; +import java.lang.ref.Reference; +import java.lang.ref.ReferenceQueue; +import java.lang.ref.WeakReference; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + +import javax.annotation.ParametersAreNonnullByDefault; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +public class ConcurrentWeakIdentityHashMap extends AbstractMap implements ConcurrentMap { + + private final ConcurrentMap, V> map; + private final ReferenceQueue queue = new ReferenceQueue<>(); + private transient @Nullable Set> entrySet; + + public ConcurrentWeakIdentityHashMap(int initialCapacity) { + this.map = new ConcurrentHashMap<>(initialCapacity); + } + + public ConcurrentWeakIdentityHashMap() { + this.map = new ConcurrentHashMap<>(); + } + + @Override + public @Nullable V get(Object key) { + purgeKeys(); + return map.get(new Key<>(key, null)); + } + + @Override + public @Nullable V put(K key, V value) { + purgeKeys(); + return map.put(new Key<>(key, queue), value); + } + + @Override + public int size() { + purgeKeys(); + return map.size(); + } + + @SuppressWarnings({ "ReassignedVariable", "SuspiciousMethodCalls" }) + private void purgeKeys() { + Reference reference; + while ((reference = queue.poll()) != null) { + map.remove(reference); + } + } + + @Override + public Set> entrySet() { + Set> entrySet = this.entrySet; + return entrySet == null ? this.entrySet = new EntrySet() : entrySet; + } + + @Override + public @Nullable V putIfAbsent(K key, V value) { + purgeKeys(); + return map.putIfAbsent(new Key<>(key, queue), value); + } + + @Override + public V remove(Object key) { + return map.remove(new Key<>(key, null)); + } + + @Override + public boolean remove(Object key, Object value) { + purgeKeys(); + return map.remove(new Key<>(key, null), value); + } + + @Override + public boolean replace(K key, V oldValue, V newValue) { + purgeKeys(); + return map.replace(new Key<>(key, null), oldValue, newValue); + } + + @Override + public @Nullable V replace(K key, V value) { + purgeKeys(); + return map.replace(new Key<>(key, null), value); + } + + @Override + public boolean containsKey(Object key) { + purgeKeys(); + return map.containsKey(new Key<>(key, null)); + } + + @SuppressWarnings("StatementWithEmptyBody") + @Override + public void clear() { + while (queue.poll() != null); + map.clear(); + } + + @Override + public boolean containsValue(Object value) { + purgeKeys(); + return map.containsValue(value); + } + + private static class Key extends WeakReference { + + private final int hash; + + Key(T t, @Nullable ReferenceQueue queue) { + super(t, queue); + hash = System.identityHashCode(Objects.requireNonNull(t)); + } + + @Override + public boolean equals(Object obj) { + return obj == this || obj instanceof Key key && key.get() == this.get(); + } + + @Override + public int hashCode() { + return hash; + } + } + + private class Iter implements Iterator> { + + private final Iterator, V>> it; + private @Nullable Map.Entry nextValue; + + Iter(Iterator, V>> it) { + this.it = it; + } + + @Override + public boolean hasNext() { + if (nextValue != null) { + return true; + } + while (it.hasNext()) { + Map.Entry, V> entry = it.next(); + K key = entry.getKey().get(); + if (key != null) { + nextValue = new Entry(key, entry.getValue()); + return true; + } else { + it.remove(); + } + } + return false; + } + + @Override + public @Nullable Map.Entry next() { + if (!hasNext()) { + throw new NoSuchElementException(); + } + Map.Entry entry = nextValue; + nextValue = null; + return entry; + } + + @Override + public void remove() { + it.remove(); + nextValue = null; + } + } + + private class EntrySet extends AbstractSet> { + + @Override + public Iterator> iterator() { + return new Iter(map.entrySet().iterator()); + } + + @Override + public int size() { + return ConcurrentWeakIdentityHashMap.this.size(); + } + + @Override + public void clear() { + ConcurrentWeakIdentityHashMap.this.clear(); + } + + @Override + public boolean contains(Object o) { + if (!(o instanceof Map.Entry e)) { + return false; + } + return ConcurrentWeakIdentityHashMap.this.get(e.getKey()) == e.getValue(); + } + + @Override + public boolean remove(Object o) { + if (!(o instanceof Map.Entry e)) { + return false; + } + return ConcurrentWeakIdentityHashMap.this.remove(e.getKey(), e.getValue()); + } + } + + private class Entry extends AbstractMap.SimpleEntry { + + @Serial + private static final long serialVersionUID = 1L; + + Entry(K key, V value) { + super(key, value); + } + + @Override + public V setValue(V value) { + ConcurrentWeakIdentityHashMap.this.put(getKey(), value); + return super.setValue(value); + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof Map.Entry e) { + return getKey() == e.getKey() && getValue() == e.getValue(); + } + return false; + } + + @Override + public int hashCode() { + return System.identityHashCode(getKey()) ^ System.identityHashCode(getValue()); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/utils/memoization/GTMemoizer.java b/src/main/java/com/gregtechceu/gtceu/utils/memoization/GTMemoizer.java index 13781ca44a5..2fd12f106df 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/memoization/GTMemoizer.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/memoization/GTMemoizer.java @@ -2,6 +2,8 @@ import net.minecraft.world.level.block.Block; +import java.util.Map; +import java.util.function.Function; import java.util.function.Supplier; public class GTMemoizer { @@ -20,4 +22,19 @@ public static MemoizedSupplier memoize(Supplier delegate) { public static MemoizedBlockSupplier memoizeBlockSupplier(Supplier delegate) { return new MemoizedBlockSupplier<>(delegate); } + + public static Function memoizeFunctionWeakIdent(final Function memoFunction) { + return new Function<>() { + + private final Map cache = new ConcurrentWeakIdentityHashMap<>(); + + public R apply(T key) { + return this.cache.computeIfAbsent(key, memoFunction); + } + + public String toString() { + return "memoizeFunctionWeakIdent/1[function=" + memoFunction + ", size=" + this.cache.size() + "]"; + } + }; + } } diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg index e416b85be76..4f4d6041e1c 100644 --- a/src/main/resources/META-INF/accesstransformer.cfg +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -11,6 +11,8 @@ public net.minecraft.world.level.storage.loot.entries.LootItem (Lnet/minec public net.minecraft.data.models.BlockModelGenerators m_124850_()Lnet/minecraft/data/models/blockstates/PropertyDispatch; # createFacingDispatch public net.minecraft.data.models.BlockModelGenerators m_124859_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/data/models/blockstates/MultiVariantGenerator; # createSimpleBlock +public net.minecraft.client.resources.model.ModelBakery f_119241_ # ITEM_MODEL_GENERATOR + public net.minecraft.world.item.Item f_41374_ # BASE_ATTACK_DAMAGE_UUID public net.minecraft.world.item.Item f_41375_ # BASE_ATTACK_SPEED_UUID public net.minecraft.world.entity.LivingEntity m_21278_(Lnet/minecraft/world/item/ItemStack;)V # breakItem diff --git a/src/main/resources/assets/gtceu/lang/ja_jp.json b/src/main/resources/assets/gtceu/lang/ja_jp.json index c2b4975f9d7..a818219d5a1 100644 --- a/src/main/resources/assets/gtceu/lang/ja_jp.json +++ b/src/main/resources/assets/gtceu/lang/ja_jp.json @@ -3332,6 +3332,8 @@ "gtceu.oc.tooltip.4": "シフトを押したまま完璧なオーバークロックに変更", "gtceu.ore_washer": "鉱石洗浄機", "gtceu.packer": "梱包機", + "gtceu.part_sharing.disabled": "マルチブロック間での共有: §4不可能", + "gtceu.part_sharing.enabled": "マルチブロック間での共有: §a可能", "gtceu.plasma_generator": "プラズマ発生機", "gtceu.polarizer": "磁化装置", "gtceu.primitive_blast_furnace": "初歩的な溶鉱炉", @@ -3516,8 +3518,6 @@ "gtceu.top.valid_structure": "構造に問題なし", "gtceu.top.working_disabled": "作業停止", "gtceu.universal.clear_nbt_recipe.tooltip": "§cこれによりすべてのコンテンツが破棄されます!", - "gtceu.universal.disabled": "マルチブロック間での共有: §4不可能", - "gtceu.universal.enabled": "マルチブロック間での共有: §a可能", "gtceu.universal.kiloliters": "%s B", "gtceu.universal.liters": "%s mB", "gtceu.universal.tooltip.amperage_in": "§e入力電流: §f%dA", @@ -3626,9 +3626,7 @@ "item.gtceu.basic_integrated_circuit.tooltip.1": "§cLV時代の回路", "item.gtceu.basic_tape": "テープ", "item.gtceu.basic_tape.tooltip": "§7機械的な問題に対する強度が不十分\nアイテムを落とさずに木箱を入手することができる。", - "item.gtceu.battery.charge_detailed.0": "§a%s/%s EU§7 - Tier %s §7(§a%s/%s %s 放出可能§7)", - "item.gtceu.battery.charge_detailed.1": "§e%s/%s EU§7 - Tier %s §7(§e%s/%s %s 放出可能§7)", - "item.gtceu.battery.charge_detailed.2": "§c%s/%s EU§7 - Tier %s §7(§c%s/%s %s 放出可能§7)", + "item.gtceu.battery.charge_detailed": "%s/%s EU§7 - Tier %s §7(%s/%s %s 放出可能§7)", "item.gtceu.battery.charge_time": "§a %s %s 放出可能(%s)", "item.gtceu.battery.charge_unit.hour": "時間", "item.gtceu.battery.charge_unit.minute": "分", diff --git a/src/main/resources/assets/gtceu/lang/ru_ru.json b/src/main/resources/assets/gtceu/lang/ru_ru.json index e2245cc8364..1b2a17ceb91 100644 --- a/src/main/resources/assets/gtceu/lang/ru_ru.json +++ b/src/main/resources/assets/gtceu/lang/ru_ru.json @@ -210,7 +210,7 @@ "block.gtceu.hv_assembler": "§6Улучшенная сборочная машина II§r", "block.gtceu.hv_autoclave": "§6Улучшенный автоклав II§r", "block.gtceu.hv_battery_buffer_16x": "Батарейный буфер (16 ячеек §6HV§r)", - "block.gtceu.hv_battery_buffer_4x": "Батарейный буфер (4 ячейки §5EV§r)", + "block.gtceu.hv_battery_buffer_4x": "Батарейный буфер (4 ячейки §6HV§r)", "block.gtceu.hv_battery_buffer_8x": "Батарейный буфер (8 ячеек §6HV§r)", "block.gtceu.hv_bedrock_ore_miner": "§6Улучшенный подземный шахтер II§r", "block.gtceu.hv_bender": "§6Улучшенный гибочный станок II§r", @@ -749,7 +749,7 @@ "block.gtceu.steam_liquid_boiler.bronze": "Маленький жидкостный паровой котел", "block.gtceu.steam_machine_casing": "Корпус паровой машины", "block.gtceu.steam_output_bus": "Паровой выходной предметный люк", - "block.gtceu.steam_oven": "Паровая мультиплавильня", + "block.gtceu.steam_oven": "Паровая плавильня", "block.gtceu.steam_solid_boiler.bronze": "Маленький угольный паровой котел", "block.gtceu.steel_brick_casing": "Кирпичный корпус из кованого железа", "block.gtceu.steel_crate": "Стальной ящик", @@ -2110,6 +2110,8 @@ "gtceu.multiblock.work_paused": "Работа приостановлена.", "gtceu.ore_washer": "Рудопромывочная машина", "gtceu.packer": "Упаковщик", + "gtceu.part_sharing.disabled": "Совместное использование между структурами: §4Выключено", + "gtceu.part_sharing.enabled": "Совместное использование между структурами: §aВключено", "gtceu.plasma_generator": "Плазменный генератор", "gtceu.polarizer": "Поляризатор", "gtceu.primitive_blast_furnace": "Примитивная доменная печь", @@ -2121,8 +2123,8 @@ "gtceu.recipe.cleanroom_sterile.display_name": "Стерильная чистая комната", "gtceu.recipe.dimensions": "Измерение: %s", "gtceu.recipe.duration": "Длительность: %s сек", - "gtceu.recipe.eu": "Потребление: %s EU/т", - "gtceu.recipe.eu_inverted": "Производство: %s EU/т", + "gtceu.recipe.eu": "Потребление: %s A @ %s", + "gtceu.recipe.eu_inverted": "Производство: %s A @ %s", "gtceu.recipe.eu_to_start": "EU для запуска: %sEU%s", "gtceu.recipe.explosive": "Взрывчатка: %s", "gtceu.recipe.not_consumed": "Не расходуется", @@ -2190,8 +2192,6 @@ "gtceu.top.valid_structure": "Структура собрана", "gtceu.top.working_disabled": "Работа остановлена", "gtceu.universal.clear_nbt_recipe.tooltip": "§cЭто уничтожит весь контент!", - "gtceu.universal.disabled": "Совместное использование между структурами: §4Выключено", - "gtceu.universal.enabled": "Совместное использование между структурами: §aВключено", "gtceu.universal.tooltip.amperage_in": "§eСила потребляемого тока: §f%dA", "gtceu.universal.tooltip.amperage_in_out": "§eСила тока: §f%dA", "gtceu.universal.tooltip.amperage_in_out_till": "§eСила тока до: §f%dA", @@ -2629,7 +2629,7 @@ "item.gtceu.tool.harvest_level.2": "§aЖелезо", "item.gtceu.tool.harvest_level.3": "§bАлмаз", "item.gtceu.tool.harvest_level.4": "§dНезерит", - "item.gtceu.tool.harvest_level.5": "§9Дураний", + "item.gtceu.tool.harvest_level.5": "§9Дюраний", "item.gtceu.tool.harvest_level.6": "§cНейтроний", "item.gtceu.tool.hoe": "Мотыга (%s)", "item.gtceu.tool.knife": "Нож (%s)", @@ -4232,7 +4232,7 @@ "material.gtceu.distilled_water": "Дистиллированная вода", "material.gtceu.drilling_fluid": "Буровой раствор", "material.gtceu.dubnium": "Дубний", - "material.gtceu.duranium": "Дураний", + "material.gtceu.duranium": "Дюраний", "material.gtceu.dysprosium": "Диспрозий", "material.gtceu.einsteinium": "Эйнштейний", "material.gtceu.electrum": "Электрум", @@ -4242,7 +4242,7 @@ "material.gtceu.ender_eye": "Око Эндера", "material.gtceu.ender_pearl": "Эндер-жемчуг", "material.gtceu.enriched_naquadah_sulfate": "Обогащенный сульфат наквады", - "material.gtceu.enriched_naquadah_trinium_europium_duranide": "Обогащенный наквада триний европий дураний", + "material.gtceu.enriched_naquadah_trinium_europium_duranide": "Обогащенный наквада триний европий дюраний", "material.gtceu.enriched_naquadah_waste": "Обогащенные отходы наквады", "material.gtceu.epichlorohydrin": "Эпихлоргидрин", "material.gtceu.erbium": "Эрбий", @@ -4330,7 +4330,7 @@ "material.gtceu.kanthal": "Кантал", "material.gtceu.kyanite": "Ционит", "material.gtceu.lanthanum": "Лантан", - "material.gtceu.lapis": "Лазурит", + "material.gtceu.lapis": "Лазуритит", "material.gtceu.lapotron": "Лапотрон", "material.gtceu.lava": "Лава", "material.gtceu.lazurite": "Лазурит", @@ -5147,13 +5147,11 @@ "config.gtceu.option.zombieSpawnWithSabers": "zombieSpawnWithSabers", "config.gtceu.option.hideOreProcessingDiagrams": "hideOreProcessingDiagrams", "block.gtceu.stainless_evaporation_casing": "Нержавеющий корпус градирни", - "item.gtceu.battery.charge_detailed.2": "§a%s/%s EU§7 - Уровень %s §7(§c%s/%s %s осталось§7)", + "item.gtceu.battery.charge_detailed": "%s/%s EU§7 - Уровень %s §7(%s/%s %s осталось§7)", "item.gtceu.invar_lighter": "Инваровая зажигалка", "item.gtceu.matchbox": "Пачка спичек", "item.gtceu.matches": "Спички", "item.gtceu.platinum_lighter": "Платиновая зажигалка", - "item.gtceu.battery.charge_detailed.1": "§a%s/%s EU§7 - Уровень %s §7(§e%s/%s %s осталось§7)", - "item.gtceu.battery.charge_detailed.0": "§a%s/%s EU§7 - Уровень %s §7(§a%s/%s %s осталось§7)", "item.gtceu.nano_saber": "Нано-сабля", "item.gtceu.paracetamol_pill": "Таблетка парацетамола", "item.gtceu.pill_casting_mold": "Отливная форма (Таблетка)", @@ -5510,5 +5508,78 @@ "config.gtceu.option.oreIndicators": "oreIndicators", "metaarmor.tooltip.freezing": "Предотвращает замораживание", "config.gtceu.option.minerSpeed": "minerSpeed", - "cover.machine_controller.mode.null": "Ничем не управлять" + "cover.machine_controller.mode.null": "Ничем не управлять", + "cover.advanced_detector.latch.disabled.2": "Изменить режим работы редстоуна для этого улучшения.", + "cover.advanced_detector.latch.disabled.4": "§eФиксированный§7 - выдаёт сигнал 15, пока значение выше макс; затем переключается на 0, пока не опустится ниже мин", + "cover.advanced_detector.latch.enabled.0": "Поведение: Фиксированный", + "cover.advanced_detector.latch.enabled.4": "§eФиксированный§7 - выдаёт сигнал 15, пока значение выше макс; затем переключается на 0, пока не опустится ниже мин", + "gtceu.ownership.name.ftb": "FTB Teams", + "gtceu.ownership.name.player": "Игрок", + "gtceu.recipe_logic.no_contents": "Рецепт не имеет содержания", + "gtceu.tooltip.status.trinary.true": "Истина", + "gtceu.tooltip.status.trinary.unknown": "Неизвестно", + "message.gtceu.new_veins.name": "Обнаружено %s!", + "recipe.condition.daytime.night.tooltip": "Для работы требуется ночное время", + "recipe.condition.quest.completed.tooltip": "Требует завершения: %s", + "recipe.condition.quest.not_completed.tooltip": "Требуется %s не завершено", + "cover.advanced_detector.latch.disabled.0": "Поведение: Непрерывный", + "cover.advanced_detector.latch.disabled.3": "§eНепрерывный§7 - По умолчанию; Значения ниже минимума — сигнал 0; выше максимума — сигнал 15; Промежуточные значения — пропорционально от 0 до 15", + "gtceu.top.buffer_not_bound": "Буфер не имеет привязки", + "material.gtceu.hydrogen_peroxide": "Перекись водорода", + "message.gtceu.new_veins.amount": "Обнаружено %d новых жил!", + "recipe.condition.daytime.day.tooltip": "Для работы требуется дневное время", + "recipe.condition.gamestage.locked_stage": "Закрыт на этапе: %s", + "cover.advanced_detector.latch.enabled.2": "Изменить режим работы редстоуна для этого улучшения.", + "cover.advanced_detector.latch.enabled.3": "§eНепрерывный§7 - По умолчанию; Значения ниже минимума — сигнал 0; выше максимума — сигнал 15; Промежуточные значения — пропорционально от 0 до 15", + "gtceu.ownership.name.argonauts": "Гильдии Argonauts", + "gtceu.recipe_logic.no_capabilities": "Машина не имеет взаимодействий", + "recipe.condition.gamestage.unlocked_stage": "Открывается на этапе: %s", + "tagprefix.null": "%s Null", + "gtceu.tooltip.status.trinary.false": "Ложь", + "config.jade.plugin_gtceu.energy_converter_provider": "[GTCEu] Режим конвертации энергии", + "ldlib.gui.editor.group.widget.gtm_container": "Виджет контейнеров GTM", + "ldlib.gui.editor.register.widget.container.gtm_phantom_fluid_slot": "Слот фантомной жидкости GTM", + "ldlib.gui.editor.register.widget.container.gtm_fluid_slot": "Жидкостный слот GTM", + "ldlib.gui.editor.register.widget.container.gtm_item_slot": "Предметный слот GTM", + "ldlib.gui.editor.register.widget.container.gtm_phantom_item_slot": "Слот фантомного предмета GTM", + "command.gtceu.cape.give.success.single": "Разблокировано %s плащей для %s", + "command.gtceu.cape.take.failed": "Нет плащей для удаления", + "command.gtceu.cape.take.success.multiple": "Забрали %s плащей от %s игроков", + "command.gtceu.cape.take.success.single": "Забрали %ы плащей у %s", + "command.gtceu.cape.use.success": "%s теперь использует плащ %s", + "command.gtceu.cape.use.success.none": "%s больше не использует плащ", + "cover.ender_fluid_link.tooltip.channel_name": "Установить название канала введённым текстом", + "cover.ender_fluid_link.tooltip.clear_button": "Очистить описание канала", + "gtceu.multiblock.dimensions.0": "Размеры: ", + "command.gtceu.cape.give.failed": "Новые плащи не были открыты", + "command.gtceu.cape.give.success.multiple": "Разблокировано %s плащей для %s игроков", + "command.gtceu.cape.use.failed": "%s не может использовать плащ %s, так как у него его нет (или его не существует)!", + "gtceu.chance_logic.first": "ПЕРВЫЙ", + "cover.ender_fluid_link.tooltip.channel_description": "Установить описание канала введённым текстом", + "cover.ender_fluid_link.tooltip.list_button": "Показать список каналов", + "gtceu.multiblock.dimensions.1": " §c§lШирина§r: %s, §a§lВысота§r: %s, §9§lГлубина§r: %s ", + "material.gtceu.bauxite_slurry": "Бокситовая суспензия", + "tagprefix.surface_rock": "Поверхностная порода (%s)", + "material.gtceu.bauxite_sludge": "Шлам боксита", + "material.gtceu.cracked_bauxite_slurry": "Бокситовая суспензия прошедшая крекинг", + "material.gtceu.decalcified_bauxite_sludge": "Декальцинированный шлам боксита", + "material.gtceu.ilmenite_slag": "Ильменитовый шлак", + "material.gtceu.bauxite_slag": "Бокситовый шлак", + "config.gtceu.option.coloredTieredMachineOutline": "coloredTieredMachineOutline", + "item.gtceu.armor.boots": "Ботинки (%s)", + "gtceu.multiblock.dimension": "§eРазмер: §r%sx%sx%s", + "config.gtceu.option.coloredWireOutline": "coloredWireOutline", + "item.gtceu.armor.chestplate": "Нагрудник (%s)", + "item.gtceu.armor.helmet": "Шлем (%s)", + "item.gtceu.armor.leggings": "Поножи (%s)", + "config.gtceu.option.batchDuration": "batchDuration", + "gtceu.gui.content.chance_no_boost": "Шанс: %s%%", + "gtceu.gui.content.chance_no_boost_logic": "Шанс: %s%% (%s)", + "gtceu.gui.content.fluid_range": "%s-%sмВ", + "gtceu.machine.batch_disabled": "Группирование выключено", + "gtceu.machine.batch_enabled": "Группирование включено", + "gtceu.multiblock.batch_enabled": "Группирование: включено (%sx)", + "gtceu.recipe.eu.total": "%s EU/т", + "gtceu.recipe.total_eu": "Общее исп.: %s EU/т", + "gtceu.recipe.voltage": "Исп.: %s A @ %s" } diff --git a/src/main/resources/assets/gtceu/lang/uk_ua.json b/src/main/resources/assets/gtceu/lang/uk_ua.json index 02269e12303..ec2ec5f731d 100644 --- a/src/main/resources/assets/gtceu/lang/uk_ua.json +++ b/src/main/resources/assets/gtceu/lang/uk_ua.json @@ -1532,10 +1532,8 @@ "metaitem.electric.discharge_mode.tooltip": "Використовуйте крадькома, щоб змінити режим розряджання", "metaitem.generic.electric_item.stored": "%d/%d EU (%s)", "metaitem.generic.electric_item.tooltip": "%d/%d EU - рівень %s", - "item.gtceu.battery.charge_detailed.0": "§a%s/%s EU§7 - рівень %s§7 (§aзалишилось %s/%s %s§7)", + "item.gtceu.battery.charge_detailed": "%s/%s EU§7 - рівень %s§7 (залишилось %s/%s %s§7)", "item.gtceu.battery.charge_time": "§aHolds %s %s of Power (%s)", - "item.gtceu.battery.charge_detailed.2": "§c%s/%s EU§7 - рівень %s§7 (§aзалишилось %s/%s %s§7)", - "item.gtceu.battery.charge_detailed.1": "§e%s/%s EU§7 - рівень %s§7 (§aзалишилось %s/%s %s§7)", "item.gtceu.battery.charge_unit.hour": "годин", "item.gtceu.battery.charge_unit.minute": "хвилин", "item.gtceu.battery.charge_unit.second": "секунд", @@ -2305,8 +2303,6 @@ "gtceu.universal.tooltip.base_production_fluid": "§eБазове виробництво:§f %d мВ/т", "gtceu.universal.tooltip.produces_fluid": "§eВиробляє:§f %d мВ/т", "gtceu.universal.tooltip.chunk_mode": "Режим чанків: ", - "gtceu.universal.disabled": "Спільний доступ конструкції§4 вимкнено", - "gtceu.universal.enabled": "Спільний доступ конструкції§a увімкнено", "gtceu.universal.tooltip.silk_touch": "Шовковий дотик: ", "gtceu.universal.tooltip.terrain_resist": "Ця машина не вибухне під час контакту з хім. елементами", "gtceu.universal.tooltip.uses_per_op": "Використовує§f %d EU на операцію", @@ -2320,7 +2316,7 @@ "command.gtceu.place_vein.failure": "Не вдалося розмістити жилу %s на позиції %s", "command.gtceu.place_vein.success": "Розміщено жилу %s на позиції %s", - "gtceu.gui.авто_output.name": "авто", + "gtceu.gui.auto_output.name": "авто", "gtceu.gui.charger_slot.tooltip.0": "§fГніздо для зарядного пристрою§r", "gtceu.gui.charger_slot.tooltip.1": "§7Живиться від %s акумуляторів§r", "gtceu.gui.charger_slot.tooltip.2": "§7Заряджає %s інструментів та акумуляторів", @@ -2416,7 +2412,8 @@ "gtceu.gui.toggle_view.disabled": "Перемкнути вид (Рідини)", "gtceu.gui.toggle_view.enabled": "Перемкнути вид (Предмети)", "gtceu.gui.waiting_list": "Черга на відправлення:", - + "gtceu.part_sharing.disabled": "Спільний доступ конструкції§4 вимкнено", + "gtceu.part_sharing.enabled": "Спільний доступ конструкції§a увімкнено", "item.gtceu.ash_dust": "Попіл", "item.gtceu.basaltic_mineral_sand_dust": "Базальтовий мінеральний пісок", "item.gtceu.bone_dust": "Кісткове борошно", diff --git a/src/main/resources/assets/gtceu/lang/zh_cn.json b/src/main/resources/assets/gtceu/lang/zh_cn.json index 3571d7dce86..6a5bd373443 100644 --- a/src/main/resources/assets/gtceu/lang/zh_cn.json +++ b/src/main/resources/assets/gtceu/lang/zh_cn.json @@ -1,5526 +1,5570 @@ { - "behavior.data_item.assemblyline.data":"- §a%s", - "behavior.data_item.assemblyline.title":"§n装配线结构数据:", - "behavior.item_magnet.disabled":"§c磁场已禁用", - "behavior.item_magnet.enabled":"§a磁场已启用", - "behavior.portable_scanner.amp_per_sec":"平均(最后一秒):%s A", - "behavior.portable_scanner.bedrock_fluid.amount":"流体储量:%s %s - %s%%", - "behavior.portable_scanner.bedrock_fluid.amount_unknown":"流体储量:%s%%", - "behavior.portable_scanner.bedrock_fluid.nothing":"流体储量:§6无§r", - "behavior.portable_scanner.block_hardness":"硬度:%s;爆炸抗性:%s", - "behavior.portable_scanner.block_name":"名称:%s;元数据:%s", - "behavior.portable_scanner.debug_cpu_load":"%2$s刻内平均CPU负载约%1$sns,最差情况为%sns。", - "behavior.portable_scanner.debug_cpu_load_seconds":"负载秒数为%s秒。", - "behavior.portable_scanner.debug_lag_count":"已在服务器中造成%s次延迟尖峰警告(任何大于%sms的情况)。", - "behavior.portable_scanner.debug_machine":"元ID:%s", - "behavior.portable_scanner.debug_machine_invalid":" 无效!", - "behavior.portable_scanner.debug_machine_invalid_null=invalid! MetaTileEntity =":" null!", - "behavior.portable_scanner.debug_machine_valid":"无效!", - "behavior.portable_scanner.divider":"=========================", - "behavior.portable_scanner.energy_container_in":"输入上限:%s(%s)EU,%s A", - "behavior.portable_scanner.energy_container_out":"输出上限:%s(%s)EU,%s A", - "behavior.portable_scanner.energy_container_storage":"能量:%s EU / %s EU", - "behavior.portable_scanner.environmental_hazard":"区块内的环境污染:%s§r - %s ppm", - "behavior.portable_scanner.environmental_hazard.nothing":"区块内的环境污染:§6无§r", - "behavior.portable_scanner.eu_per_sec":"平均(最后一秒):%s EU/t", - "behavior.portable_scanner.guild_name":"§2公会名称:%s§r", - "behavior.portable_scanner.local_hazard":"区域内的其他污染:%s§r - %s ppm", - "behavior.portable_scanner.local_hazard.nothing":"区域内的其他污染:§6无§r", - "behavior.portable_scanner.machine_disabled":"已停止。", - "behavior.portable_scanner.machine_front_facing":"控制器面向:%s", - "behavior.portable_scanner.machine_ownership":"§2机器所有者类型:%s§r", - "behavior.portable_scanner.machine_power_loss":"因断电而停止工作。", - "behavior.portable_scanner.machine_progress":"处理进度/总计:%s / %s", - "behavior.portable_scanner.machine_upwards_facing":"控制器正面朝向:%s", - "behavior.portable_scanner.mode.caption":"显示模式:%s", - "behavior.portable_scanner.mode.show_all_info":"显示所有信息", - "behavior.portable_scanner.mode.show_block_info":"显示方块信息", - "behavior.portable_scanner.mode.show_electrical_info":"显示电器信息", - "behavior.portable_scanner.mode.show_environmental_info":"显示环境信息", - "behavior.portable_scanner.mode.show_machine_info":"显示机器信息", - "behavior.portable_scanner.mode.show_recipe_info":"显示配方信息", - "behavior.portable_scanner.muffled":"已静音。", - "behavior.portable_scanner.multiblock_energy_input":"最大输入:%s EU/t,电压等级 %s", - "behavior.portable_scanner.multiblock_energy_output":"最大输出:%s EU/t,电压等级 %s", - "behavior.portable_scanner.multiblock_maintenance":"故障:%s", - "behavior.portable_scanner.multiblock_parallel":"并行处理:%s", - "behavior.portable_scanner.player_name":"§2玩家姓名:%s§r,§7玩家在线:%s§r", - "behavior.portable_scanner.position":"----- X:%s;Y:%s;Z:%s;D:%s -----", - "behavior.portable_scanner.state":"%s:%s", - "behavior.portable_scanner.tank":"流体储量(槽位%s):%s mB / %s mB %s", - "behavior.portable_scanner.tanks_empty":"未存储流体", - "behavior.portable_scanner.team_name":"§2团队名称:%s§r", - "behavior.portable_scanner.workable_consumption":"预计耗能:%s EU/t,%s A", - "behavior.portable_scanner.workable_production":"预计产能:%s EU/t,%s A", - "behavior.portable_scanner.workable_progress":"处理进度:%s s / %s s", - "behavior.portable_scanner.workable_stored_energy":"能量缓存:%s EU / %s EU", - "behavior.prospector.added_waypoint":"已创建路径点:%s!", - "behavior.prospector.not_enough_energy":"能量不足!", - "behavior.toggle_energy_consumer.tooltip":"右击切换模式", - "behaviour.boor.by":"通过%s", - "behaviour.hammer":"右击机器以开启或关闭消声功能", - "behaviour.hoe":"可以翻耕泥土", - "behaviour.lighter.fluid.tooltip":"可使用丙烷或丁烷来生火", - "behaviour.lighter.tooltip.description":"可以点火", - "behaviour.lighter.tooltip.usage":"潜行右击以开/关", - "behaviour.lighter.uses":"剩余次数:%d", - "behaviour.meta.machine.config.copy.tooltip":"§7潜行右键单击以复制机器配置", - "behaviour.meta.machine.config.paste.tooltip":"§7右键单击以粘贴机器配置", - "behaviour.paintspray.black.tooltip":"可以将物品染成黑色", - "behaviour.paintspray.blue.tooltip":"可以将物品染成蓝色", - "behaviour.paintspray.brown.tooltip":"可以将物品染成棕色", - "behaviour.paintspray.cyan.tooltip":"可以将物品染成青色", - "behaviour.paintspray.gray.tooltip":"可以将物品染成灰色", - "behaviour.paintspray.green.tooltip":"可以将物品染成绿色", - "behaviour.paintspray.light_blue.tooltip":"可以将物品染成淡蓝色", - "behaviour.paintspray.light_gray.tooltip":"可以将物品染成银色", - "behaviour.paintspray.lime.tooltip":"可以将物品染成黄绿色", - "behaviour.paintspray.magenta.tooltip":"可以将物品染成品红色", - "behaviour.paintspray.orange.tooltip":"可以将物品染成橙色", - "behaviour.paintspray.pink.tooltip":"可以将物品染成粉红色", - "behaviour.paintspray.purple.tooltip":"可以将物品染成紫色", - "behaviour.paintspray.red.tooltip":"可以将物品染成红色", - "behaviour.paintspray.solvent.tooltip":"可以移除已染色物品的颜色", - "behaviour.paintspray.uses":"剩余次数:%d", - "behaviour.paintspray.white.tooltip":"可以将物品染成白色", - "behaviour.paintspray.yellow.tooltip":"可以将物品染成黄色", - "behaviour.prospecting":"适用于探矿", - "behaviour.setting.allow.input.from.output.tooltip":"%s-允许从输出面输入:%s", - "behaviour.setting.item_auto_output.tooltip":"%s-自动输出:%s", - "behaviour.setting.muffled.tooltip":"静音:%s", - "behaviour.setting.output.direction.tooltip":"%s-输出面方向:%s", - "behaviour.soft_hammer":"用来开启与关闭机器", - "behaviour.soft_hammer.disabled":"已暂停工作", - "behaviour.soft_hammer.enabled":"已恢复工作", - "behaviour.soft_hammer.idle_after_cycle":"当前周期结束后暂停机器", - "behaviour.wrench":"右击以旋转方块", - "block.filter_casing.tooltip":"创建一个§a无尘§r环境", - "block.gtceu.acid_hazard_sign_block":"强酸危害警示方块", - "block.gtceu.active_transformer":"有源变压器", - "block.gtceu.advanced_computer_casing":"高级计算机外壳", - "block.gtceu.advanced_data_access_hatch":"高级数据访问仓", - "block.gtceu.alloy_blast_smelter":"合金冶炼炉", - "block.gtceu.aluminium_crate":"铝板条箱", - "block.gtceu.aluminium_drum":"铝桶", - "block.gtceu.antimatter_hazard_sign_block":"反物质危害警示方块", - "block.gtceu.assembly_line":"装配线", - "block.gtceu.assembly_line_casing":"装配线外壳", - "block.gtceu.assembly_line_grating":"装配线格栅", - "block.gtceu.assembly_line_unit":"装配线控制外壳", - "block.gtceu.atomic_casing":"原子机械方块", - "block.gtceu.auto_maintenance_hatch":"自动维护仓", - "block.gtceu.bio_hazard_sign_block":"生化危害警示方块", - "block.gtceu.black_borderless_lamp":"黑色无框灯", - "block.gtceu.black_lamp":"黑色灯", - "block.gtceu.black_large_metal_sheet":"黑色粗纹金属板方块", - "block.gtceu.black_metal_sheet":"黑色金属板方块", - "block.gtceu.black_studs":"黑色橡胶混凝土", - "block.gtceu.blue_borderless_lamp":"蓝色无框灯", - "block.gtceu.blue_lamp":"蓝色灯", - "block.gtceu.blue_large_metal_sheet":"蓝色粗纹金属板方块", - "block.gtceu.blue_metal_sheet":"蓝色金属板方块", - "block.gtceu.blue_studs":"蓝色橡胶混凝土", - "block.gtceu.boss_hazard_sign_block":"Boss危害警示方块", - "block.gtceu.brittle_charcoal":"脆木炭块", - "block.gtceu.bronze_brick_casing":"砖砌青铜外壳", - "block.gtceu.bronze_crate":"青铜板条箱", - "block.gtceu.bronze_drum":"青铜桶", - "block.gtceu.bronze_firebox_casing":"青铜燃烧室", - "block.gtceu.bronze_gearbox":"青铜齿轮箱机械方块", - "block.gtceu.bronze_large_boiler":"大型青铜锅炉", - "block.gtceu.bronze_machine_casing":"青铜机器外壳", - "block.gtceu.bronze_pipe_casing":"青铜管道方块", - "block.gtceu.brown_borderless_lamp":"棕色无框灯", - "block.gtceu.brown_lamp":"棕色灯", - "block.gtceu.brown_large_metal_sheet":"棕色粗纹金属板方块", - "block.gtceu.brown_metal_sheet":"棕色金属板方块", - "block.gtceu.brown_studs":"棕色橡胶混凝土", - "block.gtceu.casing_coke_bricks":"焦炉砖块", - "block.gtceu.casing_grate":"栅格机械方块", - "block.gtceu.causality_hazard_sign_block":"因果律危害警示方块", - "block.gtceu.charcoal_pile_igniter":"木炭堆点火器", - "block.gtceu.chiseled_dark_concrete":"錾制深色混凝土", - "block.gtceu.chiseled_light_concrete":"錾制淡色混凝土", - "block.gtceu.chiseled_marble":"錾制大理岩", - "block.gtceu.chiseled_red_granite":"錾制红花岗岩", - "block.gtceu.clean_machine_casing":"洁净不锈钢机械方块", - "block.gtceu.cleaning_maintenance_hatch":"超净维护仓", - "block.gtceu.cleanroom":"超净间", - "block.gtceu.cleanroom_glass":"超净间玻璃", - "block.gtceu.coke_oven":"焦炉", - "block.gtceu.coke_oven_bricks":"焦炉砖块", - "block.gtceu.coke_oven_hatch":"焦炉仓", - "block.gtceu.computation_receiver_hatch":"算力数据靶仓", - "block.gtceu.computation_transmitter_hatch":"算力数据源仓", - "block.gtceu.computer_casing":"计算机外壳", - "block.gtceu.computer_heat_vent":"计算机散热口", - "block.gtceu.configurable_maintenance_hatch":"可配置维护仓", - "block.gtceu.corrosion_proof_casing":"耐腐蚀机械方块", - "block.gtceu.cracked_dark_concrete_bricks":"裂纹深色混凝土砖", - "block.gtceu.cracked_light_concrete_bricks":"裂纹淡色混凝土砖", - "block.gtceu.cracked_marble_bricks":"裂纹大理岩砖", - "block.gtceu.cracked_red_granite_bricks":"裂纹红花岗岩砖", - "block.gtceu.cracker":"裂化机", - "block.gtceu.creative_chest":"创造模式箱子", - "block.gtceu.creative_computation_provider":"创造模式计算机", - "block.gtceu.creative_data_access_hatch":"创造模式数据访问仓", - "block.gtceu.creative_energy":"创造模式能量单元", - "block.gtceu.creative_tank":"创造模式储罐", - "block.gtceu.crushing_wheels":"粉碎轮", - "block.gtceu.cupronickel_coil_block":"白铜线圈方块", - "block.gtceu.cyan_borderless_lamp":"青色无框灯", - "block.gtceu.cyan_lamp":"青色灯", - "block.gtceu.cyan_large_metal_sheet":"青色粗纹金属板方块", - "block.gtceu.cyan_metal_sheet":"青色金属板方块", - "block.gtceu.cyan_studs":"青色橡胶混凝土", - "block.gtceu.dark_concrete":"深色混凝土", - "block.gtceu.dark_concrete_bricks":"深色混凝土砖", - "block.gtceu.dark_concrete_cobblestone":"深色混凝土圆石", - "block.gtceu.dark_concrete_small_tile":"深色混凝土小片瓦", - "block.gtceu.dark_concrete_tile":"深色混凝土瓦", - "block.gtceu.dark_concrete_windmill_a":"深色混凝土风车形瓦 A", - "block.gtceu.dark_concrete_windmill_b":"深色混凝土风车形瓦 B", - "block.gtceu.data_access_hatch":"数据访问仓", - "block.gtceu.data_bank":"数据库", - "block.gtceu.data_receiver_hatch":"光学数据靶仓", - "block.gtceu.data_transmitter_hatch":"光学数据源仓", - "block.gtceu.distillation_tower":"蒸馏塔", - "block.gtceu.electric_blast_furnace":"电力高炉", - "block.gtceu.electrolytic_cell":"电解器", - "block.gtceu.empty_tier_i_battery":"空电容(Tier I)", - "block.gtceu.empty_tier_ii_battery":"空电容(Tier II)", - "block.gtceu.empty_tier_iii_battery":"空电容(Tier III)", - "block.gtceu.engine_intake_casing":"引擎进气机械方块", - "block.gtceu.ev_16a_energy_converter":"16§e安§r§5EV§r能量转换器", - "block.gtceu.ev_1a_energy_converter":"1§e安§r§5EV§r能量转换器", - "block.gtceu.ev_4a_energy_converter":"4§e安§r§5EV§r能量转换器", - "block.gtceu.ev_8a_energy_converter":"8§e安§r§5EV§r能量转换器", - "block.gtceu.ev_air_scrubber":"§5进阶空气净化器 III§r", - "block.gtceu.ev_alloy_smelter":"§5进阶合金炉 III§r", - "block.gtceu.ev_arc_furnace":"§5进阶电弧炉 III§r", - "block.gtceu.ev_assembler":"§5进阶组装机 III§r", - "block.gtceu.ev_autoclave":"§5进阶高压釜 III§r", - "block.gtceu.ev_battery_buffer_16x":"16x§5超高压§r电池箱(§5EV§r)", - "block.gtceu.ev_battery_buffer_4x":"4x§5超高压§r电池箱(§5EV§r)", - "block.gtceu.ev_battery_buffer_8x":"8x§5超高压§r电池箱(§5EV§r)", - "block.gtceu.ev_bedrock_ore_miner":"§5进阶基岩采矿机 III§r", - "block.gtceu.ev_bender":"§5进阶卷板机 III§r", - "block.gtceu.ev_block_breaker":"§5进阶方块破坏器 III§r", - "block.gtceu.ev_brewery":"§5进阶酿造室 III§r", - "block.gtceu.ev_canner":"§5进阶装罐机 III§r", - "block.gtceu.ev_centrifuge":"§5进阶离心机 III§r", - "block.gtceu.ev_charger_4x":"4x§5超高压§r闪聚充电箱(§5EV§r)", - "block.gtceu.ev_chemical_bath":"§5进阶化学浸洗机 III§r", - "block.gtceu.ev_chemical_reactor":"§5进阶化学反应釜 III§r", - "block.gtceu.ev_circuit_assembler":"§5进阶电路组装机 III§r", - "block.gtceu.ev_compressor":"§5进阶压缩机 III§r", - "block.gtceu.ev_cutter":"§5进阶切割机 III§r", - "block.gtceu.ev_diode":"§5EV§r二极管", - "block.gtceu.ev_distillery":"§5进阶蒸馏室 III§r", - "block.gtceu.ev_electric_furnace":"§5进阶电炉 III§r", - "block.gtceu.ev_electrolyzer":"§5进阶电解机 III§r", - "block.gtceu.ev_electromagnetic_separator":"§5进阶电磁选矿机 III§r", - "block.gtceu.ev_energy_input_hatch":"§5EV§r能源仓", - "block.gtceu.ev_energy_input_hatch_16a":"16安§5EV§r能源仓", - "block.gtceu.ev_energy_input_hatch_4a":"4安§5EV§r能源仓 ", - "block.gtceu.ev_energy_output_hatch":"§5EV§r动力仓", - "block.gtceu.ev_energy_output_hatch_16a":"16安§5EV§r动力仓", - "block.gtceu.ev_energy_output_hatch_4a":"4安§5EV§r动力仓", - "block.gtceu.ev_extractor":"§5进阶提取机 III§r", - "block.gtceu.ev_extruder":"§5进阶压模器 III§r", - "block.gtceu.ev_fermenter":"§5进阶发酵槽 III§r", - "block.gtceu.ev_fisher":"§5进阶捕鱼机 III§r", - "block.gtceu.ev_fluid_drilling_rig":"§5进阶流体钻机 III§r", - "block.gtceu.ev_fluid_heater":"§5进阶流体加热器 III§r", - "block.gtceu.ev_fluid_passthrough_hatch":"§5EV§r流体通行仓", - "block.gtceu.ev_fluid_solidifier":"§5进阶流体固化器 III§r", - "block.gtceu.ev_forge_hammer":"§5进阶锻造锤 III§r", - "block.gtceu.ev_forming_press":"§5进阶冲压机床 III§r", - "block.gtceu.ev_gas_collector":"§5进阶集气室 III§r", - "block.gtceu.ev_hermetic_casing":"密封机械方块 IV", - "block.gtceu.ev_input_bus":"§5EV§r输入总线", - "block.gtceu.ev_input_hatch":"§5EV§r输入仓", - "block.gtceu.ev_input_hatch_4x":"§5EV§r四重输入仓", - "block.gtceu.ev_input_hatch_9x":"§5EV§r九重输入仓", - "block.gtceu.ev_item_collector":"§5进阶物品收集器 III§r", - "block.gtceu.ev_item_passthrough_hatch":"§5EV§r物品通行仓", - "block.gtceu.ev_lapotronic_battery":"兰波顿电容(§5EV§r)", - "block.gtceu.ev_large_miner":"§5进阶大型采矿机 III§r", - "block.gtceu.ev_laser_engraver":"§5进阶激光蚀刻机 III§r", - "block.gtceu.ev_lathe":"§5进阶车床 III§r", - "block.gtceu.ev_macerator":"§5进阶研磨机 III§r", - "block.gtceu.ev_machine_casing":"§5EV§r机械方块", - "block.gtceu.ev_machine_hull":"§5EV§f机器外壳", - "block.gtceu.ev_mixer":"§5进阶搅拌机 III§r", - "block.gtceu.ev_muffler_hatch":"§5EV§r消声仓", - "block.gtceu.ev_ore_washer":"§5进阶洗矿厂 III§r", - "block.gtceu.ev_output_bus":"§5EV§r输出总线", - "block.gtceu.ev_output_hatch":"§5EV§r输出仓", - "block.gtceu.ev_output_hatch_4x":"§5EV§r四重输出仓", - "block.gtceu.ev_output_hatch_9x":"§5EV§r九重输出仓", - "block.gtceu.ev_packer":"§5进阶打包机 III§r", - "block.gtceu.ev_polarizer":"§5进阶两极磁化机 III§r", - "block.gtceu.ev_pump":"§5进阶泵 III§r", - "block.gtceu.ev_rock_crusher":"§5进阶碎岩机 III§r", - "block.gtceu.ev_rotor_holder":"§5EV§r转子支架", - "block.gtceu.ev_scanner":"§5进阶扫描仪 III§r", - "block.gtceu.ev_sifter":"§5进阶筛选机 III§r", - "block.gtceu.ev_substation_input_hatch_64a":"64安§5EV§r变电能源仓", - "block.gtceu.ev_substation_output_hatch_64a":"64安§5EV§r变电动力仓", - "block.gtceu.ev_super_chest":"超级箱 IV", - "block.gtceu.ev_super_tank":"超级缸 IV", - "block.gtceu.ev_thermal_centrifuge":"§5进阶热力离心机 III§r", - "block.gtceu.ev_transformer_16a":"§5超高压§r高能变压器(§5EV§r)", - "block.gtceu.ev_transformer_1a":"§5超高压§r变压器(§5EV§r)", - "block.gtceu.ev_transformer_2a":"§5超高压§r进阶变压器(§5EV§r)", - "block.gtceu.ev_transformer_4a":"§5超高压§r高流变压器(§5EV§r)", - "block.gtceu.ev_wiremill":"§5进阶线材轧机 III§r", - "block.gtceu.ev_world_accelerator":"§5进阶世界加速器 III§r", - "block.gtceu.evaporation_plant":"蒸发塔", - "block.gtceu.explosion_hazard_sign_block":"爆炸危害警示方块", - "block.gtceu.explosive.breaking_tooltip":"破坏它会引爆火药,潜行挖掘以重新拾取", - "block.gtceu.explosive.lighting_tooltip":"无法用红石信号引爆", - "block.gtceu.extreme_combustion_engine":"极限内燃引擎", - "block.gtceu.extreme_engine_intake_casing":"极限引擎进气机械方块", - "block.gtceu.filter_casing":"过滤器机械方块", - "block.gtceu.fire_hazard_sign_block":"易燃危害警示方块", - "block.gtceu.firebricks":"耐火砖块", - "block.gtceu.foam":"建筑泡沫", - "block.gtceu.frost_hazard_sign_block":"低温危害警示方块", - "block.gtceu.frostproof_machine_casing":"铝制防冻机械方块", - "block.gtceu.fusion_casing":"聚变机械方块", - "block.gtceu.fusion_casing_mk2":"聚变机械方块 MK-II", - "block.gtceu.fusion_casing_mk3":"聚变机械方块 MK-III", - "block.gtceu.fusion_coil":"聚变线圈方块", - "block.gtceu.fusion_glass":"聚变玻璃", - "block.gtceu.gas_large_turbine":"大型燃气涡轮", - "block.gtceu.generic_hazard_sign_block":"泛用危害警示方块", - "block.gtceu.gold_drum":"金桶", - "block.gtceu.gray_borderless_lamp":"灰色无框灯", - "block.gtceu.gray_lamp":"灰色灯", - "block.gtceu.gray_large_metal_sheet":"灰色粗纹金属板方块", - "block.gtceu.gray_metal_sheet":"灰色金属板方块", - "block.gtceu.gray_studs":"灰色橡胶混凝土", - "block.gtceu.green_borderless_lamp":"绿色无框灯", - "block.gtceu.green_lamp":"绿色灯", - "block.gtceu.green_large_metal_sheet":"绿色粗纹金属板方块", - "block.gtceu.green_metal_sheet":"绿色金属板方块", - "block.gtceu.green_studs":"绿色橡胶混凝土", - "block.gtceu.gregification_hazard_sign_block":"格雷化危害警示方块", - "block.gtceu.heat_vent":"散热片", - "block.gtceu.heatproof_machine_casing":"殷钢隔热机械方块", - "block.gtceu.high_performance_computation_array":"高性能计算阵列(HPCA)", - "block.gtceu.high_power_casing":"高能机械方块", - "block.gtceu.high_pressure_hazard_sign_block":"高压力危害警示方块", - "block.gtceu.high_temperature_hazard_sign_block":"高温危害警示方块", - "block.gtceu.high_temperature_smelting_casing":"高温冶炼机械方块", - "block.gtceu.high_voltage_hazard_sign_block":"高压电危害警示方块", - "block.gtceu.hp_steam_alloy_smelter":"高压蒸汽合金炉", - "block.gtceu.hp_steam_compressor":"高压蒸汽压缩机", - "block.gtceu.hp_steam_extractor":"高压蒸汽提取机", - "block.gtceu.hp_steam_forge_hammer":"高压蒸汽锻造锤", - "block.gtceu.hp_steam_furnace":"高压蒸汽熔炉", - "block.gtceu.hp_steam_liquid_boiler":"高压蒸汽液体燃料锅炉", - "block.gtceu.hp_steam_macerator":"高压蒸汽研磨机", - "block.gtceu.hp_steam_miner":"高压蒸汽采矿机", - "block.gtceu.hp_steam_rock_crusher":"高压蒸汽碎岩机", - "block.gtceu.hp_steam_solar_boiler":"高压蒸汽太阳能锅炉", - "block.gtceu.hp_steam_solid_boiler":"高压蒸汽固体燃料锅炉", - "block.gtceu.hpca_active_cooler_component":"HPCA主动冷却组件", - "block.gtceu.hpca_advanced_computation_component":"HPCA高级计算组件", - "block.gtceu.hpca_bridge_component":"HPCA桥接组件", - "block.gtceu.hpca_computation_component":"HPCA计算组件", - "block.gtceu.hpca_empty_component":"空HPCA组件", - "block.gtceu.hpca_heat_sink_component":"HPCA散热组件", - "block.gtceu.hssg_coil_block":"高速钢-G线圈方块", - "block.gtceu.huge_duct_pipe":"巨型风管", - "block.gtceu.hv_16a_energy_converter":"16§e安§r§6HV§r能量转换器", - "block.gtceu.hv_1a_energy_converter":"1§e安§r§6HV§r能量转换器", - "block.gtceu.hv_4a_energy_converter":"4§e安§r§6HV§r能量转换器", - "block.gtceu.hv_8a_energy_converter":"8§e安§r§6HV§r能量转换器", - "block.gtceu.hv_air_scrubber":"§6进阶空气净化器 II§r", - "block.gtceu.hv_alloy_smelter":"§6进阶合金炉 II§r", - "block.gtceu.hv_arc_furnace":"§6进阶电弧炉 II§r", - "block.gtceu.hv_assembler":"§6进阶组装机 II§r", - "block.gtceu.hv_autoclave":"§6进阶高压釜 II§r", - "block.gtceu.hv_battery_buffer_16x":"16x§6高压§r电池箱(§6HV§r)", - "block.gtceu.hv_battery_buffer_4x":"4x§6高压§r电池箱(§6HV§r)", - "block.gtceu.hv_battery_buffer_8x":"8x§6高压§r电池箱(§6HV§r)", - "block.gtceu.hv_bedrock_ore_miner":"§6进阶基岩采矿机 II§r", - "block.gtceu.hv_bender":"§6进阶卷板机 II§r", - "block.gtceu.hv_block_breaker":"§6进阶方块破坏机 II§r", - "block.gtceu.hv_brewery":"§6进阶酿造室 II§r", - "block.gtceu.hv_buffer":"§6进阶缓存器 II§r", - "block.gtceu.hv_canner":"§6进阶装罐机 II§r", - "block.gtceu.hv_centrifuge":"§6进阶离心机 II§r", - "block.gtceu.hv_charger_4x":"4x§6高压§r闪聚充电箱(§6HV§r)", - "block.gtceu.hv_chemical_bath":"§6进阶化学浸洗机 II§r", - "block.gtceu.hv_chemical_reactor":"§6进阶化学反应釜 II§r", - "block.gtceu.hv_circuit_assembler":"§6进阶电路组装机 II§r", - "block.gtceu.hv_combustion":"§6进阶内燃发电机 II§r", - "block.gtceu.hv_compressor":"§6进阶压缩机 II§r", - "block.gtceu.hv_cutter":"§6进阶切割机 II§r", - "block.gtceu.hv_diode":"§6HV§r二极管", - "block.gtceu.hv_distillery":"§6进阶蒸馏室 II§r", - "block.gtceu.hv_electric_furnace":"§6进阶电炉 II§r", - "block.gtceu.hv_electrolyzer":"§6进阶电解机 II§r", - "block.gtceu.hv_electromagnetic_separator":"§6进阶电磁选矿机 II§r", - "block.gtceu.hv_energy_input_hatch":"§6HV§r能源仓", - "block.gtceu.hv_energy_output_hatch":"§6HV§r动力仓", - "block.gtceu.hv_extractor":"§6进阶提取机 II§r", - "block.gtceu.hv_extruder":"§6进阶压模器 II§r", - "block.gtceu.hv_fermenter":"§6进阶发酵槽 II§r", - "block.gtceu.hv_fisher":"§6进阶捕鱼机 II§r", - "block.gtceu.hv_fluid_drilling_rig":"§6进阶流体钻机 II§r", - "block.gtceu.hv_fluid_heater":"§6进阶流体加热器 II§r", - "block.gtceu.hv_fluid_passthrough_hatch":"§6HV§r流体通行仓", - "block.gtceu.hv_fluid_solidifier":"§6进阶流体固化器 II§r", - "block.gtceu.hv_forge_hammer":"§6进阶锻造锤 II§r", - "block.gtceu.hv_forming_press":"§6进阶冲压机床 II§r", - "block.gtceu.hv_gas_collector":"§6进阶集气室 II§r", - "block.gtceu.hv_gas_turbine":"§6进阶燃气轮机 II§r", - "block.gtceu.hv_hermetic_casing":"密封机械方块 III", - "block.gtceu.hv_input_bus":"§6HV§r输入总线", - "block.gtceu.hv_input_hatch":"§6HV§r输入仓", - "block.gtceu.hv_item_collector":"§6进阶物品收集器 II§r", - "block.gtceu.hv_item_passthrough_hatch":"§6HV§r物品通行仓", - "block.gtceu.hv_laser_engraver":"§6进阶激光蚀刻机 II§r", - "block.gtceu.hv_lathe":"§6进阶车床 II§r", - "block.gtceu.hv_macerator":"§6进阶研磨机 II§r", - "block.gtceu.hv_machine_casing":"§6HV§r机械方块", - "block.gtceu.hv_machine_hull":"§6HV§f机器外壳", - "block.gtceu.hv_miner":"§6进阶采矿机 II§r", - "block.gtceu.hv_mixer":"§6进阶搅拌机 II§r", - "block.gtceu.hv_muffler_hatch":"§6HV§r消声仓", - "block.gtceu.hv_ore_washer":"§6进阶洗矿厂 II§r", - "block.gtceu.hv_output_bus":"§6HV§r输出总线", - "block.gtceu.hv_output_hatch":"§6HV§r输出仓", - "block.gtceu.hv_packer":"§6进阶打包机 II§r", - "block.gtceu.hv_polarizer":"§6进阶两极磁化机 II§r", - "block.gtceu.hv_pump":"§6进阶泵 II§r", - "block.gtceu.hv_rock_crusher":"§6进阶碎岩机 II§r", - "block.gtceu.hv_rotor_holder":"§6HV§r转子支架", - "block.gtceu.hv_scanner":"§6进阶扫描仪 II§r", - "block.gtceu.hv_sifter":"§6进阶筛选机 II§r", - "block.gtceu.hv_steam_turbine":"§6进阶蒸汽轮机 II§r", - "block.gtceu.hv_super_chest":"超级箱 III", - "block.gtceu.hv_super_tank":"超级缸 III", - "block.gtceu.hv_thermal_centrifuge":"§6进阶热力离心机 II§r", - "block.gtceu.hv_transformer_16a":"§6高压§r高能变压器(§6HV§r)", - "block.gtceu.hv_transformer_1a":"§6高压§r变压器(§6HV§r)", - "block.gtceu.hv_transformer_2a":"§6高压§r进阶变压器(§6HV§r)", - "block.gtceu.hv_transformer_4a":"§6高压§r高流变压器(§6HV§r)", - "block.gtceu.hv_wiremill":"§6进阶线材轧机 II§r", - "block.gtceu.hv_world_accelerator":"§6进阶世界加速器 II§r", - "block.gtceu.implosion_compressor":"聚爆压缩机", - "block.gtceu.industrial_steam_casing":"工业蒸汽机械方块", - "block.gtceu.industrial_tnt":"工业TNT", - "block.gtceu.inert_machine_casing":"聚四氟乙烯化学惰性机械方块", - "block.gtceu.itnt.drops_tooltip":"爆炸范围比TNT大得多,所有被摧毁的方块都会掉落", - "block.gtceu.iv_1024a_laser_source_hatch":"1024§e安§r§9IV§r激光源仓", - "block.gtceu.iv_1024a_laser_target_hatch":"1024§e安§r§9IV§r激光靶仓", - "block.gtceu.iv_16a_energy_converter":"16§e安§r§9IV§r能量转换器", - "block.gtceu.iv_1a_energy_converter":"1§e安§r§9IV§r能量转换器", - "block.gtceu.iv_256a_laser_source_hatch":"256§e安§r§9IV§r激光源仓", - "block.gtceu.iv_256a_laser_target_hatch":"256§e安§r§9IV§r激光靶仓", - "block.gtceu.iv_4096a_laser_source_hatch":"4096§e安§r§9IV§r激光源仓", - "block.gtceu.iv_4096a_laser_target_hatch":"4096§e安§r§9IV§r激光靶仓", - "block.gtceu.iv_4a_energy_converter":"4§e安§r§9IV§r能量转换器", - "block.gtceu.iv_8a_energy_converter":"8§e安§r§9IV§r能量转换器", - "block.gtceu.iv_alloy_smelter":"§9精英合金炉§r", - "block.gtceu.iv_arc_furnace":"§9精英电弧炉§r", - "block.gtceu.iv_assembler":"§9精英组装机§r", - "block.gtceu.iv_autoclave":"§9精英高压釜§r", - "block.gtceu.iv_battery_buffer_16x":"16x§9强导压§r电池箱(§9IV§r)", - "block.gtceu.iv_battery_buffer_4x":"4x§9强导压§r电池箱(§9IV§r)", - "block.gtceu.iv_battery_buffer_8x":"8x§9强导压§r电池箱(§9IV§r)", - "block.gtceu.iv_bender":"§9精英卷板机§r", - "block.gtceu.iv_brewery":"§9精英酿造室§r", - "block.gtceu.iv_canner":"§9精英装罐机§r", - "block.gtceu.iv_centrifuge":"§9精英离心机§r", - "block.gtceu.iv_charger_4x":"4x§9强导压§r闪聚充电箱(§9IV§r)", - "block.gtceu.iv_chemical_bath":"§9精英化学浸洗机§r", - "block.gtceu.iv_chemical_reactor":"§9精英化学反应釜§r", - "block.gtceu.iv_circuit_assembler":"§9精英电路组装机§r", - "block.gtceu.iv_compressor":"§9精英压缩机§r", - "block.gtceu.iv_cutter":"§9精英切割机§r", - "block.gtceu.iv_diode":"§9IV§r二极管", - "block.gtceu.iv_distillery":"§9精英蒸馏室§r", - "block.gtceu.iv_electric_furnace":"§9精英电炉§r", - "block.gtceu.iv_electrolyzer":"§9精英电解机§r", - "block.gtceu.iv_electromagnetic_separator":"§9精英电磁选矿机§r", - "block.gtceu.iv_energy_input_hatch":"§9IV§r能源仓", - "block.gtceu.iv_energy_input_hatch_16a":"16安§9IV§r能源仓", - "block.gtceu.iv_energy_input_hatch_4a":"4安§9IV§r能源仓", - "block.gtceu.iv_energy_output_hatch":"§9IV§r动力仓", - "block.gtceu.iv_energy_output_hatch_16a":"16安§9IV§r动力仓", - "block.gtceu.iv_energy_output_hatch_4a":"4安§9IV§r动力仓", - "block.gtceu.iv_extractor":"§9精英提取机§r", - "block.gtceu.iv_extruder":"§9精英压模器§r", - "block.gtceu.iv_fermenter":"§9精英发酵槽§r", - "block.gtceu.iv_fisher":"§9精英捕鱼机§r", - "block.gtceu.iv_fluid_heater":"§9精英流体加热器§r", - "block.gtceu.iv_fluid_passthrough_hatch":"§9IV§r流体通行仓", - "block.gtceu.iv_fluid_solidifier":"§9精英流体固化器§r", - "block.gtceu.iv_forge_hammer":"§9精英锻造锤§r", - "block.gtceu.iv_forming_press":"§9精英冲压机床§r", - "block.gtceu.iv_gas_collector":"§9精英集气室§r", - "block.gtceu.iv_hermetic_casing":"密封机械方块 V", - "block.gtceu.iv_input_bus":"§9IV§r输入总线", - "block.gtceu.iv_input_hatch":"§9IV§r输入仓", - "block.gtceu.iv_input_hatch_4x":"§9IV§r四重输入仓", - "block.gtceu.iv_input_hatch_9x":"§9IV§r九重输入仓", - "block.gtceu.iv_item_passthrough_hatch":"§9IV§r物品通行仓", - "block.gtceu.iv_lapotronic_battery":"兰波顿电容(§1IV§r)", - "block.gtceu.iv_large_miner":"§9精英大型采矿机§r", - "block.gtceu.iv_laser_engraver":"§9精英激光蚀刻机§r", - "block.gtceu.iv_lathe":"§9精英车床§r", - "block.gtceu.iv_macerator":"§9精英研磨机§r", - "block.gtceu.iv_machine_casing":"§9IV§r机械方块", - "block.gtceu.iv_machine_hull":"§9IV§f机器外壳", - "block.gtceu.iv_mixer":"§9精英搅拌机§r", - "block.gtceu.iv_muffler_hatch":"§9IV§r消声仓", - "block.gtceu.iv_ore_washer":"§9精英洗矿厂§r", - "block.gtceu.iv_output_bus":"§9IV§r输出总线", - "block.gtceu.iv_output_hatch":"§9IV§r输出仓", - "block.gtceu.iv_output_hatch_4x":"§9IV§r四重输出仓", - "block.gtceu.iv_output_hatch_9x":"§9IV§r九重输出仓", - "block.gtceu.iv_packer":"§9精英打包机§r", - "block.gtceu.iv_parallel_hatch":"§9IV§r并行控制仓", - "block.gtceu.iv_polarizer":"§9精英两极磁化机§r", - "block.gtceu.iv_quantum_chest":"量子箱 V", - "block.gtceu.iv_quantum_tank":"量子缸 V", - "block.gtceu.iv_rock_crusher":"§9精英碎岩机§r", - "block.gtceu.iv_rotor_holder":"§9IV§r转子支架", - "block.gtceu.iv_scanner":"§9精英扫描仪§r", - "block.gtceu.iv_sifter":"§9精英筛选机§r", - "block.gtceu.iv_substation_input_hatch_64a":"64安§9IV§r变电能源仓", - "block.gtceu.iv_substation_output_hatch_64a":"64安§9IV§r变电动力仓", - "block.gtceu.iv_thermal_centrifuge":"§9精英热力离心机§r", - "block.gtceu.iv_transformer_16a":"§9强导压§r高能变压器(§9IV§r)", - "block.gtceu.iv_transformer_1a":"§9强导压§r变压器(§9IV§r)", - "block.gtceu.iv_transformer_2a":"§9强导压§r进阶变压器(§9IV§r)", - "block.gtceu.iv_transformer_4a":"§9强导压§r高流变压器(§9IV§r)", - "block.gtceu.iv_wiremill":"§9精英线材轧机§r", - "block.gtceu.iv_world_accelerator":"§9精英世界加速器§r", - "block.gtceu.kanthal_coil_block":"坎塔尔合金线圈方块", - "block.gtceu.laminated_glass":"夹层玻璃", - "block.gtceu.lamp.tooltip.inverted":"反相", - "block.gtceu.lamp.tooltip.no_bloom":"无泛光", - "block.gtceu.lamp.tooltip.no_light":"无光照", - "block.gtceu.large_arc_smelter":"大型电弧炉", - "block.gtceu.large_assembler":"大型组装厂", - "block.gtceu.large_autoclave":"大型高压结晶室", - "block.gtceu.large_brewer":"大型酿造厂", - "block.gtceu.large_centrifuge":"大型离心机组", - "block.gtceu.large_chemical_bath":"大型化学浸洗机", - "block.gtceu.large_chemical_reactor":"大型化学反应釜", - "block.gtceu.large_circuit_assembler":"大型电路组装设施", - "block.gtceu.large_combustion_engine":"大型内燃引擎", - "block.gtceu.large_cutter":"大型切割机", - "block.gtceu.large_distillery":"大型分馏蒸馏厂", - "block.gtceu.large_duct_pipe":"大型风管", - "block.gtceu.large_electrolyzer":"大型电解槽", - "block.gtceu.large_electromagnet":"大型电磁工厂", - "block.gtceu.large_engraving_laser":"大型激光蚀刻机", - "block.gtceu.large_extractor":"大型提取机", - "block.gtceu.large_extruder":"大型压模机", - "block.gtceu.large_maceration_tower":"大型研磨塔", - "block.gtceu.large_material_press":"大型挤压机", - "block.gtceu.large_mixer":"大型搅拌罐", - "block.gtceu.large_packer":"大型打包机", - "block.gtceu.large_scale_assembler_casing":"大型组装机机械方块", - "block.gtceu.large_sifting_funnel":"大型筛选漏斗", - "block.gtceu.large_solidifier":"大型固化阵列", - "block.gtceu.large_wiremill":"大型线材工厂", - "block.gtceu.laser_hazard_sign_block":"激光危害警示方块", - "block.gtceu.laser_safe_engraving_casing":"激光安全机械方块", - "block.gtceu.light_blue_borderless_lamp":"淡蓝色无框灯", - "block.gtceu.light_blue_lamp":"淡蓝色灯", - "block.gtceu.light_blue_large_metal_sheet":"淡蓝色粗纹金属板方块", - "block.gtceu.light_blue_metal_sheet":"淡蓝色金属板方块", - "block.gtceu.light_blue_studs":"淡蓝色橡胶混凝土", - "block.gtceu.light_concrete":"淡色混凝土", - "block.gtceu.light_concrete_bricks":"淡色混凝土砖", - "block.gtceu.light_concrete_cobblestone":"淡色混凝土圆石", - "block.gtceu.light_concrete_small_tile":"淡色混凝土小片瓦", - "block.gtceu.light_concrete_tile":"淡色混凝土瓦", - "block.gtceu.light_concrete_windmill_a":"淡色混凝土风车形瓦 A", - "block.gtceu.light_concrete_windmill_b":"淡色混凝土风车形瓦 B", - "block.gtceu.light_gray_borderless_lamp":"淡灰色无框灯", - "block.gtceu.light_gray_lamp":"淡灰色灯", - "block.gtceu.light_gray_large_metal_sheet":"淡灰色粗纹金属板方块", - "block.gtceu.light_gray_metal_sheet":"淡灰色金属板方块", - "block.gtceu.light_gray_studs":"淡灰色橡胶混凝土", - "block.gtceu.lime_borderless_lamp":"黄绿色无框灯", - "block.gtceu.lime_lamp":"黄绿色灯", - "block.gtceu.lime_large_metal_sheet":"黄绿色粗纹金属板方块", - "block.gtceu.lime_metal_sheet":"黄绿色金属板方块", - "block.gtceu.lime_studs":"黄绿色橡胶混凝土", - "block.gtceu.long_distance_fluid_pipeline":"长距离流体管道", - "block.gtceu.long_distance_fluid_pipeline_endpoint":"长距离流体管道接口", - "block.gtceu.long_distance_item_pipeline":"长距离物品管道", - "block.gtceu.long_distance_item_pipeline_endpoint":"长距离物品管道接口", - "block.gtceu.long_distance_item_pipeline_input_endpoint":"输入接口", - "block.gtceu.long_distance_item_pipeline_input_pos":" - 输入:%s", - "block.gtceu.long_distance_item_pipeline_network_header":"网络:", - "block.gtceu.long_distance_item_pipeline_no_network":"找不到网络", - "block.gtceu.long_distance_item_pipeline_output_endpoint":"输出接口", - "block.gtceu.long_distance_item_pipeline_output_pos":" - 输出:%s", - "block.gtceu.long_distance_item_pipeline_pipe_count":" - 管道:%s", - "block.gtceu.lp_steam_alloy_smelter":"低压蒸汽合金炉", - "block.gtceu.lp_steam_compressor":"低压蒸汽压缩机", - "block.gtceu.lp_steam_extractor":"低压蒸汽提取机", - "block.gtceu.lp_steam_forge_hammer":"低压蒸汽锻造锤", - "block.gtceu.lp_steam_furnace":"低压蒸汽熔炉", - "block.gtceu.lp_steam_liquid_boiler":"低压蒸汽液体燃料锅炉", - "block.gtceu.lp_steam_macerator":"低压蒸汽研磨机", - "block.gtceu.lp_steam_miner":"低压蒸汽采矿机", - "block.gtceu.lp_steam_rock_crusher":"低压蒸汽碎岩机", - "block.gtceu.lp_steam_solar_boiler":"低压蒸汽太阳能锅炉", - "block.gtceu.lp_steam_solid_boiler":"低压蒸汽固体燃料锅炉", - "block.gtceu.luv_1024a_laser_source_hatch":"1024§e安§r§dLuV§r激光源仓", - "block.gtceu.luv_1024a_laser_target_hatch":"1024§e安§r§dLuV§r激光靶仓", - "block.gtceu.luv_16a_energy_converter":"16§e安§r§dLuV§r能量转换器", - "block.gtceu.luv_1a_energy_converter":"1§e安§r§dLuV§r能量转换器", - "block.gtceu.luv_256a_laser_source_hatch":"256§e安§r§dLuV§r激光源仓", - "block.gtceu.luv_256a_laser_target_hatch":"256§e安§r§dLuV§r激光靶仓", - "block.gtceu.luv_4096a_laser_source_hatch":"4096§e安§r§dLuV§r激光源仓", - "block.gtceu.luv_4096a_laser_target_hatch":"4096§e安§r§dLuV§r激光靶仓", - "block.gtceu.luv_4a_energy_converter":"4§e安§r§dLuV§r能量转换器", - "block.gtceu.luv_8a_energy_converter":"8§e安§r§dLuV§r能量转换器", - "block.gtceu.luv_alloy_smelter":"§d精英合金炉 II§r", - "block.gtceu.luv_arc_furnace":"§d精英电弧炉 II§r", - "block.gtceu.luv_assembler":"§d精英组装机 II§r", - "block.gtceu.luv_autoclave":"§d精英高压釜 II§r", - "block.gtceu.luv_battery_buffer_16x":"16x§d剧差压§r电池箱(§dLuV§r)", - "block.gtceu.luv_battery_buffer_4x":"4x§d剧差压§r电池箱(§dLuV§r)", - "block.gtceu.luv_battery_buffer_8x":"8x§d剧差压§r电池箱(§dLuV§r)", - "block.gtceu.luv_bender":"§d精英卷板机 II§r", - "block.gtceu.luv_brewery":"§d精英酿造室 II§r", - "block.gtceu.luv_canner":"§d精英装罐机 II§r", - "block.gtceu.luv_centrifuge":"§d精英离心机 II§r", - "block.gtceu.luv_charger_4x":"4x§d剧差压§r闪聚充电箱(§dLuV§r)", - "block.gtceu.luv_chemical_bath":"§d精英化学浸洗机 II§r", - "block.gtceu.luv_chemical_reactor":"§d精英化学反应釜 II§r", - "block.gtceu.luv_circuit_assembler":"§d精英电路组装机 II§r", - "block.gtceu.luv_compressor":"§d精英压缩机 II§r", - "block.gtceu.luv_cutter":"§d精英切割机 II§r", - "block.gtceu.luv_diode":"§dLuV§r二极管", - "block.gtceu.luv_distillery":"§d精英蒸馏室 II§r", - "block.gtceu.luv_dual_input_hatch":"§dLuV§r输入总成", - "block.gtceu.luv_dual_output_hatch":"§dLuV§r输出总成", - "block.gtceu.luv_electric_furnace":"§d精英电炉 II§r", - "block.gtceu.luv_electrolyzer":"§d精英电解机 II§r", - "block.gtceu.luv_electromagnetic_separator":"§d精英电磁选矿机 II§r", - "block.gtceu.luv_energy_input_hatch":"§dLuV§r能源仓", - "block.gtceu.luv_energy_input_hatch_16a":"16安§dLuV§r能源仓", - "block.gtceu.luv_energy_input_hatch_4a":"4安§dLuV§r能源仓", - "block.gtceu.luv_energy_output_hatch":"§dLuV§r动力仓", - "block.gtceu.luv_energy_output_hatch_16a":"16安§dLuV§r动力仓", - "block.gtceu.luv_energy_output_hatch_4a":"4安§dLuV§r动力仓", - "block.gtceu.luv_extractor":"§d精英提取机 II§r", - "block.gtceu.luv_extruder":"§d精英压模器 II§r", - "block.gtceu.luv_fermenter":"§d精英发酵槽 II§r", - "block.gtceu.luv_fisher":"§d精英捕鱼机 II§r", - "block.gtceu.luv_fluid_heater":"§d精英流体加热器 II§r", - "block.gtceu.luv_fluid_passthrough_hatch":"§dLuV§r流体通行仓", - "block.gtceu.luv_fluid_solidifier":"§d精英流体固化器 II§r", - "block.gtceu.luv_forge_hammer":"§d精英锻造锤 II§r", - "block.gtceu.luv_forming_press":"§d精英冲压机床 II§r", - "block.gtceu.luv_fusion_reactor":"核聚变反应堆控制电脑 MK-I", - "block.gtceu.luv_gas_collector":"§d精英集气室 II§r", - "block.gtceu.luv_hermetic_casing":"密封机械方块 VI", - "block.gtceu.luv_input_bus":"§dLuV§r输入总线", - "block.gtceu.luv_input_hatch":"§dLuV§r输入仓", - "block.gtceu.luv_input_hatch_4x":"§dLuV§r四重输入仓", - "block.gtceu.luv_input_hatch_9x":"§dLuV§r九重输入仓", - "block.gtceu.luv_item_passthrough_hatch":"§dLuV§r物品通行仓", - "block.gtceu.luv_lapotronic_battery":"兰波顿电容(§dLuV§r)", - "block.gtceu.luv_large_miner":"§d精英大型采矿机 II§r", - "block.gtceu.luv_laser_engraver":"§d精英激光蚀刻机 II§r", - "block.gtceu.luv_lathe":"§d精英车床 II§r", - "block.gtceu.luv_macerator":"§d精英研磨机 II§r", - "block.gtceu.luv_machine_casing":"§dLuV§r机械方块", - "block.gtceu.luv_machine_hull":"§dLuV§f机器外壳", - "block.gtceu.luv_mixer":"§d精英搅拌机 II§r", - "block.gtceu.luv_muffler_hatch":"§dLuV§r消声仓", - "block.gtceu.luv_ore_washer":"§d精英洗矿厂 II§r", - "block.gtceu.luv_output_bus":"§dLuV§r输出总线", - "block.gtceu.luv_output_hatch":"§dLuV§r输出仓", - "block.gtceu.luv_output_hatch_4x":"§dLuV§r四重输出仓", - "block.gtceu.luv_output_hatch_9x":"§dLuV§r九重输出仓", - "block.gtceu.luv_packer":"§d精英打包机 II§r", - "block.gtceu.luv_parallel_hatch":"§dLuV§r并行控制仓", - "block.gtceu.luv_polarizer":"§d精英两极磁化机 II§r", - "block.gtceu.luv_quantum_chest":"量子箱 VI", - "block.gtceu.luv_quantum_tank":"量子缸 VI", - "block.gtceu.luv_rock_crusher":"§d精英碎岩机 II§r", - "block.gtceu.luv_rotor_holder":"§dLuV§r转子支架", - "block.gtceu.luv_scanner":"§d精英扫描仪 II§r", - "block.gtceu.luv_sifter":"§d精英筛选机 II§r", - "block.gtceu.luv_substation_input_hatch_64a":"64安§dLuV§r变电能源仓", - "block.gtceu.luv_substation_output_hatch_64a":"64安§dLuV§r变电动力仓", - "block.gtceu.luv_thermal_centrifuge":"§d精英热力离心机 II§r", - "block.gtceu.luv_transformer_16a":"§d剧差压§r高能变压器(§dLuV§r)", - "block.gtceu.luv_transformer_1a":"§d剧差压§r变压器(§dLuV§r)", - "block.gtceu.luv_transformer_2a":"§d剧差压§r进阶变压器(§dLuV§r)", - "block.gtceu.luv_transformer_4a":"§d剧差压§r高流变压器(§dLuV§r)", - "block.gtceu.luv_wiremill":"§d精英线材轧机 II§r", - "block.gtceu.luv_world_accelerator":"§d精英世界加速器 II§r", - "block.gtceu.lv_16a_energy_converter":"16§e安§r§7LV§r能量转换器", - "block.gtceu.lv_1a_energy_converter":"1§e安§r§7LV§r能量转换器", - "block.gtceu.lv_4a_energy_converter":"4§e安§r§7LV§r能量转换器", - "block.gtceu.lv_8a_energy_converter":"8§e安§r§7LV§r能量转换器", - "block.gtceu.lv_air_scrubber":"基础空气净化器§r", - "block.gtceu.lv_alloy_smelter":"基础合金炉§r", - "block.gtceu.lv_arc_furnace":"基础电弧炉§r", - "block.gtceu.lv_assembler":"基础组装机§r", - "block.gtceu.lv_autoclave":"基础高压釜§r", - "block.gtceu.lv_battery_buffer_16x":"16x§7低压§r电池箱(§7LV§r)", - "block.gtceu.lv_battery_buffer_4x":"4x§7低压§r电池箱(§7LV§r)", - "block.gtceu.lv_battery_buffer_8x":"8x§7低压§r电池箱(§7LV§r)", - "block.gtceu.lv_bender":"基础卷板机§r", - "block.gtceu.lv_block_breaker":"基础方块破坏器§r", - "block.gtceu.lv_brewery":"基础酿造室§r", - "block.gtceu.lv_buffer":"基础缓存器§r", - "block.gtceu.lv_canner":"基础装罐机§r", - "block.gtceu.lv_centrifuge":"基础离心机§r", - "block.gtceu.lv_charger_4x":"4x§7低压§r闪聚充电箱(§7LV§r)", - "block.gtceu.lv_chemical_bath":"基础化学浸洗机§r", - "block.gtceu.lv_chemical_reactor":"基础化学反应釜§r", - "block.gtceu.lv_circuit_assembler":"基础电路组装机§r", - "block.gtceu.lv_combustion":"基础内燃发电机§r", - "block.gtceu.lv_compressor":"基础压缩机§r", - "block.gtceu.lv_cutter":"基础切割机§r", - "block.gtceu.lv_diode":"§7LV§r二极管", - "block.gtceu.lv_distillery":"基础蒸馏室§r", - "block.gtceu.lv_electric_furnace":"基础电炉§r", - "block.gtceu.lv_electrolyzer":"基础电解机§r", - "block.gtceu.lv_electromagnetic_separator":"基础电磁选矿机§r", - "block.gtceu.lv_energy_input_hatch":"§7LV§r能源仓", - "block.gtceu.lv_energy_output_hatch":"§7LV§r动力仓", - "block.gtceu.lv_extractor":"基础提取机§r", - "block.gtceu.lv_extruder":"基础压模器§r", - "block.gtceu.lv_fermenter":"基础发酵槽§r", - "block.gtceu.lv_fisher":"基础捕鱼机§r", - "block.gtceu.lv_fluid_heater":"基础流体加热器§r", - "block.gtceu.lv_fluid_passthrough_hatch":"§7LV§r流体通行仓", - "block.gtceu.lv_fluid_solidifier":"基础流体固化器§r", - "block.gtceu.lv_forge_hammer":"基础锻造锤§r", - "block.gtceu.lv_forming_press":"基础冲压机床§r", - "block.gtceu.lv_gas_collector":"基础集气室§r", - "block.gtceu.lv_gas_turbine":"基础燃气轮机§r", - "block.gtceu.lv_hermetic_casing":"密封机械方块 I", - "block.gtceu.lv_input_bus":"§7LV§r输入总线", - "block.gtceu.lv_input_hatch":"§7LV§r输入仓", - "block.gtceu.lv_item_collector":"基础物品收集器§r", - "block.gtceu.lv_item_passthrough_hatch":"§7LV§r物品通行仓", - "block.gtceu.lv_laser_engraver":"基础激光蚀刻机§r", - "block.gtceu.lv_lathe":"基础车床§r", - "block.gtceu.lv_macerator":"基础研磨机§r", - "block.gtceu.lv_machine_casing":"§7LV§r机械方块", - "block.gtceu.lv_machine_hull":"§7LV§f机器外壳", - "block.gtceu.lv_miner":"基础采矿机§r", - "block.gtceu.lv_mixer":"基础搅拌机§r", - "block.gtceu.lv_muffler_hatch":"§7LV§r消声仓", - "block.gtceu.lv_ore_washer":"基础洗矿厂§r", - "block.gtceu.lv_output_bus":"§7LV§r输出总线", - "block.gtceu.lv_output_hatch":"§7LV§r输出仓", - "block.gtceu.lv_packer":"基础打包机§r", - "block.gtceu.lv_polarizer":"基础两极磁化机§r", - "block.gtceu.lv_pump":"基础泵§r", - "block.gtceu.lv_rock_crusher":"基础碎岩机§r", - "block.gtceu.lv_scanner":"基础扫描仪§r", - "block.gtceu.lv_sifter":"基础筛选机§r", - "block.gtceu.lv_steam_turbine":"基础蒸汽轮机§r", - "block.gtceu.lv_super_chest":"超级箱 I", - "block.gtceu.lv_super_tank":"超级缸 I", - "block.gtceu.lv_thermal_centrifuge":"基础热力离心机§r", - "block.gtceu.lv_transformer_16a":"§7低压§r高能变压器(§7LV§r)", - "block.gtceu.lv_transformer_1a":"§7低压§r变压器(§7LV§r)", - "block.gtceu.lv_transformer_2a":"§7低压§r进阶变压器(§7LV§r)", - "block.gtceu.lv_transformer_4a":"§7低压§r高流变压器(§7LV§r)", - "block.gtceu.lv_wiremill":"基础线材轧机§r", - "block.gtceu.lv_world_accelerator":"基础世界加速器§r", - "block.gtceu.magenta_borderless_lamp":"品红色无框灯", - "block.gtceu.magenta_lamp":"品红色灯", - "block.gtceu.magenta_large_metal_sheet":"品红色粗纹金属板方块", - "block.gtceu.magenta_metal_sheet":"品红色金属板方块", - "block.gtceu.magenta_studs":"品红色橡胶混凝土", - "block.gtceu.magic_hazard_sign_block":"魔力危害警示方块", - "block.gtceu.magnetic_hazard_sign_block":"强磁危害警示方块", - "block.gtceu.maintenance_hatch":"维护仓", - "block.gtceu.marble":"大理岩", - "block.gtceu.marble_bricks":"大理岩砖", - "block.gtceu.marble_cobblestone":"大理岩圆石", - "block.gtceu.marble_small_tile":"大理岩小片瓦", - "block.gtceu.marble_tile":"大理岩瓦", - "block.gtceu.marble_windmill_a":"大理岩风车形瓦 A", - "block.gtceu.marble_windmill_b":"大理岩风车形瓦 B", - "block.gtceu.max_16a_energy_converter":"16§e安§r§c§lMAX§r能量转换器", - "block.gtceu.max_1a_energy_converter":"1§e安§r§c§lMAX§r能量转换器", - "block.gtceu.max_4a_energy_converter":"4§e安§r§c§lMAX§r能量转换器", - "block.gtceu.max_8a_energy_converter":"8§e安§r§c§lMAX§r能量转换器", - "block.gtceu.max_battery_buffer_16x":"16x§c上限压§r电池箱(§c§lMAX§r)", - "block.gtceu.max_battery_buffer_4x":"4x§c上限压§r电池箱(§c§lMAX§r)", - "block.gtceu.max_battery_buffer_8x":"8x§c上限压§r电池箱(§c§lMAX§r)", - "block.gtceu.max_charger_4x":"4x§c上限压§r闪聚充电箱(§c§lMAX§r)", - "block.gtceu.max_dual_input_hatch":"§c§lMAX§r输入总成", - "block.gtceu.max_dual_output_hatch":"§c§lMAX§r输出总成", - "block.gtceu.max_energy_input_hatch":"§c§lMAX§r能源仓", - "block.gtceu.max_energy_input_hatch_16a":"16安§c§lMAX§r能源仓", - "block.gtceu.max_energy_input_hatch_4a":"4安§c§lMAX§r能源仓", - "block.gtceu.max_energy_output_hatch":"§c§lMAX§r动力仓", - "block.gtceu.max_energy_output_hatch_16a":"16安§c§lMAX§r动力仓", - "block.gtceu.max_energy_output_hatch_4a":"4安§c§lMAX§r动力仓", - "block.gtceu.max_input_bus":"§c§lMAX§r输入总线", - "block.gtceu.max_input_hatch":"§c§lMAX§r输入仓", - "block.gtceu.max_input_hatch_4x":"§c§lMAX§r四重输入仓", - "block.gtceu.max_input_hatch_9x":"§c§lMAX§r九重输入仓", - "block.gtceu.max_machine_casing":"§c§lMAX§r机械方块", - "block.gtceu.max_machine_hull":"§c§lMAX§f机器外壳", - "block.gtceu.max_output_bus":"§c§lMAX§r输出总线", - "block.gtceu.max_output_hatch":"§c§lMAX§r输出仓", - "block.gtceu.max_output_hatch_4x":"§c§lMAX§r四重输出仓", - "block.gtceu.max_output_hatch_9x":"§c§lMAX§r九重输出仓", - "block.gtceu.max_substation_input_hatch_64a":"64安§c§lMAX§r变电能源仓", - "block.gtceu.max_substation_output_hatch_64a":"64安§c§lMAX§r变电动力仓", - "block.gtceu.me_input_bus":"ME输入总线", - "block.gtceu.me_input_hatch":"ME输入仓", - "block.gtceu.me_output_bus":"ME输出总线", - "block.gtceu.me_output_hatch":"ME输出仓", - "block.gtceu.me_pattern_buffer":"ME样板总成", - "block.gtceu.me_pattern_buffer_proxy":"ME样板总成镜像", - "block.gtceu.me_stocking_input_bus":"ME库存输入总线", - "block.gtceu.me_stocking_input_hatch":"ME库存输入仓", - "block.gtceu.mega_blast_furnace":"转底炉", - "block.gtceu.mega_vacuum_freezer":"巨型真空冷冻机", - "block.gtceu.miner_pipe":"采矿管道", - "block.gtceu.mob_infestation_hazard_sign_block":"怪物侵袭危害警示方块", - "block.gtceu.mob_spawner_hazard_sign_block":"刷怪笼危害警示方块", - "block.gtceu.molybdenum_disilicide_coil_block":"二硅化钼线圈方块", - "block.gtceu.mossy_dark_concrete_bricks":"覆苔深色混凝土砖", - "block.gtceu.mossy_dark_concrete_cobblestone":"覆苔深色混凝土圆石", - "block.gtceu.mossy_light_concrete_bricks":"覆苔淡色混凝土砖", - "block.gtceu.mossy_light_concrete_cobblestone":"覆苔淡色混凝土圆石", - "block.gtceu.mossy_marble_bricks":"覆苔大理岩砖", - "block.gtceu.mossy_marble_cobblestone":"覆苔大理岩圆石", - "block.gtceu.mossy_red_granite_bricks":"覆苔红花岗岩砖", - "block.gtceu.mossy_red_granite_cobblestone":"覆苔红花岗岩圆石", - "block.gtceu.multi_smelter":"工业熔炉", - "block.gtceu.mv_16a_energy_converter":"16§e安§r§bMV§r能量转换器", - "block.gtceu.mv_1a_energy_converter":"1§e安§r§bMV§r能量转换器", - "block.gtceu.mv_4a_energy_converter":"4§e安§r§bMV§r能量转换器", - "block.gtceu.mv_8a_energy_converter":"8§e安§r§bMV§r能量转换器", - "block.gtceu.mv_air_scrubber":"§b进阶空气净化器§r", - "block.gtceu.mv_alloy_smelter":"§b进阶合金炉§r", - "block.gtceu.mv_arc_furnace":"§b进阶电弧炉§r", - "block.gtceu.mv_assembler":"§b进阶组装机§r", - "block.gtceu.mv_autoclave":"§b进阶高压釜§r", - "block.gtceu.mv_battery_buffer_16x":"16x§b中压§r电池箱(§bMV§r)", - "block.gtceu.mv_battery_buffer_4x":"4x§b中压§r电池箱(§bMV§r)", - "block.gtceu.mv_battery_buffer_8x":"8x§b中压§r电池箱(§bMV§r)", - "block.gtceu.mv_bedrock_ore_miner":"§b进阶基岩采矿机§r", - "block.gtceu.mv_bender":"§b进阶卷板机§r", - "block.gtceu.mv_block_breaker":"§b进阶方块破坏器§r", - "block.gtceu.mv_brewery":"§b进阶酿造室§r", - "block.gtceu.mv_buffer":"§b进阶缓存器§r", - "block.gtceu.mv_canner":"§b进阶装罐机§r", - "block.gtceu.mv_centrifuge":"§b进阶离心机§r", - "block.gtceu.mv_charger_4x":"4x§b中压§r闪聚充电箱(§bMV§r)", - "block.gtceu.mv_chemical_bath":"§b进阶化学浸洗机§r", - "block.gtceu.mv_chemical_reactor":"§b进阶化学反应釜§r", - "block.gtceu.mv_circuit_assembler":"§b进阶电路组装机§r", - "block.gtceu.mv_combustion":"§b进阶内燃发电机§r", - "block.gtceu.mv_compressor":"§b进阶压缩机§r", - "block.gtceu.mv_cutter":"§b进阶切割机§r", - "block.gtceu.mv_diode":"§bMV§r二极管", - "block.gtceu.mv_distillery":"§b进阶蒸馏室§r", - "block.gtceu.mv_electric_furnace":"§b进阶电炉§r", - "block.gtceu.mv_electrolyzer":"§b进阶电解机§r", - "block.gtceu.mv_electromagnetic_separator":"§b进阶电磁选矿机§r", - "block.gtceu.mv_energy_input_hatch":"§bMV§r能源仓", - "block.gtceu.mv_energy_output_hatch":"§bMV§r动力仓", - "block.gtceu.mv_extractor":"§b进阶提取机§r", - "block.gtceu.mv_extruder":"§b进阶压模器§r", - "block.gtceu.mv_fermenter":"§b进阶发酵槽§r", - "block.gtceu.mv_fisher":"§b进阶捕鱼机§r", - "block.gtceu.mv_fluid_drilling_rig":"§b进阶流体钻机 §r", - "block.gtceu.mv_fluid_heater":"§b进阶流体加热器§r", - "block.gtceu.mv_fluid_passthrough_hatch":"§bMV§r流体通行仓", - "block.gtceu.mv_fluid_solidifier":"§b进阶流体固化器§r", - "block.gtceu.mv_forge_hammer":"§b进阶锻造锤§r", - "block.gtceu.mv_forming_press":"§b进阶冲压机床§r", - "block.gtceu.mv_gas_collector":"§b进阶集气室§r", - "block.gtceu.mv_gas_turbine":"§b进阶燃气轮机§r", - "block.gtceu.mv_hermetic_casing":"密封机械方块 II", - "block.gtceu.mv_input_bus":"§bMV§r输入总线", - "block.gtceu.mv_input_hatch":"§bMV§r输入仓", - "block.gtceu.mv_item_collector":"§b进阶物品收集器§r", - "block.gtceu.mv_item_passthrough_hatch":"§bMV§r物品通行仓", - "block.gtceu.mv_laser_engraver":"§b进阶激光蚀刻机§r", - "block.gtceu.mv_lathe":"§b进阶车床§r", - "block.gtceu.mv_macerator":"§b进阶研磨机§r", - "block.gtceu.mv_machine_casing":"§bMV§r机械方块", - "block.gtceu.mv_machine_hull":"§bMV§f机器外壳", - "block.gtceu.mv_miner":"§b进阶采矿机§r", - "block.gtceu.mv_mixer":"§b进阶搅拌机§r", - "block.gtceu.mv_muffler_hatch":"§bMV§r消声仓", - "block.gtceu.mv_ore_washer":"§b进阶洗矿厂§r", - "block.gtceu.mv_output_bus":"§bMV§r输出总线", - "block.gtceu.mv_output_hatch":"§bMV§r输出仓", - "block.gtceu.mv_packer":"§b进阶打包机§r", - "block.gtceu.mv_polarizer":"§b进阶两极磁化机§r", - "block.gtceu.mv_pump":"§b进阶泵§r", - "block.gtceu.mv_rock_crusher":"§b进阶碎岩机§r", - "block.gtceu.mv_scanner":"§b进阶扫描仪§r", - "block.gtceu.mv_sifter":"§b进阶筛选机§r", - "block.gtceu.mv_steam_turbine":"§b进阶蒸汽轮机§r", - "block.gtceu.mv_super_chest":"超级箱 II", - "block.gtceu.mv_super_tank":"超级缸 II", - "block.gtceu.mv_thermal_centrifuge":"§b进阶热力离心机§r", - "block.gtceu.mv_transformer_16a":"§b中压§r高能变压器(§bMV§r)", - "block.gtceu.mv_transformer_1a":"§b中压§r变压器(§bMV§r)", - "block.gtceu.mv_transformer_2a":"§b中压§r进阶变压器(§bMV§r)", - "block.gtceu.mv_transformer_4a":"§b中压§r高流变压器(§bMV§r)", - "block.gtceu.mv_wiremill":"§b进阶线材轧机§r", - "block.gtceu.mv_world_accelerator":"§b进阶世界加速器§r", - "block.gtceu.naquadah_coil_block":"硅岩线圈方块", - "block.gtceu.network_switch":"网络交换机", - "block.gtceu.nichrome_coil_block":"镍铬合金线圈方块", - "block.gtceu.noise_hazard_sign_block":"噪声危害警示方块", - "block.gtceu.nonconducting_casing":"绝缘机械方块", - "block.gtceu.normal_duct_pipe":"普通风管", - "block.gtceu.normal_laser_pipe":"普通激光管道", - "block.gtceu.normal_laser_pipe.tooltip":"§f无损§7传递能量,仅限直线摆放", - "block.gtceu.normal_optical_pipe":"光缆", - "block.gtceu.normal_optical_pipe.tooltip":"§7传递§f算力§7或§f研究数据§7", - "block.gtceu.object_holder":"物品支架", - "block.gtceu.oil_heavy":"重油", - "block.gtceu.oil_light":"轻油", - "block.gtceu.oil_medium":"原油", - "block.gtceu.opv_1024a_laser_source_hatch":"1024§e安§r§9§lOpV§r激光源仓", - "block.gtceu.opv_1024a_laser_target_hatch":"1024§e安§r§9§lOpV§r激光靶仓", - "block.gtceu.opv_16a_energy_converter":"16§e安§r§9§lOpV§r能量转换器", - "block.gtceu.opv_1a_energy_converter":"1§e安§r§9§lOpV§r能量转换器", - "block.gtceu.opv_256a_laser_source_hatch":"256§e安§r§9§lOpV§r激光源仓", - "block.gtceu.opv_256a_laser_target_hatch":"256§e安§r§9§lOpV§r激光靶仓", - "block.gtceu.opv_4096a_laser_source_hatch":"4096§e安§r§9§lOpV§r激光源仓", - "block.gtceu.opv_4096a_laser_target_hatch":"4096§e安§r§9§lOpV§r激光靶仓", - "block.gtceu.opv_4a_energy_converter":"4§e安§r§9§lOpV§r能量转换器", - "block.gtceu.opv_8a_energy_converter":"8§e安§r§9§lOpV§r能量转换器", - "block.gtceu.opv_alloy_smelter":"§9§l传奇合金炉§r", - "block.gtceu.opv_arc_furnace":"§9§l传奇电弧炉§r", - "block.gtceu.opv_assembler":"§9§l传奇组装机§r", - "block.gtceu.opv_autoclave":"§9§l传奇高压釜§r", - "block.gtceu.opv_battery_buffer_16x":"16x§9过载压§r电池箱(§9§lOpV§r)", - "block.gtceu.opv_battery_buffer_4x":"4x§9过载压§r电池箱(§9§lOpV§r)", - "block.gtceu.opv_battery_buffer_8x":"8x§9过载压§r电池箱(§9§lOpV§r)", - "block.gtceu.opv_bender":"§9§l传奇卷板机§r", - "block.gtceu.opv_brewery":"§9§l传奇酿造室§r", - "block.gtceu.opv_canner":"§9§l传奇装罐机§r", - "block.gtceu.opv_centrifuge":"§9§l传奇离心机§r", - "block.gtceu.opv_charger_4x":"4x§9过载压§r闪聚充电箱(§9§lOpV§r)", - "block.gtceu.opv_chemical_bath":"§9§l传奇化学浸洗机§r", - "block.gtceu.opv_chemical_reactor":"§9§l传奇化学反应釜§r", - "block.gtceu.opv_circuit_assembler":"§9§l传奇电路组装机§r", - "block.gtceu.opv_compressor":"§9§l传奇压缩机§r", - "block.gtceu.opv_cutter":"§9§l传奇切割机§r", - "block.gtceu.opv_diode":"§9§lOpV§r二极管", - "block.gtceu.opv_distillery":"§9§l传奇蒸馏室§r", - "block.gtceu.opv_dual_input_hatch":"§9§lOpV§r输入总成", - "block.gtceu.opv_dual_output_hatch":"§9§lOpV§r输出总成", - "block.gtceu.opv_electric_furnace":"§9§l传奇电炉§r", - "block.gtceu.opv_electrolyzer":"§9§l传奇电解机§r", - "block.gtceu.opv_electromagnetic_separator":"§9§l传奇电磁选矿机§r", - "block.gtceu.opv_energy_input_hatch":"§9§lOpV§r能源仓", - "block.gtceu.opv_energy_input_hatch_16a":"16安§9§lOpV§r能源仓", - "block.gtceu.opv_energy_input_hatch_4a":"4安§9§lOpV§r能源仓", - "block.gtceu.opv_energy_output_hatch":"§9§lOpV§r动力仓", - "block.gtceu.opv_energy_output_hatch_16a":"16安§9§lOpV§r动力仓", - "block.gtceu.opv_energy_output_hatch_4a":"4安§9§lOpV§r动力仓", - "block.gtceu.opv_extractor":"§9§l传奇提取机§r", - "block.gtceu.opv_extruder":"§9§l传奇压模器§r", - "block.gtceu.opv_fermenter":"§9§l传奇发酵槽§r", - "block.gtceu.opv_fluid_heater":"§9§l传奇流体加热器§r", - "block.gtceu.opv_fluid_passthrough_hatch":"§9§lOpV§r流体通行仓", - "block.gtceu.opv_fluid_solidifier":"§9§l传奇流体固化器§r", - "block.gtceu.opv_forge_hammer":"§9§l传奇锻造锤§r", - "block.gtceu.opv_forming_press":"§9§l传奇冲压机床§r", - "block.gtceu.opv_gas_collector":"§9§l传奇集气室§r", - "block.gtceu.opv_input_bus":"§9§lOpV§r输入总线", - "block.gtceu.opv_input_hatch":"§9§lOpV§r输入仓", - "block.gtceu.opv_input_hatch_4x":"§9§lOpV§r四重输入仓", - "block.gtceu.opv_input_hatch_9x":"§9§lOpV§r九重输入仓", - "block.gtceu.opv_item_passthrough_hatch":"§9§lOpV§r物品通行仓", - "block.gtceu.opv_laser_engraver":"§9§l传奇激光蚀刻机§r", - "block.gtceu.opv_lathe":"§9§l传奇车床§r", - "block.gtceu.opv_macerator":"§9§l传奇研磨机§r", - "block.gtceu.opv_machine_casing":"§9§lOpV§r机械方块", - "block.gtceu.opv_machine_hull":"§9§lOpV§f机器外壳", - "block.gtceu.opv_mixer":"§9§l传奇搅拌机§r", - "block.gtceu.opv_muffler_hatch":"§9§lOpV§r消声仓", - "block.gtceu.opv_ore_washer":"§9§l传奇洗矿厂§r", - "block.gtceu.opv_output_bus":"§9§lOpV§r输出总线", - "block.gtceu.opv_output_hatch":"§9§lOpV§r输出仓", - "block.gtceu.opv_output_hatch_4x":"§9§lOpV§r四重输出仓", - "block.gtceu.opv_output_hatch_9x":"§9§lOpV§r九重输出仓", - "block.gtceu.opv_packer":"§9§l传奇打包机§r", - "block.gtceu.opv_polarizer":"§9§l传奇两极磁化机§r", - "block.gtceu.opv_quantum_chest":"量子箱 XIII", - "block.gtceu.opv_quantum_tank":"量子缸 XIII", - "block.gtceu.opv_rock_crusher":"§9§l传奇碎岩机§r", - "block.gtceu.opv_rotor_holder":"§9§lOpV§r转子支架", - "block.gtceu.opv_scanner":"§9§l传奇扫描仪§r", - "block.gtceu.opv_sifter":"§9§l传奇筛选机§r", - "block.gtceu.opv_substation_input_hatch_64a":"64安§9§lOpV§r变电能源仓", - "block.gtceu.opv_substation_output_hatch_64a":"64安§9§lOpV§r变电动力仓", - "block.gtceu.opv_thermal_centrifuge":"§9§l传奇热力离心机§r", - "block.gtceu.opv_transformer_16a":"§9过载压§r高能变压器(§9OpV§r)", - "block.gtceu.opv_transformer_1a":"§9过载压§r变压器(§9OpV§r)", - "block.gtceu.opv_transformer_2a":"§9过载压§r进阶变压器(§9OpV§r)", - "block.gtceu.opv_transformer_4a":"§9过载压§r高流变压器(§9OpV§r)", - "block.gtceu.opv_wiremill":"§9§l传奇线材轧机§r", - "block.gtceu.orange_borderless_lamp":"橙色无框灯", - "block.gtceu.orange_lamp":"橙色灯", - "block.gtceu.orange_large_metal_sheet":"橙色粗纹金属板方块", - "block.gtceu.orange_metal_sheet":"橙色金属板方块", - "block.gtceu.orange_studs":"橙色橡胶混凝土", - "block.gtceu.overworld_marker":"主世界", - "block.gtceu.palladium_substation":"镀钯变电站", - "block.gtceu.pattern_buffer.desc.0":"§f对于GT多方块结构的集成式§6AE2样板供应器§f。", - "block.gtceu.pattern_buffer.desc.1":"§fAE2样板可以利用§6共享库存§f中的一切。", - "block.gtceu.pattern_buffer.desc.2":"§f使用§b闪存§f绑定§6ME样板总成镜像§f,以使机器相互连接!", - "block.gtceu.pattern_buffer_proxy.desc.0":"§f可以将单单一个§6ME样板总成§f连接到众多机器。", - "block.gtceu.pattern_buffer_proxy.desc.1":"§f所有连接的总成镜像将共享§6原始总成§f中的样板。", - "block.gtceu.pattern_buffer_proxy.desc.2":"§f让工厂蓬勃发展!", - "block.gtceu.petrified_foam":"石化建筑泡沫", - "block.gtceu.pink_borderless_lamp":"粉红色无框灯", - "block.gtceu.pink_lamp":"粉红色灯", - "block.gtceu.pink_large_metal_sheet":"粉红色粗纹金属板方块", - "block.gtceu.pink_metal_sheet":"粉红色金属板方块", - "block.gtceu.pink_studs":"粉红色橡胶混凝土", - "block.gtceu.plascrete":"塑料混凝土", - "block.gtceu.plasma_large_turbine":"大型等离子涡轮", - "block.gtceu.polished_dark_concrete":"磨制深色混凝土", - "block.gtceu.polished_light_concrete":"磨制淡色混凝土", - "block.gtceu.polished_marble":"磨制大理岩", - "block.gtceu.polished_red_granite":"磨制红花岗岩", - "block.gtceu.powderbarrel":"火药桶", - "block.gtceu.powderbarrel.drops_tooltip":"爆炸范围略大于TNT,所有被摧毁的方块都会掉落", - "block.gtceu.power_substation":"蓄能变电站", - "block.gtceu.primitive_blast_furnace":"土高炉", - "block.gtceu.primitive_pump":"原始水泵", - "block.gtceu.ptfe_pipe_casing":"聚四氟乙烯管道方块", - "block.gtceu.pump_deck":"水泵盖板", - "block.gtceu.pump_hatch":"水泵仓", - "block.gtceu.purple_borderless_lamp":"紫色无框灯", - "block.gtceu.purple_lamp":"紫色灯", - "block.gtceu.purple_large_metal_sheet":"紫色粗纹金属板方块", - "block.gtceu.purple_metal_sheet":"紫色金属板方块", - "block.gtceu.purple_studs":"紫色橡胶混凝土", - "block.gtceu.pyrolyse_oven":"热解炉", - "block.gtceu.radioactive_hazard_sign_block":"辐射危害警示方块", - "block.gtceu.reaction_safe_mixing_casing":"惰性搅拌机械方块", - "block.gtceu.red_borderless_lamp":"红色无框灯", - "block.gtceu.red_granite":"红花岗岩", - "block.gtceu.red_granite_bricks":"红花岗岩砖", - "block.gtceu.red_granite_cobblestone":"红花岗岩圆石", - "block.gtceu.red_granite_small_tile":"红花岗岩小片瓦", - "block.gtceu.red_granite_tile":"红花岗岩瓦", - "block.gtceu.red_granite_windmill_a":"红花岗岩风车形瓦 A", - "block.gtceu.red_granite_windmill_b":"红花岗岩风车形瓦 B", - "block.gtceu.red_lamp":"红色灯", - "block.gtceu.red_large_metal_sheet":"红色粗纹金属板方块", - "block.gtceu.red_metal_sheet":"红色金属板方块", - "block.gtceu.red_studs":"红色橡胶混凝土", - "block.gtceu.reinforced_foam":"强化建筑泡沫", - "block.gtceu.reinforced_stone":"防爆石", - "block.gtceu.research_station":"研究站", - "block.gtceu.reservoir_hatch":"水库仓", - "block.gtceu.robust_machine_casing":"强化钨钢机械方块", - "block.gtceu.rtm_alloy_coil_block":"钌钨钼合金线圈方块", - "block.gtceu.rubber_button":"橡胶木按钮", - "block.gtceu.rubber_door":"橡胶木门", - "block.gtceu.rubber_fence":"橡胶木栅栏", - "block.gtceu.rubber_fence_gate":"橡胶木栅栏门", - "block.gtceu.rubber_hanging_sign":"墙上的悬挂式橡胶木告示牌", - "block.gtceu.rubber_leaves":"橡胶树叶", - "block.gtceu.rubber_log":"橡胶原木", - "block.gtceu.rubber_planks":"橡胶木板", - "block.gtceu.rubber_pressure_plate":"橡胶木压力板", - "block.gtceu.rubber_sapling":"橡胶树苗", - "block.gtceu.rubber_sign":"墙上的橡胶木告示牌", - "block.gtceu.rubber_slab":"橡胶木台阶", - "block.gtceu.rubber_stairs":"橡胶木楼梯", - "block.gtceu.rubber_trapdoor":"橡胶木活板门", - "block.gtceu.rubber_wood":"橡胶木", - "block.gtceu.secure_maceration_casing":"安全研磨机械方块", - "block.gtceu.shock_proof_cutting_casing":"防震切割机械方块", - "block.gtceu.slicing_blades":"切片刀", - "block.gtceu.small_dark_concrete_bricks":"深色混凝土小块砖", - "block.gtceu.small_duct_pipe":"小型风管", - "block.gtceu.small_light_concrete_bricks":"淡色混凝土小块砖", - "block.gtceu.small_marble_bricks":"大理岩小块砖", - "block.gtceu.small_red_granite_bricks":"红花岗岩小块砖", - "block.gtceu.solid_machine_casing":"脱氧机械方块", - "block.gtceu.spatial_storage_hazard_sign_block":"空间存储危害警示方块", - "block.gtceu.square_dark_concrete_bricks":"深色混凝土方形砖", - "block.gtceu.square_light_concrete_bricks":"淡色混凝土方形砖", - "block.gtceu.square_marble_bricks":"大理岩方形砖", - "block.gtceu.square_red_granite_bricks":"红花岗岩方形砖", - "block.gtceu.stable_machine_casing":"加强钛机械方块", - "block.gtceu.stainless_evaporation_casing":"不锈钢蒸发机械方块", - "block.gtceu.stainless_steel_crate":"不锈钢板条箱", - "block.gtceu.stainless_steel_drum":"不锈钢桶", - "block.gtceu.stainless_steel_gearbox":"不锈钢齿轮箱机械方块", - "block.gtceu.stainless_steel_turbine_casing":"不锈钢涡轮机械方块", - "block.gtceu.steam_casing_bricked_bronze":"砖砌青铜外壳", - "block.gtceu.steam_casing_bricked_bronze.tooltip":"§7用来制作你的第一批蒸汽机器", - "block.gtceu.steam_casing_bricked_steel":"砖砌锻铁外壳", - "block.gtceu.steam_casing_bricked_steel.tooltip":"§7用来制作更高等级的蒸汽机器", - "block.gtceu.steam_casing_bronze":"青铜外壳", - "block.gtceu.steam_casing_bronze.tooltip":"§7用来制作你的第一批蒸汽机器", - "block.gtceu.steam_casing_steel":"钢制外壳", - "block.gtceu.steam_casing_steel.tooltip":"§7用来制作更高等级的蒸汽机器", - "block.gtceu.steam_grinder":"蒸汽碾磨机", - "block.gtceu.steam_input_bus":"蒸汽输入总线", - "block.gtceu.steam_input_hatch":"蒸汽输入仓", - "block.gtceu.steam_large_turbine":"大型蒸汽涡轮", - "block.gtceu.steam_liquid_boiler.bronze":"小型蒸汽液体燃料锅炉", - "block.gtceu.steam_machine_casing":"蒸汽机械方块", - "block.gtceu.steam_output_bus":"蒸汽输出总线", - "block.gtceu.steam_oven":"蒸汽熔炼炉", - "block.gtceu.steam_solid_boiler.bronze":"小型蒸汽固体燃料锅炉", - "block.gtceu.steel_brick_casing":"砖砌锻铁外壳", - "block.gtceu.steel_crate":"钢板条箱", - "block.gtceu.steel_drum":"钢桶", - "block.gtceu.steel_firebox_casing":"钢制燃烧室", - "block.gtceu.steel_gearbox":"钢齿轮箱机械方块", - "block.gtceu.steel_large_boiler":"大型钢锅炉", - "block.gtceu.steel_machine_casing":"脱氧钢机械方块", - "block.gtceu.steel_multiblock_tank":"钢制多方块储罐", - "block.gtceu.steel_pipe_casing":"钢管道方块", - "block.gtceu.steel_tank_valve":"钢制储罐阀门", - "block.gtceu.steel_turbine_casing":"钢涡轮机械方块", - "block.gtceu.sterilizing_filter_casing":"除菌过滤器机械方块", - "block.gtceu.stress_proof_casing":"耐压机械方块", - "block.gtceu.stripped_rubber_log":"去皮橡胶原木", - "block.gtceu.stripped_rubber_wood":"去皮橡胶木", - "block.gtceu.sturdy_machine_casing":"坚固高速钢-E机械方块", - "block.gtceu.substation_capacitor.tooltip_empty":"§7用于填补蓄能变电站的结构空隙", - "block.gtceu.substation_capacitor.tooltip_filled":"§c电池容量:§f%d EU", - "block.gtceu.superconducting_coil":"超导线圈方块", - "block.gtceu.tempered_glass":"钢化玻璃", - "block.gtceu.the_end_marker":"末地", - "block.gtceu.the_nether_marker":"下界", - "block.gtceu.titanium_crate":"钛板条箱", - "block.gtceu.titanium_drum":"钛桶", - "block.gtceu.titanium_firebox_casing":"钛燃烧室", - "block.gtceu.titanium_gearbox":"钛齿轮箱机械方块", - "block.gtceu.titanium_large_boiler":"大型钛锅炉", - "block.gtceu.titanium_pipe_casing":"钛管道方块", - "block.gtceu.titanium_turbine_casing":"钛涡轮机械方块", - "block.gtceu.treated_wood_button":"防腐木按钮", - "block.gtceu.treated_wood_door":"防腐木门", - "block.gtceu.treated_wood_fence":"防腐木栅栏", - "block.gtceu.treated_wood_fence_gate":"防腐木栅栏门", - "block.gtceu.treated_wood_hanging_sign":"墙上的悬挂式防腐木告示牌", - "block.gtceu.treated_wood_planks":"防腐木板", - "block.gtceu.treated_wood_pressure_plate":"防腐木压力板", - "block.gtceu.treated_wood_sign":"墙上的防腐木告示牌", - "block.gtceu.treated_wood_slab":"防腐木台阶", - "block.gtceu.treated_wood_stairs":"防腐木楼梯", - "block.gtceu.treated_wood_trapdoor":"防腐木活板门", - "block.gtceu.trinium_coil_block":"凯金线圈方块", - "block.gtceu.tritanium_coil_block":"三钛线圈方块", - "block.gtceu.tungsten_steel_crate":"钨钢板条箱", - "block.gtceu.tungsten_steel_drum":"钨钢桶", - "block.gtceu.tungstensteel_firebox_casing":"钨钢燃烧室", - "block.gtceu.tungstensteel_gearbox":"钨钢齿轮箱机械方块", - "block.gtceu.tungstensteel_large_boiler":"大型钨钢锅炉", - "block.gtceu.tungstensteel_pipe_casing":"钨钢管道方块", - "block.gtceu.tungstensteel_turbine_casing":"钨钢涡轮机械方块", - "block.gtceu.turret_hazard_sign_block":"炮塔危害警示方块", - "block.gtceu.uev_1024a_laser_source_hatch":"1024§e安§r§aUEV§r激光源仓", - "block.gtceu.uev_1024a_laser_target_hatch":"1024§e安§r§aUEV§r激光靶仓", - "block.gtceu.uev_16a_energy_converter":"16§e安§r§aUEV§r能量转换器", - "block.gtceu.uev_1a_energy_converter":"1§e安§r§aUEV§r能量转换器", - "block.gtceu.uev_256a_laser_source_hatch":"256§e安§r§aUEV§r激光源仓", - "block.gtceu.uev_256a_laser_target_hatch":"256§e安§r§aUEV§r激光靶仓", - "block.gtceu.uev_4096a_laser_source_hatch":"4096§e安§r§aUEV§r激光源仓", - "block.gtceu.uev_4096a_laser_target_hatch":"4096§e安§r§aUEV§r激光靶仓", - "block.gtceu.uev_4a_energy_converter":"4§e安§r§aUEV§r能量转换器", - "block.gtceu.uev_8a_energy_converter":"8§e安§r§aUEV§r能量转换器", - "block.gtceu.uev_alloy_smelter":"§a史诗合金炉 II§r", - "block.gtceu.uev_arc_furnace":"§a史诗电弧炉 II§r", - "block.gtceu.uev_assembler":"§a史诗组装机 II§r", - "block.gtceu.uev_autoclave":"§a史诗高压釜 II§r", - "block.gtceu.uev_battery_buffer_16x":"16x§a极超压§r电池箱(§aUEV§r)", - "block.gtceu.uev_battery_buffer_4x":"4x§a极超压§r电池箱(§aUEV§r)", - "block.gtceu.uev_battery_buffer_8x":"8x§a极超压§r电池箱(§aUEV§r)", - "block.gtceu.uev_bender":"§a史诗卷板机 II§r", - "block.gtceu.uev_brewery":"§a史诗酿造室 II§r", - "block.gtceu.uev_canner":"§a史诗装罐机 II§r", - "block.gtceu.uev_centrifuge":"§a史诗离心机 II§r", - "block.gtceu.uev_charger_4x":"4x§a极超压§r闪聚充电箱(§aUEV§r)", - "block.gtceu.uev_chemical_bath":"§a史诗化学浸洗机 II§r", - "block.gtceu.uev_chemical_reactor":"§a史诗化学反应釜 II§r", - "block.gtceu.uev_circuit_assembler":"§a史诗电路组装机 II§r", - "block.gtceu.uev_compressor":"§a史诗压缩机 II§r", - "block.gtceu.uev_cutter":"§a史诗切割机 II§r", - "block.gtceu.uev_diode":"§aUEV§r二极管", - "block.gtceu.uev_distillery":"§a史诗蒸馏室 II§r", - "block.gtceu.uev_dual_input_hatch":"§aUEV§r输入总成", - "block.gtceu.uev_dual_output_hatch":"§aUEV§r输出总成", - "block.gtceu.uev_electric_furnace":"§a史诗电炉 II§r", - "block.gtceu.uev_electrolyzer":"§a史诗电解机 II§r", - "block.gtceu.uev_electromagnetic_separator":"§a史诗电磁选矿机 II§r", - "block.gtceu.uev_energy_input_hatch":"§aUEV§r能源仓", - "block.gtceu.uev_energy_input_hatch_16a":"16安§aUEV§r能源仓", - "block.gtceu.uev_energy_input_hatch_4a":"4安§aUEV§r能源仓", - "block.gtceu.uev_energy_output_hatch":"§aUEV§r动力仓", - "block.gtceu.uev_energy_output_hatch_16a":"16安§aUEV§r动力仓", - "block.gtceu.uev_energy_output_hatch_4a":"4安§aUEV§r动力仓", - "block.gtceu.uev_extractor":"§a史诗提取机 II§r", - "block.gtceu.uev_extruder":"§a史诗压模器 II§r", - "block.gtceu.uev_fermenter":"§a史诗发酵槽 II§r", - "block.gtceu.uev_fluid_heater":"§a史诗流体加热器 II§r", - "block.gtceu.uev_fluid_passthrough_hatch":"§aUEV§r流体通行仓", - "block.gtceu.uev_fluid_solidifier":"§a史诗流体固化器 II§r", - "block.gtceu.uev_forge_hammer":"§a史诗锻造锤 II§r", - "block.gtceu.uev_forming_press":"§a史诗冲压机床 II§r", - "block.gtceu.uev_gas_collector":"§a史诗集气室 II§r", - "block.gtceu.uev_input_bus":"§aUEV§r输入总线", - "block.gtceu.uev_input_hatch":"§aUEV§r输入仓", - "block.gtceu.uev_input_hatch_4x":"§aUEV§r四重输入仓", - "block.gtceu.uev_input_hatch_9x":"§aUEV§r九重输入仓", - "block.gtceu.uev_item_passthrough_hatch":"§aUEV§r物品通行仓", - "block.gtceu.uev_laser_engraver":"§a史诗激光蚀刻机 II§r", - "block.gtceu.uev_lathe":"§a史诗车床 II§r", - "block.gtceu.uev_macerator":"§a史诗研磨机 II§r", - "block.gtceu.uev_machine_casing":"§aUEV§r机械方块", - "block.gtceu.uev_machine_hull":"§aUEV§f机器外壳", - "block.gtceu.uev_mixer":"§a史诗搅拌机 II§r", - "block.gtceu.uev_muffler_hatch":"§aUEV§r消声仓", - "block.gtceu.uev_ore_washer":"§a史诗洗矿厂 II§r", - "block.gtceu.uev_output_bus":"§aUEV§r输出总线", - "block.gtceu.uev_output_hatch":"§aUEV§r输出仓", - "block.gtceu.uev_output_hatch_4x":"§aUEV§r四重输出仓", - "block.gtceu.uev_output_hatch_9x":"§aUEV§r九重输出仓", - "block.gtceu.uev_packer":"§a史诗打包机 II§r", - "block.gtceu.uev_polarizer":"§a史诗两极磁化机 II§r", - "block.gtceu.uev_quantum_chest":"量子箱 X", - "block.gtceu.uev_quantum_tank":"量子缸 X", - "block.gtceu.uev_rock_crusher":"§a史诗碎岩机 II§r", - "block.gtceu.uev_rotor_holder":"§aUEV§r转子支架", - "block.gtceu.uev_scanner":"§a史诗扫描仪 II§r", - "block.gtceu.uev_sifter":"§a史诗筛选机 II§r", - "block.gtceu.uev_substation_input_hatch_64a":"64安§aUEV§r变电能源仓", - "block.gtceu.uev_substation_output_hatch_64a":"64安§aUEV§r变电动力仓", - "block.gtceu.uev_thermal_centrifuge":"§a史诗热力离心机 II§r", - "block.gtceu.uev_transformer_16a":"§a极超压§r高能变压器(§aUEV§r)", - "block.gtceu.uev_transformer_1a":"§a极超压§r变压器(§aUEV§r)", - "block.gtceu.uev_transformer_2a":"§a极超压§r进阶变压器(§aUEV§r)", - "block.gtceu.uev_transformer_4a":"§a极超压§r高流变压器(§aUEV§r)", - "block.gtceu.uev_wiremill":"§a史诗线材轧机 II§r", - "block.gtceu.uhv_1024a_laser_source_hatch":"1024§e安§r§4UHV§r激光源仓", - "block.gtceu.uhv_1024a_laser_target_hatch":"1024§e安§r§4UHV§r激光靶仓", - "block.gtceu.uhv_16a_energy_converter":"16§e安§r§4UHV§r能量转换器", - "block.gtceu.uhv_1a_energy_converter":"1§e安§r§4UHV§r能量转换器", - "block.gtceu.uhv_256a_laser_source_hatch":"256§e安§r§4UHV§r激光源仓", - "block.gtceu.uhv_256a_laser_target_hatch":"256§e安§r§4UHV§r激光靶仓", - "block.gtceu.uhv_4096a_laser_source_hatch":"4096§e安§r§4UHV§r激光源仓", - "block.gtceu.uhv_4096a_laser_target_hatch":"4096§e安§r§4UHV§r激光靶仓", - "block.gtceu.uhv_4a_energy_converter":"4§e安§r§4UHV§r能量转换器", - "block.gtceu.uhv_8a_energy_converter":"8§e安§r§4UHV§r能量转换器", - "block.gtceu.uhv_alloy_smelter":"§4史诗合金炉§r", - "block.gtceu.uhv_arc_furnace":"§4史诗电弧炉§r", - "block.gtceu.uhv_assembler":"§4史诗组装机§r", - "block.gtceu.uhv_autoclave":"§4史诗高压釜§r", - "block.gtceu.uhv_battery_buffer_16x":"16x§4极高压§r电池箱(§4UHV§r)", - "block.gtceu.uhv_battery_buffer_4x":"4x§4极高压§r电池箱(§4UHV§r)", - "block.gtceu.uhv_battery_buffer_8x":"8x§4极高压§r电池箱(§4UHV§r)", - "block.gtceu.uhv_bender":"§4史诗卷板机§r", - "block.gtceu.uhv_brewery":"§4史诗酿造室§r", - "block.gtceu.uhv_canner":"§4史诗装罐机§r", - "block.gtceu.uhv_centrifuge":"§4史诗离心机§r", - "block.gtceu.uhv_charger_4x":"4x§4极高压§r闪聚充电箱(§4UHV§r)", - "block.gtceu.uhv_chemical_bath":"§4史诗化学浸洗机§r", - "block.gtceu.uhv_chemical_reactor":"§4史诗化学反应釜§r", - "block.gtceu.uhv_circuit_assembler":"§4史诗电路组装机§r", - "block.gtceu.uhv_compressor":"§4史诗压缩机§r", - "block.gtceu.uhv_cutter":"§4史诗切割机§r", - "block.gtceu.uhv_diode":"§4UHV§r二极管", - "block.gtceu.uhv_distillery":"§4史诗蒸馏室§r", - "block.gtceu.uhv_dual_input_hatch":"§4UHV§r输入总成", - "block.gtceu.uhv_dual_output_hatch":"§4UHV§r输出总成", - "block.gtceu.uhv_electric_furnace":"§4史诗电炉§r", - "block.gtceu.uhv_electrolyzer":"§4史诗电解机§r", - "block.gtceu.uhv_electromagnetic_separator":"§4史诗电磁选矿机§r", - "block.gtceu.uhv_energy_input_hatch":"§4UHV§r能源仓", - "block.gtceu.uhv_energy_input_hatch_16a":"16安§4UHV§r能源仓", - "block.gtceu.uhv_energy_input_hatch_4a":"4安§4UHV§r能源仓", - "block.gtceu.uhv_energy_output_hatch":"§4UHV§r动力仓", - "block.gtceu.uhv_energy_output_hatch_16a":"16安§4UHV§r动力仓", - "block.gtceu.uhv_energy_output_hatch_4a":"4安§4UHV§r动力仓", - "block.gtceu.uhv_extractor":"§4史诗提取机§r", - "block.gtceu.uhv_extruder":"§4史诗压模器§r", - "block.gtceu.uhv_fermenter":"§4史诗发酵槽§r", - "block.gtceu.uhv_fluid_heater":"§4史诗流体加热器§r", - "block.gtceu.uhv_fluid_passthrough_hatch":"§4UHV§r流体通行仓", - "block.gtceu.uhv_fluid_solidifier":"§4史诗流体固化器§r", - "block.gtceu.uhv_forge_hammer":"§4史诗锻造锤§r", - "block.gtceu.uhv_forming_press":"§4史诗冲压机床§r", - "block.gtceu.uhv_gas_collector":"§4史诗集气室§r", - "block.gtceu.uhv_hermetic_casing":"密封机械方块 IX", - "block.gtceu.uhv_input_bus":"§4UHV§r输入总线", - "block.gtceu.uhv_input_hatch":"§4UHV§r输入仓", - "block.gtceu.uhv_input_hatch_4x":"§4UHV§r四重输入仓", - "block.gtceu.uhv_input_hatch_9x":"§4UHV§r九重输入仓", - "block.gtceu.uhv_item_passthrough_hatch":"§4UHV§r物品通行仓", - "block.gtceu.uhv_laser_engraver":"§4史诗激光蚀刻机§r", - "block.gtceu.uhv_lathe":"§4史诗车床§r", - "block.gtceu.uhv_macerator":"§4史诗研磨机§r", - "block.gtceu.uhv_machine_casing":"§4UHV§r机械方块", - "block.gtceu.uhv_machine_hull":"§4UHV§f机器外壳", - "block.gtceu.uhv_mixer":"§4史诗搅拌机§r", - "block.gtceu.uhv_muffler_hatch":"§4UHV§r消声仓", - "block.gtceu.uhv_ore_washer":"§4史诗洗矿厂§r", - "block.gtceu.uhv_output_bus":"§4UHV§r输出总线", - "block.gtceu.uhv_output_hatch":"§4UHV§r输出仓", - "block.gtceu.uhv_output_hatch_4x":"§4UHV§r四重输出仓", - "block.gtceu.uhv_output_hatch_9x":"§4UHV§r九重输出仓", - "block.gtceu.uhv_packer":"§4史诗打包机§r", - "block.gtceu.uhv_polarizer":"§4史诗两极磁化机§r", - "block.gtceu.uhv_quantum_chest":"量子箱 IX", - "block.gtceu.uhv_quantum_tank":"量子缸 IX", - "block.gtceu.uhv_rock_crusher":"§4史诗碎岩机§r", - "block.gtceu.uhv_rotor_holder":"§4UHV§r转子支架", - "block.gtceu.uhv_scanner":"§4史诗扫描仪 §r", - "block.gtceu.uhv_sifter":"§4史诗筛选机§r", - "block.gtceu.uhv_substation_input_hatch_64a":"64安§4UHV§r变电能源仓", - "block.gtceu.uhv_substation_output_hatch_64a":"64安§4UHV§r变电动力仓", - "block.gtceu.uhv_thermal_centrifuge":"§4史诗热力离心机§r", - "block.gtceu.uhv_transformer_16a":"§4极高压§r高能变压器(§4UHV§r)", - "block.gtceu.uhv_transformer_1a":"§4极高压§r变压器(§4UHV§r)", - "block.gtceu.uhv_transformer_2a":"§4极高压§r进阶变压器(§4UHV§r) ", - "block.gtceu.uhv_transformer_4a":"§4极高压§r高流变压器(§4UHV§r)", - "block.gtceu.uhv_ultimate_battery":"终极电容(§4UHV§r)", - "block.gtceu.uhv_wiremill":"§4史诗线材轧机§r", - "block.gtceu.uiv_1024a_laser_source_hatch":"1024§e安§r§2UIV§r激光源仓", - "block.gtceu.uiv_1024a_laser_target_hatch":"1024§e安§r§2UIV§r激光靶仓", - "block.gtceu.uiv_16a_energy_converter":"16§e安§r§2UIV§r能量转换器", - "block.gtceu.uiv_1a_energy_converter":"1§e安§r§2UIV§r能量转换器", - "block.gtceu.uiv_256a_laser_source_hatch":"256§e安§r§2UIV§r激光源仓", - "block.gtceu.uiv_256a_laser_target_hatch":"256§e安§r§2UIV§r激光靶仓", - "block.gtceu.uiv_4096a_laser_source_hatch":"4096§e安§r§2UIV§r激光源仓", - "block.gtceu.uiv_4096a_laser_target_hatch":"4096§e安§r§2UIV§r激光靶仓", - "block.gtceu.uiv_4a_energy_converter":"4§e安§r§2UIV§r能量转换器", - "block.gtceu.uiv_8a_energy_converter":"8§e安§r§2UIV§r能量转换器", - "block.gtceu.uiv_alloy_smelter":"§2史诗合金炉 III§r", - "block.gtceu.uiv_arc_furnace":"§2史诗电弧炉 III§r", - "block.gtceu.uiv_assembler":"§2史诗组装机 III§r", - "block.gtceu.uiv_autoclave":"§2史诗高压釜 III§r", - "block.gtceu.uiv_battery_buffer_16x":"16x§2极巨压§r电池箱(§2UIV§r)", - "block.gtceu.uiv_battery_buffer_4x":"4x§2极巨压§r电池箱(§2UIV§r)", - "block.gtceu.uiv_battery_buffer_8x":"8x§2极巨压§r电池箱(§2UIV§r)", - "block.gtceu.uiv_bender":"§2史诗卷板机 III§r", - "block.gtceu.uiv_brewery":"§2史诗酿造室 III§r", - "block.gtceu.uiv_canner":"§2史诗装罐机 III§r", - "block.gtceu.uiv_centrifuge":"§2史诗离心机 III§r", - "block.gtceu.uiv_charger_4x":"4x§2极巨压§r闪聚充电箱(§2UIV§r)", - "block.gtceu.uiv_chemical_bath":"§2史诗化学浸洗机 III§r", - "block.gtceu.uiv_chemical_reactor":"§2史诗化学反应釜 III§r", - "block.gtceu.uiv_circuit_assembler":"§2史诗电路组装机 III§r", - "block.gtceu.uiv_compressor":"§2史诗压缩机 III§r", - "block.gtceu.uiv_cutter":"§2史诗切割机 III§r", - "block.gtceu.uiv_diode":"§2UIV§r二极管", - "block.gtceu.uiv_distillery":"§2史诗蒸馏室 III§r", - "block.gtceu.uiv_dual_input_hatch":"§2UIV§r输入总成", - "block.gtceu.uiv_dual_output_hatch":"§2UIV§r输出总成", - "block.gtceu.uiv_electric_furnace":"§2史诗电炉 III§r", - "block.gtceu.uiv_electrolyzer":"§2史诗电解机 III§r", - "block.gtceu.uiv_electromagnetic_separator":"§2史诗电磁选矿机 III§r", - "block.gtceu.uiv_energy_input_hatch":"§2UIV§r能源仓", - "block.gtceu.uiv_energy_input_hatch_16a":"16安§2UIV§r能源仓", - "block.gtceu.uiv_energy_input_hatch_4a":"4安§2UIV§r能源仓", - "block.gtceu.uiv_energy_output_hatch":"§2UIV§r动力仓", - "block.gtceu.uiv_energy_output_hatch_16a":"16安§2UIV§r动力仓", - "block.gtceu.uiv_energy_output_hatch_4a":"4安§2UIV§r动力仓", - "block.gtceu.uiv_extractor":"§2史诗提取机 III§r", - "block.gtceu.uiv_extruder":"§2史诗压模器 III§r", - "block.gtceu.uiv_fermenter":"§2史诗发酵槽 III§r", - "block.gtceu.uiv_fluid_heater":"§2史诗流体加热器 III§r", - "block.gtceu.uiv_fluid_passthrough_hatch":"§2UIV§r流体通行仓", - "block.gtceu.uiv_fluid_solidifier":"§2史诗流体固化器 III§r", - "block.gtceu.uiv_forge_hammer":"§2史诗锻造锤 III§r", - "block.gtceu.uiv_forming_press":"§2史诗冲压机床 III§r", - "block.gtceu.uiv_gas_collector":"§2史诗集气室 III§r", - "block.gtceu.uiv_input_bus":"§2UIV§r输入总线", - "block.gtceu.uiv_input_hatch":"§2UIV§r输入仓", - "block.gtceu.uiv_input_hatch_4x":"§2UIV§r四重输入仓", - "block.gtceu.uiv_input_hatch_9x":"§2UIV§r九重输入仓", - "block.gtceu.uiv_item_passthrough_hatch":"§2UIV§r物品通行仓", - "block.gtceu.uiv_laser_engraver":"§2史诗激光蚀刻机 III§r", - "block.gtceu.uiv_lathe":"§2史诗车床 III§r", - "block.gtceu.uiv_macerator":"§2史诗研磨机 III§r", - "block.gtceu.uiv_machine_casing":"§2UIV§r机械方块", - "block.gtceu.uiv_machine_hull":"§2UIV§f机器外壳", - "block.gtceu.uiv_mixer":"§2史诗搅拌机 III§r", - "block.gtceu.uiv_muffler_hatch":"§2UIV§r消声仓", - "block.gtceu.uiv_ore_washer":"§2史诗洗矿厂 III§r", - "block.gtceu.uiv_output_bus":"§2UIV§r输出总线", - "block.gtceu.uiv_output_hatch":"§2UIV§r输出仓", - "block.gtceu.uiv_output_hatch_4x":"§2UIV§r四重输出仓", - "block.gtceu.uiv_output_hatch_9x":"§2UIV§r九重输出仓", - "block.gtceu.uiv_packer":"§2史诗打包机 III§r", - "block.gtceu.uiv_polarizer":"§2史诗两极磁化机 III§r", - "block.gtceu.uiv_quantum_chest":"量子箱 XI", - "block.gtceu.uiv_quantum_tank":"量子缸 XI", - "block.gtceu.uiv_rock_crusher":"§2史诗碎岩机 III§r", - "block.gtceu.uiv_rotor_holder":"§2UIV§r转子支架", - "block.gtceu.uiv_scanner":"§2史诗扫描仪 III§r", - "block.gtceu.uiv_sifter":"§2史诗筛选机 III§r", - "block.gtceu.uiv_substation_input_hatch_64a":"64安§2UIV§r变电能源仓", - "block.gtceu.uiv_substation_output_hatch_64a":"64安§2UIV§r变电动力仓", - "block.gtceu.uiv_thermal_centrifuge":"§2史诗热力离心机 III§r", - "block.gtceu.uiv_transformer_16a":"§2极巨压§r高能变压器(§2UIV§r)", - "block.gtceu.uiv_transformer_1a":"§2极巨压§r变压器(§2UIV§r)", - "block.gtceu.uiv_transformer_2a":"§2极巨压§r进阶变压器(§2UIV§r)", - "block.gtceu.uiv_transformer_4a":"§2极巨压§r高流变压器(§2UIV§r)", - "block.gtceu.uiv_wiremill":"§2史诗线材轧机 III§r", - "block.gtceu.ulv_16a_energy_converter":"16§e安§r§8ULV§r能量转换器", - "block.gtceu.ulv_1a_energy_converter":"1§e安§r§8ULV§r能量转换器", - "block.gtceu.ulv_4a_energy_converter":"4§e安§r§8ULV§r能量转换器", - "block.gtceu.ulv_8a_energy_converter":"8§e安§r§8ULV§r能量转换器", - "block.gtceu.ulv_battery_buffer_16x":"16x§8超低压§r电池箱(§8ULV§r)", - "block.gtceu.ulv_battery_buffer_4x":"4x§8超低压§r电池箱(§8ULV§r)", - "block.gtceu.ulv_battery_buffer_8x":"8x§8超低压§r电池箱(§8ULV§r)", - "block.gtceu.ulv_charger_4x":"4x§8超低压§r闪聚充电箱(§8ULV§r)", - "block.gtceu.ulv_energy_input_hatch":"§8ULV§r能源仓", - "block.gtceu.ulv_energy_output_hatch":"§8ULV§r动力仓", - "block.gtceu.ulv_input_bus":"§8ULV§r输入总线", - "block.gtceu.ulv_input_hatch":"§8ULV§r输入仓", - "block.gtceu.ulv_machine_casing":"§8ULV§r机械方块", - "block.gtceu.ulv_machine_hull":"§8ULV§f机器外壳", - "block.gtceu.ulv_output_bus":"§8ULV§r输出总线", - "block.gtceu.ulv_output_hatch":"§8ULV§r输出仓", - "block.gtceu.ulv_transformer_16a":"§8超低压§r高能变压器(§8ULV§r)", - "block.gtceu.ulv_transformer_1a":"§8超低压§r变压器(§8ULV§r)", - "block.gtceu.ulv_transformer_2a":"§8超低压§r进阶变压器(§8ULV§r)", - "block.gtceu.ulv_transformer_4a":"§8超低压§r高流变压器(§8ULV§r)", - "block.gtceu.uv_1024a_laser_source_hatch":"1024§e安§r§3UV§r激光源仓", - "block.gtceu.uv_1024a_laser_target_hatch":"1024§e安§r§3UV§r激光靶仓", - "block.gtceu.uv_16a_energy_converter":"16§e安§r§3UV§r能量转换器", - "block.gtceu.uv_1a_energy_converter":"1§e安§r§3UV§r能量转换器", - "block.gtceu.uv_256a_laser_source_hatch":"256§e安§r§3UV§r激光源仓", - "block.gtceu.uv_256a_laser_target_hatch":"256§e安§r§3UV§r激光靶仓", - "block.gtceu.uv_4096a_laser_source_hatch":"4096§e安§r§3UV§r激光源仓", - "block.gtceu.uv_4096a_laser_target_hatch":"4096§e安§r§3UV§r激光靶仓", - "block.gtceu.uv_4a_energy_converter":"4§e安§r§3UV§r能量转换器", - "block.gtceu.uv_8a_energy_converter":"8§e安§r§3UV§r能量转换器", - "block.gtceu.uv_alloy_smelter":"§3终极合金炉§r", - "block.gtceu.uv_arc_furnace":"§3终极电弧炉§r", - "block.gtceu.uv_assembler":"§3终极组装机§r", - "block.gtceu.uv_autoclave":"§3终极高压釜§r", - "block.gtceu.uv_battery_buffer_16x":"16x§3极限压§r电池箱(§3UV§r)", - "block.gtceu.uv_battery_buffer_4x":"4x§3极限压§r电池箱(§3UV§r)", - "block.gtceu.uv_battery_buffer_8x":"8x§3极限压§r电池箱(§3UV§r)", - "block.gtceu.uv_bender":"§3终极卷板机§r", - "block.gtceu.uv_brewery":"§3终极酿造室§r", - "block.gtceu.uv_canner":"§3终极装罐机§r", - "block.gtceu.uv_centrifuge":"§3终极离心机§r", - "block.gtceu.uv_charger_4x":"4x§3极限压§r闪聚充电箱(§3UV§r)", - "block.gtceu.uv_chemical_bath":"§3终极化学浸洗机§r", - "block.gtceu.uv_chemical_reactor":"§3终极化学反应釜§r", - "block.gtceu.uv_circuit_assembler":"§3终极电路组装机§r", - "block.gtceu.uv_compressor":"§3终极压缩机§r", - "block.gtceu.uv_cutter":"§3终极切割机§r", - "block.gtceu.uv_diode":"§3UV§r二极管", - "block.gtceu.uv_distillery":"§3终极蒸馏室§r", - "block.gtceu.uv_dual_input_hatch":"§3UV§r输入总成", - "block.gtceu.uv_dual_output_hatch":"§3UV§r输出总成", - "block.gtceu.uv_electric_furnace":"§3终极电炉§r", - "block.gtceu.uv_electrolyzer":"§3终极电解机§r", - "block.gtceu.uv_electromagnetic_separator":"§3终极电磁选矿机§r", - "block.gtceu.uv_energy_input_hatch":"§3UV§r能源仓", - "block.gtceu.uv_energy_input_hatch_16a":"16安§3UV§r能源仓", - "block.gtceu.uv_energy_input_hatch_4a":"4安§3UV§r能源仓", - "block.gtceu.uv_energy_output_hatch":"§3UV§r动力仓", - "block.gtceu.uv_energy_output_hatch_16a":"16安§3UV§r动力仓", - "block.gtceu.uv_energy_output_hatch_4a":"4安§3UV§r动力仓", - "block.gtceu.uv_extractor":"§3终极提取机§r", - "block.gtceu.uv_extruder":"§3终极压模器§r", - "block.gtceu.uv_fermenter":"§3终极发酵槽§r", - "block.gtceu.uv_fluid_heater":"§3终极流体加热器§r", - "block.gtceu.uv_fluid_passthrough_hatch":"§3UV§r流体通行仓", - "block.gtceu.uv_fluid_solidifier":"§3终极流体固化器§r", - "block.gtceu.uv_forge_hammer":"§3终极锻造锤§r", - "block.gtceu.uv_forming_press":"§3终极冲压机床§r", - "block.gtceu.uv_fusion_reactor":"核聚变反应堆控制电脑 MK-III", - "block.gtceu.uv_gas_collector":"§3终极集气室§r", - "block.gtceu.uv_hermetic_casing":"密封机械方块 VIII", - "block.gtceu.uv_input_bus":"§3UV§r输入总线", - "block.gtceu.uv_input_hatch":"§3UV§r输入仓", - "block.gtceu.uv_input_hatch_4x":"§3UV§r四重输入仓", - "block.gtceu.uv_input_hatch_9x":"§3UV§r九重输入仓", - "block.gtceu.uv_item_passthrough_hatch":"§3UV§r物品通行仓", - "block.gtceu.uv_lapotronic_battery":"兰波顿电容(§3UV§r)", - "block.gtceu.uv_laser_engraver":"§3终极激光蚀刻机§r", - "block.gtceu.uv_lathe":"§3终极车床§r", - "block.gtceu.uv_macerator":"§3终极研磨机§r", - "block.gtceu.uv_machine_casing":"§3UV§r机械方块", - "block.gtceu.uv_machine_hull":"§3UV§f机器外壳", - "block.gtceu.uv_mixer":"§3终极搅拌机§r", - "block.gtceu.uv_muffler_hatch":"§3UV§r消声仓", - "block.gtceu.uv_ore_washer":"§3终极洗矿厂§r", - "block.gtceu.uv_output_bus":"§3UV§r输出总线", - "block.gtceu.uv_output_hatch":"§3UV§r输出仓", - "block.gtceu.uv_output_hatch_4x":"§3UV§r四重输出仓", - "block.gtceu.uv_output_hatch_9x":"§3UV§r九重输出仓", - "block.gtceu.uv_packer":"§3终极打包机§r", - "block.gtceu.uv_parallel_hatch":"§3UV§r并行控制仓", - "block.gtceu.uv_polarizer":"§3终极两极磁化机§r", - "block.gtceu.uv_quantum_chest":"量子箱 VIII", - "block.gtceu.uv_quantum_tank":"量子缸 VIII", - "block.gtceu.uv_rock_crusher":"§3终极碎岩机§r", - "block.gtceu.uv_rotor_holder":"§3UV§r转子支架", - "block.gtceu.uv_scanner":"§3终极扫描仪§r", - "block.gtceu.uv_sifter":"§3终极筛选机§r", - "block.gtceu.uv_substation_input_hatch_64a":"64安§3UV§r变电能源仓", - "block.gtceu.uv_substation_output_hatch_64a":"64安§3UV§r变电动力仓", - "block.gtceu.uv_thermal_centrifuge":"§3终极热力离心机§r", - "block.gtceu.uv_transformer_16a":"§3极限压§r高能变压器(§3UV§r)", - "block.gtceu.uv_transformer_1a":"§3极限压§r变压器(§3UV§r)", - "block.gtceu.uv_transformer_2a":"§3极限压§r进阶变压器(§3UV§r)", - "block.gtceu.uv_transformer_4a":"§3极限压§r高流变压器(§3UV§r)", - "block.gtceu.uv_wiremill":"§3终极线材轧机§r", - "block.gtceu.uv_world_accelerator":"§3终极世界加速器§r", - "block.gtceu.uxv_1024a_laser_source_hatch":"1024§e安§r§eUXV§r激光源仓", - "block.gtceu.uxv_1024a_laser_target_hatch":"1024§e安§r§eUXV§r激光靶仓", - "block.gtceu.uxv_16a_energy_converter":"16§e安§r§eUXV§r能量转换器", - "block.gtceu.uxv_1a_energy_converter":"1§e安§r§eUXV§r能量转换器", - "block.gtceu.uxv_256a_laser_source_hatch":"256§e安§r§eUXV§r激光源仓", - "block.gtceu.uxv_256a_laser_target_hatch":"256§e安§r§eUXV§r激光靶仓", - "block.gtceu.uxv_4096a_laser_source_hatch":"4096§e安§r§eUXV§r激光源仓", - "block.gtceu.uxv_4096a_laser_target_hatch":"4096§e安§r§eUXV§r激光靶仓", - "block.gtceu.uxv_4a_energy_converter":"4§e安§r§eUXV§r能量转换器", - "block.gtceu.uxv_8a_energy_converter":"8§e安§r§eUXV§r能量转换器", - "block.gtceu.uxv_alloy_smelter":"§e史诗合金炉 IV§r", - "block.gtceu.uxv_arc_furnace":"§e史诗电弧炉 IV§r", - "block.gtceu.uxv_assembler":"§e史诗组装机 IV§r", - "block.gtceu.uxv_autoclave":"§e史诗高压釜 IV§r", - "block.gtceu.uxv_battery_buffer_16x":"16x§e极顶压§r电池箱(§eUXV§r)", - "block.gtceu.uxv_battery_buffer_4x":"4x§e极顶压§r电池箱(§eUXV§r)", - "block.gtceu.uxv_battery_buffer_8x":"8x§e极顶压§r电池箱(§eUXV§r)", - "block.gtceu.uxv_bender":"§e史诗卷板机 IV§r", - "block.gtceu.uxv_brewery":"§e史诗酿造室 IV§r", - "block.gtceu.uxv_canner":"§e史诗装罐机 IV§r", - "block.gtceu.uxv_centrifuge":"§e史诗离心机 IV§r", - "block.gtceu.uxv_charger_4x":"4x§e极顶压§r闪聚充电箱(§eUXV§r)", - "block.gtceu.uxv_chemical_bath":"§e史诗化学浸洗机 IV§r", - "block.gtceu.uxv_chemical_reactor":"§e史诗化学反应釜 IV§r", - "block.gtceu.uxv_circuit_assembler":"§e史诗电路组装机 IV§r", - "block.gtceu.uxv_compressor":"§e史诗压缩机 IV§r", - "block.gtceu.uxv_cutter":"§e史诗切割机 IV§r", - "block.gtceu.uxv_diode":"§eUXV§r二极管", - "block.gtceu.uxv_distillery":"§e史诗蒸馏室 IV§r", - "block.gtceu.uxv_dual_input_hatch":"§eUXV§r输入总成", - "block.gtceu.uxv_dual_output_hatch":"§eUXV§r输出总成", - "block.gtceu.uxv_electric_furnace":"§e史诗电炉 IV§r", - "block.gtceu.uxv_electrolyzer":"§e史诗电解机 IV§r", - "block.gtceu.uxv_electromagnetic_separator":"§e史诗电磁选矿机 IV§r", - "block.gtceu.uxv_energy_input_hatch":"§eUXV§r能源仓", - "block.gtceu.uxv_energy_input_hatch_16a":"16安§eUXV§r能源仓", - "block.gtceu.uxv_energy_input_hatch_4a":"4安§eUXV§r能源仓", - "block.gtceu.uxv_energy_output_hatch":"§eUXV§r动力仓", - "block.gtceu.uxv_energy_output_hatch_16a":"16安§eUXV§r动力仓", - "block.gtceu.uxv_energy_output_hatch_4a":"4安§eUXV§r动力仓", - "block.gtceu.uxv_extractor":"§e史诗提取机 IV§r", - "block.gtceu.uxv_extruder":"§e史诗压模器 IV§r", - "block.gtceu.uxv_fermenter":"§e史诗发酵槽 IV§r", - "block.gtceu.uxv_fluid_heater":"§e史诗流体加热器 IV§r", - "block.gtceu.uxv_fluid_passthrough_hatch":"§eUXV§r流体通行仓", - "block.gtceu.uxv_fluid_solidifier":"§e史诗流体固化器 IV§r", - "block.gtceu.uxv_forge_hammer":"§e史诗锻造锤 IV§r", - "block.gtceu.uxv_forming_press":"§e史诗冲压机床 IV§r", - "block.gtceu.uxv_gas_collector":"§e史诗集气室 IV§r", - "block.gtceu.uxv_input_bus":"§eUXV§r输入总线", - "block.gtceu.uxv_input_hatch":"§eUXV§r输入仓", - "block.gtceu.uxv_input_hatch_4x":"§eUXV§r四重输入仓", - "block.gtceu.uxv_input_hatch_9x":"§eUXV§r九重输入仓", - "block.gtceu.uxv_item_passthrough_hatch":"§eUXV§r物品通行仓", - "block.gtceu.uxv_laser_engraver":"§e史诗激光蚀刻机 IV§r", - "block.gtceu.uxv_lathe":"§e史诗车床 IV§r", - "block.gtceu.uxv_macerator":"§e史诗研磨机 IV§r", - "block.gtceu.uxv_machine_casing":"§eUXV§r机械方块", - "block.gtceu.uxv_machine_hull":"§eUXV§f机器外壳", - "block.gtceu.uxv_mixer":"§e史诗搅拌机 IV§r", - "block.gtceu.uxv_muffler_hatch":"§eUXV§r消声仓", - "block.gtceu.uxv_ore_washer":"§e史诗洗矿厂 IV§r", - "block.gtceu.uxv_output_bus":"§eUXV§r输出总线", - "block.gtceu.uxv_output_hatch":"§eUXV§r输出仓", - "block.gtceu.uxv_output_hatch_4x":"§eUXV§r四重输出仓", - "block.gtceu.uxv_output_hatch_9x":"§eUXV§r九重输出仓", - "block.gtceu.uxv_packer":"§e史诗打包机 IV§r", - "block.gtceu.uxv_polarizer":"§e史诗两极磁化机 IV§r", - "block.gtceu.uxv_quantum_chest":"量子箱 XII", - "block.gtceu.uxv_quantum_tank":"量子缸 XII", - "block.gtceu.uxv_rock_crusher":"§e史诗碎岩机 IV§r", - "block.gtceu.uxv_rotor_holder":"§eUXV§r转子支架", - "block.gtceu.uxv_scanner":"§e史诗扫描仪 IV§r", - "block.gtceu.uxv_sifter":"§e史诗筛选机 IV§r", - "block.gtceu.uxv_substation_input_hatch_64a":"64安§eUXV§r变电能源仓", - "block.gtceu.uxv_substation_output_hatch_64a":"64安§eUXV§r变电动力仓", - "block.gtceu.uxv_thermal_centrifuge":"§e史诗热力离心机 IV§r", - "block.gtceu.uxv_transformer_16a":"§e极顶压§r高能变压器(§eUXV§r)", - "block.gtceu.uxv_transformer_1a":"§e极顶压§r变压器(§eUXV§r)", - "block.gtceu.uxv_transformer_2a":"§e极顶压§r进阶变压器(§eUXV§r)", - "block.gtceu.uxv_transformer_4a":"§e极顶压§r高流变压器(§eUXV§r)", - "block.gtceu.uxv_wiremill":"§e史诗线材轧机 IV§r", - "block.gtceu.vacuum_freezer":"真空冷冻机", - "block.gtceu.vibration_safe_casing":"防震机械方块", - "block.gtceu.void_hazard_sign_block":"虚空危害警示方块", - "block.gtceu.watertight_casing":"防水机械方块", - "block.gtceu.white_borderless_lamp":"白色无框灯", - "block.gtceu.white_lamp":"白色灯", - "block.gtceu.white_large_metal_sheet":"白色粗纹金属板方块", - "block.gtceu.white_metal_sheet":"白色金属板方块", - "block.gtceu.white_studs":"白色橡胶混凝土", - "block.gtceu.wire_coil.tooltip_cracking":"§8裂化机:", - "block.gtceu.wire_coil.tooltip_energy_cracking":"§a耗能:§f%s%%", - "block.gtceu.wire_coil.tooltip_energy_smelter":"§a耗能:§8每配方§f%s EU/t", - "block.gtceu.wire_coil.tooltip_extended_info":"§7按住§6SHIFT§7获得更多线圈信息", - "block.gtceu.wire_coil.tooltip_heat":"§c基础热容:§f%d K", - "block.gtceu.wire_coil.tooltip_parallel_smelter":"§5最大并行:§f%s", - "block.gtceu.wire_coil.tooltip_pyro":"§8热解炉:", - "block.gtceu.wire_coil.tooltip_smelter":"§8工业熔炉:", - "block.gtceu.wire_coil.tooltip_speed_pyro":"§b处理速度:§f%s%%", - "block.gtceu.wood_crate":"木板条箱", - "block.gtceu.wood_drum":"木桶", - "block.gtceu.wood_wall":"木壁", - "block.gtceu.wooden_multiblock_tank":"木制多方块储罐", - "block.gtceu.wooden_tank_valve":"木制储罐阀门", - "block.gtceu.yellow_borderless_lamp":"黄色无框灯", - "block.gtceu.yellow_lamp":"黄色灯", - "block.gtceu.yellow_large_metal_sheet":"黄色粗纹金属板方块", - "block.gtceu.yellow_metal_sheet":"黄色金属板方块", - "block.gtceu.yellow_stripes_block.a":"黄色路障方块", - "block.gtceu.yellow_stripes_block.b":"黄色路障方块", - "block.gtceu.yellow_stripes_block.c":"黄色路障方块", - "block.gtceu.yellow_stripes_block.d":"黄色路障方块", - "block.gtceu.yellow_stripes_block_a":"黄色路障方块A", - "block.gtceu.yellow_stripes_block_b":"黄色路障方块B", - "block.gtceu.yellow_studs":"黄色橡胶混凝土", - "block.gtceu.zpm_1024a_laser_source_hatch":"1024§e安§r§cZPM§r激光源仓", - "block.gtceu.zpm_1024a_laser_target_hatch":"1024§e安§r§cZPM§r激光靶仓", - "block.gtceu.zpm_16a_energy_converter":"16§e安§r§cZPM§r能量转换器", - "block.gtceu.zpm_1a_energy_converter":"1§e安§r§cZPM§r能量转换器", - "block.gtceu.zpm_256a_laser_source_hatch":"256§e安§r§cZPM§r激光源仓", - "block.gtceu.zpm_256a_laser_target_hatch":"256§e安§r§cZPM§r激光靶仓", - "block.gtceu.zpm_4096a_laser_source_hatch":"4096§e安§r§cZPM§r激光源仓", - "block.gtceu.zpm_4096a_laser_target_hatch":"4096§e安§r§cZPM§r激光靶仓", - "block.gtceu.zpm_4a_energy_converter":"4§e安§r§cZPM§r能量转换器", - "block.gtceu.zpm_8a_energy_converter":"8§e安§r§cZPM§r能量转换器", - "block.gtceu.zpm_alloy_smelter":"§c精英合金炉 III§r", - "block.gtceu.zpm_arc_furnace":"§c精英电弧炉 III§r", - "block.gtceu.zpm_assembler":"§c精英组装机 III§r", - "block.gtceu.zpm_autoclave":"§c精英高压釜 III§r", - "block.gtceu.zpm_battery_buffer_16x":"16x§c零点压§r电池箱(§cZPM§r)", - "block.gtceu.zpm_battery_buffer_4x":"4x§c零点压§r电池箱(§cZPM§r)", - "block.gtceu.zpm_battery_buffer_8x":"8x§c零点压§r电池箱(§cZPM§r)", - "block.gtceu.zpm_bender":"§c精英卷板机 III§r", - "block.gtceu.zpm_brewery":"§c精英酿造室 III§r", - "block.gtceu.zpm_canner":"§c精英装罐机 III§r", - "block.gtceu.zpm_centrifuge":"§c精英离心机 III§r", - "block.gtceu.zpm_charger_4x":"4x§c零点压§r闪聚充电箱(§cZPM§r)", - "block.gtceu.zpm_chemical_bath":"§c精英化学浸洗机 III§r", - "block.gtceu.zpm_chemical_reactor":"§c精英化学反应釜 III§r", - "block.gtceu.zpm_circuit_assembler":"§c精英电路组装机 III§r", - "block.gtceu.zpm_compressor":"§c精英压缩机 III§r", - "block.gtceu.zpm_cutter":"§c精英切割机 III§r", - "block.gtceu.zpm_diode":"§cZPM§r二极管", - "block.gtceu.zpm_distillery":"§c精英蒸馏室 III§r", - "block.gtceu.zpm_dual_input_hatch":"§cZPM§r输入总成", - "block.gtceu.zpm_dual_output_hatch":"§cZPM§r输出总成", - "block.gtceu.zpm_electric_furnace":"§c精英电炉 III§r", - "block.gtceu.zpm_electrolyzer":"§c精英电解机 III§r", - "block.gtceu.zpm_electromagnetic_separator":"§c精英电磁选矿机 III§r", - "block.gtceu.zpm_energy_input_hatch":"§cZPM§r能源仓", - "block.gtceu.zpm_energy_input_hatch_16a":"16安§cZPM§r能源仓", - "block.gtceu.zpm_energy_input_hatch_4a":"4安§cZPM§r能源仓", - "block.gtceu.zpm_energy_output_hatch":"§cZPM§r动力仓", - "block.gtceu.zpm_energy_output_hatch_16a":"16安§cZPM§r动力仓", - "block.gtceu.zpm_energy_output_hatch_4a":"4安§cZPM§r动力仓", - "block.gtceu.zpm_extractor":"§c精英提取机 III§r", - "block.gtceu.zpm_extruder":"§c精英压模器 III§r", - "block.gtceu.zpm_fermenter":"§c精英发酵槽 III§r", - "block.gtceu.zpm_fluid_heater":"§c精英流体加热器 III§r", - "block.gtceu.zpm_fluid_passthrough_hatch":"§cZPM§r流体通行仓", - "block.gtceu.zpm_fluid_solidifier":"§c精英流体固化器 III§r", - "block.gtceu.zpm_forge_hammer":"§c精英锻造锤 III§r", - "block.gtceu.zpm_forming_press":"§c精英冲压机床 III§r", - "block.gtceu.zpm_fusion_reactor":"核聚变反应堆控制电脑 MK-II", - "block.gtceu.zpm_gas_collector":"§c精英集气室 III§r", - "block.gtceu.zpm_hermetic_casing":"密封机械方块 VII", - "block.gtceu.zpm_input_bus":"§cZPM§r输入总线", - "block.gtceu.zpm_input_hatch":"§cZPM§r输入仓", - "block.gtceu.zpm_input_hatch_4x":"§cZPM§r四重输入仓", - "block.gtceu.zpm_input_hatch_9x":"§cZPM§r九重输入仓", - "block.gtceu.zpm_item_passthrough_hatch":"§cZPM§r物品通行仓", - "block.gtceu.zpm_lapotronic_battery":"兰波顿电容(§cZPM§r)", - "block.gtceu.zpm_laser_engraver":"§c精英激光蚀刻机 III§r", - "block.gtceu.zpm_lathe":"§c精英车床 III§r", - "block.gtceu.zpm_macerator":"§c精英研磨机 III§r", - "block.gtceu.zpm_machine_casing":"§cZPM§r机械方块", - "block.gtceu.zpm_machine_hull":"§cZPM§f机器外壳", - "block.gtceu.zpm_mixer":"§c精英搅拌机 III§r", - "block.gtceu.zpm_muffler_hatch":"§cZPM§r消声仓", - "block.gtceu.zpm_ore_washer":"§c精英洗矿厂 III§r", - "block.gtceu.zpm_output_bus":"§cZPM§r输出总线", - "block.gtceu.zpm_output_hatch":"§cZPM§r输出仓", - "block.gtceu.zpm_output_hatch_4x":"§cZPM§r四重输出仓", - "block.gtceu.zpm_output_hatch_9x":"§cZPM§r九重输出仓", - "block.gtceu.zpm_packer":"§c精英打包机 III§r", - "block.gtceu.zpm_parallel_hatch":"§cZPM§r并行控制仓", - "block.gtceu.zpm_polarizer":"§c精英两极磁化机 III§r", - "block.gtceu.zpm_quantum_chest":"量子箱 VII", - "block.gtceu.zpm_quantum_tank":"量子缸 VII", - "block.gtceu.zpm_rock_crusher":"§c精英碎岩机 III§r", - "block.gtceu.zpm_rotor_holder":"§cZPM§r转子支架", - "block.gtceu.zpm_scanner":"§c精英扫描仪III§r", - "block.gtceu.zpm_sifter":"§c精英筛选机 III§r", - "block.gtceu.zpm_substation_input_hatch_64a":"64安§cZPM§r变电能源仓", - "block.gtceu.zpm_substation_output_hatch_64a":"64安§cZPM§r变电动力仓", - "block.gtceu.zpm_thermal_centrifuge":"§c精英热力离心机 III§r", - "block.gtceu.zpm_transformer_16a":"§c零点压§r高能变压器(§cZPM§r)", - "block.gtceu.zpm_transformer_1a":"§c零点压§r变压器(§cZPM§r)", - "block.gtceu.zpm_transformer_2a":"§c零点压§r进阶变压器(§cZPM§r)", - "block.gtceu.zpm_transformer_4a":"§c零点压§r高流变压器(§cZPM§r)", - "block.gtceu.zpm_wiremill":"§c精英线材轧机 III§r", - "block.gtceu.zpm_world_accelerator":"§c精英世界加速器 III§r", - "block.sterilizing_filter_casing.tooltip":"创造一个§a无菌§r环境", - "block.surface_rock":"地表岩石(%s)", - "button.gtceu.mark_as_depleted.name":"标记为枯竭", - "button.gtceu.toggle_waypoint.name":"切换路径点", - "command.gtceu.dump_data.success":"已将注册表%2$s中的%1$s个资源转储到%3$s", - "command.gtceu.medical_condition.get":"玩家%s有以下疾病:", - "command.gtceu.medical_condition.get.element":"症状【%s】§r:%s分%s秒", - "command.gtceu.medical_condition.get.element.permanent":"症状【%s】§r:%s分%s秒(永久)", - "command.gtceu.medical_condition.get.empty":"玩家%s没有疾病。", - "command.gtceu.place_vein.failure":"无法放置%s矿脉于%s", - "command.gtceu.place_vein.success":"成功放置%s矿脉于%s", - "command.gtceu.share_prospection_data.notification":"%s向你分享了矿脉数据!", - "config.gtceu.option.addLoot":"添加战利品", - "config.gtceu.option.ae2":"ae2", - "config.gtceu.option.allUniqueStoneTypes":"所有独特石头类型", - "config.gtceu.option.animationTime":"动画时间", - "config.gtceu.option.armorHud":"盔甲HUD", - "config.gtceu.option.bedrockOreDistance":"基岩矿石距离", - "config.gtceu.option.bedrockOreDropTagPrefix":"基岩矿石掉落Tag", - "config.gtceu.option.borderColor":"边框颜色", - "config.gtceu.option.bronzeBoilerHeatSpeed":"青铜锅炉-加热速度", - "config.gtceu.option.bronzeBoilerMaxTemperature":"青铜锅炉-最高温度", - "config.gtceu.option.buttonAnchor":"按钮位置", - "config.gtceu.option.casingsPerCraft":"每次合成机械方块数量", - "config.gtceu.option.cleanMultiblocks":"多方块结构是否洁净", - "config.gtceu.option.client":"客户端", - "config.gtceu.option.compat":"兼容", - "config.gtceu.option.debug":"调试", - "config.gtceu.option.debugWorldgen":"矿石位置Debug模式", - "config.gtceu.option.defaultPaintingColor":"机器默认喷漆颜色", - "config.gtceu.option.defaultUIColor":"默认UI颜色", - "config.gtceu.option.dev":"开发", - "config.gtceu.option.direction":"方向", - "config.gtceu.option.disableManualCompression":"关闭手工压缩", - "config.gtceu.option.doBedrockOres":"添加基岩矿石", - "config.gtceu.option.doSuperflatOres":"超平坦世界生成矿石", - "config.gtceu.option.doesExplosionDamagesTerrain":"机器爆炸是否破坏地形", - "config.gtceu.option.dumpAssets":"导出资源", - "config.gtceu.option.dumpRecipes":"导出配方", - "config.gtceu.option.enableCleanroom":"启用超净间", - "config.gtceu.option.enableFEConverters":"启用FE转换器", - "config.gtceu.option.enableMaintenance":"启用维护仓", - "config.gtceu.option.enableResearch":"启用研究", - "config.gtceu.option.enableTieredCasings":"启用分级机械方块", - "config.gtceu.option.enableWorldAccelerators":"启用世界加速器", - "config.gtceu.option.enchantedTools":"附魔工具", - "config.gtceu.option.energy":"能量", - "config.gtceu.option.energyConsumption":"能耗", - "config.gtceu.option.energyUsageMultiplier":"能源消耗倍率", - "config.gtceu.option.environmentalHazardDecayRate":"环境污染衰减速率", - "config.gtceu.option.environmentalHazards":"环境污染", - "config.gtceu.option.euToFeRatio":"GTEU到FE的转换比例", - "config.gtceu.option.feToEuRatio":"FE到GTEU的转换比例", - "config.gtceu.option.flintAndSteelRequireSteel":"打火石配方是否需要钢", - "config.gtceu.option.ftbChunksIntegration":"FTB区块-集成", - "config.gtceu.option.gameplay":"游戏玩法", - "config.gtceu.option.generateLowQualityGems":"生成劣质宝石", - "config.gtceu.option.ghostCircuit":"虚拟电路", - "config.gtceu.option.gt6StylePipesCables":"类GT6管道/线缆", - "config.gtceu.option.hardAdvancedIronRecipes":"更难的高级铁制品配方", - "config.gtceu.option.hardDyeRecipes":"更难的染料配方", - "config.gtceu.option.hardGlassRecipes":"更难的玻璃配方", - "config.gtceu.option.hardIronRecipes":"更难的铁制品配方", - "config.gtceu.option.hardMiscRecipes":"更难的杂项配方", - "config.gtceu.option.hardMultiRecipes":"更难的多方块控制器配方", - "config.gtceu.option.hardRedstoneRecipes":"更难的红石配方", - "config.gtceu.option.hardToolArmorRecipes":"更难的工具盔甲配方", - "config.gtceu.option.hardWoodRecipes":"更难的木头配方", - "config.gtceu.option.harderBrickRecipes":"更难的砖块配方", - "config.gtceu.option.harderCharcoalRecipe":"更难的木炭配方", - "config.gtceu.option.harderCircuitRecipes":"更难的电路板配方", - "config.gtceu.option.harderRods":"更难的杆配方", - "config.gtceu.option.harmlessActiveTransformers":"无害的有源变压器", - "config.gtceu.option.hazardsEnabled":"启用危险物质", - "config.gtceu.option.hideFacadesInRecipeViewer":"配方浏览器中隐藏伪装板", - "config.gtceu.option.hideFilledCellsInRecipeViewer":"配方浏览器中隐藏装满的单元", - "config.gtceu.option.hideOreProcessingDiagrams":"隐藏矿物处理流程图", - "config.gtceu.option.highTierContent":"极高电压内容", - "config.gtceu.option.hpLiquidBoilerBaseOutput":"高压液体锅炉-基础输出", - "config.gtceu.option.hpSolarBoilerBaseOutput":"高压太阳能锅炉-基础输出", - "config.gtceu.option.hpSolidBoilerBaseOutput":"高压固体锅炉-基础输出", - "config.gtceu.option.hudLocation":"HUD位置", - "config.gtceu.option.hudOffsetX":"HUD偏移X", - "config.gtceu.option.hudOffsetY":"HUD偏移Y", - "config.gtceu.option.inWorldPreviewDuration":"世界中预览时长", - "config.gtceu.option.increaseDungeonLoot":"更多的地牢战利品", - "config.gtceu.option.infiniteBedrockOresFluids":"无限基岩矿石流体", - "config.gtceu.option.journeyMapIntegration":"旅行地图-集成", - "config.gtceu.option.largeBoilers":"大型锅炉", - "config.gtceu.option.ldFluidPipeMinDistance":"长距流体管道最小距离", - "config.gtceu.option.ldItemPipeMinDistance":"长距物品管道最小距离", - "config.gtceu.option.liquidBoilerBaseOutput":"液体锅炉-基础输出", - "config.gtceu.option.machineSounds":"机器音效", - "config.gtceu.option.machines":"机器", - "config.gtceu.option.machinesEmissiveTextures":"启用机器泛光纹理", - "config.gtceu.option.meHatchEnergyUsage":"ME仓能耗", - "config.gtceu.option.minerSpeed":"采矿机速度", - "config.gtceu.option.minimap":"小地图", - "config.gtceu.option.nanoSaber":"纳米剑", - "config.gtceu.option.nanoSaberBaseDamage":"纳米剑基础伤害", - "config.gtceu.option.nanoSaberDamageBoost":"纳米剑伤害增幅", - "config.gtceu.option.nativeEUToFE":"线缆直接给FE机器供能", - "config.gtceu.option.nerfPaperCrafting":"削弱纸配方", - "config.gtceu.option.nerfWoodCrafting":"削弱木板木棍合成", - "config.gtceu.option.onlyOwnerBreak":"仅所有者可破坏", - "config.gtceu.option.onlyOwnerGUI":"仅所有者可开启GUI", - "config.gtceu.option.orderedAssemblyLineFluids":"有序的装配线-流体", - "config.gtceu.option.orderedAssemblyLineItems":"有序的装配线-物品", - "config.gtceu.option.oreBlockProspectRange":"矿石方块探测半径", - "config.gtceu.option.oreGenerationChunkCacheSize":"矿物生成区块缓存大小", - "config.gtceu.option.oreIconSize":"矿石图标大小", - "config.gtceu.option.oreIndicatorChunkCacheSize":"矿脉指示物区块缓存大小", - "config.gtceu.option.oreIndicators":"矿脉指示物", - "config.gtceu.option.oreNamePrefix":"矿石名称前缀", - "config.gtceu.option.oreScaleStop":"最大图标缩放比例", - "config.gtceu.option.oreVeinGridSize":"矿脉网格大小", - "config.gtceu.option.oreVeinRandomOffset":"矿脉随机偏移", - "config.gtceu.option.oreVeins":"矿脉", - "config.gtceu.option.ownerOPBypass":"跳过所有权检查的最低权限等级", - "config.gtceu.option.prospectorEnergyUseMultiplier":"探矿仪能源消耗乘数", - "config.gtceu.option.recipeProgressLowEnergy":"跳电时,机器进度将", - "config.gtceu.option.recipes":"配方", - "config.gtceu.option.removeSmeltingForEBFMetals":"移除需要电力高炉冶炼的金属的熔炉配方", - "config.gtceu.option.removeVanillaBlockRecipes":"移除原版方块配方", - "config.gtceu.option.removeVanillaLargeOreVeins":"移除原版大型矿脉", - "config.gtceu.option.removeVanillaOreGen":"移除原版矿石", - "config.gtceu.option.removeVanillaTNTRecipe":"移除原版TNT配方", - "config.gtceu.option.renderFluids":"渲染流体", - "config.gtceu.option.renderer":"渲染器", - "config.gtceu.option.replaceMinedBlocksWith":"用...替换采矿机采过的方块", - "config.gtceu.option.requireGTToolsForBlocks":"方块需要格雷工具", - "config.gtceu.option.rngDamageElectricTools":"电动工具耐久度消耗概率", - "config.gtceu.option.rubberTreeSpawnChance":"橡胶树生成权重", - "config.gtceu.option.sandOresFall":"沙子矿石受重力吗", - "config.gtceu.option.shouldWeatherOrTerrainExplosion":"机器是否因天气或地形爆炸", - "config.gtceu.option.showDimensionTier":"显示维度等级", - "config.gtceu.option.smallBoilers":"小型锅炉", - "config.gtceu.option.solarBoilerBaseOutput":"太阳能锅炉-基础输出", - "config.gtceu.option.solidBoilerBaseOutput":"固体锅炉-基础输出", - "config.gtceu.option.sprayCanChainLength":"喷雾罐单次可喷涂长度", - "config.gtceu.option.steamMultiParallelAmount":"蒸汽多方块机器并行数", - "config.gtceu.option.steamPerWater":"蒸汽-水转化率", - "config.gtceu.option.steelBoilerHeatSpeed":"钢锅炉-加热速度", - "config.gtceu.option.steelBoilerMaxTemperature":"钢锅炉-最高温度", - "config.gtceu.option.steelSteamMultiblocks":"用钢的蒸汽多方块结构", - "config.gtceu.option.surfaceRockProspectRange":"地表岩石探测半径", - "config.gtceu.option.titaniumBoilerHeatSpeed":"钛锅炉-加热速度", - "config.gtceu.option.titaniumBoilerMaxTemperature":"钛锅炉-最高温度", - "config.gtceu.option.toggle":"切换", - "config.gtceu.option.toolCraftingSounds":"使用工具合成时播放声音", - "config.gtceu.option.toolUseSounds":"使用工具时播放声音", - "config.gtceu.option.tools":"工具", - "config.gtceu.option.treeFellingDelay":"砍树延迟", - "config.gtceu.option.tungstensteelBoilerHeatSpeed":"钨钢锅炉-加热速度", - "config.gtceu.option.tungstensteelBoilerMaxTemperature":"钨钢锅炉-最高温度", - "config.gtceu.option.universalHazards":"普遍化的危险物质", - "config.gtceu.option.updateIntervals":"更新间隔", - "config.gtceu.option.useVBO":"使用VBO", - "config.gtceu.option.voltageTierAdvImpeller":"进阶喷气背包电压等级", - "config.gtceu.option.voltageTierAdvNanoSuit":"进阶纳米胸甲电压等级", - "config.gtceu.option.voltageTierAdvQuarkTech":"进阶夸克胸甲电压等级", - "config.gtceu.option.voltageTierImpeller":"喷气背包电压等级", - "config.gtceu.option.voltageTierNanoSuit":"纳米套电压等级", - "config.gtceu.option.voltageTierNightVision":"夜视仪电压等级", - "config.gtceu.option.voltageTierQuarkTech":"夸克套电压等级", - "config.gtceu.option.worldAcceleratorBlacklist":"世界加速器黑名单", - "config.gtceu.option.worldgen":"世界生成", - "config.gtceu.option.xOffset":"x偏移", - "config.gtceu.option.xaerosMapIntegration":"Xaero地图-集成", - "config.gtceu.option.yOffset":"y偏移", - "config.gtceu.option.zombieSpawnWithSabers":"带纳米剑的僵尸生成", - "config.jade.plugin_gtceu.auto_output_info":"[GTCEu] 自动输出信息", - "config.jade.plugin_gtceu.cable_info":"[GTCEu] 线缆信息", - "config.jade.plugin_gtceu.controllable_provider":"[GTCEu] 是否停工", - "config.jade.plugin_gtceu.electric_container_provider":"[GTCEu] 电力槽", - "config.jade.plugin_gtceu.exhaust_vent_info":"[GTCEu] 排气口信息", - "config.jade.plugin_gtceu.hazard_cleaner_provider":"[GTCEu] 污染清理", - "config.jade.plugin_gtceu.machine_mode":"[GTCEu] 机器模式", - "config.jade.plugin_gtceu.maintenance_info":"[GTCEu] 维护信息", - "config.jade.plugin_gtceu.me_pattern_buffer":"[GTCEu] 样板总成信息", - "config.jade.plugin_gtceu.me_pattern_buffer_proxy":"[GTCEu] 样板总成镜像信息", - "config.jade.plugin_gtceu.multiblock_structure":"[GTCEu] 多方块结构", - "config.jade.plugin_gtceu.parallel_info":"[GTCEu] 并行信息", - "config.jade.plugin_gtceu.primitive_pump":"[GTCEu] 原始水泵信息", - "config.jade.plugin_gtceu.recipe_logic_provider":"[GTCEu] 配方信息", - "config.jade.plugin_gtceu.recipe_output_info":"[GTCEu] 配方输出信息", - "config.jade.plugin_gtceu.stained_color":"[GTCEu] 染色方块信息", - "config.jade.plugin_gtceu.steam_boiler_info":"[GTCEu] 蒸汽锅炉信息", - "config.jade.plugin_gtceu.transformer":"[GTCEu] 变压器信息", - "config.jade.plugin_gtceu.workable_provider":"[GTCEu] 工作信息", - "cover.advanced_detector.latch.disabled.0":"行为:线性", - "cover.advanced_detector.latch.disabled.1":"", - "cover.advanced_detector.latch.disabled.2":"更改此覆盖板的红石行为。", - "cover.advanced_detector.latch.disabled.3":"§e线性§7 - 默认模式;物品数量小于最小值时不发出红石信号,大于最大值时发出信号强度15的红石信号,数量介于二者之间发出信号强度在0 - 15之间的红石信号", - "cover.advanced_detector.latch.disabled.4":"§e锁存§7 - 发出满级红石信号,直到物品数量大于最大值;然后停止发出红石信号,直到数量低于最小值", - "cover.advanced_detector.latch.enabled.0":"行为:锁存", - "cover.advanced_detector.latch.enabled.1":"", - "cover.advanced_detector.latch.enabled.2":"更改此覆盖板的红石行为。", - "cover.advanced_detector.latch.enabled.3":"§e线性§7 - 默认模式;物品数量小于最小值时不发出红石信号,大于最大值时发出信号强度15的红石信号,数量介于二者之间发出信号强度在0 - 15之间的红石信号", - "cover.advanced_detector.latch.enabled.4":"§e锁存§7 - 发出满级红石信号,直到物品数量大于最大值;然后停止发出红石信号,直到数量低于最小值", - "cover.advanced_energy_detector.invert.disabled.0":"输出:普通", - "cover.advanced_energy_detector.invert.disabled.1":"", - "cover.advanced_energy_detector.invert.disabled.2":"切换以反转红石逻辑", - "cover.advanced_energy_detector.invert.disabled.3":"默认情况下,能量小于所设定的最小 EU 时覆盖板将发出红石信号,大于最大 EU 时则停止发出红石信号", - "cover.advanced_energy_detector.invert.enabled.0":"输出:反相", - "cover.advanced_energy_detector.invert.enabled.1":"", - "cover.advanced_energy_detector.invert.enabled.2":"切换以反转红石逻辑", - "cover.advanced_energy_detector.invert.enabled.3":"默认情况下,能量小于所设定的最小 EU 时覆盖板将发出红石信号,大于最大 EU 时则停止发出红石信号", - "cover.advanced_energy_detector.label":"进阶能量探测覆盖板", - "cover.advanced_energy_detector.max":"最大值", - "cover.advanced_energy_detector.min":"最小值", - "cover.advanced_energy_detector.use_percent.disabled.0":"模式:EU设定值", - "cover.advanced_energy_detector.use_percent.disabled.1":"", - "cover.advanced_energy_detector.use_percent.disabled.2":"使用给定的EU数值或百分比来比较所附着的能量存储中能量的最大/最小值。", - "cover.advanced_energy_detector.use_percent.enabled.0":"模式: 百分比", - "cover.advanced_energy_detector.use_percent.enabled.1":"", - "cover.advanced_energy_detector.use_percent.enabled.2":"使用给定的EU数值或百分比来比较所附着的能量存储中能量的最大/最小值。", - "cover.advanced_fluid_detector.invert.disabled.0":"输出:普通", - "cover.advanced_fluid_detector.invert.disabled.1":"", - "cover.advanced_fluid_detector.invert.disabled.2":"切换以反转红石逻辑", - "cover.advanced_fluid_detector.invert.disabled.3":"默认情况下,流体量介于所设定的最小值和最大值之间时覆盖板将发出红石信号,小于最小值时则停止发出红石信号", - "cover.advanced_fluid_detector.invert.enabled.0":"输出:反相", - "cover.advanced_fluid_detector.invert.enabled.1":"", - "cover.advanced_fluid_detector.invert.enabled.2":"切换以反转红石逻辑", - "cover.advanced_fluid_detector.invert.enabled.3":"默认情况下,流体量介于所设定的最小值和最大值之间时覆盖板将发出红石信号,小于最小值时则停止发出红石信号", - "cover.advanced_fluid_detector.label":"进阶流体探测器", - "cover.advanced_fluid_detector.max":"最大流体量(mB)", - "cover.advanced_fluid_detector.min":"最小流体量(mB)", - "cover.advanced_item_detector.invert.disabled.0":"输出:普通", - "cover.advanced_item_detector.invert.disabled.1":"", - "cover.advanced_item_detector.invert.disabled.2":"切换以反转红石逻辑", - "cover.advanced_item_detector.invert.disabled.3":"默认情况下,物品数量介于所设定的最小值和最大值之间时覆盖板将发出红石信号,小于最小值时则停止发出红石信号", - "cover.advanced_item_detector.invert.enabled.0":"输出:反相", - "cover.advanced_item_detector.invert.enabled.1":"", - "cover.advanced_item_detector.invert.enabled.2":"切换以反转红石逻辑", - "cover.advanced_item_detector.invert.enabled.3":"默认情况下,物品数量介于所设定的最小值和最大值之间时覆盖板将发出红石信号,小于最小值时则停止发出红石信号", - "cover.advanced_item_detector.label":"进阶物品探测器", - "cover.advanced_item_detector.max":"最大物品数量", - "cover.advanced_item_detector.min":"最小物品数量", - "cover.bucket.mode.bucket":"B", - "cover.bucket.mode.milli_bucket":"mB", - "cover.conveyor.blocks_input.disabled.0":"若启用,覆盖板设置为将物品从存储空间输出至管道时将阻止物品从所在面输入。", - "cover.conveyor.blocks_input.disabled.1":"§c已禁用", - "cover.conveyor.blocks_input.enabled.0":"若启用,覆盖板设置为将物品从存储空间输出至管道时将阻止物品从所在面输入。", - "cover.conveyor.blocks_input.enabled.1":"§a已启用", - "cover.conveyor.distribution.insert_first.0":"分配模式:§b优先级", - "cover.conveyor.distribution.insert_first.1":"§7将物品输入至所搜寻到的优先级最高的物品存储空间", - "cover.conveyor.distribution.insert_first.2":"§7加固物品管道会降低管道路径的优先级。", - "cover.conveyor.distribution.round_robin_global.0":"分配模式:§b轮询调度", - "cover.conveyor.distribution.round_robin_global.1":"§7将物品平分至相连的物品存储空间。", - "cover.conveyor.distribution.round_robin_prio.0":"分配模式:§b轮询调度(次序式)", - "cover.conveyor.distribution.round_robin_prio.1":"§7尝试将物品平分至相连的物品存储空间,并优先考虑优先级更高的。", - "cover.conveyor.distribution.round_robin_prio.2":"§7加固物品管道会降低管道路径的优先级。", - "cover.conveyor.item_filter.title":"物品过滤", - "cover.conveyor.mode":"模式:%s", - "cover.conveyor.mode.export":"模式:输出", - "cover.conveyor.mode.import":"模式:输入", - "cover.conveyor.tag.title.0":"标签名称", - "cover.conveyor.tag.title.1":"(*可作通配符)", - "cover.conveyor.title":"传送带覆盖板配置(%s)", - "cover.conveyor.transfer_rate":"§7物品/秒", - "cover.detector_base.message_inverted_state":"监控状态:反相", - "cover.detector_base.message_normal_state":"监控状态:普通", - "cover.ender_fluid_link.incomplete_hex.0":"输入的颜色不正确!", - "cover.ender_fluid_link.incomplete_hex.1":"输入正确的八位十六进制颜色码方可应用", - "cover.ender_fluid_link.incomplete_hex.2":"此时关闭界面将导致丢失编辑内容!", - "cover.ender_fluid_link.iomode.disabled":"已禁用I/O", - "cover.ender_fluid_link.iomode.enabled":"已启用I/O", - "cover.ender_fluid_link.private.tooltip.disabled.0":"切换至私有储罐模式", - "cover.ender_fluid_link.private.tooltip.disabled.1":"私有权归最初加装该覆盖板的玩家所有", - "cover.ender_fluid_link.private.tooltip.enabled":"切换至公共储罐模式", - "cover.ender_fluid_link.title":"末影流体连接", - "cover.filter.blacklist.disabled":"白名单", - "cover.filter.blacklist.enabled":"黑名单", - "cover.filter.mode.filter_both":"过滤两者", - "cover.filter.mode.filter_extract":"过滤输出", - "cover.filter.mode.filter_insert":"过滤输入", - "cover.fluid.voiding.advanced.title":"高级流体销毁设置", - "cover.fluid.voiding.title":"流体销毁设置", - "cover.fluid_filter.config_amount.0":"向上或向下滚动鼠标滚轮以增加或减少流体量。", - "cover.fluid_filter.config_amount.1":"Shift[§6x10§r],Ctrl[§ex100§r],Shift+Ctrl[§ax1000§r]", - "cover.fluid_filter.config_amount.2":"亦可通过右击或左击来增减流体量。", - "cover.fluid_filter.config_amount.3":"按住Shift时点击鼠标则将使流体量翻倍或减半。", - "cover.fluid_filter.config_amount.4":"点击中键以清除", - "cover.fluid_filter.mode.filter_both":"过滤两者", - "cover.fluid_filter.mode.filter_drain":"过滤输出", - "cover.fluid_filter.mode.filter_fill":"过滤输入", - "cover.fluid_filter.title":"流体过滤卡", - "cover.fluid_regulator.keep_exact":"保持供应:%s", - "cover.fluid_regulator.supply_exact":"精确供应:%s", - "cover.fluid_regulator.title":"流体校准器设置(%s)", - "cover.fluid_regulator.transfer_mode.description.0":"§e任意传输§r-在此模式下,覆盖板将传输任何与过滤器匹配的流体。", - "cover.fluid_regulator.transfer_mode.description.1":"§e精确供应-在此模式下,覆盖板会将此按钮下方窗口中指定的流体按指定量打包传输。若流体量小于指定量,流体不会被传输。", - "cover.fluid_regulator.transfer_mode.description.2":"§e保持供应-在此模式下,覆盖板将在目标容器中保持指定数量的液体,低于保持量时传输相应量的流体。", - "cover.fluid_regulator.transfer_mode.description.3":"§7小提示:按住Shift/Crtl把增加或减少的数量乘以10/100。", - "cover.item.voiding.advanced.title":"高级物品销毁设置", - "cover.item.voiding.title":"物品销毁设置", - "cover.item_filter.ignore_damage.disabled":"匹配耐久度", - "cover.item_filter.ignore_damage.enabled":"无视耐久度", - "cover.item_filter.ignore_nbt.disabled":"匹配NBT", - "cover.item_filter.ignore_nbt.enabled":"忽略NBT", - "cover.item_filter.title":"物品过滤卡", - "cover.item_smart_filter.filtering_mode.centrifuge":"离心机", - "cover.item_smart_filter.filtering_mode.description.0":"为该智能覆盖板选择目标机器。", - "cover.item_smart_filter.filtering_mode.description.1":"它能够自动挑选符合机器配方的物品。", - "cover.item_smart_filter.filtering_mode.electrolyzer":"电解机", - "cover.item_smart_filter.filtering_mode.sifter":"筛选机", - "cover.item_smart_filter.title":"智能物品过滤", - "cover.machine_controller.invert.disabled.0":"§e普通§r - 该模式下的覆盖板需要比设定强度小的红石信号来触发", - "cover.machine_controller.invert.enabled.0":"§e反相§r - 该模式下的覆盖板需要比设定强度大的红石信号来触发", - "cover.machine_controller.inverted":"反相", - "cover.machine_controller.mode.cover_down":"控制目标:覆盖板(底面)", - "cover.machine_controller.mode.cover_east":"控制目标:覆盖板(东面)", - "cover.machine_controller.mode.cover_north":"控制目标:覆盖板(北面)", - "cover.machine_controller.mode.cover_south":"控制目标:覆盖板(南面)", - "cover.machine_controller.mode.cover_up":"控制目标:覆盖板(顶面)", - "cover.machine_controller.mode.cover_west":"控制目标:覆盖板(西面)", - "cover.machine_controller.mode.machine":"控制目标:机器", - "cover.machine_controller.mode.null":"控制目标:无", - "cover.machine_controller.normal":"普通", - "cover.machine_controller.redstone":"最小红石信号强度:%d", - "cover.machine_controller.title":"机器控制设置", - "cover.pump.fluid_filter.title":"流体过滤", - "cover.pump.mode.export":"模式:输出", - "cover.pump.mode.import":"模式:输入", - "cover.pump.title":"泵覆盖板设置(%s)", - "cover.pump.transfer_rate":"%s", - "cover.robotic_arm.title":"机械臂设置(%s)", - "cover.robotic_arm.transfer_mode.description.0":"§e任意传输§r-在此模式下,覆盖板将尽可能传输一切符合过滤设置的物品。", - "cover.robotic_arm.transfer_mode.description.1":"§e精确补给§r-在此模式下,覆盖板每次都会输入在物品过滤卡的过滤槽中指定(或者在标签过滤卡的按钮里指定)数量的物品。若物品的数量小于指定数量,则不会被输入。", - "cover.robotic_arm.transfer_mode.description.2":"§e保持补给§r-在此模式下,覆盖板将保持目标容器中指定物品的数量,需要物品时则供应相应量的物品。", - "cover.robotic_arm.transfer_mode.description.3":"§7小提示:左/右击过滤槽可以调整物品数量,同时按住Shift可以更快地调整。", - "cover.robotic_arm.transfer_mode.keep_exact":"保持补给", - "cover.robotic_arm.transfer_mode.transfer_any":"任意传输", - "cover.robotic_arm.transfer_mode.transfer_exact":"精确补给", - "cover.shutter.message.disabled":"扇板已开启", - "cover.shutter.message.enabled":"扇板已关闭", - "cover.storage.title":"存储覆盖板", - "cover.tag_filter.info.0":"§b接受复杂表达式", - "cover.tag_filter.info.1":"§6a & b§r = 且(AND)", - "cover.tag_filter.info.10":"§b使用范例:§6*dusts/gold | (gtceu:circuits & !*lv)", - "cover.tag_filter.info.11":"这将匹配所有种类的金粉或LV以外的电路", - "cover.tag_filter.info.2":"§6a | b§r = 或(OR)", - "cover.tag_filter.info.3":"§6a ^ b§r = 异或(XOR)", - "cover.tag_filter.info.4":"§6!a§r = 非(NOT)", - "cover.tag_filter.info.5":"§6(a)§r 改变优先级", - "cover.tag_filter.info.6":"§6*§r 为通配符", - "cover.tag_filter.info.7":"§6$§r 为没有标签的物品/流体等", - "cover.tag_filter.info.8":"§b标签的格式为'命名空间:标签/子类型'。", - "cover.tag_filter.info.9":"如果没有提供命名空间,则为'forge:'。", - "cover.tag_filter.matches":"物品匹配", - "cover.tag_filter.matches_not":"物品不匹配", - "cover.tag_filter.test_slot.info":"放入一件物品以测试是否匹配过滤表达式", - "cover.tag_filter.title":"标签过滤", - "cover.universal.manual_import_export.mode.description.0":"§e禁用§r-仅依照覆盖板与内部过滤器的指定规则传输。", - "cover.universal.manual_import_export.mode.description.1":"§e过滤§r-外部I/O将只根据过滤器的指定规则传输,不受覆盖板的限制。", - "cover.universal.manual_import_export.mode.description.2":"§e无过滤§r-外部I/O无视所有传输规则,过滤器将仅控制覆盖板进行的I/O。", - "cover.universal.manual_import_export.mode.disabled":"特殊I/O模式:§b禁用\\n§7仅依照覆盖板与内部过滤器的指定规则传输。", - "cover.universal.manual_import_export.mode.filtered":"特殊I/O模式:§b过滤\\n§7外部I/O将只根据过滤器的指定规则传输,不受覆盖板的限制。", - "cover.universal.manual_import_export.mode.unfiltered":"特殊I/O模式:§b无过滤\\n§7外部I/O无视所有传输规则,过滤器将仅控制覆盖板进行的I/O。", - "cover.voiding.label.disabled":"禁用", - "cover.voiding.label.enabled":"启用", - "cover.voiding.message.disabled":"已禁用销毁覆盖板", - "cover.voiding.message.enabled":"已启用销毁覆盖板", - "cover.voiding.tooltip":"§c警告!§7“启用”时所有流体和物品全部都会被销毁。", - "cover.voiding.voiding_mode.description.0":"§e匹配销毁§r:匹配过滤规则即销毁。", - "cover.voiding.voiding_mode.description.1":"§e溢出销毁§r:匹配过滤规则即销毁超出设定数量的部分物品/流体。", - "cover.voiding.voiding_mode.void_any":"匹配销毁", - "cover.voiding.voiding_mode.void_overflow":"溢出销毁", - "curios.identifier.gtceu_magnet":"GTCEu磁铁", - "death.attack.gtceu.axe":"%s被%s用斧子砍死了", - "death.attack.gtceu.butchery_knife":"%s死在了%s的屠刀之下", - "death.attack.gtceu.buzzsaw":"%2$手中圆锯的嗞嗞声成为了%1$s生命中最后听到的声音", - "death.attack.gtceu.chainsaw_lv":"%2$s的链锯切碎了%1$s", - "death.attack.gtceu.chemical":"%s历经了一场化学事故", - "death.attack.gtceu.crowbar":"%s被%s用撬棍撬走了半条命", - "death.attack.gtceu.drill_ev":"%2$s的超高压电钻洞穿了%1$s", - "death.attack.gtceu.drill_hv":"%2$s的高压电钻洞穿了%1$s", - "death.attack.gtceu.drill_iv":"%2$s的强导压电钻洞穿了%1$s", - "death.attack.gtceu.drill_lv":"%2$s的低压电钻洞穿了%1$s", - "death.attack.gtceu.drill_mv":"%2$s的中压电钻洞穿了%1$s", - "death.attack.gtceu.electric":"%s触电身亡", - "death.attack.gtceu.explosion":"%s爆炸了", - "death.attack.gtceu.explosion.player":"拜%2$s所赐,%1$s爆炸了", - "death.attack.gtceu.file":"%s历尽了%s的“锉”折", - "death.attack.gtceu.frost":"%s探索到了低温的奥秘", - "death.attack.gtceu.hammer":"%s被%s锤死了", - "death.attack.gtceu.heat":"%s被活活煮熟了", - "death.attack.gtceu.heat.player":"%s被%s活活煮熟了", - "death.attack.gtceu.hoe":"%s被%s锄死了", - "death.attack.gtceu.knife":"%2$s绅士地捅了%1$s几刀", - "death.attack.gtceu.mallet":"%s被%s用锤头活活敲死了", - "death.attack.gtceu.medical_condition/arsenicosis":"%s死于砷中毒", - "death.attack.gtceu.medical_condition/asbestosis":"%s得了间皮瘤", - "death.attack.gtceu.medical_condition/berylliosis":"%s贪婪地挖掘绿宝石,结果有点过火了", - "death.attack.gtceu.medical_condition/carbon_monoxide_poisoning":"%s离开时炉子还开着", - "death.attack.gtceu.medical_condition/carcinogen":"%s身患白血病", - "death.attack.gtceu.medical_condition/chemical_burns":"%s历经了一场化学事故", - "death.attack.gtceu.medical_condition/irritant":"%s身上长了§n§l极其严重§r的皮疹", - "death.attack.gtceu.medical_condition/methanol_poisoning":"%s在禁酒令下尝试饮用私酿烈酒", - "death.attack.gtceu.medical_condition/nausea":"%s死于恶心", - "death.attack.gtceu.medical_condition/none":"%s死于...什么都没有?", - "death.attack.gtceu.medical_condition/poison":"%s忘了毒物的确有毒", - "death.attack.gtceu.medical_condition/silicosis":"%s不是死于肺结核,而是矽肺病", - "death.attack.gtceu.medical_condition/weak_poison":"%s吞下了铅(或水银!)", - "death.attack.gtceu.mining_hammer":"%s被%s当成矿石砸死了", - "death.attack.gtceu.mortar":"%s被%s用研钵磨成了粉", - "death.attack.gtceu.pickaxe":"%s被%s用镐子凿死了", - "death.attack.gtceu.radiation":"%s放射出了喜悦的光芒", - "death.attack.gtceu.screwdriver":"%s被%s用螺丝刀钻死了", - "death.attack.gtceu.screwdriver_lv":"%s的螺丝被%s扭掉了", - "death.attack.gtceu.scythe":"%s一镰刀下去,%s的灵魂灰飞烟灭", - "death.attack.gtceu.shovel":"%s被%s用锹掏死了", - "death.attack.gtceu.spade":"%s被%s用铲子挖死了", - "death.attack.gtceu.turbine":"%s一头扎进了涡轮里", - "death.attack.gtceu.wire_cutter":"%s用剪线钳剪断了%s的血管", - "death.attack.gtceu.wrench":"%s被%s用扳手夯死了!", - "death.attack.gtceu.wrench_hv":"%s的血管被%s狠狠拧松了", - "death.attack.gtceu.wrench_iv":"%2$s一扳手下去,扳倒了%1$s的美好人生", - "death.attack.gtceu.wrench_lv":"%s的血管被%s狠狠拧松了", - "effect.gtceu.weak_poison":"轻度中毒", - "enchantment.damage.disjunction":"末影离析", - "enchantment.disjunction":"末影离析", - "enchantment.gtceu.disjunction.description":"对末影生物施加虚弱和缓慢效果。", - "enchantment.gtceu.hard_hammer.description":"像格雷科技的锤一样粉碎所采掘的方块。", - "enchantment.hard_hammer":"锤碎", - "entity.gtceu.boat":"船", - "entity.gtceu.chest_boat":"运输船", - "entity.gtceu.dynamite":"炸药", - "entity.gtceu.industrial_tnt":"工业TNT", - "entity.gtceu.powderbarrel":"火药桶", - "fluid.empty":"空", - "fluid.gtceu.potion":"药水", - "fluid.spawnlocation.name":"流体矿脉信息", - "fluid.tile.lava":"熔岩", - "fluid.tile.water":"水", - "fluid_cell.empty":"空", - "gtceu.air_scrubber":"空气净化器", - "gtceu.alloy_blast_smelter":"合金冶炼炉", - "gtceu.alloy_smelter":"合金冶炼", - "gtceu.arc_furnace":"电弧炉", - "gtceu.assembler":"组装机", - "gtceu.assembly_line":"装配线", - "gtceu.auto_decomp.rotor":"涡轮转子", - "gtceu.auto_decomp.tool":"非电动工具", - "gtceu.autoclave":"高压釜", - "gtceu.battery_buffer.average_input":"平均输入:%s EU/t", - "gtceu.battery_buffer.average_output":"平均输出:%s EU/t", - "gtceu.bender":"卷板机", - "gtceu.brewery":"酿造室", - "gtceu.bus.collapse.error":"总线位于已成型的多方块结构后方可进行该操作", - "gtceu.bus.collapse_false":"已禁用物品堆叠自动合并", - "gtceu.bus.collapse_true":"已启用物品堆叠自动合并", - "gtceu.button.bedrock_fluids":"显示基岩流体矿脉", - "gtceu.button.hide_depleted":"隐藏枯竭的矿脉", - "gtceu.button.ore_veins":"显示GT矿脉", - "gtceu.button.show_depleted":"显示枯竭的矿脉", - "gtceu.cable.amperage":"§e最大电流:§r§e%d", - "gtceu.cable.loss_per_block":"§c线损/米/安:§r§c%d§7 伏", - "gtceu.cable.superconductor":"%s§d超导体", - "gtceu.cable.voltage":"§a最大电压:§r§a%d§a(%s§a)", - "gtceu.canner":"装罐机", - "gtceu.centrifuge":"离心机", - "gtceu.chance_logic.and":"AND", - "gtceu.chance_logic.none":"NONE", - "gtceu.chance_logic.or":"OR", - "gtceu.chance_logic.xor":"XOR", - "gtceu.chat.cape":"§5恭喜你:你刚刚解锁了一件新披风!查看终端应用程序“披风选择器”来使用它。§r", - "gtceu.chemical_bath":"化学浸洗机", - "gtceu.chemical_reactor":"化学反应釜", - "gtceu.circuit_assembler":"电路组装机", - "gtceu.coke_oven":"焦炉", - "gtceu.combustion_generator":"内燃发电机", - "gtceu.command.copy.click_to_copy":"点击复制", - "gtceu.command.copy.copied_and_click":"已复制到剪贴板,点击再次复制", - "gtceu.command.copy.copied_end":"]到剪贴板", - "gtceu.command.copy.copied_start":"已复制[", - "gtceu.command.hand.electric":"电量信息:%d / %d EU - 等级:%d; 是否为电池:%s", - "gtceu.command.hand.fluid":"流体信息:%d / %d mB;是否可输入:%s; 是否可输出:%s", - "gtceu.command.hand.fluid2":"流体 ID:", - "gtceu.command.hand.groovy":"考虑使用§6/gs hand", - "gtceu.command.hand.item_id":"物品:%s(元数据:%d)", - "gtceu.command.hand.material":"材料 ID:", - "gtceu.command.hand.meta_item":"元物品 ID:", - "gtceu.command.hand.no_item":"在执行此命令之前,您的主手或副手必须拿着物品。", - "gtceu.command.hand.not_a_player":"这个命令只有玩家可以使用。", - "gtceu.command.hand.ore_prefix":"矿物前缀:", - "gtceu.command.hand.tag_entries":"§3标签条目:", - "gtceu.command.hand.tool_stats":"工具状态类:%s", - "gtceu.command.hand.usage":"用法:/gtceu hand", - "gtceu.command.recipecheck.begin":"开始配方冲突检查...", - "gtceu.command.recipecheck.end":"配方冲突检查找到%d可能存在的冲突,查看服务器日志以了解更多信息", - "gtceu.command.recipecheck.end_no_conflicts":"未发现配方冲突!", - "gtceu.command.recipecheck.usage":"用法:/gtceu recipecheck", - "gtceu.command.usage":"用法:/gtceu ", - "gtceu.command.worldgen.reload.failed":"Worldgen重新加载失败。检查控制台是否有错误。", - "gtceu.command.worldgen.reload.success":"Worldgen已成功从配置重新加载。", - "gtceu.command.worldgen.reload.usage":"用法:/gtceu worldgen reload", - "gtceu.command.worldgen.usage":"用法:/gtceu worldgen ", - "gtceu.compressor":"压缩机", - "gtceu.cover.activity_detector.message_activity_inverted":"正在以反相模式监控活动状态", - "gtceu.cover.activity_detector.message_activity_normal":"正在以普通模式监控活动状态", - "gtceu.cover.activity_detector_advanced.message_activity_inverted":"正在以反相模式监控处理状态", - "gtceu.cover.activity_detector_advanced.message_activity_normal":"正在以普通模式监控处理状态", - "gtceu.cover.energy_detector.message_electricity_storage_inverted":"正在以反相模式监控电力存储", - "gtceu.cover.energy_detector.message_electricity_storage_normal":"正在以普通模式监控电力存储", - "gtceu.cover.fluid_detector.message_fluid_storage_inverted":"正在以反相模式监控流体存储", - "gtceu.cover.fluid_detector.message_fluid_storage_normal":"正在以普通模式监控流体存储", - "gtceu.cover.item_detector.message_item_storage_inverted":"正在以反相模式监控物品存储", - "gtceu.cover.item_detector.message_item_storage_normal":"正在以普通模式监控物品存储", - "gtceu.cracker":"裂化机", - "gtceu.creative.activity.off":"未激活", - "gtceu.creative.activity.on":"已激活", - "gtceu.creative.chest.ipc":"每次输出流体量", - "gtceu.creative.chest.item":"物品", - "gtceu.creative.chest.tpc":"每次输出间隔Tick", - "gtceu.creative.computation.average":"平均CWU/t请求", - "gtceu.creative.energy.amperage":"电流", - "gtceu.creative.energy.sink":"归零", - "gtceu.creative.energy.source":"最大值", - "gtceu.creative.energy.voltage":"电压", - "gtceu.creative.tank.fluid":"流体", - "gtceu.creative.tank.mbpc":"每次输出流体量", - "gtceu.creative.tank.tpc":"每次输出间隔Tick", - "gtceu.creative_tooltip.1":"§7你需要", - "gtceu.creative_tooltip.2":"§b创造模式", - "gtceu.creative_tooltip.3":"§7来使用它", - "gtceu.cutter":"切割机", - "gtceu.debug.f3_h.enabled":"格雷科技修改了调试信息!对于开发人员:在GregTech配置文件中启用misc:debug以查看更多信息", - "gtceu.direction.tooltip.back":"背面", - "gtceu.direction.tooltip.down":"底面", - "gtceu.direction.tooltip.front":"正面", - "gtceu.direction.tooltip.left":"左面", - "gtceu.direction.tooltip.right":"右面", - "gtceu.direction.tooltip.up":"顶面", - "gtceu.distillation_tower":"蒸馏塔", - "gtceu.distillery":"蒸馏室", - "gtceu.duct_pipe.transfer_rate":"§b空气传输速率:%s", - "gtceu.dummy":"假人", - "gtceu.electric_blast_furnace":"电力高炉", - "gtceu.electric_furnace":"电炉", - "gtceu.electrolyzer":"电解机", - "gtceu.electromagnetic_separator":"电磁选矿机", - "gtceu.evaporation":"蒸发", - "gtceu.extractor":"提取机", - "gtceu.extruder":"压模器", - "gtceu.fermenter":"发酵槽", - "gtceu.fluid.amount":"§9总量:%d/%d mB", - "gtceu.fluid.click_combined":"§7手持流体容器点击流体槽以§c倒出§7或§b填入§7流体(Shift+单击以用整组容器倒出流体或用整组容器中的流体填入)", - "gtceu.fluid.click_to_empty":"§7手持流体容器点击流体槽以§c倒出§7流体(Shift+单击以用整组容器倒出流体)", - "gtceu.fluid.click_to_fill":"§7手持流体容器点击流体槽以§b填入§7流体(Shift+单击以用整组容器中的流体填入)", - "gtceu.fluid.empty":"空", - "gtceu.fluid.gas_generic":"气态%s", - "gtceu.fluid.gas_vapor":"%s蒸气", - "gtceu.fluid.generic":"%s", - "gtceu.fluid.liquid_generic":"液态%s", - "gtceu.fluid.molten":"熔融%s", - "gtceu.fluid.plasma":"%s等离子体", - "gtceu.fluid.state_gas":"§a状态:气态", - "gtceu.fluid.state_liquid":"§a状态:液态", - "gtceu.fluid.state_plasma":"§a状态:等离子态", - "gtceu.fluid.temperature":"§c温度:%d K", - "gtceu.fluid.temperature.cryogenic":"§b低温流体!轻拿轻放!", - "gtceu.fluid.type_acid.tooltip":"§6酸性流体!轻拿轻放!", - "gtceu.fluid_heater":"流体加热器", - "gtceu.fluid_pipe.acid_proof":"§6可传输酸性物质", - "gtceu.fluid_pipe.capacity":"§9容积:§f%d mB", - "gtceu.fluid_pipe.channels":"§e并行管道:§f%d", - "gtceu.fluid_pipe.cryo_proof":"§6可传输低温物质", - "gtceu.fluid_pipe.gas_proof":"§6可以传输气体", - "gtceu.fluid_pipe.max_temperature":"§c温度上限:§f%d K", - "gtceu.fluid_pipe.not_gas_proof":"§4气体可能泄漏!", - "gtceu.fluid_pipe.plasma_proof":"§6可传输所有等离子体", - "gtceu.fluid_solidifier":"流体固化器", - "gtceu.forge_hammer":"锻造锤", - "gtceu.forming_press":"冲压机床", - "gtceu.forming_press.naming.named":"§o已命名物品", - "gtceu.forming_press.naming.press":"§o名称模板", - "gtceu.forming_press.naming.to_name":"§o待命名物品", - "gtceu.fusion_reactor":"核聚变反应堆", - "gtceu.gas_collector":"集气室", - "gtceu.gas_turbine":"燃气轮机", - "gtceu.gui.auto_output.name":"自动", - "gtceu.gui.charger_slot.tooltip.0":"§f充电槽§r", - "gtceu.gui.charger_slot.tooltip.1":"§7从%s电池中取电§7", - "gtceu.gui.charger_slot.tooltip.2":"§7也可为%s工具或电池充电", - "gtceu.gui.chunkmode.disabled.0":"区块模式§c禁用§r:单击启用。", - "gtceu.gui.chunkmode.disabled.1":"§7切换需要机器待机。", - "gtceu.gui.chunkmode.enabled.0":"区块模式§a启用§r:单击禁用。", - "gtceu.gui.chunkmode.enabled.1":"§7切换需要机器待机。", - "gtceu.gui.circuit.title":"电路设置", - "gtceu.gui.config_slot":"§f配置槽位§r", - "gtceu.gui.config_slot.auto_pull_managed":"§4禁用:§7由ME自动拉取管理", - "gtceu.gui.config_slot.remove":"§7右击§4清除§7配置槽位。§r", - "gtceu.gui.config_slot.scroll":"§7使用滚轮§a切换§7配置数。§r", - "gtceu.gui.config_slot.set":"§7点击§b设置/选择§7配置槽位。§r", - "gtceu.gui.config_slot.set_only":"§7点击§b设置§7配置槽位。§r", - "gtceu.gui.configurator_slot.tooltip.0":"§f配置器槽§r", - "gtceu.gui.configurator_slot.tooltip.1":"§7在此插槽放置一个§6编程电路§7以", - "gtceu.gui.configurator_slot.tooltip.2":"§7更改其配置值。", - "gtceu.gui.configurator_slot.tooltip.3":"§7按住§6Shift§7时点击按钮,一次加减§6§75个编号", - "gtceu.gui.configurator_slot.tooltip.4":"§a此插槽中的编程电路也视为一个配方输入。§r", - "gtceu.gui.content.chance_base":"基础概率:%s%%", - "gtceu.gui.content.chance_base_logic":"基础概率:%s%% (%s)", - "gtceu.gui.content.chance_boosted":"当前等级概率:%s%%", - "gtceu.gui.content.chance_boosted_logic":"当前等级概率:%s%%(%s)", - "gtceu.gui.content.chance_nc":"§c不会被消耗§r", - "gtceu.gui.content.chance_nc_short":"§c不消耗§r", - "gtceu.gui.content.chance_tier_boost_minus":"奖励概率:- %s%%/电压等级", - "gtceu.gui.content.chance_tier_boost_plus":"奖励概率:+ %s%%/电压等级", - "gtceu.gui.content.count_range":"%s-%sx", - "gtceu.gui.content.per_tick":"§a每刻(tick)消耗/产生§r", - "gtceu.gui.content.tips.per_second_short":"§a/秒§r", - "gtceu.gui.content.tips.per_tick_short":"§a/刻(tick)§r", - "gtceu.gui.content.units.per_second":"/s", - "gtceu.gui.content.units.per_tick":"/t", - "gtceu.gui.cover_setting.title":"覆盖板设置", - "gtceu.gui.editor.group.recipe_type":"封顶", - "gtceu.gui.editor.tips.citation":"引用次数", - "gtceu.gui.fisher_mode.tooltip.0":"捕捉垃圾物品", - "gtceu.gui.fisher_mode.tooltip.1":"关闭时,每次运行消耗两根线。", - "gtceu.gui.fluid_amount":"流体总量:", - "gtceu.gui.fluid_auto_input.tooltip.disabled":"流体自动输入已禁用", - "gtceu.gui.fluid_auto_input.tooltip.enabled":"流体自动输入已启用", - "gtceu.gui.fluid_auto_output.allow_input.disabled":"禁止从输出面输入流体", - "gtceu.gui.fluid_auto_output.allow_input.enabled":"允许从输出面输入流体", - "gtceu.gui.fluid_auto_output.tooltip.disabled":"流体自动输出已禁用", - "gtceu.gui.fluid_auto_output.tooltip.enabled":"流体自动输出已启用", - "gtceu.gui.fluid_lock.tooltip.disabled":"流体锁定已禁用", - "gtceu.gui.fluid_lock.tooltip.enabled":"流体锁定已启用", - "gtceu.gui.fluid_voiding_partial.tooltip.disabled":"过量流体销毁已禁用", - "gtceu.gui.fluid_voiding_partial.tooltip.enabled":"过量流体销毁已启用", - "gtceu.gui.fuel_amount":"燃料总量:", - "gtceu.gui.item_auto_input.tooltip.disabled":"物品自动输入已禁用", - "gtceu.gui.item_auto_input.tooltip.enabled":"物品自动输入已启用", - "gtceu.gui.item_auto_output.allow_input.disabled":"禁止从输出面输入物品", - "gtceu.gui.item_auto_output.allow_input.enabled":"允许从输出面输入物品", - "gtceu.gui.item_auto_output.tooltip.disabled":"物品自动输出已禁用", - "gtceu.gui.item_auto_output.tooltip.enabled":"物品自动输出已启用", - "gtceu.gui.item_lock.tooltip.disabled":"物品锁定已禁用", - "gtceu.gui.item_lock.tooltip.enabled":"物品锁定已启用", - "gtceu.gui.item_voiding_partial.tooltip.disabled":"物品过量销毁已禁用", - "gtceu.gui.item_voiding_partial.tooltip.enabled":"物品过量销毁已开启", - "gtceu.gui.machinemode":"当前机器模式:%s", - "gtceu.gui.machinemode.title":"当前机器模式", - "gtceu.gui.me_bus.auto_pull_button":"单击以切换ME自动拉取模式", - "gtceu.gui.me_network.offline":"网络状态:§4离线§r", - "gtceu.gui.me_network.online":"网络状态:§2在线§r", - "gtceu.gui.multiblock_fluid_voiding.0":"销毁模式", - "gtceu.gui.multiblock_fluid_voiding.1":"§7销毁§9流体", - "gtceu.gui.multiblock_item_fluid_voiding.0":"销毁模式", - "gtceu.gui.multiblock_item_fluid_voiding.1":"§7销毁§6物品§7和§9流体", - "gtceu.gui.multiblock_item_voiding.0":"销毁模式", - "gtceu.gui.multiblock_item_voiding.1":"§7销毁§6物品", - "gtceu.gui.multiblock_no_voiding.0":"销毁模式", - "gtceu.gui.multiblock_no_voiding.1":"§7不进行销毁", - "gtceu.gui.output_setting.title":"输出设置", - "gtceu.gui.output_setting.tooltips.0":"左键单击以自动输出物品", - "gtceu.gui.output_setting.tooltips.1":"右键单击以自动输出流体", - "gtceu.gui.overclock.description.0":"超频按钮", - "gtceu.gui.overclock.description.1":"§7配方可以超频到设定的电压等级", - "gtceu.gui.overclock.disabled.0":"超频已禁用", - "gtceu.gui.overclock.disabled.1":"单击启用", - "gtceu.gui.overclock.enabled.0":"超频已启用", - "gtceu.gui.overclock.enabled.1":"单击禁用", - "gtceu.gui.overclock.off":"X", - "gtceu.gui.overclock.range":"可用电压级 [%s,%s]", - "gtceu.gui.overclock.title":"超频电压级", - "gtceu.gui.silktouch.disabled.0":"精准采集已禁用:单击启用。", - "gtceu.gui.silktouch.disabled.1":"§7切换需要机器待机。", - "gtceu.gui.silktouch.enabled.0":"精准采集已启用:单击禁用。", - "gtceu.gui.silktouch.enabled.1":"§7切换需要机器待机。", - "gtceu.gui.sort":"分类", - "gtceu.gui.title_bar.back":"返回", - "gtceu.gui.title_bar.page_switcher":"页面", - "gtceu.gui.toggle_view.disabled":"切换视图(流体)", - "gtceu.gui.toggle_view.enabled":"切换视图(物品)", - "gtceu.gui.waiting_list":"发送队列:", - "gtceu.hazard_trigger.any":"任何方式", - "gtceu.hazard_trigger.description":"由此导致:", - "gtceu.hazard_trigger.inhalation":"吸入", - "gtceu.hazard_trigger.none":"无", - "gtceu.hazard_trigger.protection.description":"免受:", - "gtceu.hazard_trigger.skin_contact":"皮肤接触", - "gtceu.implosion_compressor":"聚爆压缩机", - "gtceu.io.both":"同时", - "gtceu.io.export":"输出", - "gtceu.io.import":"输入", - "gtceu.io.none":"无", - "gtceu.item_filter.empty_item":"空(无物品)", - "gtceu.item_filter.footer":"§e手持物品右键覆盖设置", - "gtceu.item_list.item_stored":"§7储量:%d", - "gtceu.item_pipe.priority":"§9优先级:§f%d", - "gtceu.jade.cleaned_this_second":"污染清理速率:%s/s", - "gtceu.jade.energy_stored":"%d / %d EU", - "gtceu.jade.progress_computation":"%s / %s CWU", - "gtceu.jade.progress_sec":"%s / %s s", - "gtceu.jade.progress_tick":"%s / %s t", - "gtceu.jei.bedrock_fluid.heavy_oil_deposit":"重油矿藏", - "gtceu.jei.bedrock_fluid.lava_deposit":"熔岩矿藏", - "gtceu.jei.bedrock_fluid.light_oil_deposit":"轻油矿藏", - "gtceu.jei.bedrock_fluid.natural_gas_deposit":"天然气矿藏", - "gtceu.jei.bedrock_fluid.nether_natural_gas_deposit":"下界天然气矿藏", - "gtceu.jei.bedrock_fluid.oil_deposit":"石油矿藏", - "gtceu.jei.bedrock_fluid.raw_oil_deposit":"原油矿藏", - "gtceu.jei.bedrock_fluid.salt_water_deposit":"盐水矿藏", - "gtceu.jei.bedrock_fluid_diagram":"基岩流体生成信息", - "gtceu.jei.bedrock_ore_diagram":"基岩矿脉生成信息", - "gtceu.jei.fluid.dep_amount_hover":"消耗后消耗的量", - "gtceu.jei.fluid.dep_chance_hover":"开采流体矿脉时消耗的概率", - "gtceu.jei.fluid.dep_yield_hover":"流体矿脉殆尽后能开采的最大流体量", - "gtceu.jei.fluid.depleted_rate":"殆尽后产量:%d", - "gtceu.jei.fluid.depletion_amount":"消耗量:%d", - "gtceu.jei.fluid.depletion_chance":"消耗概率:%d%%", - "gtceu.jei.fluid.dimension":"维度:", - "gtceu.jei.fluid.max_hover":"流体矿脉所能具有的的最大产量", - "gtceu.jei.fluid.max_yield":"最大产量:%d", - "gtceu.jei.fluid.min_hover":"流体矿脉所能具有的的最小产量", - "gtceu.jei.fluid.min_yield":"最小产量:%d", - "gtceu.jei.fluid.vein_weight":"矿脉权重:%d", - "gtceu.jei.fluid.weight_hover":"流体矿脉的生成权重。鼠标悬于图标可查看该流体在特定生物群系中特殊的生成权重", - "gtceu.jei.materials.average_mass":"平均质量:%d", - "gtceu.jei.materials.average_neutrons":"平均中子数:%d", - "gtceu.jei.materials.average_protons":"平均质子数:%d", - "gtceu.jei.multiblock_info":"多方块结构信息", - "gtceu.jei.ore.between.0":"中层矿石", - "gtceu.jei.ore.between.1":"和其他矿石一起生成在矿脉的中间%d层", - "gtceu.jei.ore.biome_weighting":"§d%s的生成权重:§3%d", - "gtceu.jei.ore.biome_weighting_no_spawn":"§d%s的生成权重:§c无法生成", - "gtceu.jei.ore.biome_weighting_title":"§d特定生物群系中的例外权重:", - "gtceu.jei.ore.ore_weight":"矿脉内生成权重:%d%%", - "gtceu.jei.ore.primary.0":"顶层矿石", - "gtceu.jei.ore.primary.1":"在矿脉的顶部%d层生成", - "gtceu.jei.ore.secondary.0":"底层矿石", - "gtceu.jei.ore.secondary.1":"在矿脉的底部%d层生成", - "gtceu.jei.ore.sporadic.0":"散布矿石", - "gtceu.jei.ore.sporadic.1":"生成在矿脉的任何地方", - "gtceu.jei.ore.surface_rock.0":"这种地表岩石标志着矿脉的生成位置。", - "gtceu.jei.ore.surface_rock.1":"挖掘掉落3小撮粉受时运加成", - "gtceu.jei.ore_processing_diagram":"矿物处理流程图", - "gtceu.jei.ore_vein.apatite_vein":"磷灰石矿脉", - "gtceu.jei.ore_vein.banded_iron_vein":"带状铁矿脉", - "gtceu.jei.ore_vein.bauxite_vein_end":"末地铝土矿脉", - "gtceu.jei.ore_vein.beryllium_vein":"铍矿脉", - "gtceu.jei.ore_vein.cassiterite_vein":"锡石矿脉", - "gtceu.jei.ore_vein.certus_quartz":"赛特斯石英", - "gtceu.jei.ore_vein.coal_vein":"煤炭矿脉", - "gtceu.jei.ore_vein.copper_tin_vein":"铜锡矿脉", - "gtceu.jei.ore_vein.copper_vein":"铜矿脉", - "gtceu.jei.ore_vein.diamond_vein":"钻石矿脉", - "gtceu.jei.ore_vein.galena_vein":"方铅矿脉", - "gtceu.jei.ore_vein.garnet_tin_vein":"锡石榴石矿脉", - "gtceu.jei.ore_vein.garnet_vein":"石榴石矿脉", - "gtceu.jei.ore_vein.iron_vein":"铁矿脉", - "gtceu.jei.ore_vein.lapis_vein":"青金石矿脉", - "gtceu.jei.ore_vein.lubricant_vein":"皂滑矿脉", - "gtceu.jei.ore_vein.magnetite_vein_end":"末地磁铁矿脉", - "gtceu.jei.ore_vein.magnetite_vein_ow":"主世界磁铁矿脉", - "gtceu.jei.ore_vein.manganese_vein":"锰矿脉", - "gtceu.jei.ore_vein.manganese_vein_ow":"主世界锰矿脉", - "gtceu.jei.ore_vein.mica_vein":"云母矿脉", - "gtceu.jei.ore_vein.mineral_sand_vein":"矿砂矿脉", - "gtceu.jei.ore_vein.molybdenum_vein":"钼矿脉", - "gtceu.jei.ore_vein.monazite_vein":"独居石矿脉", - "gtceu.jei.ore_vein.naquadah_vein":"硅岩矿脉", - "gtceu.jei.ore_vein.nether_quartz_vein":"下界石英矿脉", - "gtceu.jei.ore_vein.nickel_vein":"镍矿脉", - "gtceu.jei.ore_vein.oilsands_vein":"油砂矿脉", - "gtceu.jei.ore_vein.olivine_vein":"橄榄石矿脉", - "gtceu.jei.ore_vein.pitchblende_vein_end":"末地沥青铀矿脉", - "gtceu.jei.ore_vein.redstone_vein":"红石矿脉", - "gtceu.jei.ore_vein.redstone_vein_ow":"主世界红石矿脉", - "gtceu.jei.ore_vein.saltpeter_vein":"硝石矿脉", - "gtceu.jei.ore_vein.salts_vein":"盐矿脉", - "gtceu.jei.ore_vein.sapphire_vein":"蓝宝石矿脉", - "gtceu.jei.ore_vein.scheelite_vein":"白钨矿脉", - "gtceu.jei.ore_vein.sheldonite_vein":"谢尔顿矿脉", - "gtceu.jei.ore_vein.sulfur_vein":"硫矿脉", - "gtceu.jei.ore_vein.tetrahedrite_vein":"黝铜矿脉", - "gtceu.jei.ore_vein.topaz_vein":"黄玉矿脉", - "gtceu.jei.ore_vein_diagram":"矿脉生成信息", - "gtceu.jei.ore_vein_diagram.chance":"§e概率:%s§r", - "gtceu.jei.ore_vein_diagram.dimensions":"维度:", - "gtceu.jei.ore_vein_diagram.spawn_range":"生成范围:", - "gtceu.jei.ore_vein_diagram.weight":"权重:%s", - "gtceu.jei.programmed_circuit":"编程电路页", - "gtceu.journeymap.options.layers":"勘探层", - "gtceu.journeymap.options.layers.bedrock_fluids":"显示基岩流体矿脉", - "gtceu.journeymap.options.layers.hide_depleted":"隐藏枯竭的矿脉", - "gtceu.journeymap.options.layers.ore_veins":"显示矿脉", - "gtceu.key.armor_charging":"启用/禁用盔甲向物品栏充能", - "gtceu.key.armor_hover":"切换盔甲悬浮模式", - "gtceu.key.armor_mode_switch":"切换盔甲模式", - "gtceu.key.enable_boots":"启用跳跃提升", - "gtceu.key.enable_jetpack":"启用喷气背包", - "gtceu.key.tool_aoe_change":"切换工具范围模式", - "gtceu.large_boiler":"大型锅炉", - "gtceu.large_chemical_reactor":"大型化学反应釜", - "gtceu.laser_engraver":"激光蚀刻机", - "gtceu.lathe":"车床", - "gtceu.macerator":"研磨机", - "gtceu.machine.active_transformer.tooltip.0":"§7变形金刚:伪装的激光", - "gtceu.machine.active_transformer.tooltip.1":"§7可以将任意数量的能量§f输入§7整合为任意数量的能量§f输出§7。", - "gtceu.machine.active_transformer.tooltip.2":"§7当你使用§d激光§7进行能量传输时,拥有惊人的传输距离。", - "gtceu.machine.active_transformer.tooltip.3":" ", - "gtceu.machine.advanced_processing_array.tooltip":"这个世界需要更多并行", - "gtceu.machine.assembly_line.tooltip":"真不是什么多方块组装机!", - "gtceu.machine.available_recipe_map_1.tooltip":"可用配方类型:%s", - "gtceu.machine.available_recipe_map_2.tooltip":"可用配方类型:%s,%s", - "gtceu.machine.available_recipe_map_3.tooltip":"可用配方类型:%s,%s,%s", - "gtceu.machine.available_recipe_map_4.tooltip":"可用配方类型:%s,%s,%s,%s", - "gtceu.machine.basic.input_from_output_side.allow":"允许从输出面输入:", - "gtceu.machine.basic.input_from_output_side.disallow":"禁止从输出面输入:", - "gtceu.machine.bedrock_ore_miner.depletion":"§b损耗率:§f%s%%", - "gtceu.machine.bedrock_ore_miner.description":"§7钻掘基岩之下的叠叠矿石。", - "gtceu.machine.bedrock_ore_miner.production":"§e产量乘数:§f%dx,超频后%fx", - "gtceu.machine.block_breaker.speed_bonus":"§e速度奖励:§f%d%%", - "gtceu.machine.block_breaker.tooltip":"§7挖掘正面的方块并收集掉落物", - "gtceu.machine.boiler.info.cooling.down":"§9冷却中§r%s", - "gtceu.machine.boiler.info.heating.up":"§c加热中§r%s", - "gtceu.machine.boiler.info.producing.steam":" §a(沸腾)", - "gtceu.machine.buffer.tooltip":"存储物品和流体的小小缓冲器", - "gtceu.machine.canner.jei_description":"填入或倒空流体容器,例如桶和流体单元", - "gtceu.machine.central_monitor.tooltip":"但它能运行《毁灭战士》吗?", - "gtceu.machine.charcoal_pile.tooltip":"不烤面包烤燃料的地下面包房", - "gtceu.machine.charcoal_pile.tooltip.0":"§c点火后§7将原木烧制成§a木炭§7。", - "gtceu.machine.charcoal_pile.tooltip.1":"使用可点火的物品右击即可启动。", - "gtceu.machine.charcoal_pile.tooltip.2":"热解发生在下方至多§b9x4x9§7的空间内。", - "gtceu.machine.charcoal_pile.tooltip.3":"原木不可暴露在§e空气§7中!", - "gtceu.machine.cleanroom.tooltip":"将那些讨厌的灰尘拒之门外", - "gtceu.machine.cleanroom.tooltip.0":"将机器放在内部运行超净间配方。", - "gtceu.machine.cleanroom.tooltip.1":"清理污染时耗能为§f30EU/t§7,洁净状态耗能为§f4EU/t§7。", - "gtceu.machine.cleanroom.tooltip.2":"超频增加每个周期的清洁度。", - "gtceu.machine.cleanroom.tooltip.3":"§b大小:§f5x5x5到15x15x15", - "gtceu.machine.cleanroom.tooltip.4":"天花板需要§f过滤器机械方块§7,不包含天花板的边缘。", - "gtceu.machine.cleanroom.tooltip.5":"接受最多§f四扇门§7!门处于打开状态时不会影响洁净度。", - "gtceu.machine.cleanroom.tooltip.6":"发电机、消声仓、采矿机和原始机器对于超净间来说太脏了!", - "gtceu.machine.cleanroom.tooltip.7":"通过墙壁上的§f机器外壳§7或§f二极管§7向内部输入能量。", - "gtceu.machine.cleanroom.tooltip.ae2.channels":"通过墙壁上的§f机器外壳§7发送最多§f8个AE2频道§7。", - "gtceu.machine.cleanroom.tooltip.ae2.no_channels":"通过墙壁上的§f机器外壳§7连通§aAE2网络§7。", - "gtceu.machine.cleanroom.tooltip.hold_ctrl":"按住CTRL以显示完整的结构信息", - "gtceu.machine.coke_oven.tooltip":"为炼钢和发电提供更优质的燃料", - "gtceu.machine.coke_oven_hatch.tooltip":"§7允许自动化焦炉的物品吞吐。", - "gtceu.machine.combustion_generator.tooltip":"§7需要液体燃料", - "gtceu.machine.computation_receiver_hatch.tooltip":"为多方块结构输入算力数据", - "gtceu.machine.computation_transmitter_hatch.tooltip":"从多方块结构输出算力数据", - "gtceu.machine.cracker.tooltip":"有它,石油才有用", - "gtceu.machine.cracker.tooltip.1":"使用§6白铜§7后的每个线圈等级可以减少§f10%%§7的能源消耗。", - "gtceu.machine.data_access_hatch.tooltip.0":"令多方块结构得以访问数据", - "gtceu.machine.data_access_hatch.tooltip.1":"添加了§a%s§7个数据容器(闪存等)插槽", - "gtceu.machine.data_bank.tooltip.0":"你的个人网络存储器", - "gtceu.machine.data_bank.tooltip.1":"大容量数据存储,使用光缆传输。", - "gtceu.machine.data_bank.tooltip.2":"数据库间可以相互连接。", - "gtceu.machine.data_bank.tooltip.3":"每个数据/光学仓耗能为§f%s EU/t§7。", - "gtceu.machine.data_bank.tooltip.4":"每个已连接的数据/光学仓耗能为§f%s EU/t§7。", - "gtceu.machine.data_receiver_hatch.tooltip":"为多方块结构输入研究数据", - "gtceu.machine.data_transmitter_hatch.tooltip":"从多方块结构输出研究数据", - "gtceu.machine.diode.message":"最大电流:%s", - "gtceu.machine.diode.tooltip_general":"将只允许能量向一个方向流动,并限制电流。", - "gtceu.machine.diode.tooltip_starts_at":"默认允许§f1A§r电流通行,使用软锤切换。", - "gtceu.machine.diode.tooltip_tool_usage":"用软锤右击以改变电流。", - "gtceu.machine.distillation_tower.tooltip":"流体精炼厂", - "gtceu.machine.drum.disable_output":"不排出液体", - "gtceu.machine.drum.enable_output":"将液体排到底面相邻的容器中", - "gtceu.machine.dual_hatch.export.tooltip":"为多方块结构输出物品和流体", - "gtceu.machine.dual_hatch.import.tooltip":"为多方块结构输入物品和流体", - "gtceu.machine.electric_blast_furnace.tooltip":"电力高炉有了,那电力烟熏炉呢?", - "gtceu.machine.electric_blast_furnace.tooltip.0":"每超过配方温度§f900K§7,耗能均将乘以§f95%%§7(不计超频)。", - "gtceu.machine.electric_blast_furnace.tooltip.1":"每超过配方温度§f1800K§7,将一次超频的效率变为§f100%%§7(无损超频)。", - "gtceu.machine.electric_blast_furnace.tooltip.2":"超过§fMV§7后的每一级电压,都会将温度提高§f100K§7。", - "gtceu.machine.endpoint.tooltip.0":"使用§f长距离管道§7方块连接管道接口以创建管路。", - "gtceu.machine.endpoint.tooltip.1":"管路必须有且仅有一个§f1输入§7接口和一个§f1输出§7接口。", - "gtceu.machine.endpoint.tooltip.2":"只有管道接口需要被§f区块加载§7。", - "gtceu.machine.endpoint.tooltip.min_length":"§b最低接口间距:§f%d格方块", - "gtceu.machine.energy_converter.description":"在EU和FE之间转换能量形式。", - "gtceu.machine.energy_converter.message_conversion_eu":"EU转为FE,输入:%dA %d EU,输出:%d FE", - "gtceu.machine.energy_converter.message_conversion_native":"FE转为EU,输入:%dFE,输出:%dA %d EU", - "gtceu.machine.energy_converter.tooltip_conversion_eu":"§aEU转换:§f%dA %d EU(%s§f)§7 -> %d FE", - "gtceu.machine.energy_converter.tooltip_conversion_native":"§cFE转换:§f%d FE -> %dA %d EU (%s§f)", - "gtceu.machine.energy_converter.tooltip_tool_usage":"默认§f转换为FE§r,使用软锤切换。", - "gtceu.machine.energy_hatch.input.tooltip":"为多方块结构输入能量", - "gtceu.machine.energy_hatch.input_hi_amp.tooltip":"为多方块结构输入更多电流", - "gtceu.machine.energy_hatch.output.tooltip":"为多方块结构输出能量", - "gtceu.machine.energy_hatch.output_hi_amp.tooltip":"为多方块结构输出更多电流", - "gtceu.machine.ev_alloy_smelter.tooltip":"§7高科技融合冶炼炉", - "gtceu.machine.ev_arc_furnace.tooltip":"§7谁需要高炉?", - "gtceu.machine.ev_assembler.tooltip":"§7复仇者,集结!", - "gtceu.machine.ev_autoclave.tooltip":"§7使粉末结晶", - "gtceu.machine.ev_bender.tooltip":"§7吁,他不行!我们要的是BENDER!!!", - "gtceu.machine.ev_brewery.tooltip":"§7紧凑高效的药剂酿造", - "gtceu.machine.ev_canner.tooltip":"§7为容器填入或从中倒出物品及流体", - "gtceu.machine.ev_centrifuge.tooltip":"§7分子分离机", - "gtceu.machine.ev_chemical_bath.tooltip":"§7用化学品浸渍以分离矿物", - "gtceu.machine.ev_chemical_reactor.tooltip":"§7让化学品相互反应", - "gtceu.machine.ev_circuit_assembler.tooltip":"§7一拿一放,东拣西装", - "gtceu.machine.ev_compressor.tooltip":"§7全自动压缩机 C77", - "gtceu.machine.ev_cutter.tooltip":"§7切片,切块", - "gtceu.machine.ev_distillery.tooltip":"§7提取流体精华", - "gtceu.machine.ev_electric_furnace.tooltip":"§7别把它当成 Commodore 64 了", - "gtceu.machine.ev_electrolyzer.tooltip":"§7电离分子", - "gtceu.machine.ev_electromagnetic_separator.tooltip":"§7分离出磁性矿物", - "gtceu.machine.ev_extractor.tooltip":"§7毁灭级榨汁机 - D123", - "gtceu.machine.ev_extruder.tooltip":"§7通用型金属加工器", - "gtceu.machine.ev_fermenter.tooltip":"§7发酵流体", - "gtceu.machine.ev_fluid_drilling_rig.tooltip":"甚至可以抽空整个油田", - "gtceu.machine.ev_fluid_heater.tooltip":"§7加热你的流体", - "gtceu.machine.ev_fluid_solidifier.tooltip":"§7冷却液体形成固体", - "gtceu.machine.ev_forge_hammer.tooltip":"§7停,抡锤时间到!", - "gtceu.machine.ev_forming_press.tooltip":"§7图像拓印者", - "gtceu.machine.ev_gas_collector.tooltip":"§7依照维度从空气中收集种类各异的气体", - "gtceu.machine.ev_laser_engraver.tooltip":"§7请勿直视激光", - "gtceu.machine.ev_lathe.tooltip":"§7以更高的效率生产杆", - "gtceu.machine.ev_macerator.tooltip":"§7粉碎矿石并获得副产物", - "gtceu.machine.ev_mass_fabricator.tooltip":"§7UU物质 = “质量” * “发生”的平方", - "gtceu.machine.ev_mixer.tooltip":"§7它能被搅碎吗?", - "gtceu.machine.ev_ore_washer.tooltip":"§7清洗矿石以获得更多副产物", - "gtceu.machine.ev_packer.tooltip":"§7取出盒外,放入盒中", - "gtceu.machine.ev_polarizer.tooltip":"§7将你的磁体极化", - "gtceu.machine.ev_replicator.tooltip":"§7生产最纯净的元素", - "gtceu.machine.ev_rock_crusher.tooltip":"§7在水平相邻处放置熔岩和水", - "gtceu.machine.ev_scanner.tooltip":"§7扫描材料及其它物质", - "gtceu.machine.ev_sifter.tooltip":"§7保持冷静,继续筛选", - "gtceu.machine.ev_thermal_centrifuge.tooltip":"§7更精确地分离矿石", - "gtceu.machine.ev_wiremill.tooltip":"§7更高效地生产导线", - "gtceu.machine.extreme_combustion_engine.tooltip":"极限化学能释放者", - "gtceu.machine.fisher.requirement":"需要以机器正下方为中心的%dx%d正方形水源。", - "gtceu.machine.fisher.speed":"每%d刻抓到一些东西", - "gtceu.machine.fisher.tooltip":"每次消耗一根线捕鱼", - "gtceu.machine.fluid_drilling_rig.depletion":"§b损耗率:§f%s%%", - "gtceu.machine.fluid_drilling_rig.description":"§7钻取基岩之下的漫漫流体。", - "gtceu.machine.fluid_drilling_rig.production":"§e产量乘数:§f%dx,超频后%fx", - "gtceu.machine.fluid_hatch.export.tooltip":"为多方块结构输出流体", - "gtceu.machine.fluid_hatch.import.tooltip":"为多方块结构输入流体", - "gtceu.machine.fluid_tank.fluid":"含有%sL%s", - "gtceu.machine.fluid_tank.max_multiblock":"多方块结构最大尺寸:%dx%dx%d", - "gtceu.machine.fusion_reactor.capacity":"§7储能上限:§e%sM EU", - "gtceu.machine.fusion_reactor.luv.tooltip":"我发动魔法卡,融合!", - "gtceu.machine.fusion_reactor.overclocking":"超频时消耗两倍能量,工作时间减半", - "gtceu.machine.fusion_reactor.uv.tooltip":"化 作 白 矮 星 砸 向 你", - "gtceu.machine.fusion_reactor.zpm.tooltip":"一 轮 红 日 落 大 地", - "gtceu.machine.gas_turbine.tooltip":"§7需要气体燃料", - "gtceu.machine.high_performance_computation_array.tooltip.0":"只是普通的超级计算机", - "gtceu.machine.high_performance_computation_array.tooltip.1":"用于生产§f算力§7(同时会产生热量)。", - "gtceu.machine.high_performance_computation_array.tooltip.2":"需要HPCA组件来生产§fCWU/t§7(计算工作单元)。", - "gtceu.machine.hp_steam_alloy_smelter.tooltip":"§7融合冶炼炉", - "gtceu.machine.hp_steam_compressor.tooltip":"§7压缩物品", - "gtceu.machine.hp_steam_extractor.tooltip":"§7提取你的第一块橡胶", - "gtceu.machine.hp_steam_forge_hammer.tooltip":"§7锻造锤", - "gtceu.machine.hp_steam_furnace.tooltip":"§7利用蒸汽冶炼物品", - "gtceu.machine.hp_steam_liquid_boiler.tooltip":"§7比小型液体燃料锅炉更快", - "gtceu.machine.hp_steam_macerator.tooltip":"§7粉碎你的矿石", - "gtceu.machine.hp_steam_rock_crusher.tooltip":"§7在水平相邻处放置熔岩和水", - "gtceu.machine.hp_steam_solar_boiler.tooltip":"§7来自太阳的蒸汽能源", - "gtceu.machine.hp_steam_solid_boiler.tooltip":"§7比小型固体燃料锅炉更快", - "gtceu.machine.hpca.active_cooler_component.tooltip":"不再免费,但效果更好", - "gtceu.machine.hpca.advanced_computation_component.damaged.name":"损坏的HPCA高级计算组件", - "gtceu.machine.hpca.advanced_computation_component.damaged.tooltip":"只花了一只胳膊和一条腿", - "gtceu.machine.hpca.advanced_computation_component.tooltip":"计算大联盟", - "gtceu.machine.hpca.bridge_component.tooltip":"这就是高性能计算阵列中“阵列”一词的来源", - "gtceu.machine.hpca.component_general.max_eut":"§6最大能量:§f%d EU/t", - "gtceu.machine.hpca.component_general.upkeep_eut":"§e维持耗能:§f%d EU/t", - "gtceu.machine.hpca.component_type.bridge":"允许§fHPCA§7与§f网络交换机§7连接", - "gtceu.machine.hpca.component_type.computation_cooling":"§c最多需要:§f%d 冷却", - "gtceu.machine.hpca.component_type.computation_cwut":"§9算力:§f%d CWU/t", - "gtceu.machine.hpca.component_type.cooler_active":"§b冷却类型:§f主动", - "gtceu.machine.hpca.component_type.cooler_active_coolant":"§c最多需要:§f%d mB/t %s", - "gtceu.machine.hpca.component_type.cooler_cooling":"§a提供:§f%d 冷却", - "gtceu.machine.hpca.component_type.cooler_passive":"§b冷却类型:§f被动", - "gtceu.machine.hpca.component_type.damaged":"HPCA过热可能会损坏!", - "gtceu.machine.hpca.computation_component.damaged.name":"损坏的HPCA计算组件", - "gtceu.machine.hpca.computation_component.damaged.tooltip":"免费的可回收材料", - "gtceu.machine.hpca.computation_component.tooltip":"宝宝的第一次计算", - "gtceu.machine.hpca.empty_component.tooltip":"只是为了填充空间", - "gtceu.machine.hpca.heat_sink_component.tooltip":"免费冷却!有免费的吗?", - "gtceu.machine.hull.tooltip":"§7你需要§5绝§d对§4天§c马§e行§a空§b的§3想§9象§1能§5力§7来使用它", - "gtceu.machine.hv_alloy_smelter.tooltip":"§7高科技融合冶炼炉", - "gtceu.machine.hv_arc_furnace.tooltip":"§7谁需要高炉?", - "gtceu.machine.hv_assembler.tooltip":"§7复仇者,集结!", - "gtceu.machine.hv_autoclave.tooltip":"§7使粉末结晶", - "gtceu.machine.hv_bender.tooltip":"§7吁,他不行!我们要的是BENDER!!!", - "gtceu.machine.hv_brewery.tooltip":"§7紧凑高效的药剂酿造", - "gtceu.machine.hv_canner.tooltip":"§7为容器填入或从中倒出物品及流体", - "gtceu.machine.hv_centrifuge.tooltip":"§7分离分子", - "gtceu.machine.hv_chemical_bath.tooltip":"§7用化学品浸渍以分离矿物", - "gtceu.machine.hv_chemical_reactor.tooltip":"§7让化学品相互反应", - "gtceu.machine.hv_circuit_assembler.tooltip":"§7一拿一放,东拣西装", - "gtceu.machine.hv_compressor.tooltip":"§7全自动压缩机 C77", - "gtceu.machine.hv_cutter.tooltip":"§7切片,切块", - "gtceu.machine.hv_distillery.tooltip":"§7提取流体精华", - "gtceu.machine.hv_electric_furnace.tooltip":"§7别把它当成 Commodore 64 了", - "gtceu.machine.hv_electrolyzer.tooltip":"§7电离分子", - "gtceu.machine.hv_electromagnetic_separator.tooltip":"§7分离出磁性矿物", - "gtceu.machine.hv_extractor.tooltip":"§7毁灭级榨汁机 - D123", - "gtceu.machine.hv_extruder.tooltip":"§7通用型金属加工器", - "gtceu.machine.hv_fermenter.tooltip":"§7发酵流体", - "gtceu.machine.hv_fluid_drilling_rig.tooltip":"并不能用来液压破碎", - "gtceu.machine.hv_fluid_heater.tooltip":"§7加热你的流体", - "gtceu.machine.hv_fluid_solidifier.tooltip":"§7冷却液体形成固体", - "gtceu.machine.hv_forge_hammer.tooltip":"§7停,抡锤时间到!", - "gtceu.machine.hv_forming_press.tooltip":"§7图像拓印者", - "gtceu.machine.hv_gas_collector.tooltip":"§7依照维度从空气中收集种类各异的气体", - "gtceu.machine.hv_laser_engraver.tooltip":"§7请勿直视激光", - "gtceu.machine.hv_lathe.tooltip":"§7以更高的效率生产杆", - "gtceu.machine.hv_macerator.tooltip":"§7粉碎矿石并获得副产物", - "gtceu.machine.hv_mass_fabricator.tooltip":"§7UU物质 = “质量” * “发生”的平方", - "gtceu.machine.hv_mixer.tooltip":"§7它能被搅碎吗?", - "gtceu.machine.hv_ore_washer.tooltip":"§7清洗矿石以获得更多副产物", - "gtceu.machine.hv_packer.tooltip":"§7取出盒外,放入盒中", - "gtceu.machine.hv_polarizer.tooltip":"§7将你的磁体极化", - "gtceu.machine.hv_replicator.tooltip":"§7生产最纯净的元素", - "gtceu.machine.hv_rock_crusher.tooltip":"§7在水平相邻处放置熔岩和水", - "gtceu.machine.hv_scanner.tooltip":"§7扫描材料及其它物质", - "gtceu.machine.hv_sifter.tooltip":"§7保持冷静,继续筛选", - "gtceu.machine.hv_thermal_centrifuge.tooltip":"§7更精确地分离矿石", - "gtceu.machine.hv_wiremill.tooltip":"§7更高效地生产导线", - "gtceu.machine.implosion_compressor.tooltip":"唯一一台你想要爆一爆的机器", - "gtceu.machine.item_bus.export.tooltip":"为多方块结构输出物品", - "gtceu.machine.item_bus.import.tooltip":"为多方块结构输入物品", - "gtceu.machine.item_collector.gui.collect_range":"作用区域:%sx%s格", - "gtceu.machine.item_collector.tooltip":"吸取它周围的掉落物", - "gtceu.machine.iv_alloy_smelter.tooltip":"§7合金集聚器", - "gtceu.machine.iv_arc_furnace.tooltip":"§7放电加热器", - "gtceu.machine.iv_assembler.tooltip":"§l不是§7工作台", - "gtceu.machine.iv_autoclave.tooltip":"§7高压锅", - "gtceu.machine.iv_bender.tooltip":"§7形态扭曲器", - "gtceu.machine.iv_brewery.tooltip":"§7酿酒好手", - "gtceu.machine.iv_canner.tooltip":"§7罐作机", - "gtceu.machine.iv_centrifuge.tooltip":"§7分子旋风", - "gtceu.machine.iv_chemical_bath.tooltip":"§7化学品浸润器", - "gtceu.machine.iv_chemical_reactor.tooltip":"§7化学表演艺术家", - "gtceu.machine.iv_circuit_assembler.tooltip":"§7电子厂", - "gtceu.machine.iv_compressor.tooltip":"§7奇点凝缩机", - "gtceu.machine.iv_cutter.tooltip":"§7物质切削器", - "gtceu.machine.iv_distillery.tooltip":"§7凝结物质分离器", - "gtceu.machine.iv_electric_furnace.tooltip":"§7电子激发处理器", - "gtceu.machine.iv_electrolyzer.tooltip":"§7分子崩解机 E-4906", - "gtceu.machine.iv_electromagnetic_separator.tooltip":"§7电磁分类器", - "gtceu.machine.iv_extractor.tooltip":"§7真空提取机", - "gtceu.machine.iv_extruder.tooltip":"§7材料压出器", - "gtceu.machine.iv_fermenter.tooltip":"§7发酵加速器", - "gtceu.machine.iv_fluid_heater.tooltip":"§7热量灌注器", - "gtceu.machine.iv_fluid_solidifier.tooltip":"§7并不是制冰机", - "gtceu.machine.iv_forge_hammer.tooltip":"§7锻板机", - "gtceu.machine.iv_forming_press.tooltip":"§7对象层化机", - "gtceu.machine.iv_gas_collector.tooltip":"§7依照维度从大气层中收集种类各异的气体", - "gtceu.machine.iv_laser_engraver.tooltip":"§7功率高达两百零四万瓦", - "gtceu.machine.iv_lathe.tooltip":"§7全自动旋转车削机 L-5906", - "gtceu.machine.iv_macerator.tooltip":"§7全自动破壁机 9001", - "gtceu.machine.iv_mass_fabricator.tooltip":"§7创世纪工厂", - "gtceu.machine.iv_mixer.tooltip":"§7物质组织器", - "gtceu.machine.iv_ore_washer.tooltip":"§7全新用途滚筒洗衣机 I-360", - "gtceu.machine.iv_packer.tooltip":"§7装箱者", - "gtceu.machine.iv_polarizer.tooltip":"§7磁性引入机", - "gtceu.machine.iv_replicator.tooltip":"§7物质粘贴机", - "gtceu.machine.iv_rock_crusher.tooltip":"§7岩浆冷却固化器 R-8200", - "gtceu.machine.iv_scanner.tooltip":"§7异常探测仪", - "gtceu.machine.iv_sifter.tooltip":"§7由群峦传说赞助提供", - "gtceu.machine.iv_thermal_centrifuge.tooltip":"§7烈焰血汗工厂 T-6350", - "gtceu.machine.iv_wiremill.tooltip":"§7锭材拉伸机", - "gtceu.machine.large_boiler.bronze.tooltip":"再多来点蒸汽!", - "gtceu.machine.large_boiler.steel.tooltip":"木炭吞噬者", - "gtceu.machine.large_boiler.titanium.tooltip":"我超级魔法燃料呢?", - "gtceu.machine.large_boiler.tungstensteel.tooltip":"你手上有几座煤矿也不够它吃的吧?", - "gtceu.machine.large_chemical_reactor.tooltip":"黑盒反应器", - "gtceu.machine.large_combustion_engine.tooltip":"燃料点火室", - "gtceu.machine.large_combustion_engine.tooltip.boost_extreme":"提供§f80 mB/s§7的液态氧,并消耗§f双倍§7燃料以产生高达§f%s§7EU/t的功率。", - "gtceu.machine.large_combustion_engine.tooltip.boost_regular":"提供§f20 mB/s§7的氧气,并消耗§f双倍§7燃料以产生高达§f%s§7EU/t的功率。", - "gtceu.machine.large_miner.ev.tooltip":"替你挖矿", - "gtceu.machine.large_miner.iv.tooltip":"挖掉整个生物群系", - "gtceu.machine.large_miner.luv.tooltip":"掀翻整片大陆", - "gtceu.machine.large_turbine.gas.tooltip":"并不是喷气发动机", - "gtceu.machine.large_turbine.plasma.tooltip":"等离子能量虹吸器", - "gtceu.machine.large_turbine.steam.tooltip":"别把头伸进去", - "gtceu.machine.laser_hatch.both.tooltip":"§c激光传导线缆必须直线摆放!§7", - "gtceu.machine.laser_hatch.source.tooltip":"§7远距离发射能量", - "gtceu.machine.laser_hatch.target.tooltip":"§7远距离接收能量", - "gtceu.machine.laser_source_hatch.tooltip.0":"远距离发射能量", - "gtceu.machine.laser_source_hatch.tooltip.1":"§c激光传导线缆必须直线摆放!§7", - "gtceu.machine.laser_target_hatch.tooltip.0":"远距离接收能量", - "gtceu.machine.laser_target_hatch.tooltip.1":"§c激光传导线缆必须直线摆放!§7", - "gtceu.machine.locked_safe.malfunctioning":"§c故障中!", - "gtceu.machine.locked_safe.requirements":"§7需要更换以下部件:", - "gtceu.machine.lp_steam_alloy_smelter.tooltip":"§7融合冶炼炉", - "gtceu.machine.lp_steam_compressor.tooltip":"§7压缩物品", - "gtceu.machine.lp_steam_extractor.tooltip":"§7提取你的第一块橡胶", - "gtceu.machine.lp_steam_forge_hammer.tooltip":"§7锻造锤", - "gtceu.machine.lp_steam_furnace.tooltip":"§7利用蒸汽冶炼物品", - "gtceu.machine.lp_steam_liquid_boiler.tooltip":"§7消耗液体的锅炉", - "gtceu.machine.lp_steam_macerator.tooltip":"§7粉碎你的矿石", - "gtceu.machine.lp_steam_rock_crusher.tooltip":"§7在水平相邻处放置熔岩和水", - "gtceu.machine.lp_steam_solar_boiler.tooltip":"§7来自太阳的蒸汽能源", - "gtceu.machine.lp_steam_solid_boiler.tooltip":"§7获取蒸汽能源的早期手段", - "gtceu.machine.luv_alloy_smelter.tooltip":"§7合金集聚器", - "gtceu.machine.luv_arc_furnace.tooltip":"§7放电加热器", - "gtceu.machine.luv_assembler.tooltip":"§l不是§7工作台", - "gtceu.machine.luv_autoclave.tooltip":"§7高压锅", - "gtceu.machine.luv_bender.tooltip":"§7形态扭曲器", - "gtceu.machine.luv_brewery.tooltip":"§7酿酒好手", - "gtceu.machine.luv_canner.tooltip":"§7罐作机", - "gtceu.machine.luv_centrifuge.tooltip":"§7分子旋风", - "gtceu.machine.luv_chemical_bath.tooltip":"§7化学品浸润器", - "gtceu.machine.luv_chemical_reactor.tooltip":"§7化学表演艺术家", - "gtceu.machine.luv_circuit_assembler.tooltip":"§7电子厂", - "gtceu.machine.luv_compressor.tooltip":"§7奇点凝缩机", - "gtceu.machine.luv_cutter.tooltip":"§7物质切削器", - "gtceu.machine.luv_distillery.tooltip":"§7凝结物质分离器", - "gtceu.machine.luv_electric_furnace.tooltip":"§7电子激发处理器", - "gtceu.machine.luv_electrolyzer.tooltip":"§7分子崩解机 E-4907", - "gtceu.machine.luv_electromagnetic_separator.tooltip":"§7电磁分类器", - "gtceu.machine.luv_extractor.tooltip":"§7真空提取机", - "gtceu.machine.luv_extruder.tooltip":"§7材料压出器", - "gtceu.machine.luv_fermenter.tooltip":"§7发酵加速器", - "gtceu.machine.luv_fluid_heater.tooltip":"§7热量灌注器", - "gtceu.machine.luv_fluid_solidifier.tooltip":"§7并不是制冰机", - "gtceu.machine.luv_forge_hammer.tooltip":"§7锻板机", - "gtceu.machine.luv_forming_press.tooltip":"§7对象层化机", - "gtceu.machine.luv_gas_collector.tooltip":"§7依照维度从大气层中收集种类各异的气体", - "gtceu.machine.luv_laser_engraver.tooltip":"§7功率高达八百一十六万瓦", - "gtceu.machine.luv_lathe.tooltip":"§7全自动旋转车削机 L-5907", - "gtceu.machine.luv_macerator.tooltip":"§7全自动破壁机 9002", - "gtceu.machine.luv_mass_fabricator.tooltip":"§7创世纪工厂", - "gtceu.machine.luv_mixer.tooltip":"§7物质组织器", - "gtceu.machine.luv_ore_washer.tooltip":"§7全新用途滚筒洗衣机 I-361", - "gtceu.machine.luv_packer.tooltip":"§7装箱者", - "gtceu.machine.luv_polarizer.tooltip":"§7磁性引入机", - "gtceu.machine.luv_replicator.tooltip":"§7物质粘贴机", - "gtceu.machine.luv_rock_crusher.tooltip":"§7岩浆冷却固化器 R-9200", - "gtceu.machine.luv_scanner.tooltip":"§7异常探测仪", - "gtceu.machine.luv_sifter.tooltip":"§7由群峦传说赞助提供", - "gtceu.machine.luv_thermal_centrifuge.tooltip":"§7烈焰血汗工厂 T-6351", - "gtceu.machine.luv_wiremill.tooltip":"§7锭材拉伸机", - "gtceu.machine.lv_alloy_smelter.tooltip":"§7高科技融合冶炼炉", - "gtceu.machine.lv_arc_furnace.tooltip":"§7谁需要高炉?", - "gtceu.machine.lv_assembler.tooltip":"§7复仇者,集结!", - "gtceu.machine.lv_autoclave.tooltip":"§7使粉末结晶", - "gtceu.machine.lv_bender.tooltip":"§7吁,他不行!我们要的是BENDER!!!", - "gtceu.machine.lv_brewery.tooltip":"§7紧凑高效的药剂酿造", - "gtceu.machine.lv_canner.tooltip":"§7为容器填入或从中倒出物品及流体", - "gtceu.machine.lv_centrifuge.tooltip":"§7分离分子", - "gtceu.machine.lv_chemical_bath.tooltip":"§7用化学品浸渍以分离矿物", - "gtceu.machine.lv_chemical_reactor.tooltip":"§7让化学品相互反应", - "gtceu.machine.lv_circuit_assembler.tooltip":"§7一拿一放,东拣西装", - "gtceu.machine.lv_compressor.tooltip":"§7全自动压缩机 C77", - "gtceu.machine.lv_cutter.tooltip":"§7切片,切块", - "gtceu.machine.lv_distillery.tooltip":"§7提取流体精华", - "gtceu.machine.lv_electric_furnace.tooltip":"§7别把它当成 Commodore 64 了", - "gtceu.machine.lv_electrolyzer.tooltip":"§7电离分子", - "gtceu.machine.lv_electromagnetic_separator.tooltip":"§7分离出磁性矿物", - "gtceu.machine.lv_extractor.tooltip":"§7毁灭级榨汁机 - D123", - "gtceu.machine.lv_extruder.tooltip":"§7通用型金属加工器", - "gtceu.machine.lv_fermenter.tooltip":"§7发酵流体", - "gtceu.machine.lv_fluid_heater.tooltip":"§7加热你的流体", - "gtceu.machine.lv_fluid_solidifier.tooltip":"§7冷却液体形成固体", - "gtceu.machine.lv_forge_hammer.tooltip":"§7停,抡锤时间到!", - "gtceu.machine.lv_forming_press.tooltip":"§7图像拓印者", - "gtceu.machine.lv_gas_collector.tooltip":"§7依照维度从空气中收集种类各异的气体", - "gtceu.machine.lv_laser_engraver.tooltip":"§7请勿直视激光", - "gtceu.machine.lv_lathe.tooltip":"§7以更高的效率生产杆", - "gtceu.machine.lv_macerator.tooltip":"§7粉碎矿石,但没有副产物", - "gtceu.machine.lv_mass_fabricator.tooltip":"§7UU物质 = “质量” * “发生”的平方", - "gtceu.machine.lv_mixer.tooltip":"§7它能被搅碎吗?", - "gtceu.machine.lv_ore_washer.tooltip":"§7清洗矿石以获得更多副产物", - "gtceu.machine.lv_packer.tooltip":"§7取出盒外,放入盒中", - "gtceu.machine.lv_polarizer.tooltip":"§7将你的磁体极化", - "gtceu.machine.lv_replicator.tooltip":"§7生产最纯净的元素", - "gtceu.machine.lv_rock_crusher.tooltip":"§7在水平相邻处放置熔岩和水", - "gtceu.machine.lv_scanner.tooltip":"§7扫描材料及其它物质", - "gtceu.machine.lv_sifter.tooltip":"§7保持冷静,继续筛选", - "gtceu.machine.lv_thermal_centrifuge.tooltip":"§7更精确地分离矿石", - "gtceu.machine.lv_wiremill.tooltip":"§7更高效地生产导线", - "gtceu.machine.machine_hatch.locked":"机器接口已锁定", - "gtceu.machine.machine_hatch.processing_array":"当在§e处理阵列§7中时,仅可搭载适用于§e处理阵列§7的机器", - "gtceu.machine.machine_hatch.tooltip":"仅可容纳有效物品的特型访问总线", - "gtceu.machine.maintenance_hatch.tooltip":"用于维护多方块结构", - "gtceu.machine.maintenance_hatch_cleanroom_auto.tooltip.0":"可以自动维护多方块结构,附带清洁功能!", - "gtceu.machine.maintenance_hatch_cleanroom_auto.tooltip.1":"清洁方式:", - "gtceu.machine.maintenance_hatch_configurable.tooltip.0":"更精细的维护多方块结构", - "gtceu.machine.maintenance_hatch_configurable.tooltip.1":"起手无需维护!", - "gtceu.machine.maintenance_hatch_full_auto.tooltip":"可以自动维护多方块结构", - "gtceu.machine.maintenance_hatch_tape_slot.tooltip":"放入胶带以防止出现故障", - "gtceu.machine.maintenance_hatch_tool_slot.tooltip":"所需工具处于物品栏时空手点击该槽位来维护", - "gtceu.machine.me.copy_paste.tooltip":"手持闪存潜行右键点击以复制设置,右键点击以应用", - "gtceu.machine.me.export.tooltip":"在连接到ME网络之前,它具有无限容量。", - "gtceu.machine.me.fluid_export.tooltip":"将流体直接存储到ME网络中。", - "gtceu.machine.me.fluid_import.data_stick.name":"§oME输入仓配置数据", - "gtceu.machine.me.fluid_import.tooltip":"自动从ME网络获取流体。", - "gtceu.machine.me.import_copy_settings":"已将设置保存到闪存", - "gtceu.machine.me.import_paste_settings":"已从闪存应用设置", - "gtceu.machine.me.item_export.tooltip":"将物品直接存储到ME网络中。", - "gtceu.machine.me.item_import.data_stick.name":"§oME输入总线配置数据", - "gtceu.machine.me.item_import.tooltip":"自动从ME网络获取物品。", - "gtceu.machine.me.stocking_auto_pull_disabled":"ME自动拉取已禁用", - "gtceu.machine.me.stocking_auto_pull_enabled":"ME自动拉取已启用", - "gtceu.machine.me.stocking_fluid.tooltip.0":"直接从ME网络抽取流体", - "gtceu.machine.me.stocking_fluid.tooltip.1":"ME自动拉取模式将自动标记ME网络中的前16种流体,每5秒更新一次。", - "gtceu.machine.me.stocking_item.tooltip.0":"直接从ME网络抽取物品", - "gtceu.machine.me.stocking_item.tooltip.1":"ME自动拉取模式将自动标记ME网络中的前16种物品,每5秒更新一次。", - "gtceu.machine.me_import_fluid_hatch.configs.tooltip":"可标记16种流体", - "gtceu.machine.me_import_item_hatch.configs.tooltip":"可标记16种物品", - "gtceu.machine.miner.chunkradius":"区块半径:%d", - "gtceu.machine.miner.fluid_usage":"消耗§f%d mB/t§7的§f%s§7,每次超频都会使消耗量加倍。", - "gtceu.machine.miner.minex":"mX:%d", - "gtceu.machine.miner.miney":"mY:%d", - "gtceu.machine.miner.minez":"mZ:%d", - "gtceu.machine.miner.multi.description":"一种占地面积大、产矿量大的多方块采矿机。", - "gtceu.machine.miner.multi.modes":"具有精准采集和区块对齐模式。", - "gtceu.machine.miner.multi.production":"它能产出§f三倍§7于§f研磨机§7的粉碎矿石。", - "gtceu.machine.miner.per_block":"§7每个方块需要§f%d§7秒。", - "gtceu.machine.miner.radius":"半径:%d", - "gtceu.machine.miner.startx":"sX:%d", - "gtceu.machine.miner.starty":"sY:%d", - "gtceu.machine.miner.startz":"sZ:%d", - "gtceu.machine.miner.tooltip":"§7只挖掘机器下方的矿石!工作范围默认为§f%sx%s§7。", - "gtceu.machine.muffle.off":"静音:已禁用", - "gtceu.machine.muffle.on":"静音:已启用", - "gtceu.machine.muffler_hatch.tooltip.0":"从机器中回收废料", - "gtceu.machine.muffler_hatch.tooltip.1":"§l切 勿 阻 隔 输 出 口!", - "gtceu.machine.multi_furnace.tooltip":"就像家里的烤箱一样", - "gtceu.machine.multiblock.tank.tooltip":"通过控制器或储罐阀门进行吞吐。", - "gtceu.machine.mv_alloy_smelter.tooltip":"§7高科技融合冶炼炉", - "gtceu.machine.mv_arc_furnace.tooltip":"§7谁需要高炉?", - "gtceu.machine.mv_assembler.tooltip":"§7复仇者,集结!", - "gtceu.machine.mv_autoclave.tooltip":"§7使粉末结晶", - "gtceu.machine.mv_bender.tooltip":"§7吁,他不行!我们要的是BENDER!!!", - "gtceu.machine.mv_brewery.tooltip":"§7紧凑高效的药剂酿造", - "gtceu.machine.mv_canner.tooltip":"§7为容器填入或从中倒出物品及流体", - "gtceu.machine.mv_centrifuge.tooltip":"§7分离分子", - "gtceu.machine.mv_chemical_bath.tooltip":"§7用化学品浸渍以分离矿物", - "gtceu.machine.mv_chemical_reactor.tooltip":"§7让化学品相互反应", - "gtceu.machine.mv_circuit_assembler.tooltip":"§7一拿一放,东拣西装", - "gtceu.machine.mv_compressor.tooltip":"§7全自动压缩机 C77", - "gtceu.machine.mv_cutter.tooltip":"§7切片,切块", - "gtceu.machine.mv_distillery.tooltip":"§7提取流体精华", - "gtceu.machine.mv_electric_furnace.tooltip":"§7别把它当成 Commodore 64 了", - "gtceu.machine.mv_electrolyzer.tooltip":"§7电离分子", - "gtceu.machine.mv_electromagnetic_separator.tooltip":"§7分离出磁性矿物", - "gtceu.machine.mv_extractor.tooltip":"§7毁灭级榨汁机 - D123", - "gtceu.machine.mv_extruder.tooltip":"§7通用型金属加工器", - "gtceu.machine.mv_fermenter.tooltip":"§7发酵流体", - "gtceu.machine.mv_fluid_drilling_rig.tooltip":"我猜你做这个是为了采油", - "gtceu.machine.mv_fluid_heater.tooltip":"§7加热你的流体", - "gtceu.machine.mv_fluid_solidifier.tooltip":"§7冷却液体形成固体", - "gtceu.machine.mv_forge_hammer.tooltip":"§7停,抡锤时间到!", - "gtceu.machine.mv_forming_press.tooltip":"§7图像拓印者", - "gtceu.machine.mv_gas_collector.tooltip":"§7依照维度从空气中收集种类各异的气体", - "gtceu.machine.mv_laser_engraver.tooltip":"§7请勿直视激光", - "gtceu.machine.mv_lathe.tooltip":"§7以更高的效率生产杆", - "gtceu.machine.mv_macerator.tooltip":"§7粉碎矿石,但没有副产物", - "gtceu.machine.mv_mass_fabricator.tooltip":"§7UU物质 = “质量” * “发生”的平方", - "gtceu.machine.mv_mixer.tooltip":"§7它能被搅碎吗?", - "gtceu.machine.mv_ore_washer.tooltip":"§7清洗矿石以获得更多副产物", - "gtceu.machine.mv_packer.tooltip":"§7取出盒外,放入盒中", - "gtceu.machine.mv_polarizer.tooltip":"§7将你的磁体极化", - "gtceu.machine.mv_replicator.tooltip":"§7生产最纯净的元素", - "gtceu.machine.mv_rock_crusher.tooltip":"§7在水平相邻处放置熔岩和水", - "gtceu.machine.mv_scanner.tooltip":"§7扫描材料及其它物质", - "gtceu.machine.mv_sifter.tooltip":"§7保持冷静,继续筛选", - "gtceu.machine.mv_thermal_centrifuge.tooltip":"§7更精确地分离矿石", - "gtceu.machine.mv_wiremill.tooltip":"§7更高效地生产导线", - "gtceu.machine.network_switch.tooltip.0":"以太网集线器", - "gtceu.machine.network_switch.tooltip.1":"用于路由与分发§f算力§7。", - "gtceu.machine.network_switch.tooltip.2":"可以将任意数量的算力§f输入§7整合为为任意数量的算力§f输出§7。", - "gtceu.machine.network_switch.tooltip.3":"每个算力数据仓使用§f%s EU/t§7。", - "gtceu.machine.object_holder.tooltip":"研究站的先进支撑机构", - "gtceu.machine.opv_gas_collector.tooltip":"§7依照维度从宇宙中收集种类各异的气体", - "gtceu.machine.opv_rock_crusher.tooltip":"§7火山成型室", - "gtceu.machine.parallel_hatch.display":"调整多方块的最多并行处理数。", - "gtceu.machine.parallel_hatch_mk5.tooltip":"允许同时处理至多4个配方。", - "gtceu.machine.parallel_hatch_mk6.tooltip":"允许同时处理至多16个配方。", - "gtceu.machine.parallel_hatch_mk7.tooltip":"允许同时处理至多64个配方。", - "gtceu.machine.parallel_hatch_mk8.tooltip":"允许同时处理至多256个配方。", - "gtceu.machine.parallel_limit":"可同时处理至多§b%d§r§7个配方。", - "gtceu.machine.passthrough_hatch_fluid.tooltip":"将流体从一侧输送到另一侧", - "gtceu.machine.passthrough_hatch_item.tooltip":"将物品从一侧发送到另一侧", - "gtceu.machine.perfect_oc":"超频不会损失能效。", - "gtceu.machine.power_substation.tooltip.0":"集中电网的核心", - "gtceu.machine.power_substation.tooltip.1":"所有§f电容§r不需要保持同一电压等级。", - "gtceu.machine.power_substation.tooltip.2":"最多容许§f%d层电容§r。", - "gtceu.machine.power_substation.tooltip.3":"每§f24小时§7损失相当于总容量的§f1%%§r的能量。", - "gtceu.machine.power_substation.tooltip.4":"每个电容的损失上限为§f%d kEU/t§r。", - "gtceu.machine.power_substation.tooltip.5":"可以使用", - "gtceu.machine.power_substation.tooltip.6":"激光仓§r。", - "gtceu.machine.primitive_blast_furnace.bronze.tooltip":"为你带来第一块钢", - "gtceu.machine.primitive_water_pump.tooltip":"末影接口蓄水库-家用款", - "gtceu.machine.processing_array.tooltip":"当几台机器无法解决问题时", - "gtceu.machine.pump.tooltip":"§7抽干大海的最佳手段!", - "gtceu.machine.pump.tooltip_buckets":"每桶§f%d§7tick", - "gtceu.machine.pump_hatch.tooltip":"原始水泵专用流体输出口", - "gtceu.machine.pyrolyse_oven.tooltip":"电力焦炉", - "gtceu.machine.pyrolyse_oven.tooltip.1":"§a白铜§7线圈会使效率降低§f25%%§7,§a坎塔尔合金§7后的每个线圈都会增加§f50%%§7的速度。", - "gtceu.machine.quantum_chest.items_stored":"物品数量:", - "gtceu.machine.quantum_chest.tooltip":"§7比储物抽屉好", - "gtceu.machine.quantum_tank.tooltip":"§7小小身体,大大肚量", - "gtceu.machine.research_station.researching":"研究中。", - "gtceu.machine.research_station.tooltip.0":"不仅仅是一个多方块扫描仪", - "gtceu.machine.research_station.tooltip.1":"用于扫描§f数据球§7和§f数据模块§7。", - "gtceu.machine.research_station.tooltip.2":"需要§f算力§7来进行工作。", - "gtceu.machine.research_station.tooltip.3":"提供更多的算力可以使研究进展的更快。", - "gtceu.machine.rotor_holder.tooltip.0":"为多方块结构固定转子,", - "gtceu.machine.rotor_holder.tooltip.1":"使其不能飞走", - "gtceu.machine.steam.steam_hatch.tooltip":"§e接受流体:§f蒸汽", - "gtceu.machine.steam_boiler.heat_amount":"热容:%s %%", - "gtceu.machine.steam_bus.tooltip":"无法作用于非蒸汽驱动的多方块结构", - "gtceu.machine.steam_grinder.tooltip":"多方块研磨机,但是没有副产物", - "gtceu.machine.steam_miner.tooltip":"§7只挖掘机器下方的矿石!", - "gtceu.machine.steam_oven.tooltip":"不要与工业熔炉混淆", - "gtceu.machine.steam_turbine.tooltip":"§7将蒸汽转化为 EU", - "gtceu.machine.substation_hatch.input.tooltip":"为蓄能变电站输入能量", - "gtceu.machine.substation_hatch.output.tooltip":"为蓄能变电站输出能量", - "gtceu.machine.tank_valve.tooltip":"用于吞吐多方块储罐中的流体。正面向下时可自动输出。", - "gtceu.machine.transformer.description":"§7转换能量的电压等级", - "gtceu.machine.transformer.message_transform_down":"降压,输入:%s EU %dA,输出:%s EU %dA", - "gtceu.machine.transformer.message_transform_up":"升压,输入:%s EU %dA,输出:%s EU %dA", - "gtceu.machine.transformer.tooltip_tool_usage":"默认§f降压§r,使用螺丝刀切换。", - "gtceu.machine.transformer.tooltip_transform_down":"§a降压:§f%dA %s EU(%s§f)-> %dA %s EU(%s§f)", - "gtceu.machine.transformer.tooltip_transform_up":"§c升压:§f%dA %s EU(%s§f)-> %dA %s EU(%s§f)", - "gtceu.machine.uev_gas_collector.tooltip":"§7依照维度从太阳系中收集种类各异的气体", - "gtceu.machine.uev_rock_crusher.tooltip":"§7火山成型室", - "gtceu.machine.uhv_gas_collector.tooltip":"§7根据维度从太阳系中收集气体", - "gtceu.machine.uhv_rock_crusher.tooltip":"§7火山成型室", - "gtceu.machine.uiv_gas_collector.tooltip":"§7根据维度从太阳系中收集气体", - "gtceu.machine.uiv_rock_crusher.tooltip":"§7火山成型室", - "gtceu.machine.uv_alloy_smelter.tooltip":"§7金属混合调制装置", - "gtceu.machine.uv_arc_furnace.tooltip":"§7短路加热器", - "gtceu.machine.uv_assembler.tooltip":"§7装配构建者", - "gtceu.machine.uv_autoclave.tooltip":"§7重压单元", - "gtceu.machine.uv_bender.tooltip":"§7物质畸变者", - "gtceu.machine.uv_brewery.tooltip":"§7强劲酿制者", - "gtceu.machine.uv_canner.tooltip":"§7罐子致动器", - "gtceu.machine.uv_centrifuge.tooltip":"§7分子龙卷风", - "gtceu.machine.uv_chemical_bath.tooltip":"§7化学沉浸洗涤者", - "gtceu.machine.uv_chemical_reactor.tooltip":"§7反应催化器", - "gtceu.machine.uv_circuit_assembler.tooltip":"§7计算机工厂", - "gtceu.machine.uv_compressor.tooltip":"§7物质约束器", - "gtceu.machine.uv_cutter.tooltip":"§7对象分割者", - "gtceu.machine.uv_distillery.tooltip":"§7馏分分离器", - "gtceu.machine.uv_electric_furnace.tooltip":"§7原子激发器", - "gtceu.machine.uv_electrolyzer.tooltip":"§7原子离子化装置", - "gtceu.machine.uv_electromagnetic_separator.tooltip":"§7电磁场驱离装置", - "gtceu.machine.uv_extractor.tooltip":"§7液化吸取者", - "gtceu.machine.uv_extruder.tooltip":"§7形制驱动者", - "gtceu.machine.uv_fermenter.tooltip":"§7呼吸控制器", - "gtceu.machine.uv_fluid_heater.tooltip":"§7热量灌输器", - "gtceu.machine.uv_fluid_solidifier.tooltip":"§7流体硬化器", - "gtceu.machine.uv_forge_hammer.tooltip":"§7冲击调制器", - "gtceu.machine.uv_forming_press.tooltip":"§7表面移相器", - "gtceu.machine.uv_gas_collector.tooltip":"§7根据维度从太阳系中收集气体", - "gtceu.machine.uv_laser_engraver.tooltip":"§7高精度光子加农炮", - "gtceu.machine.uv_lathe.tooltip":"§7飞旋磨轮", - "gtceu.machine.uv_macerator.tooltip":"§7形态毁灭者", - "gtceu.machine.uv_mass_fabricator.tooltip":"§7存在之源", - "gtceu.machine.uv_mixer.tooltip":"§7材料均质机", - "gtceu.machine.uv_ore_washer.tooltip":"§7微型洗车房", - "gtceu.machine.uv_packer.tooltip":"§7亚马逊仓库", - "gtceu.machine.uv_polarizer.tooltip":"§7磁场重置设备", - "gtceu.machine.uv_replicator.tooltip":"§7元素创制者", - "gtceu.machine.uv_rock_crusher.tooltip":"§7火山成型室", - "gtceu.machine.uv_scanner.tooltip":"§7电子显微镜", - "gtceu.machine.uv_sifter.tooltip":"§7脉冲过滤器", - "gtceu.machine.uv_thermal_centrifuge.tooltip":"§7腾焰旋风", - "gtceu.machine.uv_wiremill.tooltip":"§7导线易形者", - "gtceu.machine.uxv_gas_collector.tooltip":"§7根据维度从太阳系中收集气体", - "gtceu.machine.uxv_rock_crusher.tooltip":"§7火山成型室", - "gtceu.machine.vacuum_freezer.tooltip":"啊哈我的大冰箱!", - "gtceu.machine.workbench.storage_note.0":"(相邻的物品容器中", - "gtceu.machine.workbench.storage_note.1":"可参与合成的物品)", - "gtceu.machine.workbench.tab.container":"存储", - "gtceu.machine.workbench.tab.crafting":"合成", - "gtceu.machine.workbench.tab.item_list":"存储空间", - "gtceu.machine.workbench.tab.workbench":"合成", - "gtceu.machine.workbench.tooltip.0":"比林业的好", - "gtceu.machine.workbench.tooltip.1":"具有物品存储、工具存储、从相邻的存储容器中读取物品和保存配方功能。", - "gtceu.machine.world_accelerator.description":"以两种模式之一加速周围方块的更新刻:§f方块实体§r或§f随机刻§7。使用螺丝刀切换模式。", - "gtceu.machine.world_accelerator.mode_entity":"随机刻模式", - "gtceu.machine.world_accelerator.mode_tile":"方块实体模式", - "gtceu.machine.world_accelerator.working_area":"§b作用范围:", - "gtceu.machine.world_accelerator.working_area_random":" 随机刻模式:§f%dx%d", - "gtceu.machine.world_accelerator.working_area_tile":" 方块实体模式:§f相邻方块", - "gtceu.machine.zpm_alloy_smelter.tooltip":"§7合金集聚器", - "gtceu.machine.zpm_arc_furnace.tooltip":"§7放电加热器", - "gtceu.machine.zpm_assembler.tooltip":"§l不是§7工作台", - "gtceu.machine.zpm_autoclave.tooltip":"§7高压锅", - "gtceu.machine.zpm_bender.tooltip":"§7形态扭曲器", - "gtceu.machine.zpm_brewery.tooltip":"§7酿酒好手", - "gtceu.machine.zpm_canner.tooltip":"§7罐作机", - "gtceu.machine.zpm_centrifuge.tooltip":"§7分子旋风", - "gtceu.machine.zpm_chemical_bath.tooltip":"§7化学品浸润器", - "gtceu.machine.zpm_chemical_reactor.tooltip":"§7化学表演艺术家", - "gtceu.machine.zpm_circuit_assembler.tooltip":"§7电子厂", - "gtceu.machine.zpm_compressor.tooltip":"§7奇点凝缩机", - "gtceu.machine.zpm_cutter.tooltip":"§7物质切削器", - "gtceu.machine.zpm_distillery.tooltip":"§7凝结物质分离器", - "gtceu.machine.zpm_electric_furnace.tooltip":"§7电子激发处理器", - "gtceu.machine.zpm_electrolyzer.tooltip":"§7分子崩解机 E-4908", - "gtceu.machine.zpm_electromagnetic_separator.tooltip":"§7电磁分类器", - "gtceu.machine.zpm_extractor.tooltip":"§7真空提取机", - "gtceu.machine.zpm_extruder.tooltip":"§7材料压出器", - "gtceu.machine.zpm_fermenter.tooltip":"§7发酵加速器", - "gtceu.machine.zpm_fluid_heater.tooltip":"§7热量灌注器", - "gtceu.machine.zpm_fluid_solidifier.tooltip":"§7并不是制冰机", - "gtceu.machine.zpm_forge_hammer.tooltip":"§7锻板机", - "gtceu.machine.zpm_forming_press.tooltip":"§7对象层化机", - "gtceu.machine.zpm_gas_collector.tooltip":"§7收集不同维度的大气中种类各异的气体", - "gtceu.machine.zpm_laser_engraver.tooltip":"§7功率高达三千两百六十四万瓦", - "gtceu.machine.zpm_lathe.tooltip":"§7全自动旋转车削机 L-5908", - "gtceu.machine.zpm_macerator.tooltip":"§7全自动破壁机 9003", - "gtceu.machine.zpm_mass_fabricator.tooltip":"§7创世纪工厂", - "gtceu.machine.zpm_mixer.tooltip":"§7物质组织器", - "gtceu.machine.zpm_ore_washer.tooltip":"§7全新用途滚筒洗衣机 I-362", - "gtceu.machine.zpm_packer.tooltip":"§7装箱者", - "gtceu.machine.zpm_polarizer.tooltip":"§7磁性引入机", - "gtceu.machine.zpm_replicator.tooltip":"§7物质粘贴机", - "gtceu.machine.zpm_rock_crusher.tooltip":"§7岩浆冷却固化器 R-10200", - "gtceu.machine.zpm_scanner.tooltip":"§7异常探测仪", - "gtceu.machine.zpm_sifter.tooltip":"§7由群峦传说赞助提供", - "gtceu.machine.zpm_thermal_centrifuge.tooltip":"§7烈焰血汗工厂 T-6352", - "gtceu.machine.zpm_wiremill.tooltip":"§7锭材拉伸机", - "gtceu.maintenance.configurable_duration":"处理耗时:%fx", - "gtceu.maintenance.configurable_duration.changed_description":"配方处理速度现为正常速度(不计超频)的%f倍。", - "gtceu.maintenance.configurable_duration.modify":"修改耗时:", - "gtceu.maintenance.configurable_duration.unchanged_description":"配方以正常速度运行。更改配置以更新。", - "gtceu.maintenance.configurable_time":"故障概率:%fx", - "gtceu.maintenance.configurable_time.changed_description":"故障的发生概率现为正常值的%f倍。", - "gtceu.maintenance.configurable_time.unchanged_description":"故障的发生概率为正常值。更改配置以更新。", - "gtceu.medical_condition.antidote.description":"§a解毒剂 §7按住Shift以显示详情", - "gtceu.medical_condition.antidote.description.effect_removed":"疾病效果持续时间降低%s%%", - "gtceu.medical_condition.antidote.description.effect_removed.all":"消除所有疾病效果", - "gtceu.medical_condition.antidote.description_shift":"§a治愈以下疾病:", - "gtceu.medical_condition.arsenicosis":"§b砷中毒", - "gtceu.medical_condition.asbestosis":"§d石棉肺", - "gtceu.medical_condition.berylliosis":"§5铍中毒", - "gtceu.medical_condition.carbon_monoxide_poisoning":"§7一氧化碳污染", - "gtceu.medical_condition.carcinogen":"§e致癌", - "gtceu.medical_condition.chemical_burns":"§5化学烧伤", - "gtceu.medical_condition.description":"§c§l危险物质 §7按住Shift以显示详情", - "gtceu.medical_condition.description_shift":"§c§l危险物质:", - "gtceu.medical_condition.irritant":"§6刺激性", - "gtceu.medical_condition.methanol_poisoning":"§6甲醇中毒", - "gtceu.medical_condition.nausea":"§3恶心", - "gtceu.medical_condition.none":"§2无害", - "gtceu.medical_condition.poison":"§2中毒", - "gtceu.medical_condition.silicosis":"§1矽肺病", - "gtceu.medical_condition.weak_poison":"§a轻度中毒", - "gtceu.minimap.ore_vein.depleted":"已枯竭", - "gtceu.mixer":"搅拌机", - "gtceu.mode.both":"§d全部(流体和物品)§r", - "gtceu.mode.fluid":"§9流体§r", - "gtceu.mode.item":"§6物品§r", - "gtceu.muffler.recovery_tooltip":"§b回收概率:§f%d%%", - "gtceu.multiblock.active_transformer.average_in":"§b平均输入:§f%s EU/t", - "gtceu.multiblock.active_transformer.average_out":"§b平均输出:§f%s EU/t", - "gtceu.multiblock.active_transformer.danger_enabled":"§c§b危险:易爆", - "gtceu.multiblock.active_transformer.max_input":"§a最大输入:§f%s EU/t", - "gtceu.multiblock.active_transformer.max_output":"§c最大输出:§f%s EU/t", - "gtceu.multiblock.assembly_line.description":"装配线是由5到16“片”组成的大型多方块结构。理论上,它是一个大型组装机,用于生产高级元件。", - "gtceu.multiblock.blast_furnace.max_temperature":"热容:%s", - "gtceu.multiblock.central_monitor.height":"屏幕高度:%d", - "gtceu.multiblock.central_monitor.height_modify":"调整高度:%d", - "gtceu.multiblock.central_monitor.low_power":"供能不足", - "gtceu.multiblock.central_monitor.tooltip.0":"这台机器可以监控由数字接口覆盖板代理的机器。您可以方便地监视能源网络中代理的机器的流体、物品、能量和状态。", - "gtceu.multiblock.central_monitor.tooltip.1":"监控器屏幕的搭建尺寸为3x2到%dx%d (宽x高)。", - "gtceu.multiblock.central_monitor.tooltip.2":"默认高度为3,在结构形成之前,您可以在GUI中调整屏幕高度。", - "gtceu.multiblock.central_monitor.tooltip.3":"能源消耗:每块屏幕%d EU/s。", - "gtceu.multiblock.central_monitor.width":"屏幕宽度:%d", - "gtceu.multiblock.charcoal_pile.description.0":"将下方最大9x4x9区域内的原木烧制成脆木炭块。", - "gtceu.multiblock.charcoal_pile.description.1":"", - "gtceu.multiblock.charcoal_pile.description.2":"木炭堆底部必须由砖块构成,壁面和顶面则可选用泥土、沙子等任何土地类方块。堆内必须填满,不可存在空气。", - "gtceu.multiblock.charcoal_pile.description.3":"", - "gtceu.multiblock.charcoal_pile.description.4":"木炭堆的尺寸越大,所需的处理时间就越长,但效率更高。", - "gtceu.multiblock.cleanroom.clean_amount":"洁净度:§a%s%%", - "gtceu.multiblock.cleanroom.clean_state":"状态:§a洁净", - "gtceu.multiblock.cleanroom.dirty_state":"状态:§4污染", - "gtceu.multiblock.coke_oven.description":"焦炉是一种多方块结构,用于在早期生产焦煤和杂酚油,无需燃料即可工作,内部至多可容纳 32 桶杂酚油。其存储可通过焦炉仓进行访问。", - "gtceu.multiblock.computation.max":"最大算力:%s", - "gtceu.multiblock.computation.non_bridging":"发现非桥接连接", - "gtceu.multiblock.computation.non_bridging.detailed":"算力数据仓与一台无法桥接的机器连接", - "gtceu.multiblock.computation.not_enough_computation":"机器需要更多算力!", - "gtceu.multiblock.computation.usage":"使用:%s", - "gtceu.multiblock.cracker.description":"裂化机是一种用于将轻燃油和重燃油裂化为相应裂化物的多方块结构。", - "gtceu.multiblock.cracking_unit.energy":"耗能:%s%%", - "gtceu.multiblock.data_bank.description":"数据库是一个用于在多个装配线间分享研究数据的多方块结构。此外,它也能让装配线读取数据模块里更复杂的研究数据。", - "gtceu.multiblock.data_bank.providing":"提供数据。", - "gtceu.multiblock.distillation_tower.description":"蒸馏塔是一种用于蒸馏不同石油及其副产品的多方块结构。", - "gtceu.multiblock.distillation_tower.distilling_fluid":"正在蒸馏%s", - "gtceu.multiblock.electric_blast_furnace.description":"电力高炉是一种用来熔炼合金、熔化金属或冶炼矿石的多方块结构。也可用于获取高级的合金和金属,例如铝、不锈钢、钛或硅岩合金。", - "gtceu.multiblock.energy_consumption":"能量消耗:%s EU/t(%s)", - "gtceu.multiblock.exact_hatch_1.tooltip":"§f只允许有且仅有§6一个§f能源仓。", - "gtceu.multiblock.extreme_combustion_engine.description":"极限内燃引擎是一种产出§9IV§r能量的多方块结构,工作方式与内燃发电机类似。", - "gtceu.multiblock.fluid_rig.drilled_fluid":"流体:%s", - "gtceu.multiblock.fluid_rig.fluid_amount":"抽取速率:%s", - "gtceu.multiblock.fluid_rig.no_fluid_in_area":"区域内没有。", - "gtceu.multiblock.fluid_rig.vein_depleted":"矿脉已殆尽", - "gtceu.multiblock.fluid_rig.vein_depletion":"矿脉大小:%s", - "gtceu.multiblock.fusion_reactor.energy":"EU:%d / %d", - "gtceu.multiblock.fusion_reactor.heat":"热量:%d", - "gtceu.multiblock.generation_eu":"输出功率:§a%s EU/t", - "gtceu.multiblock.hpca.computation":"提供:%s", - "gtceu.multiblock.hpca.description":"高性能计算阵列(HPCA)是个多方块结构,用于为更复杂的装配线研究数据提供计算工作单元(CWU/t)。该结构中有3×3的区域可以以任意方式填充HPCA组件,不同的组件提供不同数量的算力,冷却与能源成本,并且影响热量的产出与冷却液的消耗。当存在桥接组件时,HPCA可以连接入网络交换机,让不同来源的算力整合并输出到一个或多个目的地。", - "gtceu.multiblock.hpca.energy":"使用:%s / %s EU/t (%s)", - "gtceu.multiblock.hpca.error_damaged":"计算组件损坏!", - "gtceu.multiblock.hpca.error_temperature":"温度超过100℃,可能导致计算组件损坏!", - "gtceu.multiblock.hpca.hover_for_info":"悬停以显示细节", - "gtceu.multiblock.hpca.info_bridging_disabled":"桥接已关闭", - "gtceu.multiblock.hpca.info_bridging_enabled":"桥接已启动", - "gtceu.multiblock.hpca.info_coolant_name":"多氯联苯冷却液", - "gtceu.multiblock.hpca.info_max_computation":"最大算力:%s", - "gtceu.multiblock.hpca.info_max_coolant_required":"冷却液需求:%s mB/t", - "gtceu.multiblock.hpca.info_max_cooling_available":"冷却可用:%s", - "gtceu.multiblock.hpca.info_max_cooling_demand":"冷却需求:%s", - "gtceu.multiblock.hpca.temperature":"温度:%s", - "gtceu.multiblock.hpca.warning_low_cooling":"- 冷却不足", - "gtceu.multiblock.hpca.warning_multiple_bridges":"- 多个桥接组件(没有额外好处)", - "gtceu.multiblock.hpca.warning_no_computation":"- 没有计算组件", - "gtceu.multiblock.hpca.warning_structure_header":"结构警告:", - "gtceu.multiblock.hpca.warning_temperature":"温度超过50℃,超过100℃时可能导致计算组件损坏!", - "gtceu.multiblock.hpca.warning_temperature_active_cool":"充分利用主动冷却组件", - "gtceu.multiblock.idling":"§6待机。", - "gtceu.multiblock.implosion_compressor.description":"聚爆压缩机是一种多方块结构,能够借助炸药将宝石粉转化为相应的宝石。", - "gtceu.multiblock.invalid_structure":"结构无效。", - "gtceu.multiblock.invalid_structure.tooltip":"该方块是多方块结构的控制器,请查看该方块的JEI界面以获取搭建图示。", - "gtceu.multiblock.large_boiler.description":"大型锅炉是一种使用水和能量源产生蒸汽的多方块结构。这里说的“能量源”通常是指固体燃料和高密度流体。不同等级的锅炉仅在蒸汽产量上有所差别。", - "gtceu.multiblock.large_boiler.efficiency":"效率:%s", - "gtceu.multiblock.large_boiler.explosion_tooltip":"无水时提供燃料将爆炸", - "gtceu.multiblock.large_boiler.heat_time_tooltip":"§7需要§f%d秒§7预热", - "gtceu.multiblock.large_boiler.max_temperature":"最高温度:%dK,蒸汽产量:%dmB/t", - "gtceu.multiblock.large_boiler.rate_tooltip":"§7每块§1煤炭§7可以生产§f%dL§7的蒸汽", - "gtceu.multiblock.large_boiler.steam_output":"蒸汽输出:%s mB/t", - "gtceu.multiblock.large_boiler.temperature":"温度::%sK / %sK", - "gtceu.multiblock.large_boiler.throttle":"节流:%d", - "gtceu.multiblock.large_boiler.throttle.tooltip":"锅炉可以节流,以减少燃料消耗与蒸汽产出,并且不损失效率,不影响加热时间。", - "gtceu.multiblock.large_boiler.throttle_modify":"修改节流:", - "gtceu.multiblock.large_chemical_reactor.description":"大型化学反应釜能够以 100% 的能效进行化学反应。超频将使得处理速度与耗能提升 4 倍。该多方块结构需要在中心位置的聚四氟乙烯管道方块旁放置 1 个白铜线圈方块。", - "gtceu.multiblock.large_combustion_engine.boost_disallowed":"§b升级你的动力仓以激活氧气促燃", - "gtceu.multiblock.large_combustion_engine.description":"大型内燃引擎是一种产出§5EV§r能量的多方块结构,工作方式与内燃发电机类似。", - "gtceu.multiblock.large_combustion_engine.liquid_oxygen_amount":"液氧存量:%sL", - "gtceu.multiblock.large_combustion_engine.liquid_oxygen_boosted":"§b液氧促燃中", - "gtceu.multiblock.large_combustion_engine.lubricant_amount":"润滑油存量:%sL", - "gtceu.multiblock.large_combustion_engine.obstructed":"引擎进气口受阻。", - "gtceu.multiblock.large_combustion_engine.oxygen_amount":"氧气存量:%sL", - "gtceu.multiblock.large_combustion_engine.oxygen_boosted":"§b氧气促燃中", - "gtceu.multiblock.large_combustion_engine.supply_liquid_oxygen_to_boost":"提供液氧来促燃", - "gtceu.multiblock.large_combustion_engine.supply_oxygen_to_boost":"提供氧气来促燃", - "gtceu.multiblock.large_miner.done":"完成!", - "gtceu.multiblock.large_miner.errorradius":"§c工作中不能调整半径!", - "gtceu.multiblock.large_miner.invfull":"存储空间已满!", - "gtceu.multiblock.large_miner.needsfluid":"需要钻井液", - "gtceu.multiblock.large_miner.needspower":"需要能量!", - "gtceu.multiblock.large_miner.radius":"半径:§a%d§r格", - "gtceu.multiblock.large_miner.steam":"需要蒸汽!", - "gtceu.multiblock.large_miner.vent":"排气口受阻!", - "gtceu.multiblock.large_miner.working":"工作中……", - "gtceu.multiblock.large_turbine.description":"大型涡轮是一种使用蒸汽、燃气或等离子体转动涡轮转子来发电的多方块结构。转子效率和转子转速影响能量的输出。", - "gtceu.multiblock.luv_fusion_reactor.description":"核聚变反应堆MK-I是台大型多方块结构,用于融合元素形成更重的元素。它仅可使用LuV,ZPM或UV等级的能源仓。每个能源仓可增加10MEU的能量缓存,最大能量缓存为160MEU。", - "gtceu.multiblock.max_energy_per_tick":"最大功率:§a%s EU/t(%s§r)", - "gtceu.multiblock.max_energy_per_tick_amps":"最大功率:%s(%sA %s)", - "gtceu.multiblock.max_energy_per_tick_hover":"可用于运行配方或超频的最大EU/t", - "gtceu.multiblock.max_recipe_tier":"最大配方等级:%s", - "gtceu.multiblock.max_recipe_tier_hover":"可运行配方的最大等级", - "gtceu.multiblock.monitor_screen.tooltip.0":"用螺丝刀右击即可打开GUI。", - "gtceu.multiblock.monitor_screen.tooltip.1":"数字接口覆盖板的代理模式可托管机器的功能与界面(是的,你可以在屏幕上直接连接管道)。", - "gtceu.multiblock.monitor_screen.tooltip.2":"该屏幕也支持插件。", - "gtceu.multiblock.multi_furnace.description":"工业熔炉是一种用于一次性烧制大量物品的多方块结构。不同级别的线圈会提供速度增幅和能量效率增幅。每次运作的基础烧制数量为32,且可以使用高等级的线圈增加烧制数量。", - "gtceu.multiblock.multi_furnace.heating_coil_discount":"加热线圈增幅:%sx", - "gtceu.multiblock.multi_furnace.heating_coil_level":"加热线圈等级:%s", - "gtceu.multiblock.multiple_recipemaps.header":"机器模式:", - "gtceu.multiblock.multiple_recipemaps.switch_message":"机器必须关闭才能切换模式!", - "gtceu.multiblock.multiple_recipemaps.tooltip":"使用螺丝刀右键控制器以更改机器模式。", - "gtceu.multiblock.multiple_recipemaps_recipes.tooltip":"机器模式:§e%s§r", - "gtceu.multiblock.network_switch.description":"网络交换机是个多方块结构,可以接受任意数量的算力数据靶仓输入,并从任意数量的算力数据源仓输出。对于需要更高算力的研究数据配方,网络交换机的存在是必要的,这是因为研究站只接受一个算力数据靶仓。当与HPCA连接时,HPCA必须具有桥接组件才可以令网络交换机接收其算力。", - "gtceu.multiblock.not_enough_energy":"警告:能量不足。", - "gtceu.multiblock.not_enough_energy_output":"警告:能源/动力仓等级过低!", - "gtceu.multiblock.ore_rig.drilled_ore_entry":" - %s", - "gtceu.multiblock.ore_rig.drilled_ores_list":"矿石:", - "gtceu.multiblock.ore_rig.ore_amount":"钻进速率:%s", - "gtceu.multiblock.output_line.0":"%s x §e%s§r(%ss/ea)", - "gtceu.multiblock.output_line.1":"%s x §e%s§r(%s/s)", - "gtceu.multiblock.output_line.2":"%s ≈ §e%s§r(%ss/ea)", - "gtceu.multiblock.output_line.3":"%s ≈ §e%s§r (%s/s)", - "gtceu.multiblock.page_switcher.io.both":"§5兼顾输入/输出", - "gtceu.multiblock.page_switcher.io.export":"§4输出", - "gtceu.multiblock.page_switcher.io.import":"§2输入", - "gtceu.multiblock.parallel":"同时处理至多%d个配方", - "gtceu.multiblock.parallel.exact":"同时处理%d个配方", - "gtceu.multiblock.parallelizable.tooltip":"通过并行控制仓让机器同时处理多个相同配方。", - "gtceu.multiblock.pattern.clear_amount_1":"§6前方必须有1x1x1大小的空间§r", - "gtceu.multiblock.pattern.clear_amount_3":"§6前方必须有3x3x1大小的空间§r", - "gtceu.multiblock.pattern.error":"在%2$s处需要%1$s。", - "gtceu.multiblock.pattern.error.batteries":"§c必须使用同种电池§r", - "gtceu.multiblock.pattern.error.coils":"§c必须使用同种线圈方块§r", - "gtceu.multiblock.pattern.error.filters":"§c必须使用同种过滤器§r", - "gtceu.multiblock.pattern.error.limited.0":"§c最多:%d个§r", - "gtceu.multiblock.pattern.error.limited.1":"§c最少:%d个§r", - "gtceu.multiblock.pattern.error.limited.2":"§c最多:每层%d个§r", - "gtceu.multiblock.pattern.error.limited.3":"§c最少:每层%d个§r", - "gtceu.multiblock.pattern.error.limited_exact":"§c精确:%d§r", - "gtceu.multiblock.pattern.error.limited_within":"§c最少%d个,最多%d个§r", - "gtceu.multiblock.pattern.location_end":"§c最末端§r", - "gtceu.multiblock.pattern.replaceable_air":"可为空气", - "gtceu.multiblock.pattern.single":"§6仅可使用该种方块§r", - "gtceu.multiblock.power_substation.average_in":"§7平均输入:%s §7EU/t", - "gtceu.multiblock.power_substation.average_in_hover":"蓄能变电站内部的平均功率输入", - "gtceu.multiblock.power_substation.average_out":"§7平均输出:%s §7EU/t", - "gtceu.multiblock.power_substation.average_out_hover":"蓄能变电站内部的平均功率输出", - "gtceu.multiblock.power_substation.capacity":"§7容量:%s §7EU", - "gtceu.multiblock.power_substation.passive_drain":"§7被动损失:%s §7EU/t", - "gtceu.multiblock.power_substation.stored":"§7存储:%s §7EU", - "gtceu.multiblock.power_substation.time_days":"%s天", - "gtceu.multiblock.power_substation.time_forever":"永远", - "gtceu.multiblock.power_substation.time_hours":"%s时", - "gtceu.multiblock.power_substation.time_minutes":"%s分", - "gtceu.multiblock.power_substation.time_seconds":"%s秒", - "gtceu.multiblock.power_substation.time_to_drain":"§7预计耗空时间:%s", - "gtceu.multiblock.power_substation.time_to_fill":"§7预计充满时间:%s", - "gtceu.multiblock.power_substation.time_years":"%s年", - "gtceu.multiblock.power_substation.under_one_hour_left":"不到一小时就会完全耗光!", - "gtceu.multiblock.preview.rotate":"左键拖拽以旋转", - "gtceu.multiblock.preview.select":"右击方块以查看其他可选方块", - "gtceu.multiblock.preview.zoom":"使用鼠标滚轮或右键拖拽以缩放", - "gtceu.multiblock.primitive_blast_furnace.bronze.description":"土高炉是一种在游戏前期用来生产钢的多方块结构。尽管它不是很快,却能为你的发展提供钢材。", - "gtceu.multiblock.primitive_water_pump.description":"原始水泵是一台前蒸汽时代的多方块设施,每秒进行一次水资源收集,每秒的收集量取决于其所处的生物群系。水泵输出仓以及 §8ULV§r 和 §7LV§r 的输出仓均可用于该设施,输出仓的等级越高,水资源的产出量也越高。产出量遵循的公式为:生物群系系数 * 输出仓倍数。", - "gtceu.multiblock.primitive_water_pump.extra1.0":"生物群系系数:", - "gtceu.multiblock.primitive_water_pump.extra1.1":" 海洋,河流:1000 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.2":" 沼泽:800 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.3":" 丛林:350 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.4":" 覆雪群系:300 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.5":" 平原,森林:250 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.6":" 针叶林:175 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.7":" 沙滩:170 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.8":" 其他:100 mB/s", - "gtceu.multiblock.primitive_water_pump.extra2.0":"输出乘数:", - "gtceu.multiblock.primitive_water_pump.extra2.1":" 水泵仓:1x", - "gtceu.multiblock.primitive_water_pump.extra2.2":"§8ULV§r输出仓:2x", - "gtceu.multiblock.primitive_water_pump.extra2.3":"§7LV§r输出仓:4x", - "gtceu.multiblock.primitive_water_pump.extra2.4":"", - "gtceu.multiblock.primitive_water_pump.extra2.5":"当水泵所处的生物群系下雨时,总产水量将增加50%%。", - "gtceu.multiblock.progress":"进度:%ss / %ss(%s%%)", - "gtceu.multiblock.progress_percent":"进度:%s%%", - "gtceu.multiblock.pyrolyse_oven.description":"热解炉是一种用于将原木处理为木炭、杂酚油、灰烬或重油的多方块结构。", - "gtceu.multiblock.pyrolyse_oven.speed":"处理速度:%s%%", - "gtceu.multiblock.require_steam_parts":"需要蒸汽仓与输入/输出总线(蒸汽)!", - "gtceu.multiblock.research_station.description":"研究站是个多方块结构,用于研究更复杂的装配线研究数据。任何需要数据球或数据模块的研究必须使用研究站而非扫描仪来扫描。研究站需要计算工作单位(CWU/t)来进行工作,这由高性能计算阵列(HPCA)提供。", - "gtceu.multiblock.research_station.researching":"&6研究中…", - "gtceu.multiblock.running":"运行正常。", - "gtceu.multiblock.steam.duration_modifier":"处理耗时为基础的§f1.5§7倍,不受物品数量影响。", - "gtceu.multiblock.steam.low_steam":"蒸汽不足,无法运行!", - "gtceu.multiblock.steam.steam_stored":"蒸汽:%s / %s mB", - "gtceu.multiblock.steam_grinder.description":"蒸汽时代的多方块研磨机。需要至少14块青铜机械方块成型。仅可使用输入/输出总线(蒸汽),并且只能用蒸汽仓供给蒸汽。", - "gtceu.multiblock.steam_oven.description":"蒸汽时代的多方块熔炉。需要至少6块青铜机械方块成型。仅可使用输入/输出总线(蒸汽),并且只能用蒸汽仓供给蒸汽。蒸汽仓必须放置于结构底层,数量至多为一个。", - "gtceu.multiblock.title":"多方块结构", - "gtceu.multiblock.turbine.efficiency":"涡轮效率:%s%%", - "gtceu.multiblock.turbine.efficiency_tooltip":"转子支架等级超过%s§r时,每级§7增加§f10%%效率,并翻倍输出功率§7。", - "gtceu.multiblock.turbine.energy_per_tick":"能量输出:%s/%s EU/t", - "gtceu.multiblock.turbine.energy_per_tick_maxed":"能量输出:%s EU/t", - "gtceu.multiblock.turbine.fuel_amount":"燃料量:%sL(%s)", - "gtceu.multiblock.turbine.fuel_needed":"消耗量:%s / %s ticks", - "gtceu.multiblock.turbine.obstructed":"涡轮受阻", - "gtceu.multiblock.turbine.rotor_durability":"转子耐久度:%s%%", - "gtceu.multiblock.turbine.rotor_speed":"转子转速:%s/%sRPM", - "gtceu.multiblock.universal.distinct":"总线隔离:", - "gtceu.multiblock.universal.distinct.info":"启用时,每个物品总线将在配方识别中被视为完全独立。对于消耗材料相同,使用的非消耗材料(模头、透镜等)不同则产物也不同的配方来说作用显著。", - "gtceu.multiblock.universal.distinct.no":"否", - "gtceu.multiblock.universal.distinct.yes":"是", - "gtceu.multiblock.universal.has_problems":"存在故障!", - "gtceu.multiblock.universal.has_problems_header":"在维护仓中修复以下问题:", - "gtceu.multiblock.universal.muffler_obstructed":"消声仓受阻!", - "gtceu.multiblock.universal.muffler_obstructed.tooltip":"消音仓口前方必须有一格空气。", - "gtceu.multiblock.universal.no_problems":"无故障!", - "gtceu.multiblock.universal.problem.crowbar":"§7这东西不属于这儿。(§a撬棍§7)", - "gtceu.multiblock.universal.problem.hard_hammer":"§7外壳有些凹痕。(§a锻造锤§7)", - "gtceu.multiblock.universal.problem.screwdriver":"§7螺丝没拧紧。(§a螺丝刀§7)", - "gtceu.multiblock.universal.problem.soft_mallet":"§7有什么东西卡住了。(§a软锤§7)", - "gtceu.multiblock.universal.problem.wire_cutter":"§7有几根线烧焦了(§a剪线钳§7)", - "gtceu.multiblock.universal.problem.wrench":"§7管道松动了。(§a扳手§7)", - "gtceu.multiblock.universal.rotor_obstructed":"转子进气口受阻!", - "gtceu.multiblock.uv_fusion_reactor.description":"核聚变反应堆MK-III是台大型多方块结构,用于融合元素形成更重的元素。它仅可使用UV等级的能源仓。每个能源仓可增加40MEU的能量缓存,最大能量缓存为640MEU。", - "gtceu.multiblock.vacuum_freezer.description":"真空冷冻机是一种多方块结构,主要用于将热锭冷却为成品锭。此外,它还可以冻结水等其他物质。", - "gtceu.multiblock.validation_failed":"输入仓/输出仓数量无效。", - "gtceu.multiblock.waiting":"警告:机器待机", - "gtceu.multiblock.work_paused":"暂停。", - "gtceu.multiblock.zpm_fusion_reactor.description":"核聚变反应堆MK-II是台大型多方块结构,用于融合元素形成更重的元素。它仅可使用ZPM或UV等级的能源仓。每个能源仓可增加20MEU的能量缓存,最大能量缓存为320MEU。", - "gtceu.oc.tooltip.0":"最低:%s", - "gtceu.oc.tooltip.1":"左键单击增加超频等级", - "gtceu.oc.tooltip.2":"右键单击降低超频等级", - "gtceu.oc.tooltip.3":"中键单击重设超频等级", - "gtceu.oc.tooltip.4":"按住Shift以无损超频显示", - "gtceu.ore_washer":"洗矿厂", - "gtceu.packer":"打包机", - "gtceu.plasma_generator":"等离子燃料", - "gtceu.polarizer":"两极磁化机", - "gtceu.primitive_blast_furnace":"土高炉", - "gtceu.pyrolyse_oven":"热解炉", - "gtceu.recipe.amperage":"电流:%s", - "gtceu.recipe.category.arc_furnace_recycling":"电弧炉:等离子回收", - "gtceu.recipe.category.chem_dyes":"化学浸洗机:化学染色", - "gtceu.recipe.category.extractor_recycling":"流体提取机:重熔回收", - "gtceu.recipe.category.ingot_molding":"合金炉:金属成型", - "gtceu.recipe.category.macerator_recycling":"研磨机:粉碎回收", - "gtceu.recipe.category.ore_bathing":"化学浸洗机:矿物处理", - "gtceu.recipe.category.ore_crushing":"研磨机:矿物处理", - "gtceu.recipe.category.ore_forging":"锻造锤:矿物处理", - "gtceu.recipe.chance":"出产概率:%s + %s/电压等级", - "gtceu.recipe.cleanroom":"需要%s", - "gtceu.recipe.cleanroom.display_name":"超净间", - "gtceu.recipe.cleanroom_sterile.display_name":"无菌超净间", - "gtceu.recipe.coil.tier":"线圈:%s", - "gtceu.recipe.computation_per_tick":"最小算力:%s CWU/t", - "gtceu.recipe.dimensions":"维度:%s", - "gtceu.recipe.duration":"耗时:%s秒", - "gtceu.recipe.environmental_hazard":"§c区域内必须有%s", - "gtceu.recipe.environmental_hazard.reverse":"§c区域内必须没有%s", - "gtceu.recipe.eu":"耗能功率:%s EU/t", - "gtceu.recipe.eu_inverted":"产能功率:%s EU/t", - "gtceu.recipe.eu_to_start":"启动耗能:%sEU%s", - "gtceu.recipe.explosive":"爆炸物:%s", - "gtceu.recipe.max_eu":"最大功率:%s EU", - "gtceu.recipe.not_consumed":"不在加工中消耗", - "gtceu.recipe.research":"需要研究", - "gtceu.recipe.scan_for_research":"装配线配方扫描", - "gtceu.recipe.temperature":"温度:%sK", - "gtceu.recipe.total":"总计:%s EU", - "gtceu.recipe.total_computation":"算力:%s CWU", - "gtceu.recipe_logic.condition_fails":"条件不足", - "gtceu.recipe_logic.insufficient_fuel":"燃料不足", - "gtceu.recipe_logic.insufficient_in":"需要输入", - "gtceu.recipe_logic.insufficient_out":"输出堵塞", - "gtceu.recipe_memory_widget.tooltip.0":"§7左键点击可自动将该配方输入至合成格", - "gtceu.recipe_memory_widget.tooltip.1":"§7按住Shift并点击以锁定或解锁该配方", - "gtceu.recipe_type.show_recipes":"查看配方", - "gtceu.rei.group.potion_fluids":"药水流体", - "gtceu.research_station":"研究站", - "gtceu.rock_breaker":"碎岩机", - "gtceu.scanner":"扫描仪", - "gtceu.scanner.copy_stick_empty":"§o空闪存", - "gtceu.scanner.copy_stick_from":"§o要复制的闪存", - "gtceu.scanner.copy_stick_to":"§o闪存(已复制)", - "gtceu.sifter":"筛选机", - "gtceu.steam_boiler":"蒸汽锅炉", - "gtceu.steam_turbine":"蒸汽涡轮", - "gtceu.subtitle.arc":"电弧炉:嗡——", - "gtceu.subtitle.assembler":"组装机:运行中", - "gtceu.subtitle.bath":"化学浸洗机:嘶嘶", - "gtceu.subtitle.boiler":"锅炉:液体沸腾", - "gtceu.subtitle.centrifuge":"离心机:旋转", - "gtceu.subtitle.chainsaw":"链锯:拉动油门", - "gtceu.subtitle.chemical":"化学反应釜:运行中", - "gtceu.subtitle.combustion":"内燃发电机:燃料燃烧", - "gtceu.subtitle.compressor":"压缩机:挤压", - "gtceu.subtitle.computation":"计算机:哔哔", - "gtceu.subtitle.cooling":"真空冷冻机:嗡——", - "gtceu.subtitle.cut":"切割机:嘶嘶叫", - "gtceu.subtitle.drill":"电钻:嗡嗡", - "gtceu.subtitle.electrolyzer":"电解机:爆出火花", - "gtceu.subtitle.file":"锉:磨削", - "gtceu.subtitle.fire":"火:爆裂", - "gtceu.subtitle.forge_hammer":"锻造锤:DUANG", - "gtceu.subtitle.furnace":"电炉:冶炼", - "gtceu.subtitle.jet_engine":"喷气背包:轰轰", - "gtceu.subtitle.macerator":"研磨机:破碎", - "gtceu.subtitle.metal_pipe":"流体管道:Destruction_Metal_Pole_L_Wave_2_0_0.wav", - "gtceu.subtitle.miner":"采矿机:开采", - "gtceu.subtitle.mixer":"搅拌机:搅动", - "gtceu.subtitle.mortar":"研钵:研磨", - "gtceu.subtitle.motor":"马达:转啊转", - "gtceu.subtitle.plunger":"搋子:清理流体", - "gtceu.subtitle.portable_scanner":"便携式扫描仪:扫描", - "gtceu.subtitle.portal_closing":"传送门:关闭", - "gtceu.subtitle.portal_opening":"传送门:开启", - "gtceu.subtitle.replicator":"复制机:运行", - "gtceu.subtitle.saw":"锯:切割", - "gtceu.subtitle.science":"化学反应釜:科!学!", - "gtceu.subtitle.screwdriver":"螺丝刀:拧螺丝", - "gtceu.subtitle.soft_hammer":"软锤:轻敲", - "gtceu.subtitle.spray_can":"喷漆罐:喷涂", - "gtceu.subtitle.sus":"唱片:你有嫌疑", - "gtceu.subtitle.turbine":"涡轮:呼啸", - "gtceu.subtitle.wirecutter":"剪线钳:剪断", - "gtceu.subtitle.wrench":"扳手:嘎啦", - "gtceu.thermal_centrifuge":"热力离心机", - "gtceu.tool.class.axe":"斧", - "gtceu.tool.class.butchery_knife":"屠刀", - "gtceu.tool.class.crowbar":"撬棍", - "gtceu.tool.class.drill":"电钻", - "gtceu.tool.class.file":"锉", - "gtceu.tool.class.hammer":"锤", - "gtceu.tool.class.hoe":"锄", - "gtceu.tool.class.knife":"刀", - "gtceu.tool.class.mallet":"软锤", - "gtceu.tool.class.mining_hammer":"采矿锤", - "gtceu.tool.class.mortar":"研钵", - "gtceu.tool.class.pickaxe":"镐", - "gtceu.tool.class.plunger":"搋子", - "gtceu.tool.class.rolling_pin":"擀面杖", - "gtceu.tool.class.saw":"锯", - "gtceu.tool.class.screwdriver":"螺丝刀", - "gtceu.tool.class.scythe":"镰刀", - "gtceu.tool.class.shears":"剪刀", - "gtceu.tool.class.shovel":"锹", - "gtceu.tool.class.spade":"铲", - "gtceu.tool.class.sword":"剑", - "gtceu.tool.class.wire_cutter":"剪线钳", - "gtceu.tool.class.wrench":"扳手", - "gtceu.tool_action.crowbar":"§8使用撬棍卸下覆盖板", - "gtceu.tool_action.hammer":"§8使用锻造锤消除声响", - "gtceu.tool_action.screwdriver.access_covers":"§8使用螺丝刀访问覆盖板", - "gtceu.tool_action.screwdriver.auto_collapse":"§8使用螺丝刀开关物品堆叠自动合并", - "gtceu.tool_action.screwdriver.auto_output":"§8使用螺丝刀切换自动输出", - "gtceu.tool_action.screwdriver.auto_output_covers":"§8使用螺丝刀设置允许从输出端输入或访问覆盖板", - "gtceu.tool_action.screwdriver.toggle_mode":"§8使用螺丝刀切换模式", - "gtceu.tool_action.screwdriver.toggle_mode_covers":"§8使用螺丝刀切换模式或访问覆盖板", - "gtceu.tool_action.show_tooltips":"§7按住§6SHIFT§7显示工具信息", - "gtceu.tool_action.soft_mallet.reset":"§8使用软锤开关机器", - "gtceu.tool_action.soft_mallet.toggle_mode":"§8使用软锤切换模式", - "gtceu.tool_action.tape":"§8使用胶带维护机器", - "gtceu.tool_action.wire_cutter.connect":"§8使用剪线钳连接/断开电线", - "gtceu.tool_action.wrench.connect":"§8使用扳手连接/断开管道,潜行可以阻止输入", - "gtceu.tool_action.wrench.set_facing":"§8使用扳手设置朝向", - "gtceu.tooltip.fluid_pipe_hold_shift":"§7按住§6SHIFT§7以查看流体容器详情", - "gtceu.tooltip.hold_ctrl":"§7按住CTRL获得更多信息", - "gtceu.tooltip.hold_shift":"§7按住§6SHIFT§7获得更多信息", - "gtceu.tooltip.potion.each":"§r%4$s%%§7概率获得§r%1$s %2$s§7(§r%3$s§7tick)", - "gtceu.tooltip.potion.header":"§6包含效果:", - "gtceu.tooltip.proxy_bind":"§f绑定到%s %s %s处的样板总成", - "gtceu.tooltip.tool_fluid_hold_shift":"§7按住§6SHIFT§7以查看流体容器及工具详情", - "gtceu.top.allow_output_input":"允许输入", - "gtceu.top.auto_output":"自动输出", - "gtceu.top.buffer_bound_pos":"已绑定至 - X:%s;Y:%s;Z:%s", - "gtceu.top.cable_amperage":"电流:", - "gtceu.top.cable_voltage":"电压:", - "gtceu.top.convert_eu":"转换模式:§eEU§r ->§cFE§r", - "gtceu.top.convert_fe":"转换模式:§cFE§r ->§eEU§r", - "gtceu.top.energy_consumption":"耗能", - "gtceu.top.energy_production":"产能", - "gtceu.top.energy_stored":" / %d EU", - "gtceu.top.exhaust_vent_blocked":"受阻", - "gtceu.top.exhaust_vent_direction":"排气口:%s", - "gtceu.top.filter.label":"过滤:", - "gtceu.top.fluid_auto_output":"流体输出:%s", - "gtceu.top.fuel_min_consume":"需要", - "gtceu.top.fuel_none":"无燃料", - "gtceu.top.invalid_structure":"结构不完整", - "gtceu.top.item_auto_output":"物品输出:%s", - "gtceu.top.link_cover.color":"颜色:", - "gtceu.top.machine_mode":"机器模式:", - "gtceu.top.maintenance.crowbar":"这东西不属于这儿", - "gtceu.top.maintenance.hard_hammer":"外壳有些凹痕", - "gtceu.top.maintenance.screwdriver":"螺丝没拧紧", - "gtceu.top.maintenance.soft_mallet":"有什么东西卡住了", - "gtceu.top.maintenance.wire_cutter":"有几根线烧焦了", - "gtceu.top.maintenance.wrench":"管道松动了", - "gtceu.top.maintenance_broken":"需要维护", - "gtceu.top.maintenance_fixed":"无需维护", - "gtceu.top.mode.export":"输出", - "gtceu.top.mode.import":"输入", - "gtceu.top.obstructed_structure":"结构受阻", - "gtceu.top.primitive_pump_production":"产出:%s mB/s", - "gtceu.top.progress_computation":" / %s CWU", - "gtceu.top.progress_sec":" / %s s", - "gtceu.top.progress_tick":" / %s t", - "gtceu.top.proxies_bound":"样板总成镜像绑定数量:%s", - "gtceu.top.recipe_output":"配方输出:", - "gtceu.top.stained":"颜色:%s", - "gtceu.top.transform_down":"§a降压§r %s", - "gtceu.top.transform_input":"§6输入:§r%s", - "gtceu.top.transform_output":"§9输出:§r%s", - "gtceu.top.transform_up":"§c升压§r %s", - "gtceu.top.unit.fluid_buckets":"kL", - "gtceu.top.unit.fluid_milibuckets":"L", - "gtceu.top.unit.items":"物品", - "gtceu.top.valid_structure":"结构已成型", - "gtceu.top.working_disabled":"已暂停工作", - "gtceu.universal.clear_nbt_recipe.tooltip":"§c这将清除所有内容物!", - "gtceu.universal.disabled":"多方块结构共享:§4禁止", - "gtceu.universal.enabled":"多方块结构共享:§a允许", - "gtceu.universal.kiloliters":"%s B", - "gtceu.universal.liters":"%s mB", - "gtceu.universal.tooltip.amperage_in":"§e输入电流:§f%dA", - "gtceu.universal.tooltip.amperage_in_out":"§e输入/输出电流:§f%dA", - "gtceu.universal.tooltip.amperage_in_out_till":"§e输入/输出电流上限:§f%dA", - "gtceu.universal.tooltip.amperage_in_till":"§e输入电流上限:§f%dA", - "gtceu.universal.tooltip.amperage_out":"§e输出电流:§f%dA", - "gtceu.universal.tooltip.amperage_out_till":"§e输出电流上限:§f%dA", - "gtceu.universal.tooltip.base_production_eut":"§e基础产能功率:§f%d EU/t", - "gtceu.universal.tooltip.base_production_fluid":"§e基础产出速率:§f%d mB/t", - "gtceu.universal.tooltip.chunk_mode":"区块模式:", - "gtceu.universal.tooltip.deprecated":"§4§l警告:§r§4已弃用。将在未来版本中移除。§r", - "gtceu.universal.tooltip.energy_storage_capacity":"§c能量缓存:§r%d EU", - "gtceu.universal.tooltip.energy_tier_range":"§a适配电压等级:§f%s§f-%s", - "gtceu.universal.tooltip.fluid_storage_capacity":"§9流体容量:§f%d mB", - "gtceu.universal.tooltip.fluid_storage_capacity_mult":"§9流体容量:§r共§f%d§7个流体槽,每个§f%d mB§7", - "gtceu.universal.tooltip.fluid_stored":"§2内部流体:%2$d mB§f%1$s", - "gtceu.universal.tooltip.fluid_transfer_rate":"§b传输速率:§f%d mB/t", - "gtceu.universal.tooltip.item_storage_capacity":"§6物品槽位数量:§f%d", - "gtceu.universal.tooltip.item_storage_total":"§6物品容量:§f%d物品", - "gtceu.universal.tooltip.item_stored":"§d内部物品:§f%2$d个%1$s", - "gtceu.universal.tooltip.item_transfer_rate":"§b传输速率:§f%d物品/s", - "gtceu.universal.tooltip.item_transfer_rate_stacks":"§b传输速率:§f%d组/s", - "gtceu.universal.tooltip.max_voltage_in":"§a最大输入电压:§f%d(%s§f)", - "gtceu.universal.tooltip.max_voltage_in_out":"§a最大输入/输出电压:§f%d EU/t(%s§f)", - "gtceu.universal.tooltip.max_voltage_out":"§a最大输出电压:§f%d(%s§f)", - "gtceu.universal.tooltip.parallel":"§d最大并行:§f%d", - "gtceu.universal.tooltip.produces_fluid":"§e产出速率:§f%d mB/t", - "gtceu.universal.tooltip.requires_redstone":"§4需要红石信号", - "gtceu.universal.tooltip.silk_touch":"精准采集:", - "gtceu.universal.tooltip.terrain_resist":"该机器不会在暴露于恶劣天气时爆炸", - "gtceu.universal.tooltip.uses_per_hour_lubricant":"工作时消耗§f%d mB/hr§7§6润滑油§7", - "gtceu.universal.tooltip.uses_per_op":"每次工作时消耗§f%d EU§7", - "gtceu.universal.tooltip.uses_per_second":"工作时消耗§f%d EU/s§7", - "gtceu.universal.tooltip.uses_per_tick":"工作时消耗§f%d EU/t§7", - "gtceu.universal.tooltip.uses_per_tick_steam":"工作时消耗§f%d mB/t§7§f蒸汽§7", - "gtceu.universal.tooltip.voltage_in":"§a输入电压:§f%d EU/t(%s§f)", - "gtceu.universal.tooltip.voltage_in_out":"§a输入/输出电压:§f%d EU/t(%s§f)", - "gtceu.universal.tooltip.voltage_out":"§a输出电压:§f%d EU/t(%s§f)", - "gtceu.universal.tooltip.working_area":"§b工作范围:§f%dx%d", - "gtceu.universal.tooltip.working_area_chunks":"§b工作范围:§f%dx%d 区块", - "gtceu.universal.tooltip.working_area_chunks_max":"§b最大工作范围:§f%dx%d 区块", - "gtceu.universal.tooltip.working_area_max":"§b最大工作范围:§f%dx%d", - "gtceu.vacuum_freezer":"真空冷冻机", - "gtceu.wiremill":"线材轧机", - "gui.gtceu.refund_all.desc":"将共享库存返还到AE2", - "gui.gtceu.rename.desc":"重命名样板总成", - "gui.gtceu.share_inventory.desc.0":"与总成内的所有样板共享物品!", - "gui.gtceu.share_inventory.desc.1":"保存不消耗的催化剂,实现更高效的自动化", - "gui.gtceu.share_inventory.title":"共享物品库存", - "gui.gtceu.share_tank.desc.0":"与总成内的所有样板共享流体!", - "gui.gtceu.share_tank.title":"共享流体库存", - "gui.widget.incrementButton.default_tooltip":"按住Shift,Ctrl键或同时按住这两个键来改变数量", - "gui.widget.recipeProgressWidget.default_tooltip":"查看配方", - "item.glass_lens":"玻璃透镜(白色)", - "item.gtceu.activity_detector_cover":"活跃探测覆盖板", - "item.gtceu.activity_detector_cover.tooltip":"§7作§f覆盖板§7时依照§f机器活跃状态§7发出红石信号。", - "item.gtceu.advanced_activity_detector_cover":"进阶活跃状态探测器", - "item.gtceu.advanced_activity_detector_cover.tooltip":"§7作§f覆盖板§7时依照§f机器处理进度§7发出红石信号。", - "item.gtceu.advanced_electric_jetpack":"进阶电力喷气背包", - "item.gtceu.advanced_energy_detector_cover":"进阶能量探测覆盖板", - "item.gtceu.advanced_energy_detector_cover.tooltip":"§7作§f覆盖板§7时依照由§fRS锁存器§7控制的§f能量状态§7发出红石信号。", - "item.gtceu.advanced_fluid_detector_cover":"进阶流体探测器", - "item.gtceu.advanced_fluid_detector_cover.tooltip":"作§f覆盖板§7时依照由§fRS锁存器§7控制的§f流体存储状态§7发出红石信号。", - "item.gtceu.advanced_fluid_voiding_cover":"进阶流体销毁覆盖板", - "item.gtceu.advanced_fluid_voiding_cover.tooltip.0":"§7作§f覆盖板§7时允许按数量销毁§f流体§7。", - "item.gtceu.advanced_fluid_voiding_cover.tooltip.1":"加装后使用§f软锤§7激活", - "item.gtceu.advanced_integrated_circuit":"进阶集成电路", - "item.gtceu.advanced_integrated_circuit.tooltip.0":"§7更小也更强", - "item.gtceu.advanced_integrated_circuit.tooltip.1":"§6HV级电路", - "item.gtceu.advanced_item_detector_cover":"进阶物品探测器", - "item.gtceu.advanced_item_detector_cover.tooltip":"作§f覆盖板§7时依照由§fRS锁存器§7控制的§f物品存储状态§7发出红石信号。", - "item.gtceu.advanced_item_voiding_cover":"进阶物品销毁覆盖板", - "item.gtceu.advanced_item_voiding_cover.tooltip.0":"§7作§f覆盖板§7时销毁物品。", - "item.gtceu.advanced_item_voiding_cover.tooltip.1":"加装后使用§f软锤§7激活", - "item.gtceu.advanced_power_thruster":"进阶电力推进器", - "item.gtceu.advanced_quarktech_chestplate":"夸克高科™进阶套装胸甲", - "item.gtceu.advanced_smd_capacitor":"高级贴片电容", - "item.gtceu.advanced_smd_capacitor.tooltip":"§7高级电子元件", - "item.gtceu.advanced_smd_diode":"高级贴片二极管", - "item.gtceu.advanced_smd_diode.tooltip":"§7高级电子元件", - "item.gtceu.advanced_smd_inductor":"高级贴片电感", - "item.gtceu.advanced_smd_inductor.tooltip":"§7高级电子元件", - "item.gtceu.advanced_smd_resistor":"高级贴片电阻", - "item.gtceu.advanced_smd_resistor.tooltip":"§7高级电子元件", - "item.gtceu.advanced_smd_transistor":"高级贴片晶体管", - "item.gtceu.advanced_smd_transistor.tooltip":"§7高级电子元件", - "item.gtceu.advanced_soc":"ASoC", - "item.gtceu.advanced_soc.tooltip":"§7先进系统级芯片", - "item.gtceu.advanced_soc_wafer":"ASoC晶圆", - "item.gtceu.advanced_soc_wafer.tooltip":"§7先进电路原料", - "item.gtceu.aluminium_fluid_cell":"%s铝单元", - "item.gtceu.anvil_casting_mold":"模具(砧)", - "item.gtceu.anvil_casting_mold.tooltip":"§7用来制作砧的模具", - "item.gtceu.ash_dust":"灰烬", - "item.gtceu.advanced_nanomuscle_chestplate":"纳米肌体™进阶套装胸甲", - "item.gtceu.axe_extruder_mold.tooltip":"§7用来制作斧的模头", - "item.gtceu.ball_casting_mold":"模具(球)", - "item.gtceu.ball_casting_mold.tooltip":"§7用来制作球的模具", - "item.gtceu.basaltic_mineral_sand_dust":"玄武岩矿砂", - "item.gtceu.basic_electronic_circuit":"基础电子电路", - "item.gtceu.basic_electronic_circuit.tooltip.0":"§7你的第一块电路", - "item.gtceu.basic_electronic_circuit.tooltip.1":"§cLV级电路", - "item.gtceu.basic_integrated_circuit":"基础集成电路", - "item.gtceu.basic_integrated_circuit.tooltip.0":"§7更小也更强", - "item.gtceu.basic_integrated_circuit.tooltip.1":"§6LV级电路", - "item.gtceu.basic_tape":"胶带", - "item.gtceu.basic_tape.tooltip":"§7强度不足,无法解决机械故障\\n可以带走板条箱,且不丢失物品", - "item.gtceu.battery.charge_detailed.0":"§a%s/%sEU-%s级§7(§a剩余供能时长:%s/%s%s§7)", - "item.gtceu.battery.charge_detailed.1":"§e%s/%sEU-%s级§7(§e剩余供能时长:%s/%s%s§7)", - "item.gtceu.battery.charge_detailed.2":"§c%s/%sEU-%s级§7(§c剩余供能时长:%s/%s%s§7)", - "item.gtceu.battery.charge_time":"§a最大供能时长:%s%s(%s)", - "item.gtceu.battery.charge_unit.hour":"时", - "item.gtceu.battery.charge_unit.minute":"分", - "item.gtceu.battery.charge_unit.second":"秒", - "item.gtceu.bentonite_dust":"膨润土", - "item.gtceu.bio_chaff":"生物糠", - "item.gtceu.black_dye_spray_can":"喷漆罐(黑色)", - "item.gtceu.black_glass_lens":"玻璃透镜(黑色)", - "item.gtceu.blacklight":"黑光灯", - "item.gtceu.blacklight.tooltip":"§7长波§d紫外线§7光源", - "item.gtceu.block_casting_mold":"模具(块)", - "item.gtceu.block_casting_mold.tooltip":"§7用来制作块的模具", - "item.gtceu.block_extruder_mold":"模头(块)", - "item.gtceu.block_extruder_mold.tooltip":"§7用来制作块的模头", - "item.gtceu.blue_dye_spray_can":"喷漆罐(蓝色)", - "item.gtceu.blue_glass_lens":"玻璃透镜(蓝色)", - "item.gtceu.bolt_extruder_mold":"模头(螺栓)", - "item.gtceu.bolt_extruder_mold.tooltip":"§7用来制作螺栓的模头", - "item.gtceu.bone_dust":"骨粉", - "item.gtceu.borosilicate_glass_ingot":"硼硅玻璃条", - "item.gtceu.bottle.purple.drink.tooltip":"§7来点柠檬汽水,还是冰红茶?我手里这瓶可是紫色饮料!", - "item.gtceu.bottle_casting_mold":"模具(瓶子)", - "item.gtceu.bottle_casting_mold.tooltip":"§7用来制作瓶的模具", - "item.gtceu.bottle_extruder_mold":"模头(瓶子)", - "item.gtceu.bottle_extruder_mold.tooltip":"§7用来制作瓶子的模头", - "item.gtceu.brick_wooden_form":"木制砖模具", - "item.gtceu.brown_dye_spray_can":"喷漆罐(棕色)", - "item.gtceu.brown_glass_lens":"玻璃透镜(棕色)", - "item.gtceu.bucket":"%s桶", - "item.gtceu.capacitor":"电容", - "item.gtceu.capacitor.tooltip":"§7基础电子元件", - "item.gtceu.carbon_fiber_mesh":"碳纤维网", - "item.gtceu.carbon_fiber_plate":"碳板", - "item.gtceu.carbon_fibers":"生碳纤维", - "item.gtceu.casing_casting_mold.tooltip":"§7用来制作外壳的模具", - "item.gtceu.casing_extruder_mold.tooltip":"§7用来制作外壳的模头", - "item.gtceu.cassiterite_sand_dust":"锡石矿砂", - "item.gtceu.cell_extruder_mold":"模头(单元)", - "item.gtceu.cell_extruder_mold.tooltip":"§7用来制作单元的模头", - "item.gtceu.chemical_black_dye":"黑色化学染料", - "item.gtceu.chemical_blue_dye":"蓝色化学染料", - "item.gtceu.chemical_brown_dye":"棕色化学染料", - "item.gtceu.chemical_cyan_dye":"青色化学染料", - "item.gtceu.chemical_gray_dye":"灰色化学染料", - "item.gtceu.chemical_green_dye":"绿色化学染料", - "item.gtceu.chemical_light_blue_dye":"淡蓝色化学染料", - "item.gtceu.chemical_light_gray_dye":"淡灰色化学染料", - "item.gtceu.chemical_lime_dye":"黄绿色化学染料", - "item.gtceu.chemical_magenta_dye":"品红色化学染料", - "item.gtceu.chemical_orange_dye":"橙色化学染料", - "item.gtceu.chemical_pink_dye":"粉红色化学染料", - "item.gtceu.chemical_purple_dye":"紫色化学染料", - "item.gtceu.chemical_red_dye":"红色化学染料", - "item.gtceu.chemical_white_dye":"白色化学染料", - "item.gtceu.chemical_yellow_dye":"黄色化学染料", - "item.gtceu.chipped_glass_gem":"破碎的玻璃晶体", - "item.gtceu.chipped_sugar_gem":"小块方糖", - "item.gtceu.circuit.integrated.gui":"§7编程电路配置", - "item.gtceu.coke_oven_brick":"焦炉砖", - "item.gtceu.compressed_clay":"压缩黏土", - "item.gtceu.compressed_coke_clay":"压缩焦黏土", - "item.gtceu.compressed_fireclay":"压缩耐火黏土", - "item.gtceu.computer_monitor_cover":"电脑屏幕覆盖板", - "item.gtceu.computer_monitor_cover.tooltip":"§7作§f覆盖板§7时显示§f数据§7。", - "item.gtceu.conveyor.module.tooltip":"§7作§f覆盖板§7时以特定速率传输§f物品§7。", - "item.gtceu.cpu_chip":"CPU芯片", - "item.gtceu.cpu_chip.tooltip":"§7中央处理器", - "item.gtceu.cpu_wafer":"CPU晶圆", - "item.gtceu.cpu_wafer.tooltip":"§7中央处理器原料", - "item.gtceu.crushed_bentonite_ore":"精研膨润土", - "item.gtceu.crushed_cassiterite_sand_ore":"粉碎锡石矿砂", - "item.gtceu.crushed_pitchblende_ore":"精研沥青铀矿", - "item.gtceu.crushed_talc_ore_ore":"精研滑石", - "item.gtceu.crystal_cpu":"晶体CPU", - "item.gtceu.crystal_cpu.tooltip":"§7晶体处理器", - "item.gtceu.crystal_processor":"晶体处理器", - "item.gtceu.crystal_processor.tooltip.0":"§7得益于晶体蚀刻技术", - "item.gtceu.crystal_processor.tooltip.1":"§9IV级电路", - "item.gtceu.crystal_processor_assembly":"晶体处理器集群", - "item.gtceu.crystal_processor_assembly.tooltip.0":"§7得益于晶体蚀刻技术", - "item.gtceu.crystal_processor_assembly.tooltip.1":"§9LuV级电路", - "item.gtceu.crystal_processor_computer":"晶体处理器超级计算机", - "item.gtceu.crystal_processor_computer.tooltip.0":"§7得益于晶体蚀刻技术", - "item.gtceu.crystal_processor_computer.tooltip.1":"§9ZPM级电路", - "item.gtceu.crystal_processor_mainframe":"晶体处理器主机", - "item.gtceu.crystal_processor_mainframe.tooltip.0":"§7得益于晶体蚀刻技术", - "item.gtceu.crystal_processor_mainframe.tooltip.1":"§9UV级电路", - "item.gtceu.crystal_soc":"晶体SoC", - "item.gtceu.crystal_soc.tooltip":"§7晶体系统级芯片", - "item.gtceu.cyan_dye_spray_can":"喷漆罐(青色)", - "item.gtceu.cyan_glass_lens":"玻璃透镜(青色)", - "item.gtceu.cylinder_casting_mold":"模具(圆柱)", - "item.gtceu.cylinder_casting_mold.tooltip":"§7用来制作圆柱的模具", - "item.gtceu.dark_ash_dust":"黑色灰烬", - "item.gtceu.data_module":"数据模块", - "item.gtceu.data_orb":"数据球", - "item.gtceu.data_orb.tooltip":" §7大容量的数据存储器", - "item.gtceu.data_stick":"闪存", - "item.gtceu.data_stick.tooltip":"§7小容量的数据存储器", - "item.gtceu.diamond_grinding_head":"钻石研磨头", - "item.gtceu.diode":"二极管", - "item.gtceu.diode.tooltip":"§7基础电子元件", - "item.gtceu.dough":"面团", - "item.gtceu.duct_tape":"布莱恩科技航空专用强化胶带FAL-84型", - "item.gtceu.duct_tape.tooltip":"§7如果一卷修不好,那就再来一卷!", - "item.gtceu.dynamite":"炸药", - "item.gtceu.electric.pump.tooltip":"§7作§f覆盖板§7时以特定速率传输§f流体§7。", - "item.gtceu.electric_jetpack":"电力喷气背包", - "item.gtceu.empty_mold":"空模板", - "item.gtceu.empty_mold.tooltip":"§7用以制作模具与压模器的模头", - "item.gtceu.empty_spray_can":"空喷漆罐", - "item.gtceu.empty_spray_can.tooltip":"§7可充入各种颜色的喷剂", - "item.gtceu.empty_wooden_form":"空木制模具", - "item.gtceu.ender_fluid_link_cover":"末影流体连接", - "item.gtceu.ender_fluid_link_cover.tooltip":"§7作§f覆盖板§7时利用§f无线§7§d末影§f连接§7传输§f流体§7。", - "item.gtceu.energium_dust":"能量粉", - "item.gtceu.energy_cluster":"能量簇", - "item.gtceu.energy_cluster.tooltip":"§7可充电电池", - "item.gtceu.energy_crystal":"能量水晶", - "item.gtceu.energy_crystal.tooltip":"§7可充电电池", - "item.gtceu.energy_detector_cover":"能量探测覆盖板", - "item.gtceu.energy_detector_cover.tooltip":"§7作§f覆盖板§7时依照§f能量储量§7发出红石信号。", - "item.gtceu.energy_module":"能量模块", - "item.gtceu.energy_module.tooltip":"§7可充电电池", - "item.gtceu.engraved_crystal_chip":"刻蚀水晶芯片", - "item.gtceu.engraved_crystal_chip.tooltip":"§7晶体电路所需", - "item.gtceu.engraved_lapotron_crystal_chip":"刻蚀兰波顿芯片", - "item.gtceu.epoxy_circuit_board":"环氧树脂基板", - "item.gtceu.epoxy_circuit_board.tooltip":"§7进阶电路基板", - "item.gtceu.epoxy_printed_circuit_board":"环氧树脂印刷电路基板", - "item.gtceu.epoxy_printed_circuit_board.tooltip":"§7更高级的电路基板", - "item.gtceu.ev_battery_hull":"小型钒电池外壳", - "item.gtceu.ev_battery_hull.tooltip":"§7一个空的§5EV§7电池外壳", - "item.gtceu.ev_conveyor_module":"§5EV§r传送带", - "item.gtceu.ev_electric_motor":"§5EV§r电动马达", - "item.gtceu.ev_electric_piston":"§5EV§r电力活塞", - "item.gtceu.ev_electric_pump":"§5EV§r电动泵", - "item.gtceu.ev_emitter":"§5EV§r发射器", - "item.gtceu.ev_field_generator":"§5EV§r力场发生器", - "item.gtceu.ev_fluid_regulator":"§5EV§r流体校准器", - "item.gtceu.ev_power_unit":"§5EV§r能量单元", - "item.gtceu.ev_robot_arm":"§5EV§r机械臂", - "item.gtceu.ev_sensor":"§5EV§r传感器", - "item.gtceu.ev_solar_panel":"超高压太阳能板(§5EV§r)", - "item.gtceu.ev_vanadium_battery":"小型钒电池", - "item.gtceu.ev_vanadium_battery.tooltip":"§7可充电电池", - "item.gtceu.ev_voltage_coil":"超高压线圈", - "item.gtceu.ev_voltage_coil.tooltip":"极限线圈", - "item.gtceu.exquisite_glass_gem":"精致的玻璃晶体", - "item.gtceu.facade_cover":"%s覆盖伪装板", - "item.gtceu.facade_cover.tooltip.0":"§7可作为§f覆盖板§7加装的装饰性外壳。", - "item.gtceu.facade_cover.tooltip.1":"§7使用三个铁板与任意方块合成", - "item.gtceu.face_mask":"面罩", - "item.gtceu.fertilizer":"肥料", - "item.gtceu.fiber_reinforced_circuit_board":"纤维强化电路基板", - "item.gtceu.fiber_reinforced_circuit_board.tooltip":"§7超级电路基板", - "item.gtceu.fiber_reinforced_printed_circuit_board":"纤维强化印刷电路基板", - "item.gtceu.fiber_reinforced_printed_circuit_board.tooltip":"§7更高级的电路基板", - "item.gtceu.file_extruder_mold.tooltip":"§7用来制作锉的模头", - "item.gtceu.fine_borosilicate_glass_wire":"硼硅玻璃纤维", - "item.gtceu.firebrick":"耐火砖", - "item.gtceu.firebrick.tooltip":"§7耐热", - "item.gtceu.flawed_glass_gem":"有瑕的玻璃晶体", - "item.gtceu.flawed_sugar_gem":"小颗方糖", - "item.gtceu.flawless_glass_gem":"无瑕的玻璃晶体", - "item.gtceu.fluid.regulator.tooltip":"§7作§f覆盖板§7时§7限制§f§f流体§7的流量。", - "item.gtceu.fluid_cell":"%s单元", - "item.gtceu.fluid_detector_cover":"流体探测覆盖板", - "item.gtceu.fluid_detector_cover.tooltip":"§7作§f覆盖板§7时依照§f流体储量§7发出红石信号。", - "item.gtceu.fluid_filter":"流体过滤卡", - "item.gtceu.fluid_filter.tooltip.0":"§7作§f覆盖板§7时过滤§流体§7的输入/输出。", - "item.gtceu.fluid_filter.tooltip.1":"亦可为§f电动泵§7和§f流体校准器§7提供此功能。", - "item.gtceu.fluid_tag_filter":"流体标签过滤卡", - "item.gtceu.fluid_tag_filter.tooltip.0":"§7作§f覆盖板§7时以§f流体标签§7过滤§f流体§7的输入/输出。", - "item.gtceu.fluid_tag_filter.tooltip.1":"§7可用于升级§f电动泵§7与§f流体校准器§7。", - "item.gtceu.fluid_voiding_cover":"流体销毁覆盖板", - "item.gtceu.fluid_voiding_cover.tooltip.0":"§7作§f覆盖板§7时允许销毁§f流体§7。", - "item.gtceu.fluid_voiding_cover.tooltip.1":"§7加装后使用§f软锤§7激活", - "item.gtceu.foam_sprayer.tooltip.0":"§7喷射建筑泡沫", - "item.gtceu.foam_sprayer.tooltip.1":"右击框架来给框架喷涂泡沫", - "item.gtceu.foam_sprayer.tooltip.2":"泡沫可以染色", - "item.gtceu.foil_extruder_mold":"模头(箔)", - "item.gtceu.foil_extruder_mold.tooltip":"§7用来制作箔的模头", - "item.gtceu.fullers_earth_dust":"漂白土", - "item.gtceu.garnet_sand_dust":"石榴石砂", - "item.gtceu.gear_casting_mold":"模具(齿轮)", - "item.gtceu.gear_casting_mold.small.tooltip":"§7用来制作小型齿轮的模具", - "item.gtceu.gear_casting_mold.tooltip":"§7用来制作齿轮的模具", - "item.gtceu.gear_extruder_mold":"模头(齿轮)", - "item.gtceu.gear_extruder_mold.tooltip":"§7用来制作齿轮的模头", - "item.gtceu.gear_small_extruder_mold.tooltip":"§7用来制作小型齿轮的模头", - "item.gtceu.gelled_toluene":"胶凝甲苯", - "item.gtceu.gelled_toluene.tooltip":"§7炸药原料", - "item.gtceu.glass_gem":"玻璃晶体", - "item.gtceu.glass_plate":"玻璃板", - "item.gtceu.glass_tube":"玻璃管", - "item.gtceu.glass_vial":"%s玻璃试管", - "item.gtceu.glauconite_sand_dust":"海绿石砂", - "item.gtceu.good_electronic_circuit":"优质电子电路", - "item.gtceu.good_electronic_circuit.tooltip.0":"§7你的第二块电路", - "item.gtceu.good_electronic_circuit.tooltip.1":"§cMV级电路", - "item.gtceu.good_integrated_circuit":"优质集成电路", - "item.gtceu.good_integrated_circuit.tooltip.0":"§7更小也更强", - "item.gtceu.good_integrated_circuit.tooltip.1":"§6MV级电路", - "item.gtceu.granitic_mineral_sand_dust":"花岗岩矿砂", - "item.gtceu.gravi_star":"重力之星", - "item.gtceu.gravi_star.tooltip":"§7终极下界之星", - "item.gtceu.gravitation_engine_unit":"重力引擎单元", - "item.gtceu.gray_dye_spray_can":"喷漆罐(灰色)", - "item.gtceu.gray_glass_lens":"玻璃透镜(灰色)", - "item.gtceu.green_dye_spray_can":"喷漆罐(绿色)", - "item.gtceu.green_glass_lens":"玻璃透镜(绿色)", - "item.gtceu.hammer_extruder_mold.tooltip":"§7用来制作锤的模头", - "item.gtceu.hazmat_boots":"防化靴子", - "item.gtceu.hazmat_chestpiece":"防化胸甲", - "item.gtceu.hazmat_headpiece":"防化头盔", - "item.gtceu.hazmat_leggings":"防化护腿", - "item.gtceu.highly_advanced_soc":"HASoC", - "item.gtceu.highly_advanced_soc.tooltip":"§7高度先进的系统级芯片", - "item.gtceu.highly_advanced_soc_wafer":"HASoC晶圆", - "item.gtceu.highly_advanced_soc_wafer.tooltip":"§7高度先进的电路原料", - "item.gtceu.hoe_extruder_mold.tooltip":"§7用来制作锄的模头", - "item.gtceu.hpic_chip":"HPIC芯片", - "item.gtceu.hpic_chip.tooltip":"§7高功率集成电路", - "item.gtceu.hpic_wafer":"HPIC晶圆", - "item.gtceu.hpic_wafer.tooltip":"§7高功率集成电路原料", - "item.gtceu.huge_pipe_extruder_mold":"模头(巨型管道)", - "item.gtceu.hv_battery_hull":"大型电池外壳", - "item.gtceu.hv_battery_hull.tooltip":"§7一个空的§6HV§7电池外壳", - "item.gtceu.hv_cadmium_battery":"大型镉电池", - "item.gtceu.hv_cadmium_battery.tooltip":"§7可充电电池", - "item.gtceu.hv_conveyor_module":"§6HV§r传送带", - "item.gtceu.hv_electric_motor":"§6HV§r电动马达", - "item.gtceu.hv_electric_piston":"§6HV§r电力活塞", - "item.gtceu.hv_electric_pump":"§6HV§r电动泵", - "item.gtceu.hv_emitter":"§6HV§r发射器", - "item.gtceu.hv_field_generator":"§6HV§r力场发生器", - "item.gtceu.hv_fluid_regulator":"§6HV§r流体校准器", - "item.gtceu.hv_item_magnet":"§6HV§r物品磁铁", - "item.gtceu.hv_lithium_battery":"大型锂电池", - "item.gtceu.hv_lithium_battery.tooltip":"§7可充电电池", - "item.gtceu.hv_power_unit":"§6HV§r能量单元", - "item.gtceu.hv_robot_arm":"§6HV§r机械臂", - "item.gtceu.hv_sensor":"§6HV§r传感器", - "item.gtceu.hv_sodium_battery":"大型钠电池", - "item.gtceu.hv_sodium_battery.tooltip":"§7可充电电池", - "item.gtceu.hv_solar_panel":"高压太阳能板(§6HV§r)", - "item.gtceu.hv_voltage_coil":"高压线圈", - "item.gtceu.hv_voltage_coil.tooltip":"高级线圈", - "item.gtceu.ice_dust":"碎冰", - "item.gtceu.ilc_chip":"IC芯片", - "item.gtceu.ilc_chip.tooltip":"§7集成逻辑电路", - "item.gtceu.ilc_wafer":"ILC晶圆", - "item.gtceu.ilc_wafer.tooltip":"§7集成电路原料", - "item.gtceu.impure_bentonite_dust":"含杂膨润土", - "item.gtceu.impure_cassiterite_sand_dust":"含杂锡石矿砂", - "item.gtceu.impure_pitchblende_dust":"含杂沥青铀矿", - "item.gtceu.impure_rock_salt_dust":"含杂岩盐", - "item.gtceu.impure_salt_dust":"含杂盐", - "item.gtceu.impure_talc_dust":"含杂滑石", - "item.gtceu.inductor":"电感", - "item.gtceu.inductor.tooltip":"§7一个小线圈", - "item.gtceu.inert_metal_mixture_dust":"惰性金属混合物", - "item.gtceu.infinite_water_cover":"无限水覆盖板", - "item.gtceu.infinite_water_cover.tooltip":"§7作§f覆盖板§7时为所附着的容器供§9水§7。", - "item.gtceu.ingot_casting_mold":"模具(锭)", - "item.gtceu.ingot_casting_mold.tooltip":"§7用来制作锭的模具", - "item.gtceu.ingot_extruder_mold":"模头(锭)", - "item.gtceu.ingot_extruder_mold.tooltip":"§7用来……等会,用熔炉不好吗?", - "item.gtceu.invar_lighter":"殷钢打火机", - "item.gtceu.iridium_metal_residue_dust":"铱金属渣", - "item.gtceu.iron_minecart_wheels":"铁矿车车轮", - "item.gtceu.item_detector_cover":"物品探测覆盖板", - "item.gtceu.item_detector_cover.tooltip":"§7作§f覆盖板§7时依照§f物品储量§7发出红石信号。", - "item.gtceu.item_filter":"物品过滤卡", - "item.gtceu.item_filter.tooltip.0":"§7作§f覆盖板§7时过滤§f物品§7的输入/输出。", - "item.gtceu.item_filter.tooltip.1":"亦可为§f传送带§7和§f机械臂§7提供此功能。", - "item.gtceu.item_smart_filter":"智能物品过滤卡", - "item.gtceu.item_smart_filter.tooltip.0":"作§f覆盖板§7时以§f机器的配方§7过滤§f物品§7的输入/输出。", - "item.gtceu.item_smart_filter.tooltip.1":"亦可为§f传送带§7和§f机械臂§7提供此功能。", - "item.gtceu.item_tag_filter":"物品标签过滤卡", - "item.gtceu.item_tag_filter.tooltip.0":"§7作§f覆盖板§7时以§f物品标签§7过滤§f物品§7的输入/输出。", - "item.gtceu.item_tag_filter.tooltip.1":"§7可用于升级§f传送带§7与§f机械臂§7。", - "item.gtceu.item_voiding_cover":"物品销毁覆盖板", - "item.gtceu.item_voiding_cover.tooltip.0":"§7作§f覆盖板§7时销毁物品。", - "item.gtceu.item_voiding_cover.tooltip.1":"§7加装后使用§f软锤§7激活", - "item.gtceu.iv_battery_hull":"中型钒电池外壳", - "item.gtceu.iv_battery_hull.tooltip":"§7一个空的§1IV§7电池外壳", - "item.gtceu.iv_conveyor_module":"§9IV§r传送带", - "item.gtceu.iv_electric_motor":"§9IV§r电动马达", - "item.gtceu.iv_electric_piston":"§9IV§r电力活塞", - "item.gtceu.iv_electric_pump":"§9IV§r电动泵", - "item.gtceu.iv_emitter":"§9IV§r发射器", - "item.gtceu.iv_field_generator":"§9IV§r力场发生器", - "item.gtceu.iv_fluid_regulator":"§9IV§r流体校准器", - "item.gtceu.iv_power_unit":"§9IV§r能量单元", - "item.gtceu.iv_robot_arm":"§9IV§r机械臂", - "item.gtceu.iv_sensor":"§9IV§r传感器", - "item.gtceu.iv_solar_panel":"强导压太阳能板(§9IV§r)", - "item.gtceu.iv_vanadium_battery":"中型钒电池", - "item.gtceu.iv_vanadium_battery.tooltip":"§7可充电电池", - "item.gtceu.iv_voltage_coil":"强导压线圈", - "item.gtceu.iv_voltage_coil.tooltip":"精英线圈", - "item.gtceu.lapotron_crystal":"兰波顿水晶", - "item.gtceu.lapotron_crystal.tooltip":"§7可充电电池", - "item.gtceu.lapotronic_energy_orb":"兰波顿能量球", - "item.gtceu.lapotronic_energy_orb.tooltip":"§7可充电电池", - "item.gtceu.lapotronic_energy_orb_cluster":"兰波顿能量球簇", - "item.gtceu.lapotronic_energy_orb_cluster.tooltip":"§7可充电电池", - "item.gtceu.large_pipe_extruder_mold":"模头(大型管道)", - "item.gtceu.light_blue_dye_spray_can":"喷漆罐(淡蓝色)", - "item.gtceu.light_blue_glass_lens":"玻璃透镜(淡蓝色)", - "item.gtceu.light_gray_dye_spray_can":"喷漆罐(淡灰色)", - "item.gtceu.light_gray_glass_lens":"玻璃透镜(淡灰色)", - "item.gtceu.lime_dye_spray_can":"喷漆罐(黄绿色)", - "item.gtceu.lime_glass_lens":"玻璃透镜(黄绿色)", - "item.gtceu.liquid_fuel_jetpack":"液体燃料喷气背包", - "item.gtceu.long_rod_extruder_mold":"模头(长杆)", - "item.gtceu.long_treated_wood_rod":"长防腐木棍", - "item.gtceu.long_wood_rod":"长木棍", - "item.gtceu.lpic_chip":"LPIC芯片", - "item.gtceu.lpic_chip.tooltip":"§7低功率集成电路", - "item.gtceu.lpic_wafer":"LPIC晶圆", - "item.gtceu.lpic_wafer.tooltip":"§7低功率集成电路原料", - "item.gtceu.luv_battery_hull":"大型钒电池外壳", - "item.gtceu.luv_battery_hull.tooltip":"§7一个空的§dLuV§r电池外壳", - "item.gtceu.luv_conveyor_module":"§dLuV§r传送带", - "item.gtceu.luv_electric_motor":"§dLuV§r电动马达", - "item.gtceu.luv_electric_piston":"§dLuV§r电力活塞", - "item.gtceu.luv_electric_pump":"§dLuV§r电动泵", - "item.gtceu.luv_emitter":"§dLuV§r发射器", - "item.gtceu.luv_field_generator":"§dLuV§r力场发生器", - "item.gtceu.luv_fluid_regulator":"§dLuV§r流体校准器", - "item.gtceu.luv_robot_arm":"§dLuV§r机械臂", - "item.gtceu.luv_sensor":"§dLuV§r传感器", - "item.gtceu.luv_solar_panel":"剧差压太阳能板(§dLuV§r)", - "item.gtceu.luv_vanadium_battery":"大型钒电池", - "item.gtceu.luv_vanadium_battery.tooltip":"§7可充电电池", - "item.gtceu.luv_voltage_coil":"剧差压线圈", - "item.gtceu.luv_voltage_coil.tooltip":"大师线圈", - "item.gtceu.lv_battery_hull":"小型电池外壳", - "item.gtceu.lv_battery_hull.tooltip":"§7一个空的§7LV§7电池外壳", - "item.gtceu.lv_cadmium_battery":"小型镉电池", - "item.gtceu.lv_cadmium_battery.tooltip":"§7可充电电池", - "item.gtceu.lv_conveyor_module":"§7LV§r传送带", - "item.gtceu.lv_electric_motor":"§7LV§r电动马达", - "item.gtceu.lv_electric_piston":"§7LV§r电力活塞", - "item.gtceu.lv_electric_pump":"§7LV§r电动泵", - "item.gtceu.lv_emitter":"§7LV§r发射器", - "item.gtceu.lv_field_generator":"§7LV§r力场发生器", - "item.gtceu.lv_fluid_regulator":"§7LV§r流体校准器", - "item.gtceu.lv_item_magnet":"§7LV§r物品磁铁", - "item.gtceu.lv_lithium_battery":"小型锂电池", - "item.gtceu.lv_lithium_battery.tooltip":"§7可充电电池", - "item.gtceu.lv_power_unit":"§7LV§r能量单元", - "item.gtceu.lv_robot_arm":"§7LV§r机械臂", - "item.gtceu.lv_sensor":"§7LV§r传感器", - "item.gtceu.lv_sodium_battery":"小型钠电池", - "item.gtceu.lv_sodium_battery.tooltip":"§7可充电电池", - "item.gtceu.lv_solar_panel":"低压太阳能板(§7LV§r)", - "item.gtceu.lv_voltage_coil":"低压线圈", - "item.gtceu.lv_voltage_coil.tooltip":"基础线圈", - "item.gtceu.machine_controller.tooltip":"§7作§f覆盖板§7时可以§f开/关§7机器。", - "item.gtceu.machine_controller_cover":"机器控制覆盖板", - "item.gtceu.machine_memory_card":"机器内存卡", - "item.gtceu.magenta_dye_spray_can":"喷漆罐(品红色)", - "item.gtceu.magenta_glass_lens":"玻璃透镜(品红色)", - "item.gtceu.maintenance_detector_cover":"维护探测覆盖板", - "item.gtceu.mask_filter":"防毒面具过滤罐", - "item.gtceu.matchbox":"火柴盒", - "item.gtceu.matches":"火柴", - "item.gtceu.max_battery":"终极电池", - "item.gtceu.max_battery.tooltip":"§7填满就能通关Minecraft", - "item.gtceu.max_voltage_coil.tooltip":"至高线圈", - "item.gtceu.meat_dust":"肉末", - "item.gtceu.micro_processor":"微型处理器", - "item.gtceu.micro_processor.tooltip.0":"§7运算速度惊人!", - "item.gtceu.micro_processor.tooltip.1":"§eMV级电路", - "item.gtceu.micro_processor_assembly":"微型处理器集群", - "item.gtceu.micro_processor_assembly.tooltip.0":"§7运算速度惊人!", - "item.gtceu.micro_processor_assembly.tooltip.1":"§eHV级电路", - "item.gtceu.micro_processor_computer":"微型处理器超级计算机", - "item.gtceu.micro_processor_computer.tooltip.0":"§7运算速度惊人!", - "item.gtceu.micro_processor_computer.tooltip.1":"§eEV级电路", - "item.gtceu.micro_processor_mainframe":"微型处理器主机", - "item.gtceu.micro_processor_mainframe.tooltip.0":"§7运算速度惊人!", - "item.gtceu.micro_processor_mainframe.tooltip.1":"§eIV级电路", - "item.gtceu.microchip_processor":"微芯片处理器", - "item.gtceu.microchip_processor.tooltip.0":"§7卓越的基础电路", - "item.gtceu.microchip_processor.tooltip.1":"§eLV级电路", - "item.gtceu.mpic_chip":"MPIC芯片", - "item.gtceu.mpic_chip.tooltip":"§7功率集成电路", - "item.gtceu.mpic_wafer":"MPIC晶圆", - "item.gtceu.mpic_wafer.tooltip":"§7功率集成电路原料", - "item.gtceu.multilayer_fiber_reinforced_circuit_board":"多层纤维强化电路基板", - "item.gtceu.multilayer_fiber_reinforced_circuit_board.tooltip":"§7精英电路基板", - "item.gtceu.multilayer_fiber_reinforced_printed_circuit_board":"多层纤维强化印刷电路基板", - "item.gtceu.multilayer_fiber_reinforced_printed_circuit_board.tooltip":"§7精英级电路基板", - "item.gtceu.mv_battery_hull":"中型电池外壳", - "item.gtceu.mv_battery_hull.tooltip":"§7一个空的§bMV§7电池外壳", - "item.gtceu.mv_cadmium_battery":"中型镉电池", - "item.gtceu.mv_cadmium_battery.tooltip":"§7可充电电池", - "item.gtceu.mv_conveyor_module":"§bMV§r传送带", - "item.gtceu.mv_electric_motor":"§bMV§r电动马达", - "item.gtceu.mv_electric_piston":"§bMV§r电力活塞", - "item.gtceu.mv_electric_pump":"§bMV§r电动泵", - "item.gtceu.mv_emitter":"§bMV§r发射器", - "item.gtceu.mv_field_generator":"§bMV§r力场发生器", - "item.gtceu.mv_fluid_regulator":"§bMV§r流体校准器", - "item.gtceu.mv_lithium_battery":"中型锂电池", - "item.gtceu.mv_lithium_battery.tooltip":"§7可充电电池", - "item.gtceu.mv_power_unit":"§bMV§r能量单元", - "item.gtceu.mv_robot_arm":"§bMV§r机械臂", - "item.gtceu.mv_sensor":"§bMV§r传感器", - "item.gtceu.mv_sodium_battery":"中型钠电池", - "item.gtceu.mv_sodium_battery.tooltip":"§7可充电电池", - "item.gtceu.mv_solar_panel":"中压太阳能板(§bMV§r)", - "item.gtceu.mv_voltage_coil":"中压线圈", - "item.gtceu.mv_voltage_coil.tooltip":"优质线圈", - "item.gtceu.name_casting_mold":"模具(命名)", - "item.gtceu.name_casting_mold.tooltip":"§7用来在冲压机床中为物品命名的模具(用铁砧重命名模具)", - "item.gtceu.nan_certificate":"不再是菜鸟的证明", - "item.gtceu.nan_certificate.tooltip":"已接受挑战!", - "item.gtceu.nand_chip":"NAND芯片", - "item.gtceu.nand_chip.tooltip.0":"§7卓越的简单电路", - "item.gtceu.nand_chip.tooltip.1":"§6ULV级电路", - "item.gtceu.nand_memory_chip":"NAND存储器芯片", - "item.gtceu.nand_memory_chip.tooltip":"§7与非逻辑门", - "item.gtceu.nand_memory_wafer":"NAND存储器晶圆", - "item.gtceu.nand_memory_wafer.tooltip":"§7逻辑门原料", - "item.gtceu.nano_cpu_chip":"纳米CPU芯片", - "item.gtceu.nano_cpu_chip.tooltip":"§7纳米中央处理器", - "item.gtceu.nano_cpu_wafer":"纳米CPU晶圆", - "item.gtceu.nano_cpu_wafer.tooltip":"§7纳米电路原料", - "item.gtceu.nano_processor":"纳米处理器", - "item.gtceu.nano_processor.tooltip.0":"§7比小更小", - "item.gtceu.nano_processor.tooltip.1":"§bHV级电路", - "item.gtceu.nano_processor_assembly":"纳米处理器集群", - "item.gtceu.nano_processor_assembly.tooltip.0":"§7比小更小", - "item.gtceu.nano_processor_assembly.tooltip.1":"§bEV级电路", - "item.gtceu.nano_processor_computer":"纳米处理器超级计算机", - "item.gtceu.nano_processor_computer.tooltip.0":"§7比小更小", - "item.gtceu.nano_processor_computer.tooltip.1":"§bIV级电路", - "item.gtceu.nano_processor_mainframe":"纳米处理器主机", - "item.gtceu.nano_processor_mainframe.tooltip.0":"§7比小更小", - "item.gtceu.nano_processor_mainframe.tooltip.1":"§bLuV级电路", - "item.gtceu.nano_saber":"纳米剑", - "item.gtceu.nano_saber.tooltip":"§7尝尝龙神之剑!", - "item.gtceu.nanomuscle_boots":"纳米肌体™套装靴子", - "item.gtceu.nanomuscle_chestplate":"纳米肌体™套装胸甲", - "item.gtceu.nanomuscle_helmet":"纳米肌体™套装头盔", - "item.gtceu.nanomuscle_leggings":"纳米肌体™套装护腿", - "item.gtceu.naquadah_boule":"硅岩掺杂的单晶硅", - "item.gtceu.naquadah_boule.tooltip":"§7电路原料", - "item.gtceu.naquadah_wafer":"硅岩掺杂的晶圆", - "item.gtceu.naquadah_wafer.tooltip":"§7电路原料", - "item.gtceu.neuro_processing_unit":"神经处理单元", - "item.gtceu.neuro_processing_unit.tooltip":"§7神经CPU", - "item.gtceu.neutron_reflector":"铱中子反射板", - "item.gtceu.neutron_reflector.tooltip":"§7坚不可摧", - "item.gtceu.neutronium_boule":"中子素掺杂的单晶硅", - "item.gtceu.neutronium_boule.tooltip":"§7电路原料", - "item.gtceu.neutronium_wafer":"中子素掺杂的晶圆", - "item.gtceu.neutronium_wafer.tooltip":"§7电路原料", - "item.gtceu.nightvision_goggles":"夜视护目镜", - "item.gtceu.nor_memory_chip":"NOR存储器芯片", - "item.gtceu.nor_memory_chip.tooltip":"§7或非逻辑门", - "item.gtceu.nor_memory_wafer":"NOR存储器晶圆", - "item.gtceu.nor_memory_wafer.tooltip":"§7逻辑门原料", - "item.gtceu.normal_pipe_extruder_mold":"模头(普通管道)", - "item.gtceu.nugget_casting_mold":"模具(粒)", - "item.gtceu.nugget_casting_mold.tooltip":"§7用来制作粒的模具", - "item.gtceu.opv_conveyor_module":"§9§lOpV§r传送带", - "item.gtceu.opv_electric_motor":"§9§lOpV§r电动马达", - "item.gtceu.opv_electric_piston":"§9§lOpV§r电力活塞", - "item.gtceu.opv_electric_pump":"§9§lOpV§r电动泵", - "item.gtceu.opv_emitter":"§9OpV§r发射器", - "item.gtceu.opv_field_generator":"§9§lOpV§r力场发生器", - "item.gtceu.opv_fluid_regulator":"§9§lOpV§r流体校准器", - "item.gtceu.opv_robot_arm":"§9§lOpV§r机械臂", - "item.gtceu.opv_sensor":"§9§lOpV§r传感器", - "item.gtceu.opv_voltage_coil.tooltip":"传奇线圈", - "item.gtceu.orange_dye_spray_can":"喷漆罐(橙色)", - "item.gtceu.orange_glass_lens":"玻璃透镜(橙色)", - "item.gtceu.palladium_raw_dust":"粗钯粉", - "item.gtceu.paper_dust":"纸屑", - "item.gtceu.paracetamol_pill":"对乙酰氨基酚药片", - "item.gtceu.petri_dish":"培养皿", - "item.gtceu.petri_dish.tooltip":"§7用来培育细胞", - "item.gtceu.phenolic_circuit_board":"酚醛树脂电路基板", - "item.gtceu.phenolic_circuit_board.tooltip":"§7更好的基板", - "item.gtceu.phenolic_printed_circuit_board":"酚醛树脂印刷电路基板", - "item.gtceu.phenolic_printed_circuit_board.tooltip":"§7优质电路基板", - "item.gtceu.phosphorus_boule":"磷掺杂的单晶硅", - "item.gtceu.phosphorus_boule.tooltip":"§7电路原料", - "item.gtceu.phosphorus_wafer":"磷掺杂的晶圆", - "item.gtceu.phosphorus_wafer.tooltip":"§7电路原料", - "item.gtceu.pickaxe_extruder_mold.tooltip":"§7用来制作镐的模头", - "item.gtceu.pill_casting_mold":"模具(药片)", - "item.gtceu.pink_dye_spray_can":"喷漆罐(粉红色)", - "item.gtceu.pink_glass_lens":"玻璃透镜(粉红色)", - "item.gtceu.pipe.huge_extruder_mold.tooltip":"§7用来制作占据整个方块的管道的模头", - "item.gtceu.pipe.large_extruder_mold.tooltip":"§7用来制作大型管道的模头", - "item.gtceu.pipe.normal_extruder_mold.tooltip":"§7用来制作管道的模头", - "item.gtceu.pipe.small_extruder_mold.tooltip":"§7用来制作小型管道的模头", - "item.gtceu.pipe.tiny_extruder_mold.tooltip":"§7用来制作微型管道的模头", - "item.gtceu.pitchblende_dust":"沥青铀矿", - "item.gtceu.plant_ball":"植物球", - "item.gtceu.plastic_circuit_board":"塑料电路基板", - "item.gtceu.plastic_circuit_board.tooltip":"§7更好的基板", - "item.gtceu.plastic_printed_circuit_board":"塑料印刷电路基板", - "item.gtceu.plastic_printed_circuit_board.tooltip":"§7优质电路基板", - "item.gtceu.plate_casting_mold":"模具(板)", - "item.gtceu.plate_casting_mold.tooltip":"§7用来制作板的模具", - "item.gtceu.plate_extruder_mold":"模头(板)", - "item.gtceu.plate_extruder_mold.tooltip":"§7用来制作板的模头", - "item.gtceu.platinum_group_sludge_dust":"铂系矿泥", - "item.gtceu.platinum_lighter":"铂打火机", - "item.gtceu.platinum_raw_dust":"粗铂粉", - "item.gtceu.platinum_sludge_residue_dust":"铂泥渣", - "item.gtceu.portable_debug_scanner":"便携式调试扫描仪", - "item.gtceu.portable_scanner":"便携式扫描仪", - "item.gtceu.power_thruster":"电力推进器", - "item.gtceu.programmed_circuit":"编程电路", - "item.gtceu.programmed_circuit.tooltip.0":"右击打开配置页面", - "item.gtceu.programmed_circuit.tooltip.1":"潜行右击有虚拟电路槽的", - "item.gtceu.programmed_circuit.tooltip.2":"机器,将其设置为本电路", - "item.gtceu.programmed_circuit.tooltip.3":"的值。", - "item.gtceu.prospector.hv":"进阶探矿仪(§6HV§r)", - "item.gtceu.prospector.luv":"超级探矿仪(§dLuV§r)", - "item.gtceu.prospector.lv":"探矿仪(§7LV§r)", - "item.gtceu.pure_bentonite_dust":"纯净膨润土", - "item.gtceu.pure_cassiterite_sand_dust":"纯净锡石矿砂", - "item.gtceu.pure_pitchblende_dust":"纯净沥青铀矿", - "item.gtceu.pure_rock_salt_dust":"纯净岩盐", - "item.gtceu.pure_salt_dust":"纯净盐", - "item.gtceu.pure_talc_dust":"纯净滑石", - "item.gtceu.purified_bentonite_ore":"纯净膨润土", - "item.gtceu.purified_cassiterite_sand_ore":"纯净锡石矿砂", - "item.gtceu.purified_pitchblende_ore":"纯净沥青铀矿", - "item.gtceu.purified_talc_ore":"纯净滑石", - "item.gtceu.purple_drink":"紫色饮料", - "item.gtceu.purple_dye_spray_can":"喷漆罐(紫色)", - "item.gtceu.purple_glass_lens":"玻璃透镜(紫色)", - "item.gtceu.qbit_cpu_chip":"量子位CPU芯片", - "item.gtceu.qbit_cpu_chip.tooltip":"§7量子位中央处理器", - "item.gtceu.qbit_cpu_wafer":"量子位CPU晶圆", - "item.gtceu.qbit_cpu_wafer.tooltip":"§7量子位电路原料", - "item.gtceu.quantum_eye":"量子之眼", - "item.gtceu.quantum_eye.tooltip":"§7改良的末影之眼", - "item.gtceu.quantum_processor":"量子处理器", - "item.gtceu.quantum_processor.tooltip.0":"§7量子计算终成现实!", - "item.gtceu.quantum_processor.tooltip.1":"§aEV级电路", - "item.gtceu.quantum_processor_assembly":"量子处理器集群", - "item.gtceu.quantum_processor_assembly.tooltip.0":"§7量子计算终成现实!", - "item.gtceu.quantum_processor_assembly.tooltip.1":"§aIV级电路", - "item.gtceu.quantum_processor_computer":"量子处理器超级计算机", - "item.gtceu.quantum_processor_computer.tooltip.0":"§7量子计算终成现实!", - "item.gtceu.quantum_processor_computer.tooltip.1":"§aLuV级电路", - "item.gtceu.quantum_processor_mainframe":"量子处理器主机", - "item.gtceu.quantum_processor_mainframe.tooltip.0":"§7量子计算终成现实!", - "item.gtceu.quantum_processor_mainframe.tooltip.1":"§aZPM级电路", - "item.gtceu.quantum_star":"量子之星", - "item.gtceu.quantum_star.tooltip":"§7改良的下界之星", - "item.gtceu.quarktech_boots":"夸克高科™套装靴子", - "item.gtceu.quarktech_chestplate":"夸克高科™套装胸甲", - "item.gtceu.quarktech_helmet":"夸克高科™套装头盔", - "item.gtceu.quarktech_leggings":"夸克高科™套装护腿", - "item.gtceu.quartz_sand_dust":"石英砂", - "item.gtceu.rad_away_pill":"消辐宁™药片", - "item.gtceu.ram_chip":"RAM芯片", - "item.gtceu.ram_chip.tooltip":"§7随机存取存储器", - "item.gtceu.ram_wafer":"RAM晶圆", - "item.gtceu.ram_wafer.tooltip":"§7内存原料", - "item.gtceu.rare_earth_dust":"稀土", - "item.gtceu.rarest_metal_mixture_dust":"稀有金属混合物", - "item.gtceu.raw_crystal_chip":"晶体芯片原料", - "item.gtceu.raw_crystal_chip.tooltip":"§7晶体处理器原料", - "item.gtceu.raw_crystal_chip_parts":"晶体芯片部件原料", - "item.gtceu.raw_crystal_chip_parts.tooltip":"§7晶体处理器部件原料", - "item.gtceu.red_dye_spray_can":"喷漆罐(红色)", - "item.gtceu.red_glass_lens":"玻璃透镜(红色)", - "item.gtceu.refined_bentonite_ore":"精炼膨润土", - "item.gtceu.refined_cassiterite_sand_ore":"精炼锡石矿砂", - "item.gtceu.refined_pitchblende_ore":"精炼沥青铀矿", - "item.gtceu.refined_talc_ore":"精炼滑石", - "item.gtceu.resin_circuit_board":"覆膜电路基板", - "item.gtceu.resin_circuit_board.tooltip":"§7电路的基底", - "item.gtceu.resin_printed_circuit_board":"覆膜印刷电路基板", - "item.gtceu.resin_printed_circuit_board.tooltip":"§7基础电路基板", - "item.gtceu.resistor":"电阻", - "item.gtceu.resistor.tooltip":"§7基础电子元件", - "item.gtceu.ring_extruder_mold":"模头(环)", - "item.gtceu.ring_extruder_mold.tooltip":"§7用来制作环的模头", - "item.gtceu.robot.arm.tooltip":"作§f覆盖板§7时限制§f物品§7到特定数量。", - "item.gtceu.rock_salt_dust":"岩盐", - "item.gtceu.rod_extruder_mold":"模头(杆)", - "item.gtceu.rod_extruder_mold.tooltip":"§7用来制作杆的模头", - "item.gtceu.rod_long_extruder_mold.tooltip":"§7用来制作长杆的模头", - "item.gtceu.rotor_casting_mold":"模具(转子)", - "item.gtceu.rotor_casting_mold.tooltip":"§7用来制作转子的模具", - "item.gtceu.rotor_extruder_mold":"模头(转子)", - "item.gtceu.rotor_extruder_mold.tooltip":"§7用来制作转子的模头", - "item.gtceu.rubber_boat":"橡胶木船", - "item.gtceu.rubber_chest_boat":"橡胶木运输船", - "item.gtceu.rubber_gloves":"橡胶手套", - "item.gtceu.salt_dust":"盐", - "item.gtceu.saw_extruder_mold.tooltip":"§7用来制作锯的模头", - "item.gtceu.shovel_extruder_mold.tooltip":"§7用来制作锹的模头", - "item.gtceu.shutter_module_cover":"扇板", - "item.gtceu.shutter_module_cover.tooltip":"§7作§f覆盖板§7时§f阻止§7机器侧面的任何§f传输§7行为。", - "item.gtceu.silicon_boule":"单晶硅", - "item.gtceu.silicon_boule.tooltip":"§7电路原料", - "item.gtceu.silicon_wafer":"硅晶圆", - "item.gtceu.silicon_wafer.tooltip":"§7电路原料", - "item.gtceu.simple_soc":"简易SoC", - "item.gtceu.simple_soc.tooltip":"§7简易系统级芯片", - "item.gtceu.simple_soc_wafer":"简易SoC晶圆", - "item.gtceu.simple_soc_wafer.tooltip":"§7简易电路原料", - "item.gtceu.small_ash_dust":"小堆灰烬", - "item.gtceu.small_basaltic_mineral_sand_dust":"小堆玄武岩矿砂", - "item.gtceu.small_bentonite_dust":"小堆膨润土", - "item.gtceu.small_blaze_dust":"小堆烈焰粉", - "item.gtceu.small_bone_dust":"小堆骨粉", - "item.gtceu.small_cassiterite_sand_dust":"小堆锡石矿砂", - "item.gtceu.small_dark_ash_dust":"小堆黑色灰烬", - "item.gtceu.small_fullers_earth_dust":"小堆漂白土", - "item.gtceu.small_garnet_sand_dust":"小堆石榴石砂", - "item.gtceu.small_gear_casting_mold":"模具(小型齿轮)", - "item.gtceu.small_gear_extruder_mold":"模头(小型齿轮)", - "item.gtceu.small_glauconite_sand_dust":"小堆海绿石砂", - "item.gtceu.small_granitic_mineral_sand_dust":"小堆花岗岩矿砂", - "item.gtceu.small_gunpowder_dust":"小堆火药", - "item.gtceu.small_ice_dust":"小堆碎冰", - "item.gtceu.small_inert_metal_mixture_dust":"小堆惰性金属混合物", - "item.gtceu.small_iridium_metal_residue_dust":"小堆铱金属渣", - "item.gtceu.small_meat_dust":"小堆肉末", - "item.gtceu.small_palladium_raw_dust":"小堆粗钯粉", - "item.gtceu.small_paper_dust":"小堆纸屑", - "item.gtceu.small_pipe_extruder_mold":"模头(小型管道)", - "item.gtceu.small_pitchblende_dust":"小堆沥青铀矿", - "item.gtceu.small_platinum_group_sludge_dust":"小堆铂系矿泥", - "item.gtceu.small_platinum_raw_dust":"小堆粗铂粉", - "item.gtceu.small_platinum_sludge_residue_dust":"小堆铂泥渣", - "item.gtceu.small_quartz_sand_dust":"小堆石英砂", - "item.gtceu.small_rare_earth_dust":"小堆稀土", - "item.gtceu.small_rarest_metal_mixture_dust":"小堆稀有金属混合物", - "item.gtceu.small_rock_salt_dust":"小堆岩盐", - "item.gtceu.small_salt_dust":"小堆盐", - "item.gtceu.small_sugar_dust":"小堆糖", - "item.gtceu.small_talc_dust":"小堆滑石", - "item.gtceu.small_treated_wood_dust":"小堆防腐木浆", - "item.gtceu.small_wheat_dust":"小堆面粉", - "item.gtceu.small_wood_dust":"小堆木浆", - "item.gtceu.smd_capacitor":"贴片电容", - "item.gtceu.smd_capacitor.tooltip":"§7电子元件", - "item.gtceu.smd_diode":"贴片二极管", - "item.gtceu.smd_diode.tooltip":"§7电子元件", - "item.gtceu.smd_inductor":"贴片电感", - "item.gtceu.smd_inductor.tooltip":"§7电子元件", - "item.gtceu.smd_resistor":"贴片电阻", - "item.gtceu.smd_resistor.tooltip":"§7电子元件", - "item.gtceu.smd_transistor":"贴片晶体管", - "item.gtceu.smd_transistor.tooltip":"§7电子元件", - "item.gtceu.soc":"SoC", - "item.gtceu.soc.tooltip":"§7系统级芯片", - "item.gtceu.soc_wafer":"SoC晶圆", - "item.gtceu.soc_wafer.tooltip":"§7基础电路原料", - "item.gtceu.solar_panel":"太阳能板", - "item.gtceu.solar_panel.tooltip.0":"§7愿太阳与你同在。", - "item.gtceu.solar_panel.tooltip.1":"§7作§f覆盖板§7时利用§e太阳§7生产§f能量§7。", - "item.gtceu.solvent_spray_can":"喷漆罐(溶剂)", - "item.gtceu.stainless_steel_fluid_cell":"%s不锈钢单元", - "item.gtceu.steel_fluid_cell":"%s钢单元", - "item.gtceu.steel_minecart_wheels":"钢矿车车轮", - "item.gtceu.stem_cells":"干细胞", - "item.gtceu.stem_cells.tooltip":"§7智慧原料", - "item.gtceu.sticky_resin":"黏性树脂", - "item.gtceu.storage_cover":"存储覆盖板", - "item.gtceu.sugar_gem":"方糖", - "item.gtceu.sus_record":"音乐唱片", - "item.gtceu.sus_record.desc":"§7可疑!", - "item.gtceu.sword_extruder_mold.tooltip":"§7用来制作剑刃的模头", - "item.gtceu.tag_filter.tooltip.0":"作§f覆盖板§7时以§f标签§7过滤§f物品§7的输入/输出。", - "item.gtceu.tag_filter.tooltip.1":"亦可为§f传送带§7和§f机械臂§7提供此功能。", - "item.gtceu.talc_dust":"滑石", - "item.gtceu.tantalum_capacitor":"钽电容", - "item.gtceu.terminal":"终端", - "item.gtceu.terminal.tooltip":"潜行右击多方块控制器以自动搭建此多方块结构", - "item.gtceu.tiny_ash_dust":"小撮灰烬", - "item.gtceu.tiny_basaltic_mineral_sand_dust":"小撮玄武岩矿砂", - "item.gtceu.tiny_bentonite_dust":"小撮膨润土", - "item.gtceu.tiny_blaze_dust":"小撮烈焰粉", - "item.gtceu.tiny_bone_dust":"小撮骨粉", - "item.gtceu.tiny_cassiterite_sand_dust":"小撮锡石矿砂", - "item.gtceu.tiny_dark_ash_dust":"小撮黑色灰烬", - "item.gtceu.tiny_fullers_earth_dust":"小撮漂白土", - "item.gtceu.tiny_garnet_sand_dust":"小撮石榴石砂", - "item.gtceu.tiny_glauconite_sand_dust":"小撮海绿石砂", - "item.gtceu.tiny_granitic_mineral_sand_dust":"小撮花岗岩矿砂", - "item.gtceu.tiny_gunpowder_dust":"小撮火药", - "item.gtceu.tiny_ice_dust":"小撮碎冰", - "item.gtceu.tiny_inert_metal_mixture_dust":"小撮惰性金属混合物", - "item.gtceu.tiny_iridium_metal_residue_dust":"小撮铱金属渣", - "item.gtceu.tiny_meat_dust":"小撮肉末", - "item.gtceu.tiny_palladium_raw_dust":"小撮粗钯粉", - "item.gtceu.tiny_paper_dust":"小撮纸屑", - "item.gtceu.tiny_pipe_extruder_mold":"模头(微型管道)", - "item.gtceu.tiny_pitchblende_dust":"小撮沥青铀矿", - "item.gtceu.tiny_platinum_group_sludge_dust":"小撮铂系矿泥", - "item.gtceu.tiny_platinum_raw_dust":"小撮粗铂粉", - "item.gtceu.tiny_platinum_sludge_residue_dust":"小撮铂泥渣", - "item.gtceu.tiny_quartz_sand_dust":"小撮石英砂", - "item.gtceu.tiny_rare_earth_dust":"小撮稀土", - "item.gtceu.tiny_rarest_metal_mixture_dust":"小撮稀有金属混合物", - "item.gtceu.tiny_rock_salt_dust":"小撮岩盐", - "item.gtceu.tiny_salt_dust":"小撮盐", - "item.gtceu.tiny_sugar_dust":"小撮糖", - "item.gtceu.tiny_talc_dust":"小撮滑石", - "item.gtceu.tiny_treated_wood_dust":"小撮防腐木浆", - "item.gtceu.tiny_wheat_dust":"小撮面粉", - "item.gtceu.tiny_wood_dust":"小撮木浆", - "item.gtceu.titanium_fluid_cell":"%s钛单元", - "item.gtceu.tool.aoe.columns":"列", - "item.gtceu.tool.aoe.layers":"层", - "item.gtceu.tool.aoe.rows":"行", - "item.gtceu.tool.axe":"%s斧", - "item.gtceu.tool.behavior.aoe_mining":"§5作用范围:§f%sx%sx%s", - "item.gtceu.tool.behavior.block_rotation":"§2精械师傅:§f旋转方块", - "item.gtceu.tool.behavior.crop_harvesting":"§a庄稼收割:§f收获成熟的作物", - "item.gtceu.tool.behavior.damage_boost":"§4伤害增益:§f对%s造成额外伤害", - "item.gtceu.tool.behavior.grass_path":"§e园林策划:§f制造草径", - "item.gtceu.tool.behavior.ground_tilling":"§e耕地农夫:§f耕耘土地", - "item.gtceu.tool.behavior.plunger":"§9水管工人:§f清除流体", - "item.gtceu.tool.behavior.rail_rotation":"§e铁路技工:§f旋转轨道", - "item.gtceu.tool.behavior.relocate_mining":"§2磁力吸引:§f吸入采掘的方块与生物掉落物", - "item.gtceu.tool.behavior.remove_wax":"§6清洁试剂:§f脱蜡", - "item.gtceu.tool.behavior.scrape":"§b抛光工艺:§f除锈", - "item.gtceu.tool.behavior.shield_disable":"§c野兽蛮攻:§f无视盾牌", - "item.gtceu.tool.behavior.silk_ice":"§b切冰利刃:§f精准采集冰块", - "item.gtceu.tool.behavior.strip_log":"§5林业工匠:§f剥去原木的表皮", - "item.gtceu.tool.behavior.torch_place":"§e洞窟探客:§f右击放置火把", - "item.gtceu.tool.behavior.tree_felling":"§4伐木好手:§f连锁砍树", - "item.gtceu.tool.butchery_knife":"%s屠刀", - "item.gtceu.tool.butchery_knife.tooltip":"§8攻击速度较慢", - "item.gtceu.tool.buzzsaw":"%s圆锯(§7LV§r)", - "item.gtceu.tool.buzzsaw.tooltip":"§8并不适合用来采掘方块", - "item.gtceu.tool.crowbar":"%s撬棍", - "item.gtceu.tool.crowbar.tooltip":"§8卸下覆盖板", - "item.gtceu.tool.ev_drill":"%s电钻(§5EV§r)", - "item.gtceu.tool.file":"%s锉", - "item.gtceu.tool.hammer":"%s锻造锤", - "item.gtceu.tool.hammer.tooltip":"§8锤碎而非采掘方块", - "item.gtceu.tool.harvest_level.0":"§8木", - "item.gtceu.tool.harvest_level.1":"§7石头", - "item.gtceu.tool.harvest_level.2":"§a铁", - "item.gtceu.tool.harvest_level.3":"§b钻石", - "item.gtceu.tool.harvest_level.4":"§d下界合金", - "item.gtceu.tool.harvest_level.5":"§9铿铀", - "item.gtceu.tool.harvest_level.6":"§c中子素", - "item.gtceu.tool.hoe":"%s锄", - "item.gtceu.tool.hv_chainsaw":"%s链锯(§6HV§r)", - "item.gtceu.tool.hv_drill":"%s电钻(§6HV§r)", - "item.gtceu.tool.hv_wirecutter":"%s剪线钳(HV)", - "item.gtceu.tool.hv_wrench":"%s扳手(§6HV§r)", - "item.gtceu.tool.hv_wrench.tooltip":"§8按住左键以拆卸机器", - "item.gtceu.tool.iv_drill":"%s电钻(§9IV§r)", - "item.gtceu.tool.iv_wirecutter":"%s剪线钳(IV)", - "item.gtceu.tool.iv_wrench":"%s扳手(§9IV§r)", - "item.gtceu.tool.iv_wrench.tooltip":"§8按住左键以拆卸机器", - "item.gtceu.tool.knife":"%s刀", - "item.gtceu.tool.lighter.platinum.tooltip":"§7上面刻着一位知名的恶作剧大师", - "item.gtceu.tool.lv_chainsaw":"%s链锯(§7LV§r)", - "item.gtceu.tool.lv_drill":"%s电钻(§7LV§r)", - "item.gtceu.tool.lv_screwdriver":"%s螺丝刀(§7LV§r)", - "item.gtceu.tool.lv_screwdriver.tooltip":"§8调整覆盖板和机器", - "item.gtceu.tool.lv_wirecutter":"%s剪线钳(LV)", - "item.gtceu.tool.lv_wrench":"%s扳手(§7LV§r)", - "item.gtceu.tool.lv_wrench.tooltip":"§8按住左键以拆卸机器", - "item.gtceu.tool.mallet":"%s软锤", - "item.gtceu.tool.mallet.tooltip.0":"§8潜行以在当前配方完成后暂停机器。", - "item.gtceu.tool.mallet.tooltip.1":"§8关/开机", - "item.gtceu.tool.matchbox.tooltip":"§7别把它当成玩具车了", - "item.gtceu.tool.mining_hammer":"%s采矿锤", - "item.gtceu.tool.mining_hammer.tooltip":"§8一次性开采大片区域(除非你蹲下)", - "item.gtceu.tool.mortar":"%s研钵", - "item.gtceu.tool.mv_chainsaw":"%s链锯(§bMV§r)", - "item.gtceu.tool.mv_drill":"%s电钻(§bMV§r)", - "item.gtceu.tool.pickaxe":"%s镐", - "item.gtceu.tool.plunger":"%s搋子", - "item.gtceu.tool.plunger.tooltip":"§8从机器中抽除流体", - "item.gtceu.tool.replace_tool_head":"在合成栏用新的工具头替换", - "item.gtceu.tool.rolling_pin":"%s擀面杖", - "item.gtceu.tool.saw":"%s锯", - "item.gtceu.tool.screwdriver":"%s螺丝刀", - "item.gtceu.tool.screwdriver.tooltip":"§8调整覆盖板和机器", - "item.gtceu.tool.scythe":"%s镰刀", - "item.gtceu.tool.scythe.tooltip":"§8因为镰刀(scythe)没有意义(sense)", - "item.gtceu.tool.shears":"%s剪刀", - "item.gtceu.tool.shovel":"%s锹", - "item.gtceu.tool.spade":"%s铲", - "item.gtceu.tool.spade.tooltip":"§8一次性开采大片区域(除非你蹲下)", - "item.gtceu.tool.sword":"%s剑", - "item.gtceu.tool.tooltip.attack_damage":"§c攻击伤害§r:%s", - "item.gtceu.tool.tooltip.attack_speed":"§9攻击速度§r:%s", - "item.gtceu.tool.tooltip.crafting_uses":"§a合成耐久度§r:%s", - "item.gtceu.tool.tooltip.general_uses":"§b耐久度§r:%s", - "item.gtceu.tool.tooltip.harvest_level":"§e采掘等级:%s", - "item.gtceu.tool.tooltip.harvest_level_extra":"§e采掘等级:%s§f(%s§f)", - "item.gtceu.tool.tooltip.max_uses":"§e最大耐久度§r:%s", - "item.gtceu.tool.tooltip.mining_speed":"§d采掘速度§r:%s", - "item.gtceu.tool.tooltip.repair_info":"§8按住SHIFT显示修复详情", - "item.gtceu.tool.tooltip.repair_material":"§8修复材料§r:§f§a%s", - "item.gtceu.tool.usable_as":"§8可用作§r:§f%s", - "item.gtceu.tool.wire_cutter":"%s剪线钳", - "item.gtceu.tool.wrench":"%s扳手", - "item.gtceu.tool.wrench.tooltip":"§8按住左键以拆卸机器", - "item.gtceu.transistor":"晶体管", - "item.gtceu.transistor.tooltip":"§7基础电子元件", - "item.gtceu.treated_wood_boat":"防腐木船", - "item.gtceu.treated_wood_bolt":"短防腐木棍", - "item.gtceu.treated_wood_chest_boat":"防腐木运输船", - "item.gtceu.treated_wood_dust":"防腐木浆", - "item.gtceu.treated_wood_plate":"防腐木板", - "item.gtceu.treated_wood_rod":"防腐木棍", - "item.gtceu.tungsten_grinding_head":"钨研磨头", - "item.gtceu.tungsten_steel_fluid_cell":"%s钨钢单元", - "item.gtceu.turbine_rotor":"%s涡轮转子", - "item.gtceu.turbine_rotor.tooltip":"供涡轮机使用的涡轮转子", - "item.gtceu.uev_conveyor_module":"§aUEV§r传送带", - "item.gtceu.uev_electric_motor":"§aUEV§r电动马达", - "item.gtceu.uev_electric_piston":"§aUEV§r电力活塞", - "item.gtceu.uev_electric_pump":"§aUEV§r电动泵", - "item.gtceu.uev_emitter":"§aUEV§r发射器", - "item.gtceu.uev_field_generator":"§aUEV§r力场发生器", - "item.gtceu.uev_fluid_regulator":"§aUEV§r流体校准器", - "item.gtceu.uev_robot_arm":"§aUEV§r机械臂", - "item.gtceu.uev_sensor":"§aUEV§r传感器", - "item.gtceu.uev_voltage_coil.tooltip":"超凡线圈", - "item.gtceu.uhpic_chip":"UHPIC芯片", - "item.gtceu.uhpic_chip.tooltip":"§7超高功率集成电路", - "item.gtceu.uhpic_wafer":"UHPIC晶圆", - "item.gtceu.uhpic_wafer.tooltip":"§7超高功率集成电路原料", - "item.gtceu.uhv_conveyor_module":"§4UHV§r传送带", - "item.gtceu.uhv_electric_motor":"§4UHV§r电动马达", - "item.gtceu.uhv_electric_piston":"§4UHV§r电力活塞", - "item.gtceu.uhv_electric_pump":"§4UHV§r电动泵", - "item.gtceu.uhv_emitter":"§4UHV§r发射器", - "item.gtceu.uhv_field_generator":"§4UHV§r力场发生器", - "item.gtceu.uhv_fluid_regulator":"§4UHV§r流体校准器", - "item.gtceu.uhv_robot_arm":"§4UHV§r机械臂", - "item.gtceu.uhv_sensor":"§4UHV§r传感器", - "item.gtceu.uhv_voltage_coil.tooltip":"极致线圈", - "item.gtceu.uiv_conveyor_module":"§2UIV§r传送带", - "item.gtceu.uiv_electric_motor":"§2UIV§r电动马达", - "item.gtceu.uiv_electric_piston":"§2UIV§r电力活塞", - "item.gtceu.uiv_electric_pump":"§2UIV§r电动泵", - "item.gtceu.uiv_emitter":"§2UIV§r发射器", - "item.gtceu.uiv_field_generator":"§2UIV§r力场发生器", - "item.gtceu.uiv_fluid_regulator":"§2UIV§r流体校准器", - "item.gtceu.uiv_robot_arm":"§2UIV§r机械臂", - "item.gtceu.uiv_sensor":"§2UIV§r传感器", - "item.gtceu.uiv_voltage_coil.tooltip":"疯狂线圈", - "item.gtceu.ulpic_chip":"ULPIC芯片", - "item.gtceu.ulpic_chip.tooltip":"§7超低功率集成电路", - "item.gtceu.ulpic_wafer":"ULPIC晶圆", - "item.gtceu.ulpic_wafer.tooltip":"§7超低功率集成电路原料", - "item.gtceu.ulv_solar_panel":"超低压太阳能板(§8ULV§r)", - "item.gtceu.ulv_tantalum_battery.tooltip":"§7可充电电池", - "item.gtceu.ulv_voltage_coil":"超低压线圈", - "item.gtceu.ulv_voltage_coil.tooltip":"初级线圈", - "item.gtceu.universal_fluid_cell":"%s通用单元", - "item.gtceu.uv_battery_hull":"大型超能硅岩电池外壳", - "item.gtceu.uv_battery_hull.tooltip":"§7一个空的§3UV§7电池外壳", - "item.gtceu.uv_conveyor_module":"§3UV§r传送带", - "item.gtceu.uv_electric_motor":"§3UV§r电动马达", - "item.gtceu.uv_electric_piston":"§3UV§r电力活塞", - "item.gtceu.uv_electric_pump":"§3UV§r电动泵", - "item.gtceu.uv_emitter":"§3UV§r发射器", - "item.gtceu.uv_field_generator":"§3UV§r力场发生器", - "item.gtceu.uv_fluid_regulator":"§3UV§r流体校准器", - "item.gtceu.uv_naquadria_battery":"大型超能硅岩电池", - "item.gtceu.uv_naquadria_battery.tooltip":"§7可充电电池", - "item.gtceu.uv_robot_arm":"§3UV§r机械臂", - "item.gtceu.uv_sensor":"§3UV§r传感器", - "item.gtceu.uv_solar_panel":"极限压太阳能板(§3UV§r)", - "item.gtceu.uv_voltage_coil":"极限压线圈", - "item.gtceu.uv_voltage_coil.tooltip":"终极线圈", - "item.gtceu.uxv_conveyor_module":"§eUXV§r传送带", - "item.gtceu.uxv_electric_motor":"§eUXV§r电动马达", - "item.gtceu.uxv_electric_piston":"§eUXV§r电力活塞", - "item.gtceu.uxv_electric_pump":"§eUXV§r§r电动泵", - "item.gtceu.uxv_emitter":"§eUXV§r发射器", - "item.gtceu.uxv_field_generator":"§eUXV§r力场发生器", - "item.gtceu.uxv_fluid_regulator":"§eUXV§r流体校准器", - "item.gtceu.uxv_robot_arm":"§eUXV§r机械臂", - "item.gtceu.uxv_sensor":"§eUXV§r传感器", - "item.gtceu.uxv_voltage_coil.tooltip":"史诗线圈", - "item.gtceu.vacuum_tube":"真空管", - "item.gtceu.vacuum_tube.tooltip.0":"§7技术上是二极管", - "item.gtceu.vacuum_tube.tooltip.1":"§cULV等级", - "item.gtceu.wetware_circuit_board":"湿件电路基板", - "item.gtceu.wetware_circuit_board.tooltip":"§7维生之板", - "item.gtceu.wetware_printed_circuit_board":"湿件印刷电路基板", - "item.gtceu.wetware_printed_circuit_board.tooltip":"§7维生之板", - "item.gtceu.wetware_processor":"湿件处理器", - "item.gtceu.wetware_processor.tooltip.0":"§7祂在看我吗?", - "item.gtceu.wetware_processor.tooltip.1":"§4LuV级电路", - "item.gtceu.wetware_processor_assembly":"湿件处理器集群", - "item.gtceu.wetware_processor_assembly.tooltip.0":"§7可以玩Minecraft", - "item.gtceu.wetware_processor_assembly.tooltip.1":"§4ZPM级电路", - "item.gtceu.wetware_processor_computer":"湿件处理器超级计算机", - "item.gtceu.wetware_processor_computer.tooltip.0":"§7肉体与机器的终极结合", - "item.gtceu.wetware_processor_computer.tooltip.1":"§4UV级电路", - "item.gtceu.wetware_processor_mainframe":"湿件处理器主机", - "item.gtceu.wetware_processor_mainframe.tooltip.0":"§7千载独步,惟公一人", - "item.gtceu.wetware_processor_mainframe.tooltip.1":"§4UHV级电路", - "item.gtceu.wheat_dust":"面粉", - "item.gtceu.white_dye_spray_can":"喷漆罐(白色)", - "item.gtceu.wire_extruder_mold":"模头(导线)", - "item.gtceu.wire_extruder_mold.tooltip":"§7用来制作导线的模头", - "item.gtceu.wood_bolt":"短木棍", - "item.gtceu.wood_dust":"木浆", - "item.gtceu.wood_plate":"木板", - "item.gtceu.yellow_dye_spray_can":"喷漆罐(黄色)", - "item.gtceu.yellow_glass_lens":"玻璃透镜(黄色)", - "item.gtceu.zero_point_module":"零点模块", - "item.gtceu.zpm_battery_hull":"中型超能硅岩电池外壳", - "item.gtceu.zpm_battery_hull.tooltip":"§7一个空的§fZPM§7电池外壳", - "item.gtceu.zpm_conveyor_module":"§cZPM§r传送带", - "item.gtceu.zpm_electric_motor":"§cZPM§r电动马达", - "item.gtceu.zpm_electric_piston":"§cZPM§r电力活塞", - "item.gtceu.zpm_electric_pump":"§cZPM§r电动泵", - "item.gtceu.zpm_emitter":"§cZPM§r发射器", - "item.gtceu.zpm_field_generator":"§cZPM§r力场发生器", - "item.gtceu.zpm_fluid_regulator":"§cZPM§r流体校准器", - "item.gtceu.zpm_naquadria_battery":"中型超能硅岩电池", - "item.gtceu.zpm_naquadria_battery.tooltip":"§7可充电电池", - "item.gtceu.zpm_robot_arm":"§cZPM§r机械臂", - "item.gtceu.zpm_sensor":"§cZPM§r传感器", - "item.gtceu.zpm_solar_panel":"零点压太阳能板(§cZPM§r)", - "item.gtceu.zpm_voltage_coil":"零点压线圈", - "item.gtceu.zpm_voltage_coil.tooltip":"超级线圈", - "item.invalid.name":"无效物品", - "item.netherrack_nether_quartz":"下界石英矿石", - "item.toggle.advanced.info.tooltip":"§8<按住Shift查阅已存储配置信息>", - "itemGroup.gtceu.decoration":"格雷科技 | 装饰方块", - "itemGroup.gtceu.item":"格雷科技 | 物品", - "itemGroup.gtceu.machine":"格雷科技 | 机器", - "itemGroup.gtceu.material_block":"格雷科技 | 材料-方块", - "itemGroup.gtceu.material_fluid":"格雷科技 | 材料-流体容器", - "itemGroup.gtceu.material_item":"格雷科技 | 材料-物品", - "itemGroup.gtceu.material_pipe":"格雷科技 | 材料-管道", - "itemGroup.gtceu.tool":"格雷科技 | 工具", - "ldlib.gui.editor.register.editor.gtceu.mui":"机器UI项目", - "ldlib.gui.editor.register.editor.gtceu.rtui":"配方类型UI项目", - "ldlib.gui.editor.register.editor.gtceu.template_tab":"模板", - "mataarmor.hud.supply_mode":"供能模式:%s", - "material.gtceu.acetic_acid":"乙酸", - "material.gtceu.acetic_anhydride":"乙酸酐", - "material.gtceu.acetone":"丙酮", - "material.gtceu.acidic_bromine_exhaust":"酸性溴废气", - "material.gtceu.acidic_bromine_solution":"酸性溴溶液", - "material.gtceu.acidic_enriched_naquadah_solution":"酸性富集硅岩溶液", - "material.gtceu.acidic_naquadria_solution":"酸性超能硅岩溶液", - "material.gtceu.acidic_osmium_solution":"酸性锇溶液", - "material.gtceu.actinium":"锕", - "material.gtceu.activated_carbon":"活性炭", - "material.gtceu.agar":"琼脂", - "material.gtceu.air":"空气", - "material.gtceu.allyl_chloride":"烯丙基氯", - "material.gtceu.almandine":"铁铝榴石", - "material.gtceu.aluminium":"铝", - "material.gtceu.aluminium_sulfite":"亚硫酸铝", - "material.gtceu.alunite":"明矾石", - "material.gtceu.americium":"镅", - "material.gtceu.amethyst":"紫水晶", - "material.gtceu.aminophenol":"氨基苯酚", - "material.gtceu.ammonia":"氨", - "material.gtceu.ammonium_chloride":"氯化铵", - "material.gtceu.ammonium_formate":"甲酸铵", - "material.gtceu.andesite":"安山岩", - "material.gtceu.andradite":"钙铁榴石", - "material.gtceu.annealed_copper":"退火铜", - "material.gtceu.antimony":"锑", - "material.gtceu.antimony_trifluoride":"三氟化锑", - "material.gtceu.antimony_trioxide":"三氧化二锑", - "material.gtceu.apatite":"磷灰石", - "material.gtceu.aqua_regia":"王水", - "material.gtceu.argon":"氩", - "material.gtceu.arsenic":"砷", - "material.gtceu.arsenic_trioxide":"三氧化二砷", - "material.gtceu.asbestos":"石棉", - "material.gtceu.ash":"灰烬", - "material.gtceu.astatine":"砹", - "material.gtceu.bacteria":"细菌", - "material.gtceu.bacterial_sludge":"细菌浆液", - "material.gtceu.barite":"重晶石", - "material.gtceu.barium":"钡", - "material.gtceu.barium_sulfide":"硫化钡", - "material.gtceu.basalt":"玄武岩", - "material.gtceu.basaltic_mineral_sand":"玄武岩矿砂", - "material.gtceu.bastnasite":"氟碳镧铈矿", - "material.gtceu.battery_alloy":"电池合金", - "material.gtceu.bauxite":"铝土矿", - "material.gtceu.bentonite":"膨润土", - "material.gtceu.benzene":"苯", - "material.gtceu.berkelium":"锫", - "material.gtceu.beryllium":"铍", - "material.gtceu.bio_diesel":"生物柴油", - "material.gtceu.biomass":"生物质", - "material.gtceu.biotite":"黑云母", - "material.gtceu.biphenyl":"联苯", - "material.gtceu.bismuth":"铋", - "material.gtceu.bismuth_bronze":"铋青铜", - "material.gtceu.bisphenol_a":"双酚A", - "material.gtceu.black_bronze":"黑青铜", - "material.gtceu.black_dye":"黑色染料", - "material.gtceu.black_steel":"黑钢", - "material.gtceu.blackstone":"黑石", - "material.gtceu.blaze":"烈焰", - "material.gtceu.blue_alloy":"蓝色合金", - "material.gtceu.blue_dye":"蓝色染料", - "material.gtceu.blue_steel":"蓝钢", - "material.gtceu.blue_topaz":"蓝黄玉", - "material.gtceu.bohrium":"钅波", - "material.gtceu.bone":"骨头", - "material.gtceu.borax":"硼砂", - "material.gtceu.bornite":"斑铜矿", - "material.gtceu.boron":"硼", - "material.gtceu.borosilicate_glass":"硼硅玻璃", - "material.gtceu.brass":"黄铜", - "material.gtceu.brick":"砖", - "material.gtceu.brominated_chlorine_vapor":"溴化氯蒸气", - "material.gtceu.bromine":"溴", - "material.gtceu.bronze":"青铜", - "material.gtceu.brown_dye":"棕色染料", - "material.gtceu.butadiene":"丁二烯", - "material.gtceu.butane":"丁烷", - "material.gtceu.butene":"丁烯", - "material.gtceu.butyraldehyde":"丁醛", - "material.gtceu.cadmium":"镉", - "material.gtceu.caesium":"铯", - "material.gtceu.calcite":"方解石", - "material.gtceu.calcium":"钙", - "material.gtceu.calcium_carbonate":"碳酸钙", - "material.gtceu.calcium_chloride":"氯化钙", - "material.gtceu.calcium_ferrocyanide":"亚铁氰化钙", - "material.gtceu.calcium_hydroxide":"氢氧化钙", - "material.gtceu.calcium_phosphide":"磷化钙", - "material.gtceu.californium":"锎", - "material.gtceu.caprolactam":"己内酰胺", - "material.gtceu.carbon":"碳", - "material.gtceu.carbon_dioxide":"二氧化碳", - "material.gtceu.carbon_monoxide":"一氧化碳", - "material.gtceu.cassiterite":"锡石", - "material.gtceu.cassiterite_sand":"锡石矿砂", - "material.gtceu.cerium":"铈", - "material.gtceu.certus_quartz":"赛特斯石英", - "material.gtceu.cetane_boosted_diesel":"高十六烷值柴油", - "material.gtceu.chalcocite":"辉铜矿", - "material.gtceu.chalcopyrite":"黄铜矿", - "material.gtceu.charcoal":"木炭", - "material.gtceu.charcoal_byproducts":"木炭副产物", - "material.gtceu.chlorine":"氯", - "material.gtceu.chlorobenzene":"氯苯", - "material.gtceu.chloroform":"氯仿", - "material.gtceu.chloromethane":"氯甲烷", - "material.gtceu.chromite":"铬铁矿", - "material.gtceu.chromium":"铬", - "material.gtceu.chromium_trioxide":"三氧化铬", - "material.gtceu.cinnabar":"朱砂", - "material.gtceu.clay":"黏土", - "material.gtceu.coal":"煤炭", - "material.gtceu.coal_gas":"煤气", - "material.gtceu.coal_tar":"煤焦油", - "material.gtceu.cobalt":"钴", - "material.gtceu.cobalt_brass":"钴黄铜", - "material.gtceu.cobalt_oxide":"氧化钴", - "material.gtceu.cobaltite":"辉钴矿", - "material.gtceu.cocoa":"可可", - "material.gtceu.coke":"焦煤", - "material.gtceu.collagen":"胶原", - "material.gtceu.concentrated_bromine_solution":"浓溴溶液", - "material.gtceu.concrete":"混凝土", - "material.gtceu.construction_foam":"建筑泡沫", - "material.gtceu.cooperite":"谢尔顿矿", - "material.gtceu.copernicium":"钅哥", - "material.gtceu.copper":"铜", - "material.gtceu.creosote":"杂酚油", - "material.gtceu.cumene":"异丙苯", - "material.gtceu.cupric_oxide":"氧化铜", - "material.gtceu.cupronickel":"白铜", - "material.gtceu.curium":"锔", - "material.gtceu.cyan_dye":"青色染料", - "material.gtceu.cyclohexane":"环己烷", - "material.gtceu.cyclohexanone_oxime":"环己酮肟", - "material.gtceu.damascus_steel":"大马士革钢", - "material.gtceu.dark_ash":"黑色灰烬", - "material.gtceu.darmstadtium":"钅达", - "material.gtceu.debrominated_brine":"脱溴卤水", - "material.gtceu.deepslate":"深板岩", - "material.gtceu.depleted_uranium_hexafluoride":"枯竭六氟化铀", - "material.gtceu.deuterium":"氘", - "material.gtceu.diaminobenzidine":"二氨基联苯胺", - "material.gtceu.diamond":"钻石", - "material.gtceu.diatomite":"硅藻土", - "material.gtceu.dichlorobenzene":"二氯苯", - "material.gtceu.dichlorobenzidine":"二氯联苯胺", - "material.gtceu.dichloroethane":"二氯乙烷", - "material.gtceu.diesel":"柴油", - "material.gtceu.diethylenetriamine":"二乙烯三胺", - "material.gtceu.diethylenetriamine_pentaacetonitrile":"二乙烯三胺五乙腈", - "material.gtceu.diethylenetriaminepentaacetic_acid":"二乙烯三胺五乙酸", - "material.gtceu.diluted_hydrochloric_acid":"稀盐酸", - "material.gtceu.diluted_sulfuric_acid":"稀硫酸", - "material.gtceu.dimethylamine":"二甲胺", - "material.gtceu.dimethylbenzene":"二甲苯", - "material.gtceu.dimethyldichlorosilane":"二甲基二氯硅烷", - "material.gtceu.dimethylhydrazine":"二甲基肼", - "material.gtceu.dinitrogen_tetroxide":"四氧化二氮", - "material.gtceu.diorite":"闪长岩", - "material.gtceu.diphenyl_isophthalate":"间苯二甲酸二苯酯", - "material.gtceu.dissolved_calcium_acetate":"乙酸钙溶液", - "material.gtceu.distilled_water":"蒸馏水", - "material.gtceu.drilling_fluid":"钻井液", - "material.gtceu.dubnium":"钅杜", - "material.gtceu.duranium":"铿铀", - "material.gtceu.dysprosium":"镝", - "material.gtceu.echo_shard":"回响碎片", - "material.gtceu.einsteinium":"锿", - "material.gtceu.electrotine":"蓝石", - "material.gtceu.electrum":"琥珀金", - "material.gtceu.emerald":"绿宝石", - "material.gtceu.ender_air":"末地空气", - "material.gtceu.ender_eye":"末影之眼", - "material.gtceu.ender_pearl":"末影珍珠", - "material.gtceu.endstone":"末地石", - "material.gtceu.enriched_bacterial_sludge":"富集细菌浆液", - "material.gtceu.enriched_naquadah":"富集硅岩", - "material.gtceu.enriched_naquadah_solution":"富集硅岩溶液", - "material.gtceu.enriched_naquadah_sulfate":"硫酸富集硅岩", - "material.gtceu.enriched_naquadah_trinium_europium_duranide":"富集硅岩凯金铕铿铀合金", - "material.gtceu.enriched_naquadah_waste":"富集硅岩废液", - "material.gtceu.enriched_uranium_hexafluoride":"富集六氟化铀", - "material.gtceu.epichlorohydrin":"环氧氯丙烷", - "material.gtceu.epoxy":"环氧树脂", - "material.gtceu.erbium":"铒", - "material.gtceu.ethane":"乙烷", - "material.gtceu.ethanol":"乙醇", - "material.gtceu.ethenone":"乙烯酮", - "material.gtceu.ethyl_tertbutyl_ether":"乙基叔丁基醚", - "material.gtceu.ethylbenzene":"乙苯", - "material.gtceu.ethylene":"乙烯", - "material.gtceu.europium":"铕", - "material.gtceu.fermented_biomass":"发酵生物质", - "material.gtceu.fermium":"镄", - "material.gtceu.ferrite_mixture":"铁氧体混合物", - "material.gtceu.ferrosilite":"铁辉石", - "material.gtceu.fireclay":"耐火黏土", - "material.gtceu.fish_oil":"鱼油", - "material.gtceu.flerovium":"钅夫", - "material.gtceu.flint":"燧石", - "material.gtceu.fluorine":"氟", - "material.gtceu.fluoroantimonic_acid":"氟锑酸", - "material.gtceu.formaldehyde":"甲醛", - "material.gtceu.formamide":"甲酰胺", - "material.gtceu.formic_acid":"甲酸", - "material.gtceu.francium":"钫", - "material.gtceu.fullers_earth":"漂白土", - "material.gtceu.gadolinium":"钆", - "material.gtceu.galena":"方铅矿", - "material.gtceu.gallium":"镓", - "material.gtceu.gallium_arsenide":"砷化镓", - "material.gtceu.gallium_sulfide":"硫化镓", - "material.gtceu.garnet_sand":"石榴石砂", - "material.gtceu.garnierite":"硅镁镍矿", - "material.gtceu.gasoline":"汽油", - "material.gtceu.gelatin":"明胶", - "material.gtceu.gelatin_mixture":"明胶混合物", - "material.gtceu.germanium":"锗", - "material.gtceu.glass":"玻璃", - "material.gtceu.glauconite_sand":"海绿石砂", - "material.gtceu.glowstone":"荧石", - "material.gtceu.glue":"胶水", - "material.gtceu.glycerol":"甘油", - "material.gtceu.glyceryl_trinitrate":"硝酸甘油", - "material.gtceu.glycolonitrile":"乙腈", - "material.gtceu.goethite":"针铁矿", - "material.gtceu.gold":"金", - "material.gtceu.granite":"花岗岩", - "material.gtceu.granite_red":"红花岗岩", - "material.gtceu.granitic_mineral_sand":"花岗岩矿砂", - "material.gtceu.graphene":"石墨烯", - "material.gtceu.graphite":"石墨", - "material.gtceu.gray_dye":"灰色染料", - "material.gtceu.green_dye":"绿色染料", - "material.gtceu.green_sapphire":"绿色蓝宝石", - "material.gtceu.green_sapphire_slurry":"绿色蓝宝石浆液", - "material.gtceu.grossular":"钙铝榴石", - "material.gtceu.gunpowder":"火药", - "material.gtceu.gypsum":"石膏", - "material.gtceu.hafnium":"铪", - "material.gtceu.hassium":"钅黑", - "material.gtceu.hastelloy_c_276":"哈斯特洛依合金 C-276", - "material.gtceu.hastelloy_x":"哈斯特洛依合金-X", - "material.gtceu.heavy_fuel":"重燃油", - "material.gtceu.helium":"氦", - "material.gtceu.helium_3":"氦-3", - "material.gtceu.hematite":"赤铁矿", - "material.gtceu.high_octane_gasoline":"高辛烷值汽油", - "material.gtceu.holmium":"钬", - "material.gtceu.hot_alkaline_debrominated_brine":"热碱性脱溴卤水", - "material.gtceu.hot_brine":"热卤水", - "material.gtceu.hot_chlorinated_brominated_brine":"热氯化溴卤水", - "material.gtceu.hot_debrominated_brine":"热脱溴卤水", - "material.gtceu.hsla_steel":"HSLA钢", - "material.gtceu.hsse":"高速钢-E", - "material.gtceu.hssg":"高速钢-G", - "material.gtceu.hsss":"高速钢-S", - "material.gtceu.hydro_cracked_butadiene":"加氢裂化丁二烯", - "material.gtceu.hydro_cracked_butane":"加氢裂化丁烷", - "material.gtceu.hydro_cracked_butene":"加氢裂化丁烯", - "material.gtceu.hydro_cracked_ethane":"加氢裂化乙烷", - "material.gtceu.hydro_cracked_ethylene":"加氢裂化乙烯", - "material.gtceu.hydro_cracked_propane":"加氢裂化丙烷", - "material.gtceu.hydro_cracked_propene":"加氢裂化丙烯", - "material.gtceu.hydrochloric_acid":"盐酸", - "material.gtceu.hydrofluoric_acid":"氢氟酸", - "material.gtceu.hydrogen":"氢", - "material.gtceu.hydrogen_cyanide":"氰化氢", - "material.gtceu.hydrogen_iodide":"碘化氢", - "material.gtceu.hydrogen_sulfide":"硫化氢", - "material.gtceu.hypochlorous_acid":"次氯酸", - "material.gtceu.ice":"冰", - "material.gtceu.ilmenite":"钛铁矿", - "material.gtceu.impure_enriched_naquadah_solution":"含杂富集硅岩溶液", - "material.gtceu.impure_naquadria_solution":"含杂超能硅岩溶液", - "material.gtceu.incoloy_ma_956":"耐热铬铁合金 MA-956", - "material.gtceu.indium":"铟", - "material.gtceu.indium_concentrate":"铟富集溶液", - "material.gtceu.indium_gallium_phosphide":"磷化铟镓", - "material.gtceu.indium_phosphide":"磷化铟", - "material.gtceu.indium_tin_barium_titanium_cuprate":"铟锡钡钛铜氧化物", - "material.gtceu.inert_metal_mixture":"惰性金属混合物", - "material.gtceu.invar":"殷钢", - "material.gtceu.iodine":"碘", - "material.gtceu.iridium":"铱", - "material.gtceu.iridium_chloride":"氯化铱", - "material.gtceu.iridium_metal_residue":"铱金属渣", - "material.gtceu.iron":"铁", - "material.gtceu.iron_ii_chloride":"氯化亚铁", - "material.gtceu.iron_iii_chloride":"氯化铁", - "material.gtceu.isoprene":"异戊二烯", - "material.gtceu.kanthal":"坎塔尔合金", - "material.gtceu.krypton":"氪", - "material.gtceu.kyanite":"蓝晶石", - "material.gtceu.lanthanum":"镧", - "material.gtceu.lapis":"青金石", - "material.gtceu.lapotron":"兰波顿", - "material.gtceu.lava":"熔岩", - "material.gtceu.lawrencium":"铹", - "material.gtceu.lazurite":"蓝金石", - "material.gtceu.lead":"铅", - "material.gtceu.lead_zinc_solution":"铅锌溶液", - "material.gtceu.lepidolite":"锂云母", - "material.gtceu.light_blue_dye":"淡蓝色染料", - "material.gtceu.light_fuel":"轻燃油", - "material.gtceu.light_gray_dye":"淡灰色染料", - "material.gtceu.lightly_hydro_cracked_gas":"轻度加氢裂化炼油气", - "material.gtceu.lightly_hydro_cracked_heavy_fuel":"轻度加氢裂化重燃油", - "material.gtceu.lightly_hydro_cracked_light_fuel":"轻度加氢裂化轻燃油", - "material.gtceu.lightly_hydro_cracked_naphtha":"轻度加氢裂化石脑油", - "material.gtceu.lightly_steam_cracked_gas":"轻度蒸汽裂化炼油气", - "material.gtceu.lightly_steam_cracked_heavy_fuel":"轻度蒸汽裂化重燃油", - "material.gtceu.lightly_steam_cracked_light_fuel":"轻度蒸汽裂化轻燃油", - "material.gtceu.lightly_steam_cracked_naphtha":"轻度蒸汽裂化石脑油", - "material.gtceu.lime_dye":"黄绿色染料", - "material.gtceu.liquid_air":"液态空气", - "material.gtceu.liquid_ender_air":"液态末地空气", - "material.gtceu.liquid_nether_air":"液态下界空气", - "material.gtceu.lithium":"锂", - "material.gtceu.lithium_chloride":"氯化锂", - "material.gtceu.livermorium":"钅立", - "material.gtceu.lpg":"液化石油气", - "material.gtceu.lubricant":"润滑油", - "material.gtceu.lutetium":"镥", - "material.gtceu.magenta_dye":"品红色染料", - "material.gtceu.magnalium":"镁铝合金", - "material.gtceu.magnesia":"氧化镁", - "material.gtceu.magnesite":"菱镁矿", - "material.gtceu.magnesium":"镁", - "material.gtceu.magnesium_chloride":"氯化镁", - "material.gtceu.magnesium_diboride":"二硼化镁", - "material.gtceu.magnetic_iron":"磁化铁", - "material.gtceu.magnetic_neodymium":"磁化钕", - "material.gtceu.magnetic_samarium":"磁化钐", - "material.gtceu.magnetic_steel":"磁化钢", - "material.gtceu.magnetite":"磁铁矿", - "material.gtceu.malachite":"孔雀石", - "material.gtceu.manganese":"锰", - "material.gtceu.manganese_phosphide":"磷化锰", - "material.gtceu.maraging_steel_300":"马氏体时效钢-300", - "material.gtceu.marble":"大理石", - "material.gtceu.massicot":"铅黄", - "material.gtceu.mc_guffium_239":"麦高芬-239", - "material.gtceu.meat":"肉", - "material.gtceu.meitnerium":"钅麦", - "material.gtceu.mendelevium":"钔", - "material.gtceu.mercury":"汞", - "material.gtceu.mercury_barium_calcium_cuprate":"汞钡钙铜氧化物", - "material.gtceu.metal_mixture":"金属混合物", - "material.gtceu.methane":"甲烷", - "material.gtceu.methanol":"甲醇", - "material.gtceu.methyl_acetate":"乙酸甲酯", - "material.gtceu.mica":"云母", - "material.gtceu.milk":"牛奶", - "material.gtceu.mirabilite":"芒硝", - "material.gtceu.molybdenite":"辉钼矿", - "material.gtceu.molybdenum":"钼", - "material.gtceu.molybdenum_disilicide":"二硅化钼", - "material.gtceu.monazite":"独居石", - "material.gtceu.monochloramine":"氯胺", - "material.gtceu.moscovium":"镆", - "material.gtceu.mutagen":"诱变剂", - "material.gtceu.naphtha":"石脑油", - "material.gtceu.naphthalene":"萘", - "material.gtceu.naquadah":"硅岩", - "material.gtceu.naquadah_alloy":"硅岩合金", - "material.gtceu.naquadria":"超能硅岩", - "material.gtceu.naquadria_solution":"超能硅岩溶液", - "material.gtceu.naquadria_sulfate":"硫酸超能硅岩", - "material.gtceu.naquadria_waste":"超能硅岩废液", - "material.gtceu.natural_gas":"天然气", - "material.gtceu.neodymium":"钕", - "material.gtceu.neon":"氖", - "material.gtceu.neptunium":"镎", - "material.gtceu.nether_air":"下界空气", - "material.gtceu.nether_quartz":"下界石英", - "material.gtceu.nether_star":"下界之星", - "material.gtceu.netherite":"下界合金", - "material.gtceu.netherrack":"地狱岩", - "material.gtceu.neutronium":"中子素", - "material.gtceu.nichrome":"镍铬合金", - "material.gtceu.nickel":"镍", - "material.gtceu.nickel_zinc_ferrite":"镍锌铁氧体", - "material.gtceu.nihonium":"钅尔", - "material.gtceu.niobium":"铌", - "material.gtceu.niobium_nitride":"氮化铌", - "material.gtceu.niobium_titanium":"铌钛合金", - "material.gtceu.nitration_mixture":"硝酸混酸", - "material.gtceu.nitric_acid":"硝酸", - "material.gtceu.nitric_oxide":"一氧化氮", - "material.gtceu.nitrobenzene":"硝基苯", - "material.gtceu.nitrochlorobenzene":"硝基氯苯", - "material.gtceu.nitrogen":"氮", - "material.gtceu.nitrogen_dioxide":"二氧化氮", - "material.gtceu.nitrosyl_chloride":"亚硝酰氯", - "material.gtceu.nitrous_oxide":"一氧化二氮", - "material.gtceu.nobelium":"锘", - "material.gtceu.obsidian":"黑曜石", - "material.gtceu.octane":"辛烷", - "material.gtceu.oganesson":"气奥", - "material.gtceu.oil":"石油", - "material.gtceu.oil_heavy":"重油", - "material.gtceu.oil_light":"轻油", - "material.gtceu.oil_medium":"原油", - "material.gtceu.oilsands":"油砂", - "material.gtceu.olivine":"橄榄石", - "material.gtceu.opal":"猫眼石", - "material.gtceu.orange_dye":"橙色染料", - "material.gtceu.osmiridium":"铱锇合金", - "material.gtceu.osmium":"锇", - "material.gtceu.osmium_tetroxide":"四氧化锇", - "material.gtceu.oxygen":"氧", - "material.gtceu.palladium":"钯", - "material.gtceu.palladium_raw":"粗钯", - "material.gtceu.paper":"纸", - "material.gtceu.paracetamol":"对乙酰氨基酚", - "material.gtceu.pcb_coolant":"多氯联苯冷却液 ", - "material.gtceu.pentlandite":"镍黄铁矿", - "material.gtceu.perlite":"珍珠岩", - "material.gtceu.phenol":"苯酚", - "material.gtceu.phosphate":"磷酸盐", - "material.gtceu.phosphoric_acid":"磷酸", - "material.gtceu.phosphorus":"磷", - "material.gtceu.phosphorus_pentoxide":"五氧化二磷", - "material.gtceu.phthalic_acid":"邻苯二甲酸", - "material.gtceu.pink_dye":"粉红色染料", - "material.gtceu.pitchblende":"沥青铀矿", - "material.gtceu.platinum":"铂", - "material.gtceu.platinum_group_sludge":"铂系矿泥", - "material.gtceu.platinum_raw":"粗铂", - "material.gtceu.platinum_sludge_residue":"铂泥渣", - "material.gtceu.plutonium":"钚", - "material.gtceu.plutonium_241":"钚-241", - "material.gtceu.pollucite":"铯榴石", - "material.gtceu.polonium":"钋", - "material.gtceu.polybenzimidazole":"聚苯并咪唑", - "material.gtceu.polycaprolactam":"聚己内酰胺", - "material.gtceu.polychlorinated_biphenyl":"多氯联苯", - "material.gtceu.polydimethylsiloxane":"聚二甲基硅氧烷", - "material.gtceu.polyethylene":"聚乙烯", - "material.gtceu.polyphenylene_sulfide":"聚苯硫醚", - "material.gtceu.polytetrafluoroethylene":"聚四氟乙烯", - "material.gtceu.polyvinyl_acetate":"聚乙酸乙烯酯", - "material.gtceu.polyvinyl_butyral":"聚乙烯醇缩丁醛", - "material.gtceu.polyvinyl_chloride":"聚氯乙烯", - "material.gtceu.potash":"钾碱", - "material.gtceu.potassium":"钾", - "material.gtceu.potassium_carbonate":"碳酸钾", - "material.gtceu.potassium_cyanide":"氰化钾", - "material.gtceu.potassium_dichromate":"重铬酸钾", - "material.gtceu.potassium_feldspar":"钾长石", - "material.gtceu.potassium_ferrocyanide":"亚铁氰化钾", - "material.gtceu.potassium_hydroxide":"氢氧化钾", - "material.gtceu.potassium_iodide":"碘化钾", - "material.gtceu.potassium_sulfate":"硫酸钾", - "material.gtceu.potin":"粗青铜合金", - "material.gtceu.powellite":"钼钙矿", - "material.gtceu.praseodymium":"镨", - "material.gtceu.promethium":"钷", - "material.gtceu.propane":"丙烷", - "material.gtceu.propene":"丙烯", - "material.gtceu.protactinium":"镤", - "material.gtceu.prussian_blue":"普鲁士蓝", - "material.gtceu.purple_dye":"紫色染料", - "material.gtceu.pyrite":"黄铁矿", - "material.gtceu.pyrochlore":"烧绿石", - "material.gtceu.pyrolusite":"软锰矿", - "material.gtceu.pyrope":"镁铝榴石", - "material.gtceu.quartz_sand":"石英砂", - "material.gtceu.quartzite":"石英岩", - "material.gtceu.quicklime":"生石灰", - "material.gtceu.rad_away":"消辐宁", - "material.gtceu.radium":"镭", - "material.gtceu.radon":"氡", - "material.gtceu.rare_earth":"稀土", - "material.gtceu.rarest_metal_mixture":"稀有金属混合物", - "material.gtceu.raw_brine":"粗卤水", - "material.gtceu.raw_gasoline":"粗汽油", - "material.gtceu.raw_growth_medium":"培养基原液", - "material.gtceu.raw_rubber":"生橡胶", - "material.gtceu.raw_styrene_butadiene_rubber":"生丁苯橡胶", - "material.gtceu.realgar":"雄黄", - "material.gtceu.red_alloy":"红色合金", - "material.gtceu.red_dye":"红色染料", - "material.gtceu.red_garnet":"红石榴石", - "material.gtceu.red_steel":"红钢", - "material.gtceu.redrock":"红岩", - "material.gtceu.redstone":"红石", - "material.gtceu.refinery_gas":"炼油气", - "material.gtceu.reinforced_epoxy_resin":"强化环氧树脂", - "material.gtceu.rhenium":"铼", - "material.gtceu.rhodium":"铑", - "material.gtceu.rhodium_plated_palladium":"镀铑钯", - "material.gtceu.rhodium_sulfate":"硫酸铑", - "material.gtceu.rock_salt":"岩盐", - "material.gtceu.rocket_fuel":"火箭燃料", - "material.gtceu.roentgenium":"钅仑", - "material.gtceu.rose_gold":"玫瑰金", - "material.gtceu.rtm_alloy":"钌钨钼合金", - "material.gtceu.rubber":"橡胶", - "material.gtceu.rubidium":"铷", - "material.gtceu.ruby":"红宝石", - "material.gtceu.ruby_slurry":"红宝石浆液", - "material.gtceu.ruridit":"钌铱合金", - "material.gtceu.ruthenium":"钌", - "material.gtceu.ruthenium_tetroxide":"四氧化钌", - "material.gtceu.ruthenium_trinium_americium_neutronate":"钌凯金镅中子素氧化物", - "material.gtceu.rutherfordium":"钅卢", - "material.gtceu.rutile":"金红石", - "material.gtceu.salt":"盐", - "material.gtceu.salt_water":"盐水", - "material.gtceu.saltpeter":"硝石", - "material.gtceu.samarium":"钐", - "material.gtceu.samarium_iron_arsenic_oxide":"钐铁砷氧化物", - "material.gtceu.sapphire":"蓝宝石", - "material.gtceu.sapphire_slurry":"蓝宝石浆液", - "material.gtceu.scandium":"钪", - "material.gtceu.scheelite":"白钨矿", - "material.gtceu.sculk":"幽匿", - "material.gtceu.seaborgium":"钅喜", - "material.gtceu.seed_oil":"种子油", - "material.gtceu.selenium":"硒", - "material.gtceu.severely_hydro_cracked_gas":"重度加氢裂化炼油气", - "material.gtceu.severely_hydro_cracked_heavy_fuel":"重度加氢裂化重燃油", - "material.gtceu.severely_hydro_cracked_light_fuel":"重度加氢裂化轻燃油", - "material.gtceu.severely_hydro_cracked_naphtha":"重度加氢裂化石脑油", - "material.gtceu.severely_steam_cracked_gas":"重度蒸汽裂化炼油气", - "material.gtceu.severely_steam_cracked_heavy_fuel":"重度蒸汽裂化重燃油", - "material.gtceu.severely_steam_cracked_light_fuel":"重度蒸汽裂化轻燃油", - "material.gtceu.severely_steam_cracked_naphtha":"重度蒸汽裂化石脑油", - "material.gtceu.silicon":"硅", - "material.gtceu.silicon_dioxide":"二氧化硅", - "material.gtceu.silicone_rubber":"硅橡胶", - "material.gtceu.silver":"银", - "material.gtceu.soapstone":"皂石", - "material.gtceu.soda_ash":"纯碱", - "material.gtceu.sodalite":"方钠石", - "material.gtceu.sodium":"钠", - "material.gtceu.sodium_bicarbonate":"碳酸氢钠", - "material.gtceu.sodium_bisulfate":"硫酸氢钠", - "material.gtceu.sodium_hydroxide":"氢氧化钠", - "material.gtceu.sodium_nitrite":"亚硝酸钠", - "material.gtceu.sodium_persulfate":"过硫酸钠", - "material.gtceu.sodium_potassium":"钠钾合金", - "material.gtceu.sodium_sulfide":"硫化钠", - "material.gtceu.soldering_alloy":"焊锡", - "material.gtceu.spessartine":"锰铝榴石", - "material.gtceu.sphalerite":"闪锌矿", - "material.gtceu.spodumene":"锂辉石", - "material.gtceu.stainless_steel":"不锈钢", - "material.gtceu.steam":"蒸汽", - "material.gtceu.steam_cracked_butadiene":"蒸汽裂化丁二烯", - "material.gtceu.steam_cracked_butane":"蒸汽裂化丁烷", - "material.gtceu.steam_cracked_butene":"蒸汽裂化丁烯", - "material.gtceu.steam_cracked_ethane":"蒸汽裂化乙烷", - "material.gtceu.steam_cracked_ethylene":"蒸汽裂化乙烯", - "material.gtceu.steam_cracked_propane":"蒸汽裂化丙烷", - "material.gtceu.steam_cracked_propene":"蒸汽裂化丙烯", - "material.gtceu.steel":"钢", - "material.gtceu.stellite_100":"司太立-100", - "material.gtceu.sterilized_growth_medium":"无菌培养基", - "material.gtceu.sterling_silver":"标准纯银", - "material.gtceu.stibnite":"辉锑矿", - "material.gtceu.stone":"石头", - "material.gtceu.strontium":"锶", - "material.gtceu.styrene":"苯乙烯", - "material.gtceu.styrene_butadiene_rubber":"丁苯橡胶", - "material.gtceu.sugar":"糖", - "material.gtceu.sulfur":"硫", - "material.gtceu.sulfur_dioxide":"二氧化硫", - "material.gtceu.sulfur_trioxide":"三氧化硫", - "material.gtceu.sulfuric_acid":"硫酸", - "material.gtceu.sulfuric_copper_solution":"硫酸铜溶液", - "material.gtceu.sulfuric_gas":"含硫炼油气", - "material.gtceu.sulfuric_heavy_fuel":"含硫重燃油", - "material.gtceu.sulfuric_light_fuel":"含硫轻燃油", - "material.gtceu.sulfuric_naphtha":"含硫石脑油", - "material.gtceu.sulfuric_nickel_solution":"硫酸镍溶液", - "material.gtceu.talc":"滑石", - "material.gtceu.tantalite":"钽铁矿", - "material.gtceu.tantalum":"钽", - "material.gtceu.tantalum_carbide":"碳化钽", - "material.gtceu.technetium":"锝", - "material.gtceu.tellurium":"碲", - "material.gtceu.tennessine":"石田", - "material.gtceu.terbium":"铽", - "material.gtceu.tetrafluoroethylene":"四氟乙烯", - "material.gtceu.tetrahedrite":"黝铜矿", - "material.gtceu.tetranitromethane":"四硝基甲烷", - "material.gtceu.thallium":"铊", - "material.gtceu.thorium":"钍", - "material.gtceu.thulium":"铥", - "material.gtceu.tin":"锡", - "material.gtceu.tin_alloy":"锡铁合金", - "material.gtceu.titanium":"钛", - "material.gtceu.titanium_carbide":"碳化钛", - "material.gtceu.titanium_tetrachloride":"四氯化钛", - "material.gtceu.titanium_trifluoride":"三氟化钛", - "material.gtceu.titanium_tungsten_carbide":"碳化钛钨", - "material.gtceu.toluene":"甲苯", - "material.gtceu.topaz":"黄玉", - "material.gtceu.treated_wood":"防腐木", - "material.gtceu.tricalcium_phosphate":"磷酸三钙", - "material.gtceu.trinium":"凯金", - "material.gtceu.trinium_sulfide":"硫化凯金", - "material.gtceu.tritanium":"三钛", - "material.gtceu.tritium":"氚", - "material.gtceu.trona":"天然碱", - "material.gtceu.tungstate":"钨酸锂", - "material.gtceu.tungsten":"钨", - "material.gtceu.tungsten_carbide":"碳化钨", - "material.gtceu.tungsten_steel":"钨钢", - "material.gtceu.tungstic_acid":"钨酸", - "material.gtceu.ultimet":"哈氏合金", - "material.gtceu.uraninite":"晶质铀矿", - "material.gtceu.uranium":"铀", - "material.gtceu.uranium_235":"铀-235", - "material.gtceu.uranium_hexafluoride":"六氟化铀", - "material.gtceu.uranium_rhodium_dinaquadide":"铀铑硅岩合金", - "material.gtceu.uranium_triplatinum":"三铂化铀", - "material.gtceu.uu_matter":"UU物质", - "material.gtceu.uvarovite":"钙铬榴石", - "material.gtceu.vanadium":"钒", - "material.gtceu.vanadium_gallium":"钒镓合金", - "material.gtceu.vanadium_magnetite":"钒磁铁矿", - "material.gtceu.vanadium_steel":"钒钢", - "material.gtceu.vinyl_acetate":"乙酸乙烯酯", - "material.gtceu.vinyl_chloride":"氯乙烯", - "material.gtceu.water":"水", - "material.gtceu.watertight_steel":"防水钢", - "material.gtceu.wax":"蜡", - "material.gtceu.wheat":"小麦", - "material.gtceu.white_dye":"白色染料", - "material.gtceu.wood":"木", - "material.gtceu.wood_gas":"木煤气", - "material.gtceu.wood_tar":"木焦油", - "material.gtceu.wood_vinegar":"木醋酸", - "material.gtceu.wrought_iron":"锻铁", - "material.gtceu.wulfenite":"钼铅矿", - "material.gtceu.xenon":"氙", - "material.gtceu.yellow_dye":"黄色染料", - "material.gtceu.yellow_garnet":"黄石榴石", - "material.gtceu.yellow_limonite":"黄褐铁矿", - "material.gtceu.ytterbium":"镱", - "material.gtceu.yttrium":"钇", - "material.gtceu.yttrium_barium_cuprate":"钇钡铜氧化物", - "material.gtceu.zeolite":"沸石", - "material.gtceu.zeron_100":"赛龙-100", - "material.gtceu.zinc":"锌", - "material.gtceu.zinc_sulfide":"硫化锌", - "material.gtceu.zincite":"红锌矿", - "material.gtceu.zirconium":"锆", - "message.gtceu.new_veins":"勘探到%d个新矿脉!", - "metaarmor.energy_share.disable":"能量供给:工具充能已禁用", - "metaarmor.energy_share.enable":"能量供给:工具充能已启用", - "metaarmor.energy_share.error":"能量供给:§c能量不足,无法为工具充能!", - "metaarmor.energy_share.tooltip":"供能模式:%s", - "metaarmor.energy_share.tooltip.guide":"手持物品并潜行右击以更换模式", - "metaarmor.hud.energy_lvl":"能量存储:%s", - "metaarmor.hud.engine_enabled":"引擎已启用:%s", - "metaarmor.hud.fuel_lvl":"燃料存储:%s", - "metaarmor.hud.gravi_engine":"重力引擎:%s", - "metaarmor.hud.hover_mode":"悬浮模式:%s", - "metaarmor.hud.status.disabled":"§c关", - "metaarmor.hud.status.enabled":"§a开", - "metaarmor.jetpack.emergency_hover_mode":"紧急悬停模式已启用!", - "metaarmor.jetpack.flight.disable":"喷气背包:飞行已禁用", - "metaarmor.jetpack.flight.enable":"喷气背包:飞行已启用", - "metaarmor.jetpack.hover.disable":"喷气背包:悬停模式已禁用", - "metaarmor.jetpack.hover.enable":"喷气背包:悬停模式已启用", - "metaarmor.message.nightvision.disabled":"§b夜视:§c关闭", - "metaarmor.message.nightvision.enabled":"§b夜视:§a开启", - "metaarmor.message.nightvision.error":"§c能量不足!", - "metaarmor.nms.boosted_jump.disabled":"纳米肌体™套装:跳跃提升已禁用", - "metaarmor.nms.boosted_jump.enabled":"纳米肌体™套装:跳跃提升已启用", - "metaarmor.nms.nightvision.disabled":"纳米肌体™套装:夜视已禁用", - "metaarmor.nms.nightvision.enabled":"纳米肌体™套装:夜视已启用", - "metaarmor.nms.nightvision.error":"纳米肌体™套装:§c能量不足!", - "metaarmor.nms.share.disable":"纳米肌体™套装:供能模式已禁用", - "metaarmor.nms.share.enable":"纳米肌体™套装:供能模式已启用", - "metaarmor.nms.share.error":"纳米肌体™套装:§c能量不足,无法供能!", - "metaarmor.qts.nightvision.disabled":"夸克高科™套装:夜视已禁用", - "metaarmor.qts.nightvision.enabled":"夸克高科™套装:夜视已启用", - "metaarmor.qts.nightvision.error":"夸克高科™套装:§c能量不足!", - "metaarmor.qts.share.disable":"夸克高科™套装:供能模式已禁用", - "metaarmor.qts.share.enable":"夸克高科™套装:供能模式已启用", - "metaarmor.qts.share.error":"夸克高科™套装:§c能量不足,无法供能!", - "metaarmor.tooltip.autoeat":"使用物品栏中的食物补充饱食度", - "metaarmor.tooltip.breath":"补充氧气条", - "metaarmor.tooltip.burning":"扑灭身上的火焰", - "metaarmor.tooltip.falldamage":"消除摔落伤害", - "metaarmor.tooltip.freezing":"防止寒冷侵袭", - "metaarmor.tooltip.jump":"提升跳跃高度与距离", - "metaarmor.tooltip.potions":"消除负面效果", - "metaarmor.tooltip.speed":"提升奔跑速度", - "metaarmor.tooltip.stepassist":"提供步行辅助", - "metaitem.behavior.mode_switch.current_mode":"模式:%s", - "metaitem.behavior.mode_switch.mode_switched":"§e模式设置为:%s", - "metaitem.behavior.mode_switch.tooltip":"潜行右击以切换模式", - "metaitem.clipboard.tooltip":"可以在上面书写(无需任何书写工具)。手持右键在墙面上放置,潜行右击取下。", - "metaitem.cover.digital.mode.energy.disabled":"点击以启用能量模式", - "metaitem.cover.digital.mode.energy.enabled":"已启用能量模式", - "metaitem.cover.digital.mode.fluid.disabled":"点击以启用流体模式", - "metaitem.cover.digital.mode.fluid.enabled":"已启用流体模式", - "metaitem.cover.digital.mode.item.disabled":"点击以启用物品模式", - "metaitem.cover.digital.mode.item.enabled":"已启用物品模式", - "metaitem.cover.digital.mode.machine.disabled":"点击以启用机器模式", - "metaitem.cover.digital.mode.machine.enabled":"已启用机器模式", - "metaitem.cover.digital.mode.proxy.disabled":"点击以启用代理模式", - "metaitem.cover.digital.mode.proxy.enabled":"已启用代理模式", - "metaitem.cover.digital.tooltip":"§7作§f覆盖板§7时通过§f能量线缆f7将机器连接到§f中央监视器§7。", - "metaitem.cover.digital.wireless.tooltip.0":"§7作§f覆盖板§7时§f将机器§f无线§7接入§f中央监控器§7。", - "metaitem.cover.digital.wireless.tooltip.1":"§f手持右击中央监控器§7来进行远程绑定。", - "metaitem.cover.digital.wireless.tooltip.2":"§f手持并潜行右击§7则可移除现有绑定。", - "metaitem.cover.digital.wireless.tooltip.3":"§a绑定至:§f%s", - "metaitem.crushed.tooltip.purify":"右击盛有水的炼药锅以清洗", - "metaitem.debug_scanner.tooltip":"三录仪", - "metaitem.dust.tooltip.purify":"右击盛有水的炼药锅以清洗", - "metaitem.electric.discharge_mode.disabled":"§e释能模式已禁用", - "metaitem.electric.discharge_mode.enabled":"§e释能模式已启用", - "metaitem.electric.discharge_mode.tooltip":"潜行右击以开关释能模式", - "metaitem.generic.electric_item.stored":"%d/%d EU(%s)", - "metaitem.generic.electric_item.tooltip":"%d/%d EU - %s电压", - "metaitem.generic.fluid_container.tooltip":"%d/%dL %s", - "metaitem.int_circuit.configuration":"配置:%d", - "metaitem.liquid_fuel_jetpack.tooltip":"利用内燃发电机的燃料来提供推进动力", - "metaitem.machine_configuration.mode":"§a配置模式:§r%s", - "metaitem.plugin.proxy.tooltips.1":"(请将屏幕调整为代理模式)", - "metaitem.plugin.tooltips.1":"可为屏幕安装插件以实现更多功能。", - "metaitem.prospector.mode.bedrock_ore":"§b基岩矿石勘探模式§r", - "metaitem.prospector.mode.fluid":"§b流体勘探模式§r", - "metaitem.prospector.mode.ores":"§a矿石探勘模式§r", - "metaitem.prospector.tooltip.modes":"可用模式:", - "metaitem.prospector.tooltip.radius":"扫描半径:%s", - "metaitem.record.sus.tooltip":"§7Leonz - Among Us Drip", - "metaitem.terminal.tooltip":"工欲善其事,必先利其器。", - "metaitem.terminal.tooltip.creative":"§b创造模式", - "metaitem.terminal.tooltip.hardware":"§a硬件:%d", - "metaitem.tool.tooltip.durability":"§f耐久度:§a%d / %d", - "metaitem.tool.tooltip.primary_material":"§f材料:§e%s", - "metaitem.tool.tooltip.rotor.efficiency":"涡轮效率:§9%d%%", - "metaitem.tool.tooltip.rotor.power":"涡轮产能:§9%d%%", - "metaitem.tricorder_scanner.tooltip":"三录仪", - "monitor.gui.title.argb":"ARGB:", - "monitor.gui.title.back":"返回", - "monitor.gui.title.config":"配置", - "monitor.gui.title.plugin":"插件:", - "monitor.gui.title.scale":"尺寸:", - "monitor.gui.title.slot":"槽位:", - "ore.spawnlocation.name":"矿物生成信息", - "recipe.capability.eu.name":"GTCEu能量", - "recipe.capability.fluid.name":"流体", - "recipe.capability.item.name":"物品", - "recipe.condition.adjacent_block.tooltip":"水平相邻方块应为", - "recipe.condition.biome.tooltip":"生物群系:%s", - "recipe.condition.daytime.day.tooltip":"需要白天才能工作", - "recipe.condition.daytime.night.tooltip":"需要夜晚才能工作", - "recipe.condition.dimension.tooltip":"维度:%s", - "recipe.condition.dimension_marker.tooltip":"维度:", - "recipe.condition.eu_to_start.tooltip":"启动耗能:%d%s", - "recipe.condition.pos_y.tooltip":"Y轴高度:%d <= Y <= %d", - "recipe.condition.rain.tooltip":"雨量:%d", - "recipe.condition.rock_breaker.tooltip":"水平相邻方块需要为流体源", - "recipe.condition.steam_vent.tooltip":"清洁蒸汽排气口", - "recipe.condition.thunder.tooltip":"雷级:%d", - "tagprefix.andesite":"安山岩%s矿石", - "tagprefix.basalt":"玄武岩%s矿石", - "tagprefix.blackstone":"黑石%s矿石", - "tagprefix.block":"%s块", - "tagprefix.bolt":"%s螺栓", - "tagprefix.buzz_saw_blade":"%s圆锯锯片", - "tagprefix.cable_gt_double":"2x%s线缆", - "tagprefix.cable_gt_hex":"16x%s线缆", - "tagprefix.cable_gt_octal":"8x%s线缆", - "tagprefix.cable_gt_quadruple":"4x%s线缆", - "tagprefix.cable_gt_single":"1x%s线缆", - "tagprefix.chainsaw_head":"%s链锯头", - "tagprefix.chipped_gem":"破碎的%s", - "tagprefix.crushed_ore":"粉碎%s矿石", - "tagprefix.deepslate":"深板岩%s矿石", - "tagprefix.dense_plate":"致密%s板", - "tagprefix.diorite":"闪长岩%s矿石", - "tagprefix.door":"%s门", - "tagprefix.double_plate":"双层%s板", - "tagprefix.drill_head":"%s钻头", - "tagprefix.dust":"%s粉", - "tagprefix.dye":"%s染料", - "tagprefix.endstone":"末地石%s矿石", - "tagprefix.exquisite_gem":"精致的%s", - "tagprefix.fence":"%s栅栏", - "tagprefix.fence_gate":"%s栅栏门", - "tagprefix.fine_wire":"细%s导线", - "tagprefix.flawed_gem":"有瑕的%s", - "tagprefix.flawless_gem":"无瑕的%s", - "tagprefix.foil":"%s箔", - "tagprefix.frame":"%s框架", - "tagprefix.gear":"%s齿轮", - "tagprefix.gem":"%s", - "tagprefix.granite":"花岗岩%s矿石", - "tagprefix.gravel":"沙砾%s矿石", - "tagprefix.hot_ingot":"热%s锭", - "tagprefix.impure_dust":"含杂%s粉", - "tagprefix.ingot":"%s锭", - "tagprefix.lens":"%s透镜", - "tagprefix.log":"%s原木", - "tagprefix.long_rod":"长%s杆", - "tagprefix.marble":"大理岩%s矿石", - "tagprefix.netherrack":"下界岩%s矿石", - "tagprefix.nugget":"%s粒", - "tagprefix.pipe_huge_fluid":"巨型%s流体管道", - "tagprefix.pipe_huge_item":"巨型%s物品管道", - "tagprefix.pipe_huge_restrictive":"巨型加固%s物品管道", - "tagprefix.pipe_large_fluid":"大型%s流体管道", - "tagprefix.pipe_large_item":"大型%s物品管道", - "tagprefix.pipe_large_restrictive":"大型加固%s物品管道", - "tagprefix.pipe_nonuple_fluid":"九重%s流体管道", - "tagprefix.pipe_normal_fluid":"普通%s流体管道", - "tagprefix.pipe_normal_item":"普通%s物品管道", - "tagprefix.pipe_normal_restrictive":"普通加固%s物品管道", - "tagprefix.pipe_quadruple_fluid":"四重%s流体管道", - "tagprefix.pipe_small_fluid":"小型%s流体管道", - "tagprefix.pipe_small_item":"小型%s物品管道", - "tagprefix.pipe_small_restrictive":"小型加固%s物品管道", - "tagprefix.pipe_tiny_fluid":"微型%s流体管道", - "tagprefix.planks":"%s木板", - "tagprefix.plate":"%s板", - "tagprefix.polymer.dense_plate":"致密%s片", - "tagprefix.polymer.double_plate":"双层%s片", - "tagprefix.polymer.dust":"%s末", - "tagprefix.polymer.foil":"薄%s片", - "tagprefix.polymer.ingot":"%s条", - "tagprefix.polymer.nugget":"%s颗粒", - "tagprefix.polymer.plate":"%s片", - "tagprefix.polymer.small_dust":"小堆%s末", - "tagprefix.polymer.tiny_dust":"小撮%s末", - "tagprefix.pure_dust":"洁净%s粉", - "tagprefix.purified_ore":"纯净%s矿石", - "tagprefix.raw":"粗%s", - "tagprefix.raw_ore_block":"粗%s块", - "tagprefix.red_granite":"红花岗岩%s矿石", - "tagprefix.red_sand":"红沙%s矿石", - "tagprefix.refined_ore":"精炼%s矿石", - "tagprefix.ring":"%s环", - "tagprefix.rock":"%s", - "tagprefix.rod":"%s杆", - "tagprefix.rotor":"%s转子", - "tagprefix.round":"%s滚珠", - "tagprefix.sand":"沙子%s矿石", - "tagprefix.screw":"%s螺丝", - "tagprefix.screwdriver_tip":"%s螺丝刀刀头", - "tagprefix.slab":"%s台阶", - "tagprefix.small_dust":"小堆%s粉", - "tagprefix.small_gear":"小型%s齿轮", - "tagprefix.small_spring":"小型%s弹簧", - "tagprefix.spring":"%s弹簧", - "tagprefix.stairs":"%s楼梯", - "tagprefix.stone":"%s矿石", - "tagprefix.tiny_dust":"小撮%s粉", - "tagprefix.tuff":"凝灰岩%s矿石", - "tagprefix.turbine_blade":"%s涡轮扇叶", - "tagprefix.wire_cutter_head":"%s剪线钳钳头", - "tagprefix.wire_gt_double":"2x%s导线", - "tagprefix.wire_gt_hex":"16x%s导线", - "tagprefix.wire_gt_octal":"8x%s导线", - "tagprefix.wire_gt_quadruple":"4x%s导线", - "tagprefix.wire_gt_single":"1x%s导线", - "tagprefix.wrench_tip":"%s扳手顶", - "tile.gtceu.brittle_charcoal.name":"脆木炭块", - "tile.gtceu.brittle_charcoal.tooltip.0":"产自木炭堆点火器。", - "tile.gtceu.brittle_charcoal.tooltip.1":"挖掘可掉落木炭。", - "tile.gtceu.foam.name":"建筑泡沫", - "tile.gtceu.petrified_foam.name":"石化建筑泡沫", - "tile.gtceu.reinforced_foam.name":"强化建筑泡沫", - "tile.gtceu.reinforced_stone.name":"防爆石", - "tile.gtceu.seal.name":"密封方块" + "behavior.data_item.assemblyline.data": "- §a%s", + "behavior.data_item.assemblyline.title": "§n装配线结构数据:", + "behavior.item_magnet.disabled": "§c磁场已禁用", + "behavior.item_magnet.enabled": "§a磁场已启用", + "behavior.portable_scanner.amp_per_sec": "平均(最后一秒):%s A", + "behavior.portable_scanner.bedrock_fluid.amount": "流体储量:%s %s - %s%%", + "behavior.portable_scanner.bedrock_fluid.amount_unknown": "流体储量:%s%%", + "behavior.portable_scanner.bedrock_fluid.nothing": "流体储量:§6无§r", + "behavior.portable_scanner.block_hardness": "硬度:%s;爆炸抗性:%s", + "behavior.portable_scanner.block_name": "名称:%s;元数据:%s", + "behavior.portable_scanner.debug_cpu_load": "%2$s刻内平均CPU负载约%1$sns,最差情况为%sns。", + "behavior.portable_scanner.debug_cpu_load_seconds": "负载秒数为%s秒。", + "behavior.portable_scanner.debug_lag_count": "已在服务器中造成%s次延迟尖峰警告(任何大于%sms的情况)。", + "behavior.portable_scanner.debug_machine": "元ID:%s", + "behavior.portable_scanner.debug_machine_invalid": " 无效!", + "behavior.portable_scanner.debug_machine_invalid_null=invalid! MetaTileEntity =": " null!", + "behavior.portable_scanner.debug_machine_valid": "无效!", + "behavior.portable_scanner.divider": "=========================", + "behavior.portable_scanner.energy_container_in": "输入上限:%s(%s)EU,%s A", + "behavior.portable_scanner.energy_container_out": "输出上限:%s(%s)EU,%s A", + "behavior.portable_scanner.energy_container_storage": "能量:%s EU / %s EU", + "behavior.portable_scanner.environmental_hazard": "区块内的环境污染:%s§r - %s ppm", + "behavior.portable_scanner.environmental_hazard.nothing": "区块内的环境污染:§6无§r", + "behavior.portable_scanner.eu_per_sec": "平均(最后一秒):%s EU/t", + "behavior.portable_scanner.guild_name": "§2公会名称:%s§r", + "behavior.portable_scanner.local_hazard": "区域内的其他污染:%s§r - %s ppm", + "behavior.portable_scanner.local_hazard.nothing": "区域内的其他污染:§6无§r", + "behavior.portable_scanner.machine_disabled": "已停止。", + "behavior.portable_scanner.machine_front_facing": "控制器面向:%s", + "behavior.portable_scanner.machine_ownership": "§2机器所有者类型:%s§r", + "behavior.portable_scanner.machine_power_loss": "因断电而停止工作。", + "behavior.portable_scanner.machine_progress": "处理进度/总计:%s / %s", + "behavior.portable_scanner.machine_upwards_facing": "控制器正面朝向:%s", + "behavior.portable_scanner.mode.caption": "显示模式:%s", + "behavior.portable_scanner.mode.show_all_info": "显示所有信息", + "behavior.portable_scanner.mode.show_block_info": "显示方块信息", + "behavior.portable_scanner.mode.show_electrical_info": "显示电器信息", + "behavior.portable_scanner.mode.show_environmental_info": "显示环境信息", + "behavior.portable_scanner.mode.show_machine_info": "显示机器信息", + "behavior.portable_scanner.mode.show_recipe_info": "显示配方信息", + "behavior.portable_scanner.muffled": "已静音。", + "behavior.portable_scanner.multiblock_energy_input": "最大输入:%s EU/t,电压等级 %s", + "behavior.portable_scanner.multiblock_energy_output": "最大输出:%s EU/t,电压等级 %s", + "behavior.portable_scanner.multiblock_maintenance": "故障:%s", + "behavior.portable_scanner.multiblock_parallel": "并行处理:%s", + "behavior.portable_scanner.player_name": "§2玩家姓名:%s§r,§7玩家在线:%s§r", + "behavior.portable_scanner.position": "----- X:%s;Y:%s;Z:%s;D:%s -----", + "behavior.portable_scanner.state": "%s:%s", + "behavior.portable_scanner.tank": "流体储量(槽位%s):%s mB / %s mB %s", + "behavior.portable_scanner.tanks_empty": "未存储流体", + "behavior.portable_scanner.team_name": "§2团队名称:%s§r", + "behavior.portable_scanner.workable_consumption": "预计耗能:%s EU/t,%s A", + "behavior.portable_scanner.workable_production": "预计产能:%s EU/t,%s A", + "behavior.portable_scanner.workable_progress": "处理进度:%s s / %s s", + "behavior.portable_scanner.workable_stored_energy": "能量缓存:%s EU / %s EU", + "behavior.prospector.added_waypoint": "已创建路径点:%s!", + "behavior.prospector.not_enough_energy": "能量不足!", + "behavior.toggle_energy_consumer.tooltip": "右击切换模式", + "behaviour.boor.by": "通过%s", + "behaviour.hammer": "右击机器以开启或关闭消声功能", + "behaviour.hoe": "可以翻耕泥土", + "behaviour.lighter.fluid.tooltip": "可使用丙烷或丁烷来生火", + "behaviour.lighter.tooltip.description": "可以点火", + "behaviour.lighter.tooltip.usage": "潜行右击以开/关", + "behaviour.lighter.uses": "剩余次数:%d", + "behaviour.meta.machine.config.copy.tooltip": "§7潜行右键单击以复制机器配置", + "behaviour.meta.machine.config.paste.tooltip": "§7右键单击以粘贴机器配置", + "behaviour.paintspray.black.tooltip": "可以将物品染成黑色", + "behaviour.paintspray.blue.tooltip": "可以将物品染成蓝色", + "behaviour.paintspray.brown.tooltip": "可以将物品染成棕色", + "behaviour.paintspray.cyan.tooltip": "可以将物品染成青色", + "behaviour.paintspray.gray.tooltip": "可以将物品染成灰色", + "behaviour.paintspray.green.tooltip": "可以将物品染成绿色", + "behaviour.paintspray.light_blue.tooltip": "可以将物品染成淡蓝色", + "behaviour.paintspray.light_gray.tooltip": "可以将物品染成银色", + "behaviour.paintspray.lime.tooltip": "可以将物品染成黄绿色", + "behaviour.paintspray.magenta.tooltip": "可以将物品染成品红色", + "behaviour.paintspray.orange.tooltip": "可以将物品染成橙色", + "behaviour.paintspray.pink.tooltip": "可以将物品染成粉红色", + "behaviour.paintspray.purple.tooltip": "可以将物品染成紫色", + "behaviour.paintspray.red.tooltip": "可以将物品染成红色", + "behaviour.paintspray.solvent.tooltip": "可以移除已染色物品的颜色", + "behaviour.paintspray.uses": "剩余次数:%d", + "behaviour.paintspray.white.tooltip": "可以将物品染成白色", + "behaviour.paintspray.yellow.tooltip": "可以将物品染成黄色", + "behaviour.prospecting": "适用于探矿", + "behaviour.setting.allow.input.from.output.tooltip": "%s-允许从输出面输入:%s", + "behaviour.setting.item_auto_output.tooltip": "%s-自动输出:%s", + "behaviour.setting.muffled.tooltip": "静音:%s", + "behaviour.setting.output.direction.tooltip": "%s-输出面方向:%s", + "behaviour.soft_hammer": "用来开启与关闭机器", + "behaviour.soft_hammer.disabled": "已暂停工作", + "behaviour.soft_hammer.enabled": "已恢复工作", + "behaviour.soft_hammer.idle_after_cycle": "当前周期结束后暂停机器", + "behaviour.wrench": "右击以旋转方块", + "block.filter_casing.tooltip": "创建一个§a无尘§r环境", + "block.gtceu.acid_hazard_sign_block": "强酸危害警示方块", + "block.gtceu.active_transformer": "有源变压器", + "block.gtceu.advanced_computer_casing": "高级计算机外壳", + "block.gtceu.advanced_data_access_hatch": "高级数据访问仓", + "block.gtceu.alloy_blast_smelter": "合金冶炼炉", + "block.gtceu.aluminium_crate": "铝板条箱", + "block.gtceu.aluminium_drum": "铝桶", + "block.gtceu.antimatter_hazard_sign_block": "反物质危害警示方块", + "block.gtceu.assembly_line": "装配线", + "block.gtceu.assembly_line_casing": "装配线外壳", + "block.gtceu.assembly_line_grating": "装配线格栅", + "block.gtceu.assembly_line_unit": "装配线控制外壳", + "block.gtceu.atomic_casing": "原子机械方块", + "block.gtceu.auto_maintenance_hatch": "自动维护仓", + "block.gtceu.bio_hazard_sign_block": "生化危害警示方块", + "block.gtceu.black_borderless_lamp": "黑色无框灯", + "block.gtceu.black_lamp": "黑色灯", + "block.gtceu.black_large_metal_sheet": "黑色粗纹金属板方块", + "block.gtceu.black_metal_sheet": "黑色金属板方块", + "block.gtceu.black_studs": "黑色橡胶混凝土", + "block.gtceu.blue_borderless_lamp": "蓝色无框灯", + "block.gtceu.blue_lamp": "蓝色灯", + "block.gtceu.blue_large_metal_sheet": "蓝色粗纹金属板方块", + "block.gtceu.blue_metal_sheet": "蓝色金属板方块", + "block.gtceu.blue_studs": "蓝色橡胶混凝土", + "block.gtceu.boss_hazard_sign_block": "Boss危害警示方块", + "block.gtceu.brittle_charcoal": "脆木炭块", + "block.gtceu.bronze_brick_casing": "砖砌青铜外壳", + "block.gtceu.bronze_crate": "青铜板条箱", + "block.gtceu.bronze_drum": "青铜桶", + "block.gtceu.bronze_firebox_casing": "青铜燃烧室", + "block.gtceu.bronze_gearbox": "青铜齿轮箱机械方块", + "block.gtceu.bronze_large_boiler": "大型青铜锅炉", + "block.gtceu.bronze_machine_casing": "青铜机器外壳", + "block.gtceu.bronze_pipe_casing": "青铜管道方块", + "block.gtceu.brown_borderless_lamp": "棕色无框灯", + "block.gtceu.brown_lamp": "棕色灯", + "block.gtceu.brown_large_metal_sheet": "棕色粗纹金属板方块", + "block.gtceu.brown_metal_sheet": "棕色金属板方块", + "block.gtceu.brown_studs": "棕色橡胶混凝土", + "block.gtceu.casing_coke_bricks": "焦炉砖块", + "block.gtceu.casing_grate": "栅格机械方块", + "block.gtceu.causality_hazard_sign_block": "因果律危害警示方块", + "block.gtceu.charcoal_pile_igniter": "木炭堆点火器", + "block.gtceu.chiseled_dark_concrete": "雕纹深色混凝土", + "block.gtceu.chiseled_light_concrete": "雕纹淡色混凝土", + "block.gtceu.chiseled_marble": "雕纹大理岩", + "block.gtceu.chiseled_red_granite": "雕纹红花岗岩", + "block.gtceu.clean_machine_casing": "洁净不锈钢机械方块", + "block.gtceu.cleaning_maintenance_hatch": "超净维护仓", + "block.gtceu.cleanroom": "超净间", + "block.gtceu.cleanroom_glass": "超净间玻璃", + "block.gtceu.coke_oven": "焦炉", + "block.gtceu.coke_oven_bricks": "焦炉砖块", + "block.gtceu.coke_oven_hatch": "焦炉仓", + "block.gtceu.computation_receiver_hatch": "算力数据靶仓", + "block.gtceu.computation_transmitter_hatch": "算力数据源仓", + "block.gtceu.computer_casing": "计算机外壳", + "block.gtceu.computer_heat_vent": "计算机散热口", + "block.gtceu.configurable_maintenance_hatch": "可配置维护仓", + "block.gtceu.corrosion_proof_casing": "耐腐蚀机械方块", + "block.gtceu.cracked_dark_concrete_bricks": "裂纹深色混凝土砖", + "block.gtceu.cracked_light_concrete_bricks": "裂纹淡色混凝土砖", + "block.gtceu.cracked_marble_bricks": "裂纹大理岩砖", + "block.gtceu.cracked_red_granite_bricks": "裂纹红花岗岩砖", + "block.gtceu.cracker": "裂化机", + "block.gtceu.creative_chest": "创造模式箱子", + "block.gtceu.creative_computation_provider": "创造模式计算机", + "block.gtceu.creative_data_access_hatch": "创造模式数据访问仓", + "block.gtceu.creative_energy": "创造模式能量单元", + "block.gtceu.creative_tank": "创造模式储罐", + "block.gtceu.crushing_wheels": "粉碎轮", + "block.gtceu.cupronickel_coil_block": "白铜线圈方块", + "block.gtceu.cyan_borderless_lamp": "青色无框灯", + "block.gtceu.cyan_lamp": "青色灯", + "block.gtceu.cyan_large_metal_sheet": "青色粗纹金属板方块", + "block.gtceu.cyan_metal_sheet": "青色金属板方块", + "block.gtceu.cyan_studs": "青色橡胶混凝土", + "block.gtceu.dark_concrete": "深色混凝土", + "block.gtceu.dark_concrete_bricks": "深色混凝土砖", + "block.gtceu.dark_concrete_cobblestone": "深色混凝土圆石", + "block.gtceu.dark_concrete_small_tile": "深色混凝土小片瓦", + "block.gtceu.dark_concrete_tile": "深色混凝土瓦", + "block.gtceu.dark_concrete_windmill_a": "深色混凝土风车形瓦 A", + "block.gtceu.dark_concrete_windmill_b": "深色混凝土风车形瓦 B", + "block.gtceu.data_access_hatch": "数据访问仓", + "block.gtceu.data_bank": "数据库", + "block.gtceu.data_receiver_hatch": "光学数据靶仓", + "block.gtceu.data_transmitter_hatch": "光学数据源仓", + "block.gtceu.distillation_tower": "蒸馏塔", + "block.gtceu.electric_blast_furnace": "电力高炉", + "block.gtceu.electrolytic_cell": "电解器", + "block.gtceu.empty_tier_i_battery": "空电容(Tier I)", + "block.gtceu.empty_tier_ii_battery": "空电容(Tier II)", + "block.gtceu.empty_tier_iii_battery": "空电容(Tier III)", + "block.gtceu.engine_intake_casing": "引擎进气机械方块", + "block.gtceu.ev_16a_energy_converter": "16§e安§r§5EV§r能量转换器", + "block.gtceu.ev_1a_energy_converter": "1§e安§r§5EV§r能量转换器", + "block.gtceu.ev_4a_energy_converter": "4§e安§r§5EV§r能量转换器", + "block.gtceu.ev_8a_energy_converter": "8§e安§r§5EV§r能量转换器", + "block.gtceu.ev_air_scrubber": "§5进阶空气净化器 III§r", + "block.gtceu.ev_alloy_smelter": "§5进阶合金炉 III§r", + "block.gtceu.ev_arc_furnace": "§5进阶电弧炉 III§r", + "block.gtceu.ev_assembler": "§5进阶组装机 III§r", + "block.gtceu.ev_autoclave": "§5进阶高压釜 III§r", + "block.gtceu.ev_battery_buffer_16x": "16x§5超高压§r电池箱(§5EV§r)", + "block.gtceu.ev_battery_buffer_4x": "4x§5超高压§r电池箱(§5EV§r)", + "block.gtceu.ev_battery_buffer_8x": "8x§5超高压§r电池箱(§5EV§r)", + "block.gtceu.ev_bedrock_ore_miner": "§5进阶基岩采矿机 III§r", + "block.gtceu.ev_bender": "§5进阶卷板机 III§r", + "block.gtceu.ev_block_breaker": "§5进阶方块破坏器 III§r", + "block.gtceu.ev_brewery": "§5进阶酿造室 III§r", + "block.gtceu.ev_canner": "§5进阶装罐机 III§r", + "block.gtceu.ev_centrifuge": "§5进阶离心机 III§r", + "block.gtceu.ev_charger_4x": "4x§5超高压§r闪聚充电箱(§5EV§r)", + "block.gtceu.ev_chemical_bath": "§5进阶化学浸洗机 III§r", + "block.gtceu.ev_chemical_reactor": "§5进阶化学反应釜 III§r", + "block.gtceu.ev_circuit_assembler": "§5进阶电路组装机 III§r", + "block.gtceu.ev_compressor": "§5进阶压缩机 III§r", + "block.gtceu.ev_cutter": "§5进阶切割机 III§r", + "block.gtceu.ev_diode": "§5EV§r二极管", + "block.gtceu.ev_distillery": "§5进阶蒸馏室 III§r", + "block.gtceu.ev_electric_furnace": "§5进阶电炉 III§r", + "block.gtceu.ev_electrolyzer": "§5进阶电解机 III§r", + "block.gtceu.ev_electromagnetic_separator": "§5进阶电磁选矿机 III§r", + "block.gtceu.ev_energy_input_hatch": "§5EV§r能源仓", + "block.gtceu.ev_energy_input_hatch_16a": "16安§5EV§r能源仓", + "block.gtceu.ev_energy_input_hatch_4a": "4安§5EV§r能源仓 ", + "block.gtceu.ev_energy_output_hatch": "§5EV§r动力仓", + "block.gtceu.ev_energy_output_hatch_16a": "16安§5EV§r动力仓", + "block.gtceu.ev_energy_output_hatch_4a": "4安§5EV§r动力仓", + "block.gtceu.ev_extractor": "§5进阶提取机 III§r", + "block.gtceu.ev_extruder": "§5进阶压模器 III§r", + "block.gtceu.ev_fermenter": "§5进阶发酵槽 III§r", + "block.gtceu.ev_fisher": "§5进阶捕鱼机 III§r", + "block.gtceu.ev_fluid_drilling_rig": "§5进阶流体钻机 III§r", + "block.gtceu.ev_fluid_heater": "§5进阶流体加热器 III§r", + "block.gtceu.ev_fluid_passthrough_hatch": "§5EV§r流体通行仓", + "block.gtceu.ev_fluid_solidifier": "§5进阶流体固化器 III§r", + "block.gtceu.ev_forge_hammer": "§5进阶锻造锤 III§r", + "block.gtceu.ev_forming_press": "§5进阶冲压机床 III§r", + "block.gtceu.ev_gas_collector": "§5进阶集气室 III§r", + "block.gtceu.ev_hermetic_casing": "密封机械方块 IV", + "block.gtceu.ev_input_bus": "§5EV§r输入总线", + "block.gtceu.ev_input_hatch": "§5EV§r输入仓", + "block.gtceu.ev_input_hatch_4x": "§5EV§r四重输入仓", + "block.gtceu.ev_input_hatch_9x": "§5EV§r九重输入仓", + "block.gtceu.ev_item_collector": "§5进阶物品收集器 III§r", + "block.gtceu.ev_item_passthrough_hatch": "§5EV§r物品通行仓", + "block.gtceu.ev_lapotronic_battery": "兰波顿电容(§5EV§r)", + "block.gtceu.ev_large_miner": "§5进阶大型采矿机 III§r", + "block.gtceu.ev_laser_engraver": "§5进阶激光蚀刻机 III§r", + "block.gtceu.ev_lathe": "§5进阶车床 III§r", + "block.gtceu.ev_macerator": "§5进阶研磨机 III§r", + "block.gtceu.ev_machine_casing": "§5EV§r机械方块", + "block.gtceu.ev_machine_hull": "§5EV§f机器外壳", + "block.gtceu.ev_mixer": "§5进阶搅拌机 III§r", + "block.gtceu.ev_muffler_hatch": "§5EV§r消声仓", + "block.gtceu.ev_ore_washer": "§5进阶洗矿厂 III§r", + "block.gtceu.ev_output_bus": "§5EV§r输出总线", + "block.gtceu.ev_output_hatch": "§5EV§r输出仓", + "block.gtceu.ev_output_hatch_4x": "§5EV§r四重输出仓", + "block.gtceu.ev_output_hatch_9x": "§5EV§r九重输出仓", + "block.gtceu.ev_packer": "§5进阶打包机 III§r", + "block.gtceu.ev_polarizer": "§5进阶两极磁化机 III§r", + "block.gtceu.ev_pump": "§5进阶泵 III§r", + "block.gtceu.ev_rock_crusher": "§5进阶碎岩机 III§r", + "block.gtceu.ev_rotor_holder": "§5EV§r转子支架", + "block.gtceu.ev_scanner": "§5进阶扫描仪 III§r", + "block.gtceu.ev_sifter": "§5进阶筛选机 III§r", + "block.gtceu.ev_substation_input_hatch_64a": "64安§5EV§r变电能源仓", + "block.gtceu.ev_substation_output_hatch_64a": "64安§5EV§r变电动力仓", + "block.gtceu.ev_super_chest": "超级箱 IV", + "block.gtceu.ev_super_tank": "超级缸 IV", + "block.gtceu.ev_thermal_centrifuge": "§5进阶热力离心机 III§r", + "block.gtceu.ev_transformer_16a": "§5超高压§r高能变压器(§5EV§r)", + "block.gtceu.ev_transformer_1a": "§5超高压§r变压器(§5EV§r)", + "block.gtceu.ev_transformer_2a": "§5超高压§r进阶变压器(§5EV§r)", + "block.gtceu.ev_transformer_4a": "§5超高压§r高流变压器(§5EV§r)", + "block.gtceu.ev_wiremill": "§5进阶线材轧机 III§r", + "block.gtceu.ev_world_accelerator": "§5进阶世界加速器 III§r", + "block.gtceu.explosion_hazard_sign_block": "爆炸危害警示方块", + "block.gtceu.explosive.breaking_tooltip": "破坏它会引爆火药,潜行挖掘以重新拾取", + "block.gtceu.explosive.lighting_tooltip": "无法用红石信号引爆", + "block.gtceu.extreme_combustion_engine": "极限内燃引擎", + "block.gtceu.extreme_engine_intake_casing": "极限引擎进气机械方块", + "block.gtceu.filter_casing": "过滤器机械方块", + "block.gtceu.fire_hazard_sign_block": "易燃危害警示方块", + "block.gtceu.firebricks": "耐火砖块", + "block.gtceu.foam": "建筑泡沫", + "block.gtceu.frost_hazard_sign_block": "低温危害警示方块", + "block.gtceu.frostproof_machine_casing": "铝制防冻机械方块", + "block.gtceu.fusion_casing": "聚变机械方块", + "block.gtceu.fusion_casing_mk2": "聚变机械方块 MK-II", + "block.gtceu.fusion_casing_mk3": "聚变机械方块 MK-III", + "block.gtceu.fusion_coil": "聚变线圈方块", + "block.gtceu.fusion_glass": "聚变玻璃", + "block.gtceu.gas_large_turbine": "大型燃气涡轮", + "block.gtceu.generic_hazard_sign_block": "泛用危害警示方块", + "block.gtceu.gold_drum": "金桶", + "block.gtceu.gray_borderless_lamp": "灰色无框灯", + "block.gtceu.gray_lamp": "灰色灯", + "block.gtceu.gray_large_metal_sheet": "灰色粗纹金属板方块", + "block.gtceu.gray_metal_sheet": "灰色金属板方块", + "block.gtceu.gray_studs": "灰色橡胶混凝土", + "block.gtceu.green_borderless_lamp": "绿色无框灯", + "block.gtceu.green_lamp": "绿色灯", + "block.gtceu.green_large_metal_sheet": "绿色粗纹金属板方块", + "block.gtceu.green_metal_sheet": "绿色金属板方块", + "block.gtceu.green_studs": "绿色橡胶混凝土", + "block.gtceu.gregification_hazard_sign_block": "格雷化危害警示方块", + "block.gtceu.heat_vent": "散热片", + "block.gtceu.heatproof_machine_casing": "殷钢隔热机械方块", + "block.gtceu.high_performance_computation_array": "高性能计算阵列(HPCA)", + "block.gtceu.high_power_casing": "高能机械方块", + "block.gtceu.high_pressure_hazard_sign_block": "高压力危害警示方块", + "block.gtceu.high_temperature_hazard_sign_block": "高温危害警示方块", + "block.gtceu.high_temperature_smelting_casing": "高温冶炼机械方块", + "block.gtceu.high_voltage_hazard_sign_block": "高压电危害警示方块", + "block.gtceu.hp_steam_alloy_smelter": "高压蒸汽合金炉", + "block.gtceu.hp_steam_compressor": "高压蒸汽压缩机", + "block.gtceu.hp_steam_extractor": "高压蒸汽提取机", + "block.gtceu.hp_steam_forge_hammer": "高压蒸汽锻造锤", + "block.gtceu.hp_steam_furnace": "高压蒸汽熔炉", + "block.gtceu.hp_steam_liquid_boiler": "高压蒸汽液体燃料锅炉", + "block.gtceu.hp_steam_macerator": "高压蒸汽研磨机", + "block.gtceu.hp_steam_miner": "高压蒸汽采矿机", + "block.gtceu.hp_steam_rock_crusher": "高压蒸汽碎岩机", + "block.gtceu.hp_steam_solar_boiler": "高压蒸汽太阳能锅炉", + "block.gtceu.hp_steam_solid_boiler": "高压蒸汽固体燃料锅炉", + "block.gtceu.hpca_active_cooler_component": "HPCA主动冷却组件", + "block.gtceu.hpca_advanced_computation_component": "HPCA高级计算组件", + "block.gtceu.hpca_bridge_component": "HPCA桥接组件", + "block.gtceu.hpca_computation_component": "HPCA计算组件", + "block.gtceu.hpca_empty_component": "空HPCA组件", + "block.gtceu.hpca_heat_sink_component": "HPCA散热组件", + "block.gtceu.hssg_coil_block": "高速钢-G线圈方块", + "block.gtceu.huge_duct_pipe": "巨型风管", + "block.gtceu.hv_16a_energy_converter": "16§e安§r§6HV§r能量转换器", + "block.gtceu.hv_1a_energy_converter": "1§e安§r§6HV§r能量转换器", + "block.gtceu.hv_4a_energy_converter": "4§e安§r§6HV§r能量转换器", + "block.gtceu.hv_8a_energy_converter": "8§e安§r§6HV§r能量转换器", + "block.gtceu.hv_air_scrubber": "§6进阶空气净化器 II§r", + "block.gtceu.hv_alloy_smelter": "§6进阶合金炉 II§r", + "block.gtceu.hv_arc_furnace": "§6进阶电弧炉 II§r", + "block.gtceu.hv_assembler": "§6进阶组装机 II§r", + "block.gtceu.hv_autoclave": "§6进阶高压釜 II§r", + "block.gtceu.hv_battery_buffer_16x": "16x§6高压§r电池箱(§6HV§r)", + "block.gtceu.hv_battery_buffer_4x": "4x§6高压§r电池箱(§6HV§r)", + "block.gtceu.hv_battery_buffer_8x": "8x§6高压§r电池箱(§6HV§r)", + "block.gtceu.hv_bedrock_ore_miner": "§6进阶基岩采矿机 II§r", + "block.gtceu.hv_bender": "§6进阶卷板机 II§r", + "block.gtceu.hv_block_breaker": "§6进阶方块破坏机 II§r", + "block.gtceu.hv_brewery": "§6进阶酿造室 II§r", + "block.gtceu.hv_buffer": "§6进阶缓存器 II§r", + "block.gtceu.hv_canner": "§6进阶装罐机 II§r", + "block.gtceu.hv_centrifuge": "§6进阶离心机 II§r", + "block.gtceu.hv_charger_4x": "4x§6高压§r闪聚充电箱(§6HV§r)", + "block.gtceu.hv_chemical_bath": "§6进阶化学浸洗机 II§r", + "block.gtceu.hv_chemical_reactor": "§6进阶化学反应釜 II§r", + "block.gtceu.hv_circuit_assembler": "§6进阶电路组装机 II§r", + "block.gtceu.hv_combustion": "§6进阶内燃发电机 II§r", + "block.gtceu.hv_compressor": "§6进阶压缩机 II§r", + "block.gtceu.hv_cutter": "§6进阶切割机 II§r", + "block.gtceu.hv_diode": "§6HV§r二极管", + "block.gtceu.hv_distillery": "§6进阶蒸馏室 II§r", + "block.gtceu.hv_electric_furnace": "§6进阶电炉 II§r", + "block.gtceu.hv_electrolyzer": "§6进阶电解机 II§r", + "block.gtceu.hv_electromagnetic_separator": "§6进阶电磁选矿机 II§r", + "block.gtceu.hv_energy_input_hatch": "§6HV§r能源仓", + "block.gtceu.hv_energy_output_hatch": "§6HV§r动力仓", + "block.gtceu.hv_extractor": "§6进阶提取机 II§r", + "block.gtceu.hv_extruder": "§6进阶压模器 II§r", + "block.gtceu.hv_fermenter": "§6进阶发酵槽 II§r", + "block.gtceu.hv_fisher": "§6进阶捕鱼机 II§r", + "block.gtceu.hv_fluid_drilling_rig": "§6进阶流体钻机 II§r", + "block.gtceu.hv_fluid_heater": "§6进阶流体加热器 II§r", + "block.gtceu.hv_fluid_passthrough_hatch": "§6HV§r流体通行仓", + "block.gtceu.hv_fluid_solidifier": "§6进阶流体固化器 II§r", + "block.gtceu.hv_forge_hammer": "§6进阶锻造锤 II§r", + "block.gtceu.hv_forming_press": "§6进阶冲压机床 II§r", + "block.gtceu.hv_gas_collector": "§6进阶集气室 II§r", + "block.gtceu.hv_gas_turbine": "§6进阶燃气轮机 II§r", + "block.gtceu.hv_hermetic_casing": "密封机械方块 III", + "block.gtceu.hv_input_bus": "§6HV§r输入总线", + "block.gtceu.hv_input_hatch": "§6HV§r输入仓", + "block.gtceu.hv_item_collector": "§6进阶物品收集器 II§r", + "block.gtceu.hv_item_passthrough_hatch": "§6HV§r物品通行仓", + "block.gtceu.hv_laser_engraver": "§6进阶激光蚀刻机 II§r", + "block.gtceu.hv_lathe": "§6进阶车床 II§r", + "block.gtceu.hv_macerator": "§6进阶研磨机 II§r", + "block.gtceu.hv_machine_casing": "§6HV§r机械方块", + "block.gtceu.hv_machine_hull": "§6HV§f机器外壳", + "block.gtceu.hv_miner": "§6进阶采矿机 II§r", + "block.gtceu.hv_mixer": "§6进阶搅拌机 II§r", + "block.gtceu.hv_muffler_hatch": "§6HV§r消声仓", + "block.gtceu.hv_ore_washer": "§6进阶洗矿厂 II§r", + "block.gtceu.hv_output_bus": "§6HV§r输出总线", + "block.gtceu.hv_output_hatch": "§6HV§r输出仓", + "block.gtceu.hv_packer": "§6进阶打包机 II§r", + "block.gtceu.hv_polarizer": "§6进阶两极磁化机 II§r", + "block.gtceu.hv_pump": "§6进阶泵 II§r", + "block.gtceu.hv_rock_crusher": "§6进阶碎岩机 II§r", + "block.gtceu.hv_rotor_holder": "§6HV§r转子支架", + "block.gtceu.hv_scanner": "§6进阶扫描仪 II§r", + "block.gtceu.hv_sifter": "§6进阶筛选机 II§r", + "block.gtceu.hv_steam_turbine": "§6进阶蒸汽轮机 II§r", + "block.gtceu.hv_super_chest": "超级箱 III", + "block.gtceu.hv_super_tank": "超级缸 III", + "block.gtceu.hv_thermal_centrifuge": "§6进阶热力离心机 II§r", + "block.gtceu.hv_transformer_16a": "§6高压§r高能变压器(§6HV§r)", + "block.gtceu.hv_transformer_1a": "§6高压§r变压器(§6HV§r)", + "block.gtceu.hv_transformer_2a": "§6高压§r进阶变压器(§6HV§r)", + "block.gtceu.hv_transformer_4a": "§6高压§r高流变压器(§6HV§r)", + "block.gtceu.hv_wiremill": "§6进阶线材轧机 II§r", + "block.gtceu.hv_world_accelerator": "§6进阶世界加速器 II§r", + "block.gtceu.implosion_compressor": "聚爆压缩机", + "block.gtceu.industrial_steam_casing": "工业蒸汽机械方块", + "block.gtceu.industrial_tnt": "工业TNT", + "block.gtceu.inert_machine_casing": "聚四氟乙烯化学惰性机械方块", + "block.gtceu.itnt.drops_tooltip": "爆炸范围比TNT大得多,所有被摧毁的方块都会掉落", + "block.gtceu.iv_1024a_laser_source_hatch": "1024§e安§r§9IV§r激光源仓", + "block.gtceu.iv_1024a_laser_target_hatch": "1024§e安§r§9IV§r激光靶仓", + "block.gtceu.iv_16a_energy_converter": "16§e安§r§9IV§r能量转换器", + "block.gtceu.iv_1a_energy_converter": "1§e安§r§9IV§r能量转换器", + "block.gtceu.iv_256a_laser_source_hatch": "256§e安§r§9IV§r激光源仓", + "block.gtceu.iv_256a_laser_target_hatch": "256§e安§r§9IV§r激光靶仓", + "block.gtceu.iv_4096a_laser_source_hatch": "4096§e安§r§9IV§r激光源仓", + "block.gtceu.iv_4096a_laser_target_hatch": "4096§e安§r§9IV§r激光靶仓", + "block.gtceu.iv_4a_energy_converter": "4§e安§r§9IV§r能量转换器", + "block.gtceu.iv_8a_energy_converter": "8§e安§r§9IV§r能量转换器", + "block.gtceu.iv_alloy_smelter": "§9精英合金炉§r", + "block.gtceu.iv_arc_furnace": "§9精英电弧炉§r", + "block.gtceu.iv_assembler": "§9精英组装机§r", + "block.gtceu.iv_autoclave": "§9精英高压釜§r", + "block.gtceu.iv_battery_buffer_16x": "16x§9强导压§r电池箱(§9IV§r)", + "block.gtceu.iv_battery_buffer_4x": "4x§9强导压§r电池箱(§9IV§r)", + "block.gtceu.iv_battery_buffer_8x": "8x§9强导压§r电池箱(§9IV§r)", + "block.gtceu.iv_bender": "§9精英卷板机§r", + "block.gtceu.iv_brewery": "§9精英酿造室§r", + "block.gtceu.iv_canner": "§9精英装罐机§r", + "block.gtceu.iv_centrifuge": "§9精英离心机§r", + "block.gtceu.iv_charger_4x": "4x§9强导压§r闪聚充电箱(§9IV§r)", + "block.gtceu.iv_chemical_bath": "§9精英化学浸洗机§r", + "block.gtceu.iv_chemical_reactor": "§9精英化学反应釜§r", + "block.gtceu.iv_circuit_assembler": "§9精英电路组装机§r", + "block.gtceu.iv_compressor": "§9精英压缩机§r", + "block.gtceu.iv_cutter": "§9精英切割机§r", + "block.gtceu.iv_diode": "§9IV§r二极管", + "block.gtceu.iv_distillery": "§9精英蒸馏室§r", + "block.gtceu.iv_electric_furnace": "§9精英电炉§r", + "block.gtceu.iv_electrolyzer": "§9精英电解机§r", + "block.gtceu.iv_electromagnetic_separator": "§9精英电磁选矿机§r", + "block.gtceu.iv_energy_input_hatch": "§9IV§r能源仓", + "block.gtceu.iv_energy_input_hatch_16a": "16安§9IV§r能源仓", + "block.gtceu.iv_energy_input_hatch_4a": "4安§9IV§r能源仓", + "block.gtceu.iv_energy_output_hatch": "§9IV§r动力仓", + "block.gtceu.iv_energy_output_hatch_16a": "16安§9IV§r动力仓", + "block.gtceu.iv_energy_output_hatch_4a": "4安§9IV§r动力仓", + "block.gtceu.iv_extractor": "§9精英提取机§r", + "block.gtceu.iv_extruder": "§9精英压模器§r", + "block.gtceu.iv_fermenter": "§9精英发酵槽§r", + "block.gtceu.iv_fisher": "§9精英捕鱼机§r", + "block.gtceu.iv_fluid_heater": "§9精英流体加热器§r", + "block.gtceu.iv_fluid_passthrough_hatch": "§9IV§r流体通行仓", + "block.gtceu.iv_fluid_solidifier": "§9精英流体固化器§r", + "block.gtceu.iv_forge_hammer": "§9精英锻造锤§r", + "block.gtceu.iv_forming_press": "§9精英冲压机床§r", + "block.gtceu.iv_gas_collector": "§9精英集气室§r", + "block.gtceu.iv_hermetic_casing": "密封机械方块 V", + "block.gtceu.iv_input_bus": "§9IV§r输入总线", + "block.gtceu.iv_input_hatch": "§9IV§r输入仓", + "block.gtceu.iv_input_hatch_4x": "§9IV§r四重输入仓", + "block.gtceu.iv_input_hatch_9x": "§9IV§r九重输入仓", + "block.gtceu.iv_item_passthrough_hatch": "§9IV§r物品通行仓", + "block.gtceu.iv_lapotronic_battery": "兰波顿电容(§1IV§r)", + "block.gtceu.iv_large_miner": "§9精英大型采矿机§r", + "block.gtceu.iv_laser_engraver": "§9精英激光蚀刻机§r", + "block.gtceu.iv_lathe": "§9精英车床§r", + "block.gtceu.iv_macerator": "§9精英研磨机§r", + "block.gtceu.iv_machine_casing": "§9IV§r机械方块", + "block.gtceu.iv_machine_hull": "§9IV§f机器外壳", + "block.gtceu.iv_mixer": "§9精英搅拌机§r", + "block.gtceu.iv_muffler_hatch": "§9IV§r消声仓", + "block.gtceu.iv_ore_washer": "§9精英洗矿厂§r", + "block.gtceu.iv_output_bus": "§9IV§r输出总线", + "block.gtceu.iv_output_hatch": "§9IV§r输出仓", + "block.gtceu.iv_output_hatch_4x": "§9IV§r四重输出仓", + "block.gtceu.iv_output_hatch_9x": "§9IV§r九重输出仓", + "block.gtceu.iv_packer": "§9精英打包机§r", + "block.gtceu.iv_parallel_hatch": "§9IV§r并行控制仓", + "block.gtceu.iv_polarizer": "§9精英两极磁化机§r", + "block.gtceu.iv_quantum_chest": "量子箱 V", + "block.gtceu.iv_quantum_tank": "量子缸 V", + "block.gtceu.iv_rock_crusher": "§9精英碎岩机§r", + "block.gtceu.iv_rotor_holder": "§9IV§r转子支架", + "block.gtceu.iv_scanner": "§9精英扫描仪§r", + "block.gtceu.iv_sifter": "§9精英筛选机§r", + "block.gtceu.iv_substation_input_hatch_64a": "64安§9IV§r变电能源仓", + "block.gtceu.iv_substation_output_hatch_64a": "64安§9IV§r变电动力仓", + "block.gtceu.iv_thermal_centrifuge": "§9精英热力离心机§r", + "block.gtceu.iv_transformer_16a": "§9强导压§r高能变压器(§9IV§r)", + "block.gtceu.iv_transformer_1a": "§9强导压§r变压器(§9IV§r)", + "block.gtceu.iv_transformer_2a": "§9强导压§r进阶变压器(§9IV§r)", + "block.gtceu.iv_transformer_4a": "§9强导压§r高流变压器(§9IV§r)", + "block.gtceu.iv_wiremill": "§9精英线材轧机§r", + "block.gtceu.iv_world_accelerator": "§9精英世界加速器§r", + "block.gtceu.kanthal_coil_block": "坎塔尔合金线圈方块", + "block.gtceu.laminated_glass": "夹层玻璃", + "block.gtceu.lamp.tooltip.inverted": "反相", + "block.gtceu.lamp.tooltip.no_bloom": "无泛光", + "block.gtceu.lamp.tooltip.no_light": "无光照", + "block.gtceu.large_arc_smelter": "大型电弧炉", + "block.gtceu.large_assembler": "大型组装厂", + "block.gtceu.large_autoclave": "大型高压结晶室", + "block.gtceu.large_brewer": "大型酿造厂", + "block.gtceu.large_centrifuge": "大型离心机组", + "block.gtceu.large_chemical_bath": "大型化学浸洗机", + "block.gtceu.large_chemical_reactor": "大型化学反应釜", + "block.gtceu.large_circuit_assembler": "大型电路组装设施", + "block.gtceu.large_combustion_engine": "大型内燃引擎", + "block.gtceu.large_cutter": "大型切割机", + "block.gtceu.large_distillery": "大型分馏蒸馏厂", + "block.gtceu.large_duct_pipe": "大型风管", + "block.gtceu.large_electrolyzer": "大型电解槽", + "block.gtceu.large_electromagnet": "大型电磁工厂", + "block.gtceu.large_engraving_laser": "大型激光蚀刻机", + "block.gtceu.large_extractor": "大型提取机", + "block.gtceu.large_extruder": "大型压模机", + "block.gtceu.large_maceration_tower": "大型研磨塔", + "block.gtceu.large_material_press": "大型挤压机", + "block.gtceu.large_mixer": "大型搅拌罐", + "block.gtceu.large_packer": "大型打包机", + "block.gtceu.large_scale_assembler_casing": "大型组装机机械方块", + "block.gtceu.large_sifting_funnel": "大型筛选漏斗", + "block.gtceu.large_solidifier": "大型固化阵列", + "block.gtceu.large_wiremill": "大型线材工厂", + "block.gtceu.laser_hazard_sign_block": "激光危害警示方块", + "block.gtceu.laser_safe_engraving_casing": "激光安全机械方块", + "block.gtceu.light_blue_borderless_lamp": "淡蓝色无框灯", + "block.gtceu.light_blue_lamp": "淡蓝色灯", + "block.gtceu.light_blue_large_metal_sheet": "淡蓝色粗纹金属板方块", + "block.gtceu.light_blue_metal_sheet": "淡蓝色金属板方块", + "block.gtceu.light_blue_studs": "淡蓝色橡胶混凝土", + "block.gtceu.light_concrete": "淡色混凝土", + "block.gtceu.light_concrete_bricks": "淡色混凝土砖", + "block.gtceu.light_concrete_cobblestone": "淡色混凝土圆石", + "block.gtceu.light_concrete_small_tile": "淡色混凝土小片瓦", + "block.gtceu.light_concrete_tile": "淡色混凝土瓦", + "block.gtceu.light_concrete_windmill_a": "淡色混凝土风车形瓦 A", + "block.gtceu.light_concrete_windmill_b": "淡色混凝土风车形瓦 B", + "block.gtceu.light_gray_borderless_lamp": "淡灰色无框灯", + "block.gtceu.light_gray_lamp": "淡灰色灯", + "block.gtceu.light_gray_large_metal_sheet": "淡灰色粗纹金属板方块", + "block.gtceu.light_gray_metal_sheet": "淡灰色金属板方块", + "block.gtceu.light_gray_studs": "淡灰色橡胶混凝土", + "block.gtceu.lime_borderless_lamp": "黄绿色无框灯", + "block.gtceu.lime_lamp": "黄绿色灯", + "block.gtceu.lime_large_metal_sheet": "黄绿色粗纹金属板方块", + "block.gtceu.lime_metal_sheet": "黄绿色金属板方块", + "block.gtceu.lime_studs": "黄绿色橡胶混凝土", + "block.gtceu.long_distance_fluid_pipeline": "长距离流体管道", + "block.gtceu.long_distance_fluid_pipeline_endpoint": "长距离流体管道接口", + "block.gtceu.long_distance_item_pipeline": "长距离物品管道", + "block.gtceu.long_distance_item_pipeline_endpoint": "长距离物品管道接口", + "block.gtceu.long_distance_item_pipeline_input_endpoint": "输入接口", + "block.gtceu.long_distance_item_pipeline_input_pos": " - 输入:%s", + "block.gtceu.long_distance_item_pipeline_network_header": "网络:", + "block.gtceu.long_distance_item_pipeline_no_network": "找不到网络", + "block.gtceu.long_distance_item_pipeline_output_endpoint": "输出接口", + "block.gtceu.long_distance_item_pipeline_output_pos": " - 输出:%s", + "block.gtceu.long_distance_item_pipeline_pipe_count": " - 管道:%s", + "block.gtceu.lp_steam_alloy_smelter": "低压蒸汽合金炉", + "block.gtceu.lp_steam_compressor": "低压蒸汽压缩机", + "block.gtceu.lp_steam_extractor": "低压蒸汽提取机", + "block.gtceu.lp_steam_forge_hammer": "低压蒸汽锻造锤", + "block.gtceu.lp_steam_furnace": "低压蒸汽熔炉", + "block.gtceu.lp_steam_liquid_boiler": "低压蒸汽液体燃料锅炉", + "block.gtceu.lp_steam_macerator": "低压蒸汽研磨机", + "block.gtceu.lp_steam_miner": "低压蒸汽采矿机", + "block.gtceu.lp_steam_rock_crusher": "低压蒸汽碎岩机", + "block.gtceu.lp_steam_solar_boiler": "低压蒸汽太阳能锅炉", + "block.gtceu.lp_steam_solid_boiler": "低压蒸汽固体燃料锅炉", + "block.gtceu.luv_1024a_laser_source_hatch": "1024§e安§r§dLuV§r激光源仓", + "block.gtceu.luv_1024a_laser_target_hatch": "1024§e安§r§dLuV§r激光靶仓", + "block.gtceu.luv_16a_energy_converter": "16§e安§r§dLuV§r能量转换器", + "block.gtceu.luv_1a_energy_converter": "1§e安§r§dLuV§r能量转换器", + "block.gtceu.luv_256a_laser_source_hatch": "256§e安§r§dLuV§r激光源仓", + "block.gtceu.luv_256a_laser_target_hatch": "256§e安§r§dLuV§r激光靶仓", + "block.gtceu.luv_4096a_laser_source_hatch": "4096§e安§r§dLuV§r激光源仓", + "block.gtceu.luv_4096a_laser_target_hatch": "4096§e安§r§dLuV§r激光靶仓", + "block.gtceu.luv_4a_energy_converter": "4§e安§r§dLuV§r能量转换器", + "block.gtceu.luv_8a_energy_converter": "8§e安§r§dLuV§r能量转换器", + "block.gtceu.luv_alloy_smelter": "§d精英合金炉 II§r", + "block.gtceu.luv_arc_furnace": "§d精英电弧炉 II§r", + "block.gtceu.luv_assembler": "§d精英组装机 II§r", + "block.gtceu.luv_autoclave": "§d精英高压釜 II§r", + "block.gtceu.luv_battery_buffer_16x": "16x§d剧差压§r电池箱(§dLuV§r)", + "block.gtceu.luv_battery_buffer_4x": "4x§d剧差压§r电池箱(§dLuV§r)", + "block.gtceu.luv_battery_buffer_8x": "8x§d剧差压§r电池箱(§dLuV§r)", + "block.gtceu.luv_bender": "§d精英卷板机 II§r", + "block.gtceu.luv_brewery": "§d精英酿造室 II§r", + "block.gtceu.luv_canner": "§d精英装罐机 II§r", + "block.gtceu.luv_centrifuge": "§d精英离心机 II§r", + "block.gtceu.luv_charger_4x": "4x§d剧差压§r闪聚充电箱(§dLuV§r)", + "block.gtceu.luv_chemical_bath": "§d精英化学浸洗机 II§r", + "block.gtceu.luv_chemical_reactor": "§d精英化学反应釜 II§r", + "block.gtceu.luv_circuit_assembler": "§d精英电路组装机 II§r", + "block.gtceu.luv_compressor": "§d精英压缩机 II§r", + "block.gtceu.luv_cutter": "§d精英切割机 II§r", + "block.gtceu.luv_diode": "§dLuV§r二极管", + "block.gtceu.luv_distillery": "§d精英蒸馏室 II§r", + "block.gtceu.luv_dual_input_hatch": "§dLuV§r输入总成", + "block.gtceu.luv_dual_output_hatch": "§dLuV§r输出总成", + "block.gtceu.luv_electric_furnace": "§d精英电炉 II§r", + "block.gtceu.luv_electrolyzer": "§d精英电解机 II§r", + "block.gtceu.luv_electromagnetic_separator": "§d精英电磁选矿机 II§r", + "block.gtceu.luv_energy_input_hatch": "§dLuV§r能源仓", + "block.gtceu.luv_energy_input_hatch_16a": "16安§dLuV§r能源仓", + "block.gtceu.luv_energy_input_hatch_4a": "4安§dLuV§r能源仓", + "block.gtceu.luv_energy_output_hatch": "§dLuV§r动力仓", + "block.gtceu.luv_energy_output_hatch_16a": "16安§dLuV§r动力仓", + "block.gtceu.luv_energy_output_hatch_4a": "4安§dLuV§r动力仓", + "block.gtceu.luv_extractor": "§d精英提取机 II§r", + "block.gtceu.luv_extruder": "§d精英压模器 II§r", + "block.gtceu.luv_fermenter": "§d精英发酵槽 II§r", + "block.gtceu.luv_fisher": "§d精英捕鱼机 II§r", + "block.gtceu.luv_fluid_heater": "§d精英流体加热器 II§r", + "block.gtceu.luv_fluid_passthrough_hatch": "§dLuV§r流体通行仓", + "block.gtceu.luv_fluid_solidifier": "§d精英流体固化器 II§r", + "block.gtceu.luv_forge_hammer": "§d精英锻造锤 II§r", + "block.gtceu.luv_forming_press": "§d精英冲压机床 II§r", + "block.gtceu.luv_fusion_reactor": "核聚变反应堆控制电脑 MK-I", + "block.gtceu.luv_gas_collector": "§d精英集气室 II§r", + "block.gtceu.luv_hermetic_casing": "密封机械方块 VI", + "block.gtceu.luv_input_bus": "§dLuV§r输入总线", + "block.gtceu.luv_input_hatch": "§dLuV§r输入仓", + "block.gtceu.luv_input_hatch_4x": "§dLuV§r四重输入仓", + "block.gtceu.luv_input_hatch_9x": "§dLuV§r九重输入仓", + "block.gtceu.luv_item_passthrough_hatch": "§dLuV§r物品通行仓", + "block.gtceu.luv_lapotronic_battery": "兰波顿电容(§dLuV§r)", + "block.gtceu.luv_large_miner": "§d精英大型采矿机 II§r", + "block.gtceu.luv_laser_engraver": "§d精英激光蚀刻机 II§r", + "block.gtceu.luv_lathe": "§d精英车床 II§r", + "block.gtceu.luv_macerator": "§d精英研磨机 II§r", + "block.gtceu.luv_machine_casing": "§dLuV§r机械方块", + "block.gtceu.luv_machine_hull": "§dLuV§f机器外壳", + "block.gtceu.luv_mixer": "§d精英搅拌机 II§r", + "block.gtceu.luv_muffler_hatch": "§dLuV§r消声仓", + "block.gtceu.luv_ore_washer": "§d精英洗矿厂 II§r", + "block.gtceu.luv_output_bus": "§dLuV§r输出总线", + "block.gtceu.luv_output_hatch": "§dLuV§r输出仓", + "block.gtceu.luv_output_hatch_4x": "§dLuV§r四重输出仓", + "block.gtceu.luv_output_hatch_9x": "§dLuV§r九重输出仓", + "block.gtceu.luv_packer": "§d精英打包机 II§r", + "block.gtceu.luv_parallel_hatch": "§dLuV§r并行控制仓", + "block.gtceu.luv_polarizer": "§d精英两极磁化机 II§r", + "block.gtceu.luv_quantum_chest": "量子箱 VI", + "block.gtceu.luv_quantum_tank": "量子缸 VI", + "block.gtceu.luv_rock_crusher": "§d精英碎岩机 II§r", + "block.gtceu.luv_rotor_holder": "§dLuV§r转子支架", + "block.gtceu.luv_scanner": "§d精英扫描仪 II§r", + "block.gtceu.luv_sifter": "§d精英筛选机 II§r", + "block.gtceu.luv_substation_input_hatch_64a": "64安§dLuV§r变电能源仓", + "block.gtceu.luv_substation_output_hatch_64a": "64安§dLuV§r变电动力仓", + "block.gtceu.luv_thermal_centrifuge": "§d精英热力离心机 II§r", + "block.gtceu.luv_transformer_16a": "§d剧差压§r高能变压器(§dLuV§r)", + "block.gtceu.luv_transformer_1a": "§d剧差压§r变压器(§dLuV§r)", + "block.gtceu.luv_transformer_2a": "§d剧差压§r进阶变压器(§dLuV§r)", + "block.gtceu.luv_transformer_4a": "§d剧差压§r高流变压器(§dLuV§r)", + "block.gtceu.luv_wiremill": "§d精英线材轧机 II§r", + "block.gtceu.luv_world_accelerator": "§d精英世界加速器 II§r", + "block.gtceu.lv_16a_energy_converter": "16§e安§r§7LV§r能量转换器", + "block.gtceu.lv_1a_energy_converter": "1§e安§r§7LV§r能量转换器", + "block.gtceu.lv_4a_energy_converter": "4§e安§r§7LV§r能量转换器", + "block.gtceu.lv_8a_energy_converter": "8§e安§r§7LV§r能量转换器", + "block.gtceu.lv_air_scrubber": "基础空气净化器§r", + "block.gtceu.lv_alloy_smelter": "基础合金炉§r", + "block.gtceu.lv_arc_furnace": "基础电弧炉§r", + "block.gtceu.lv_assembler": "基础组装机§r", + "block.gtceu.lv_autoclave": "基础高压釜§r", + "block.gtceu.lv_battery_buffer_16x": "16x§7低压§r电池箱(§7LV§r)", + "block.gtceu.lv_battery_buffer_4x": "4x§7低压§r电池箱(§7LV§r)", + "block.gtceu.lv_battery_buffer_8x": "8x§7低压§r电池箱(§7LV§r)", + "block.gtceu.lv_bender": "基础卷板机§r", + "block.gtceu.lv_block_breaker": "基础方块破坏器§r", + "block.gtceu.lv_brewery": "基础酿造室§r", + "block.gtceu.lv_buffer": "基础缓存器§r", + "block.gtceu.lv_canner": "基础装罐机§r", + "block.gtceu.lv_centrifuge": "基础离心机§r", + "block.gtceu.lv_charger_4x": "4x§7低压§r闪聚充电箱(§7LV§r)", + "block.gtceu.lv_chemical_bath": "基础化学浸洗机§r", + "block.gtceu.lv_chemical_reactor": "基础化学反应釜§r", + "block.gtceu.lv_circuit_assembler": "基础电路组装机§r", + "block.gtceu.lv_combustion": "基础内燃发电机§r", + "block.gtceu.lv_compressor": "基础压缩机§r", + "block.gtceu.lv_cutter": "基础切割机§r", + "block.gtceu.lv_diode": "§7LV§r二极管", + "block.gtceu.lv_distillery": "基础蒸馏室§r", + "block.gtceu.lv_electric_furnace": "基础电炉§r", + "block.gtceu.lv_electrolyzer": "基础电解机§r", + "block.gtceu.lv_electromagnetic_separator": "基础电磁选矿机§r", + "block.gtceu.lv_energy_input_hatch": "§7LV§r能源仓", + "block.gtceu.lv_energy_output_hatch": "§7LV§r动力仓", + "block.gtceu.lv_extractor": "基础提取机§r", + "block.gtceu.lv_extruder": "基础压模器§r", + "block.gtceu.lv_fermenter": "基础发酵槽§r", + "block.gtceu.lv_fisher": "基础捕鱼机§r", + "block.gtceu.lv_fluid_heater": "基础流体加热器§r", + "block.gtceu.lv_fluid_passthrough_hatch": "§7LV§r流体通行仓", + "block.gtceu.lv_fluid_solidifier": "基础流体固化器§r", + "block.gtceu.lv_forge_hammer": "基础锻造锤§r", + "block.gtceu.lv_forming_press": "基础冲压机床§r", + "block.gtceu.lv_gas_collector": "基础集气室§r", + "block.gtceu.lv_gas_turbine": "基础燃气轮机§r", + "block.gtceu.lv_hermetic_casing": "密封机械方块 I", + "block.gtceu.lv_input_bus": "§7LV§r输入总线", + "block.gtceu.lv_input_hatch": "§7LV§r输入仓", + "block.gtceu.lv_item_collector": "基础物品收集器§r", + "block.gtceu.lv_item_passthrough_hatch": "§7LV§r物品通行仓", + "block.gtceu.lv_laser_engraver": "基础激光蚀刻机§r", + "block.gtceu.lv_lathe": "基础车床§r", + "block.gtceu.lv_macerator": "基础研磨机§r", + "block.gtceu.lv_machine_casing": "§7LV§r机械方块", + "block.gtceu.lv_machine_hull": "§7LV§f机器外壳", + "block.gtceu.lv_miner": "基础采矿机§r", + "block.gtceu.lv_mixer": "基础搅拌机§r", + "block.gtceu.lv_muffler_hatch": "§7LV§r消声仓", + "block.gtceu.lv_ore_washer": "基础洗矿厂§r", + "block.gtceu.lv_output_bus": "§7LV§r输出总线", + "block.gtceu.lv_output_hatch": "§7LV§r输出仓", + "block.gtceu.lv_packer": "基础打包机§r", + "block.gtceu.lv_polarizer": "基础两极磁化机§r", + "block.gtceu.lv_pump": "基础泵§r", + "block.gtceu.lv_rock_crusher": "基础碎岩机§r", + "block.gtceu.lv_scanner": "基础扫描仪§r", + "block.gtceu.lv_sifter": "基础筛选机§r", + "block.gtceu.lv_steam_turbine": "基础蒸汽轮机§r", + "block.gtceu.lv_super_chest": "超级箱 I", + "block.gtceu.lv_super_tank": "超级缸 I", + "block.gtceu.lv_thermal_centrifuge": "基础热力离心机§r", + "block.gtceu.lv_transformer_16a": "§7低压§r高能变压器(§7LV§r)", + "block.gtceu.lv_transformer_1a": "§7低压§r变压器(§7LV§r)", + "block.gtceu.lv_transformer_2a": "§7低压§r进阶变压器(§7LV§r)", + "block.gtceu.lv_transformer_4a": "§7低压§r高流变压器(§7LV§r)", + "block.gtceu.lv_wiremill": "基础线材轧机§r", + "block.gtceu.lv_world_accelerator": "基础世界加速器§r", + "block.gtceu.magenta_borderless_lamp": "品红色无框灯", + "block.gtceu.magenta_lamp": "品红色灯", + "block.gtceu.magenta_large_metal_sheet": "品红色粗纹金属板方块", + "block.gtceu.magenta_metal_sheet": "品红色金属板方块", + "block.gtceu.magenta_studs": "品红色橡胶混凝土", + "block.gtceu.magic_hazard_sign_block": "魔力危害警示方块", + "block.gtceu.magnetic_hazard_sign_block": "强磁危害警示方块", + "block.gtceu.maintenance_hatch": "维护仓", + "block.gtceu.marble": "大理岩", + "block.gtceu.marble_bricks": "大理岩砖", + "block.gtceu.marble_cobblestone": "大理岩圆石", + "block.gtceu.marble_small_tile": "大理岩小片瓦", + "block.gtceu.marble_tile": "大理岩瓦", + "block.gtceu.marble_windmill_a": "大理岩风车形瓦 A", + "block.gtceu.marble_windmill_b": "大理岩风车形瓦 B", + "block.gtceu.max_16a_energy_converter": "16§e安§r§c§lMAX§r能量转换器", + "block.gtceu.max_1a_energy_converter": "1§e安§r§c§lMAX§r能量转换器", + "block.gtceu.max_4a_energy_converter": "4§e安§r§c§lMAX§r能量转换器", + "block.gtceu.max_8a_energy_converter": "8§e安§r§c§lMAX§r能量转换器", + "block.gtceu.max_battery_buffer_16x": "16x§c上限压§r电池箱(§c§lMAX§r)", + "block.gtceu.max_battery_buffer_4x": "4x§c上限压§r电池箱(§c§lMAX§r)", + "block.gtceu.max_battery_buffer_8x": "8x§c上限压§r电池箱(§c§lMAX§r)", + "block.gtceu.max_charger_4x": "4x§c上限压§r闪聚充电箱(§c§lMAX§r)", + "block.gtceu.max_dual_input_hatch": "§c§lMAX§r输入总成", + "block.gtceu.max_dual_output_hatch": "§c§lMAX§r输出总成", + "block.gtceu.max_energy_input_hatch": "§c§lMAX§r能源仓", + "block.gtceu.max_energy_input_hatch_16a": "16安§c§lMAX§r能源仓", + "block.gtceu.max_energy_input_hatch_4a": "4安§c§lMAX§r能源仓", + "block.gtceu.max_energy_output_hatch": "§c§lMAX§r动力仓", + "block.gtceu.max_energy_output_hatch_16a": "16安§c§lMAX§r动力仓", + "block.gtceu.max_energy_output_hatch_4a": "4安§c§lMAX§r动力仓", + "block.gtceu.max_input_bus": "§c§lMAX§r输入总线", + "block.gtceu.max_input_hatch": "§c§lMAX§r输入仓", + "block.gtceu.max_input_hatch_4x": "§c§lMAX§r四重输入仓", + "block.gtceu.max_input_hatch_9x": "§c§lMAX§r九重输入仓", + "block.gtceu.max_machine_casing": "§c§lMAX§r机械方块", + "block.gtceu.max_machine_hull": "§c§lMAX§f机器外壳", + "block.gtceu.max_output_bus": "§c§lMAX§r输出总线", + "block.gtceu.max_output_hatch": "§c§lMAX§r输出仓", + "block.gtceu.max_output_hatch_4x": "§c§lMAX§r四重输出仓", + "block.gtceu.max_output_hatch_9x": "§c§lMAX§r九重输出仓", + "block.gtceu.max_substation_input_hatch_64a": "64安§c§lMAX§r变电能源仓", + "block.gtceu.max_substation_output_hatch_64a": "64安§c§lMAX§r变电动力仓", + "block.gtceu.me_input_bus": "ME输入总线", + "block.gtceu.me_input_hatch": "ME输入仓", + "block.gtceu.me_output_bus": "ME输出总线", + "block.gtceu.me_output_hatch": "ME输出仓", + "block.gtceu.me_pattern_buffer": "ME样板总成", + "block.gtceu.me_pattern_buffer_proxy": "ME样板总成镜像", + "block.gtceu.me_stocking_input_bus": "ME库存输入总线", + "block.gtceu.me_stocking_input_hatch": "ME库存输入仓", + "block.gtceu.mega_blast_furnace": "转底炉", + "block.gtceu.mega_vacuum_freezer": "巨型真空冷冻机", + "block.gtceu.miner_pipe": "采矿管道", + "block.gtceu.mob_infestation_hazard_sign_block": "怪物侵袭危害警示方块", + "block.gtceu.mob_spawner_hazard_sign_block": "刷怪笼危害警示方块", + "block.gtceu.molybdenum_disilicide_coil_block": "二硅化钼线圈方块", + "block.gtceu.mossy_dark_concrete_bricks": "覆苔深色混凝土砖", + "block.gtceu.mossy_dark_concrete_cobblestone": "覆苔深色混凝土圆石", + "block.gtceu.mossy_light_concrete_bricks": "覆苔淡色混凝土砖", + "block.gtceu.mossy_light_concrete_cobblestone": "覆苔淡色混凝土圆石", + "block.gtceu.mossy_marble_bricks": "覆苔大理岩砖", + "block.gtceu.mossy_marble_cobblestone": "覆苔大理岩圆石", + "block.gtceu.mossy_red_granite_bricks": "覆苔红花岗岩砖", + "block.gtceu.mossy_red_granite_cobblestone": "覆苔红花岗岩圆石", + "block.gtceu.multi_smelter": "工业熔炉", + "block.gtceu.mv_16a_energy_converter": "16§e安§r§bMV§r能量转换器", + "block.gtceu.mv_1a_energy_converter": "1§e安§r§bMV§r能量转换器", + "block.gtceu.mv_4a_energy_converter": "4§e安§r§bMV§r能量转换器", + "block.gtceu.mv_8a_energy_converter": "8§e安§r§bMV§r能量转换器", + "block.gtceu.mv_air_scrubber": "§b进阶空气净化器§r", + "block.gtceu.mv_alloy_smelter": "§b进阶合金炉§r", + "block.gtceu.mv_arc_furnace": "§b进阶电弧炉§r", + "block.gtceu.mv_assembler": "§b进阶组装机§r", + "block.gtceu.mv_autoclave": "§b进阶高压釜§r", + "block.gtceu.mv_battery_buffer_16x": "16x§b中压§r电池箱(§bMV§r)", + "block.gtceu.mv_battery_buffer_4x": "4x§b中压§r电池箱(§bMV§r)", + "block.gtceu.mv_battery_buffer_8x": "8x§b中压§r电池箱(§bMV§r)", + "block.gtceu.mv_bedrock_ore_miner": "§b进阶基岩采矿机§r", + "block.gtceu.mv_bender": "§b进阶卷板机§r", + "block.gtceu.mv_block_breaker": "§b进阶方块破坏器§r", + "block.gtceu.mv_brewery": "§b进阶酿造室§r", + "block.gtceu.mv_buffer": "§b进阶缓存器§r", + "block.gtceu.mv_canner": "§b进阶装罐机§r", + "block.gtceu.mv_centrifuge": "§b进阶离心机§r", + "block.gtceu.mv_charger_4x": "4x§b中压§r闪聚充电箱(§bMV§r)", + "block.gtceu.mv_chemical_bath": "§b进阶化学浸洗机§r", + "block.gtceu.mv_chemical_reactor": "§b进阶化学反应釜§r", + "block.gtceu.mv_circuit_assembler": "§b进阶电路组装机§r", + "block.gtceu.mv_combustion": "§b进阶内燃发电机§r", + "block.gtceu.mv_compressor": "§b进阶压缩机§r", + "block.gtceu.mv_cutter": "§b进阶切割机§r", + "block.gtceu.mv_diode": "§bMV§r二极管", + "block.gtceu.mv_distillery": "§b进阶蒸馏室§r", + "block.gtceu.mv_electric_furnace": "§b进阶电炉§r", + "block.gtceu.mv_electrolyzer": "§b进阶电解机§r", + "block.gtceu.mv_electromagnetic_separator": "§b进阶电磁选矿机§r", + "block.gtceu.mv_energy_input_hatch": "§bMV§r能源仓", + "block.gtceu.mv_energy_output_hatch": "§bMV§r动力仓", + "block.gtceu.mv_extractor": "§b进阶提取机§r", + "block.gtceu.mv_extruder": "§b进阶压模器§r", + "block.gtceu.mv_fermenter": "§b进阶发酵槽§r", + "block.gtceu.mv_fisher": "§b进阶捕鱼机§r", + "block.gtceu.mv_fluid_drilling_rig": "§b进阶流体钻机 §r", + "block.gtceu.mv_fluid_heater": "§b进阶流体加热器§r", + "block.gtceu.mv_fluid_passthrough_hatch": "§bMV§r流体通行仓", + "block.gtceu.mv_fluid_solidifier": "§b进阶流体固化器§r", + "block.gtceu.mv_forge_hammer": "§b进阶锻造锤§r", + "block.gtceu.mv_forming_press": "§b进阶冲压机床§r", + "block.gtceu.mv_gas_collector": "§b进阶集气室§r", + "block.gtceu.mv_gas_turbine": "§b进阶燃气轮机§r", + "block.gtceu.mv_hermetic_casing": "密封机械方块 II", + "block.gtceu.mv_input_bus": "§bMV§r输入总线", + "block.gtceu.mv_input_hatch": "§bMV§r输入仓", + "block.gtceu.mv_item_collector": "§b进阶物品收集器§r", + "block.gtceu.mv_item_passthrough_hatch": "§bMV§r物品通行仓", + "block.gtceu.mv_laser_engraver": "§b进阶激光蚀刻机§r", + "block.gtceu.mv_lathe": "§b进阶车床§r", + "block.gtceu.mv_macerator": "§b进阶研磨机§r", + "block.gtceu.mv_machine_casing": "§bMV§r机械方块", + "block.gtceu.mv_machine_hull": "§bMV§f机器外壳", + "block.gtceu.mv_miner": "§b进阶采矿机§r", + "block.gtceu.mv_mixer": "§b进阶搅拌机§r", + "block.gtceu.mv_muffler_hatch": "§bMV§r消声仓", + "block.gtceu.mv_ore_washer": "§b进阶洗矿厂§r", + "block.gtceu.mv_output_bus": "§bMV§r输出总线", + "block.gtceu.mv_output_hatch": "§bMV§r输出仓", + "block.gtceu.mv_packer": "§b进阶打包机§r", + "block.gtceu.mv_polarizer": "§b进阶两极磁化机§r", + "block.gtceu.mv_pump": "§b进阶泵§r", + "block.gtceu.mv_rock_crusher": "§b进阶碎岩机§r", + "block.gtceu.mv_scanner": "§b进阶扫描仪§r", + "block.gtceu.mv_sifter": "§b进阶筛选机§r", + "block.gtceu.mv_steam_turbine": "§b进阶蒸汽轮机§r", + "block.gtceu.mv_super_chest": "超级箱 II", + "block.gtceu.mv_super_tank": "超级缸 II", + "block.gtceu.mv_thermal_centrifuge": "§b进阶热力离心机§r", + "block.gtceu.mv_transformer_16a": "§b中压§r高能变压器(§bMV§r)", + "block.gtceu.mv_transformer_1a": "§b中压§r变压器(§bMV§r)", + "block.gtceu.mv_transformer_2a": "§b中压§r进阶变压器(§bMV§r)", + "block.gtceu.mv_transformer_4a": "§b中压§r高流变压器(§bMV§r)", + "block.gtceu.mv_wiremill": "§b进阶线材轧机§r", + "block.gtceu.mv_world_accelerator": "§b进阶世界加速器§r", + "block.gtceu.naquadah_coil_block": "硅岩线圈方块", + "block.gtceu.network_switch": "网络交换机", + "block.gtceu.nichrome_coil_block": "镍铬合金线圈方块", + "block.gtceu.noise_hazard_sign_block": "噪声危害警示方块", + "block.gtceu.nonconducting_casing": "绝缘机械方块", + "block.gtceu.normal_duct_pipe": "普通风管", + "block.gtceu.normal_laser_pipe": "普通激光管道", + "block.gtceu.normal_laser_pipe.tooltip": "§f无损§7传递能量,仅限直线摆放", + "block.gtceu.normal_optical_pipe": "光缆", + "block.gtceu.normal_optical_pipe.tooltip": "§7传递§f算力§7或§f研究数据§7", + "block.gtceu.object_holder": "物品支架", + "block.gtceu.oil_heavy": "重油", + "block.gtceu.oil_light": "轻油", + "block.gtceu.oil_medium": "原油", + "block.gtceu.opv_1024a_laser_source_hatch": "1024§e安§r§9§lOpV§r激光源仓", + "block.gtceu.opv_1024a_laser_target_hatch": "1024§e安§r§9§lOpV§r激光靶仓", + "block.gtceu.opv_16a_energy_converter": "16§e安§r§9§lOpV§r能量转换器", + "block.gtceu.opv_1a_energy_converter": "1§e安§r§9§lOpV§r能量转换器", + "block.gtceu.opv_256a_laser_source_hatch": "256§e安§r§9§lOpV§r激光源仓", + "block.gtceu.opv_256a_laser_target_hatch": "256§e安§r§9§lOpV§r激光靶仓", + "block.gtceu.opv_4096a_laser_source_hatch": "4096§e安§r§9§lOpV§r激光源仓", + "block.gtceu.opv_4096a_laser_target_hatch": "4096§e安§r§9§lOpV§r激光靶仓", + "block.gtceu.opv_4a_energy_converter": "4§e安§r§9§lOpV§r能量转换器", + "block.gtceu.opv_8a_energy_converter": "8§e安§r§9§lOpV§r能量转换器", + "block.gtceu.opv_alloy_smelter": "§9§l传奇合金炉§r", + "block.gtceu.opv_arc_furnace": "§9§l传奇电弧炉§r", + "block.gtceu.opv_assembler": "§9§l传奇组装机§r", + "block.gtceu.opv_autoclave": "§9§l传奇高压釜§r", + "block.gtceu.opv_battery_buffer_16x": "16x§9过载压§r电池箱(§9§lOpV§r)", + "block.gtceu.opv_battery_buffer_4x": "4x§9过载压§r电池箱(§9§lOpV§r)", + "block.gtceu.opv_battery_buffer_8x": "8x§9过载压§r电池箱(§9§lOpV§r)", + "block.gtceu.opv_bender": "§9§l传奇卷板机§r", + "block.gtceu.opv_brewery": "§9§l传奇酿造室§r", + "block.gtceu.opv_canner": "§9§l传奇装罐机§r", + "block.gtceu.opv_centrifuge": "§9§l传奇离心机§r", + "block.gtceu.opv_charger_4x": "4x§9过载压§r闪聚充电箱(§9§lOpV§r)", + "block.gtceu.opv_chemical_bath": "§9§l传奇化学浸洗机§r", + "block.gtceu.opv_chemical_reactor": "§9§l传奇化学反应釜§r", + "block.gtceu.opv_circuit_assembler": "§9§l传奇电路组装机§r", + "block.gtceu.opv_compressor": "§9§l传奇压缩机§r", + "block.gtceu.opv_cutter": "§9§l传奇切割机§r", + "block.gtceu.opv_diode": "§9§lOpV§r二极管", + "block.gtceu.opv_distillery": "§9§l传奇蒸馏室§r", + "block.gtceu.opv_dual_input_hatch": "§9§lOpV§r输入总成", + "block.gtceu.opv_dual_output_hatch": "§9§lOpV§r输出总成", + "block.gtceu.opv_electric_furnace": "§9§l传奇电炉§r", + "block.gtceu.opv_electrolyzer": "§9§l传奇电解机§r", + "block.gtceu.opv_electromagnetic_separator": "§9§l传奇电磁选矿机§r", + "block.gtceu.opv_energy_input_hatch": "§9§lOpV§r能源仓", + "block.gtceu.opv_energy_input_hatch_16a": "16安§9§lOpV§r能源仓", + "block.gtceu.opv_energy_input_hatch_4a": "4安§9§lOpV§r能源仓", + "block.gtceu.opv_energy_output_hatch": "§9§lOpV§r动力仓", + "block.gtceu.opv_energy_output_hatch_16a": "16安§9§lOpV§r动力仓", + "block.gtceu.opv_energy_output_hatch_4a": "4安§9§lOpV§r动力仓", + "block.gtceu.opv_extractor": "§9§l传奇提取机§r", + "block.gtceu.opv_extruder": "§9§l传奇压模器§r", + "block.gtceu.opv_fermenter": "§9§l传奇发酵槽§r", + "block.gtceu.opv_fluid_heater": "§9§l传奇流体加热器§r", + "block.gtceu.opv_fluid_passthrough_hatch": "§9§lOpV§r流体通行仓", + "block.gtceu.opv_fluid_solidifier": "§9§l传奇流体固化器§r", + "block.gtceu.opv_forge_hammer": "§9§l传奇锻造锤§r", + "block.gtceu.opv_forming_press": "§9§l传奇冲压机床§r", + "block.gtceu.opv_gas_collector": "§9§l传奇集气室§r", + "block.gtceu.opv_input_bus": "§9§lOpV§r输入总线", + "block.gtceu.opv_input_hatch": "§9§lOpV§r输入仓", + "block.gtceu.opv_input_hatch_4x": "§9§lOpV§r四重输入仓", + "block.gtceu.opv_input_hatch_9x": "§9§lOpV§r九重输入仓", + "block.gtceu.opv_item_passthrough_hatch": "§9§lOpV§r物品通行仓", + "block.gtceu.opv_laser_engraver": "§9§l传奇激光蚀刻机§r", + "block.gtceu.opv_lathe": "§9§l传奇车床§r", + "block.gtceu.opv_macerator": "§9§l传奇研磨机§r", + "block.gtceu.opv_machine_casing": "§9§lOpV§r机械方块", + "block.gtceu.opv_machine_hull": "§9§lOpV§f机器外壳", + "block.gtceu.opv_mixer": "§9§l传奇搅拌机§r", + "block.gtceu.opv_muffler_hatch": "§9§lOpV§r消声仓", + "block.gtceu.opv_ore_washer": "§9§l传奇洗矿厂§r", + "block.gtceu.opv_output_bus": "§9§lOpV§r输出总线", + "block.gtceu.opv_output_hatch": "§9§lOpV§r输出仓", + "block.gtceu.opv_output_hatch_4x": "§9§lOpV§r四重输出仓", + "block.gtceu.opv_output_hatch_9x": "§9§lOpV§r九重输出仓", + "block.gtceu.opv_packer": "§9§l传奇打包机§r", + "block.gtceu.opv_polarizer": "§9§l传奇两极磁化机§r", + "block.gtceu.opv_quantum_chest": "量子箱 XIII", + "block.gtceu.opv_quantum_tank": "量子缸 XIII", + "block.gtceu.opv_rock_crusher": "§9§l传奇碎岩机§r", + "block.gtceu.opv_rotor_holder": "§9§lOpV§r转子支架", + "block.gtceu.opv_scanner": "§9§l传奇扫描仪§r", + "block.gtceu.opv_sifter": "§9§l传奇筛选机§r", + "block.gtceu.opv_substation_input_hatch_64a": "64安§9§lOpV§r变电能源仓", + "block.gtceu.opv_substation_output_hatch_64a": "64安§9§lOpV§r变电动力仓", + "block.gtceu.opv_thermal_centrifuge": "§9§l传奇热力离心机§r", + "block.gtceu.opv_transformer_16a": "§9过载压§r高能变压器(§9OpV§r)", + "block.gtceu.opv_transformer_1a": "§9过载压§r变压器(§9OpV§r)", + "block.gtceu.opv_transformer_2a": "§9过载压§r进阶变压器(§9OpV§r)", + "block.gtceu.opv_transformer_4a": "§9过载压§r高流变压器(§9OpV§r)", + "block.gtceu.opv_wiremill": "§9§l传奇线材轧机§r", + "block.gtceu.orange_borderless_lamp": "橙色无框灯", + "block.gtceu.orange_lamp": "橙色灯", + "block.gtceu.orange_large_metal_sheet": "橙色粗纹金属板方块", + "block.gtceu.orange_metal_sheet": "橙色金属板方块", + "block.gtceu.orange_studs": "橙色橡胶混凝土", + "block.gtceu.overworld_marker": "主世界", + "block.gtceu.palladium_substation": "镀钯变电站机械方块", + "block.gtceu.pattern_buffer.desc.0": "§f对于GT多方块结构的集成式§6AE2样板供应器§f。", + "block.gtceu.pattern_buffer.desc.1": "§fAE2样板可以利用§6共享库存§f中的一切。", + "block.gtceu.pattern_buffer.desc.2": "§f使用§b闪存§f绑定§6ME样板总成镜像§f,以使机器相互连接!", + "block.gtceu.pattern_buffer_proxy.desc.0": "§f可以将单单一个§6ME样板总成§f连接到众多机器。", + "block.gtceu.pattern_buffer_proxy.desc.1": "§f所有连接的总成镜像将共享§6原始总成§f中的样板。", + "block.gtceu.pattern_buffer_proxy.desc.2": "§f让工厂蓬勃发展!", + "block.gtceu.petrified_foam": "石化建筑泡沫", + "block.gtceu.pink_borderless_lamp": "粉红色无框灯", + "block.gtceu.pink_lamp": "粉红色灯", + "block.gtceu.pink_large_metal_sheet": "粉红色粗纹金属板方块", + "block.gtceu.pink_metal_sheet": "粉红色金属板方块", + "block.gtceu.pink_studs": "粉红色橡胶混凝土", + "block.gtceu.plascrete": "塑料混凝土", + "block.gtceu.plasma_large_turbine": "大型等离子涡轮", + "block.gtceu.polished_dark_concrete": "磨制深色混凝土", + "block.gtceu.polished_light_concrete": "磨制淡色混凝土", + "block.gtceu.polished_marble": "磨制大理岩", + "block.gtceu.polished_red_granite": "磨制红花岗岩", + "block.gtceu.powderbarrel": "火药桶", + "block.gtceu.powderbarrel.drops_tooltip": "爆炸范围略大于TNT,所有被摧毁的方块都会掉落", + "block.gtceu.power_substation": "蓄能变电站", + "block.gtceu.primitive_blast_furnace": "土高炉", + "block.gtceu.primitive_pump": "原始水泵", + "block.gtceu.ptfe_pipe_casing": "聚四氟乙烯管道方块", + "block.gtceu.pump_deck": "水泵盖板", + "block.gtceu.pump_hatch": "水泵仓", + "block.gtceu.purple_borderless_lamp": "紫色无框灯", + "block.gtceu.purple_lamp": "紫色灯", + "block.gtceu.purple_large_metal_sheet": "紫色粗纹金属板方块", + "block.gtceu.purple_metal_sheet": "紫色金属板方块", + "block.gtceu.purple_studs": "紫色橡胶混凝土", + "block.gtceu.pyrolyse_oven": "热解炉", + "block.gtceu.radioactive_hazard_sign_block": "辐射危害警示方块", + "block.gtceu.reaction_safe_mixing_casing": "惰性搅拌机械方块", + "block.gtceu.red_borderless_lamp": "红色无框灯", + "block.gtceu.red_granite": "红花岗岩", + "block.gtceu.red_granite_bricks": "红花岗岩砖", + "block.gtceu.red_granite_cobblestone": "红花岗岩圆石", + "block.gtceu.red_granite_small_tile": "红花岗岩小片瓦", + "block.gtceu.red_granite_tile": "红花岗岩瓦", + "block.gtceu.red_granite_windmill_a": "红花岗岩风车形瓦 A", + "block.gtceu.red_granite_windmill_b": "红花岗岩风车形瓦 B", + "block.gtceu.red_lamp": "红色灯", + "block.gtceu.red_large_metal_sheet": "红色粗纹金属板方块", + "block.gtceu.red_metal_sheet": "红色金属板方块", + "block.gtceu.red_studs": "红色橡胶混凝土", + "block.gtceu.reinforced_foam": "强化建筑泡沫", + "block.gtceu.reinforced_stone": "防爆石", + "block.gtceu.research_station": "研究站", + "block.gtceu.reservoir_hatch": "水库仓", + "block.gtceu.robust_machine_casing": "强化钨钢机械方块", + "block.gtceu.rtm_alloy_coil_block": "钌钨钼合金线圈方块", + "block.gtceu.rubber_button": "橡胶木按钮", + "block.gtceu.rubber_door": "橡胶木门", + "block.gtceu.rubber_fence": "橡胶木栅栏", + "block.gtceu.rubber_fence_gate": "橡胶木栅栏门", + "block.gtceu.rubber_hanging_sign": "墙上的悬挂式橡胶木告示牌", + "block.gtceu.rubber_leaves": "橡胶树叶", + "block.gtceu.rubber_log": "橡胶原木", + "block.gtceu.rubber_planks": "橡胶木板", + "block.gtceu.rubber_pressure_plate": "橡胶木压力板", + "block.gtceu.rubber_sapling": "橡胶树苗", + "block.gtceu.rubber_sign": "墙上的橡胶木告示牌", + "block.gtceu.rubber_slab": "橡胶木台阶", + "block.gtceu.rubber_stairs": "橡胶木楼梯", + "block.gtceu.rubber_trapdoor": "橡胶木活板门", + "block.gtceu.rubber_wood": "橡胶木", + "block.gtceu.secure_maceration_casing": "安全研磨机械方块", + "block.gtceu.shock_proof_cutting_casing": "防震切割机械方块", + "block.gtceu.slicing_blades": "切片刀", + "block.gtceu.small_dark_concrete_bricks": "深色混凝土小块砖", + "block.gtceu.small_duct_pipe": "小型风管", + "block.gtceu.small_light_concrete_bricks": "淡色混凝土小块砖", + "block.gtceu.small_marble_bricks": "大理岩小块砖", + "block.gtceu.small_red_granite_bricks": "红花岗岩小块砖", + "block.gtceu.solid_machine_casing": "脱氧钢机械方块", + "block.gtceu.spatial_storage_hazard_sign_block": "空间存储危害警示方块", + "block.gtceu.square_dark_concrete_bricks": "深色混凝土方形砖", + "block.gtceu.square_light_concrete_bricks": "淡色混凝土方形砖", + "block.gtceu.square_marble_bricks": "大理岩方形砖", + "block.gtceu.square_red_granite_bricks": "红花岗岩方形砖", + "block.gtceu.stable_machine_casing": "加强钛机械方块", + "block.gtceu.stainless_steel_crate": "不锈钢板条箱", + "block.gtceu.stainless_steel_drum": "不锈钢桶", + "block.gtceu.stainless_steel_gearbox": "不锈钢齿轮箱机械方块", + "block.gtceu.stainless_steel_turbine_casing": "不锈钢涡轮机械方块", + "block.gtceu.steam_casing_bricked_bronze": "砖砌青铜外壳", + "block.gtceu.steam_casing_bricked_bronze.tooltip": "§7用来制作你的第一批蒸汽机器", + "block.gtceu.steam_casing_bricked_steel": "砖砌锻铁外壳", + "block.gtceu.steam_casing_bricked_steel.tooltip": "§7用来制作更高等级的蒸汽机器", + "block.gtceu.steam_casing_bronze": "青铜外壳", + "block.gtceu.steam_casing_bronze.tooltip": "§7用来制作你的第一批蒸汽机器", + "block.gtceu.steam_casing_steel": "钢制外壳", + "block.gtceu.steam_casing_steel.tooltip": "§7用来制作更高等级的蒸汽机器", + "block.gtceu.steam_grinder": "蒸汽碾磨机", + "block.gtceu.steam_input_bus": "蒸汽输入总线", + "block.gtceu.steam_input_hatch": "蒸汽输入仓", + "block.gtceu.steam_large_turbine": "大型蒸汽涡轮", + "block.gtceu.steam_liquid_boiler.bronze": "小型蒸汽液体燃料锅炉", + "block.gtceu.steam_machine_casing": "蒸汽机械方块", + "block.gtceu.steam_output_bus": "蒸汽输出总线", + "block.gtceu.steam_oven": "蒸汽熔炼炉", + "block.gtceu.steam_solid_boiler.bronze": "小型蒸汽固体燃料锅炉", + "block.gtceu.steel_brick_casing": "砖砌锻铁外壳", + "block.gtceu.steel_crate": "钢板条箱", + "block.gtceu.steel_drum": "钢桶", + "block.gtceu.steel_firebox_casing": "钢制燃烧室", + "block.gtceu.steel_gearbox": "钢齿轮箱机械方块", + "block.gtceu.steel_large_boiler": "大型钢锅炉", + "block.gtceu.steel_machine_casing": "牢固机械方块", + "block.gtceu.steel_multiblock_tank": "钢制多方块储罐", + "block.gtceu.steel_pipe_casing": "钢管道方块", + "block.gtceu.steel_tank_valve": "钢制储罐阀门", + "block.gtceu.steel_turbine_casing": "镁铝合金涡轮机械方块", + "block.gtceu.sterilizing_filter_casing": "除菌过滤器机械方块", + "block.gtceu.stress_proof_casing": "耐压机械方块", + "block.gtceu.stripped_rubber_log": "去皮橡胶原木", + "block.gtceu.stripped_rubber_wood": "去皮橡胶木", + "block.gtceu.sturdy_machine_casing": "坚固高速钢-E机械方块", + "block.gtceu.substation_capacitor.tooltip_empty": "§7用于填补蓄能变电站的结构空隙", + "block.gtceu.substation_capacitor.tooltip_filled": "§c电池容量:§f%d EU", + "block.gtceu.superconducting_coil": "超导线圈方块", + "block.gtceu.tempered_glass": "钢化玻璃", + "block.gtceu.the_end_marker": "末地", + "block.gtceu.the_nether_marker": "下界", + "block.gtceu.titanium_crate": "钛板条箱", + "block.gtceu.titanium_drum": "钛桶", + "block.gtceu.titanium_firebox_casing": "钛燃烧室", + "block.gtceu.titanium_gearbox": "钛齿轮箱机械方块", + "block.gtceu.titanium_large_boiler": "大型钛锅炉", + "block.gtceu.titanium_pipe_casing": "钛管道方块", + "block.gtceu.titanium_turbine_casing": "钛涡轮机械方块", + "block.gtceu.treated_wood_button": "防腐木按钮", + "block.gtceu.treated_wood_door": "防腐木门", + "block.gtceu.treated_wood_fence": "防腐木栅栏", + "block.gtceu.treated_wood_fence_gate": "防腐木栅栏门", + "block.gtceu.treated_wood_hanging_sign": "墙上的悬挂式防腐木告示牌", + "block.gtceu.treated_wood_planks": "防腐木板", + "block.gtceu.treated_wood_pressure_plate": "防腐木压力板", + "block.gtceu.treated_wood_sign": "墙上的防腐木告示牌", + "block.gtceu.treated_wood_slab": "防腐木台阶", + "block.gtceu.treated_wood_stairs": "防腐木楼梯", + "block.gtceu.treated_wood_trapdoor": "防腐木活板门", + "block.gtceu.trinium_coil_block": "凯金线圈方块", + "block.gtceu.tritanium_coil_block": "三钛线圈方块", + "block.gtceu.tungsten_steel_crate": "钨钢板条箱", + "block.gtceu.tungsten_steel_drum": "钨钢桶", + "block.gtceu.tungstensteel_firebox_casing": "钨钢燃烧室", + "block.gtceu.tungstensteel_gearbox": "钨钢齿轮箱机械方块", + "block.gtceu.tungstensteel_large_boiler": "大型钨钢锅炉", + "block.gtceu.tungstensteel_pipe_casing": "钨钢管道方块", + "block.gtceu.tungstensteel_turbine_casing": "钨钢涡轮机械方块", + "block.gtceu.turret_hazard_sign_block": "炮塔危害警示方块", + "block.gtceu.uev_1024a_laser_source_hatch": "1024§e安§r§aUEV§r激光源仓", + "block.gtceu.uev_1024a_laser_target_hatch": "1024§e安§r§aUEV§r激光靶仓", + "block.gtceu.uev_16a_energy_converter": "16§e安§r§aUEV§r能量转换器", + "block.gtceu.uev_1a_energy_converter": "1§e安§r§aUEV§r能量转换器", + "block.gtceu.uev_256a_laser_source_hatch": "256§e安§r§aUEV§r激光源仓", + "block.gtceu.uev_256a_laser_target_hatch": "256§e安§r§aUEV§r激光靶仓", + "block.gtceu.uev_4096a_laser_source_hatch": "4096§e安§r§aUEV§r激光源仓", + "block.gtceu.uev_4096a_laser_target_hatch": "4096§e安§r§aUEV§r激光靶仓", + "block.gtceu.uev_4a_energy_converter": "4§e安§r§aUEV§r能量转换器", + "block.gtceu.uev_8a_energy_converter": "8§e安§r§aUEV§r能量转换器", + "block.gtceu.uev_alloy_smelter": "§a史诗合金炉 II§r", + "block.gtceu.uev_arc_furnace": "§a史诗电弧炉 II§r", + "block.gtceu.uev_assembler": "§a史诗组装机 II§r", + "block.gtceu.uev_autoclave": "§a史诗高压釜 II§r", + "block.gtceu.uev_battery_buffer_16x": "16x§a极超压§r电池箱(§aUEV§r)", + "block.gtceu.uev_battery_buffer_4x": "4x§a极超压§r电池箱(§aUEV§r)", + "block.gtceu.uev_battery_buffer_8x": "8x§a极超压§r电池箱(§aUEV§r)", + "block.gtceu.uev_bender": "§a史诗卷板机 II§r", + "block.gtceu.uev_brewery": "§a史诗酿造室 II§r", + "block.gtceu.uev_canner": "§a史诗装罐机 II§r", + "block.gtceu.uev_centrifuge": "§a史诗离心机 II§r", + "block.gtceu.uev_charger_4x": "4x§a极超压§r闪聚充电箱(§aUEV§r)", + "block.gtceu.uev_chemical_bath": "§a史诗化学浸洗机 II§r", + "block.gtceu.uev_chemical_reactor": "§a史诗化学反应釜 II§r", + "block.gtceu.uev_circuit_assembler": "§a史诗电路组装机 II§r", + "block.gtceu.uev_compressor": "§a史诗压缩机 II§r", + "block.gtceu.uev_cutter": "§a史诗切割机 II§r", + "block.gtceu.uev_diode": "§aUEV§r二极管", + "block.gtceu.uev_distillery": "§a史诗蒸馏室 II§r", + "block.gtceu.uev_dual_input_hatch": "§aUEV§r输入总成", + "block.gtceu.uev_dual_output_hatch": "§aUEV§r输出总成", + "block.gtceu.uev_electric_furnace": "§a史诗电炉 II§r", + "block.gtceu.uev_electrolyzer": "§a史诗电解机 II§r", + "block.gtceu.uev_electromagnetic_separator": "§a史诗电磁选矿机 II§r", + "block.gtceu.uev_energy_input_hatch": "§aUEV§r能源仓", + "block.gtceu.uev_energy_input_hatch_16a": "16安§aUEV§r能源仓", + "block.gtceu.uev_energy_input_hatch_4a": "4安§aUEV§r能源仓", + "block.gtceu.uev_energy_output_hatch": "§aUEV§r动力仓", + "block.gtceu.uev_energy_output_hatch_16a": "16安§aUEV§r动力仓", + "block.gtceu.uev_energy_output_hatch_4a": "4安§aUEV§r动力仓", + "block.gtceu.uev_extractor": "§a史诗提取机 II§r", + "block.gtceu.uev_extruder": "§a史诗压模器 II§r", + "block.gtceu.uev_fermenter": "§a史诗发酵槽 II§r", + "block.gtceu.uev_fluid_heater": "§a史诗流体加热器 II§r", + "block.gtceu.uev_fluid_passthrough_hatch": "§aUEV§r流体通行仓", + "block.gtceu.uev_fluid_solidifier": "§a史诗流体固化器 II§r", + "block.gtceu.uev_forge_hammer": "§a史诗锻造锤 II§r", + "block.gtceu.uev_forming_press": "§a史诗冲压机床 II§r", + "block.gtceu.uev_gas_collector": "§a史诗集气室 II§r", + "block.gtceu.uev_input_bus": "§aUEV§r输入总线", + "block.gtceu.uev_input_hatch": "§aUEV§r输入仓", + "block.gtceu.uev_input_hatch_4x": "§aUEV§r四重输入仓", + "block.gtceu.uev_input_hatch_9x": "§aUEV§r九重输入仓", + "block.gtceu.uev_item_passthrough_hatch": "§aUEV§r物品通行仓", + "block.gtceu.uev_laser_engraver": "§a史诗激光蚀刻机 II§r", + "block.gtceu.uev_lathe": "§a史诗车床 II§r", + "block.gtceu.uev_macerator": "§a史诗研磨机 II§r", + "block.gtceu.uev_machine_casing": "§aUEV§r机械方块", + "block.gtceu.uev_machine_hull": "§aUEV§f机器外壳", + "block.gtceu.uev_mixer": "§a史诗搅拌机 II§r", + "block.gtceu.uev_muffler_hatch": "§aUEV§r消声仓", + "block.gtceu.uev_ore_washer": "§a史诗洗矿厂 II§r", + "block.gtceu.uev_output_bus": "§aUEV§r输出总线", + "block.gtceu.uev_output_hatch": "§aUEV§r输出仓", + "block.gtceu.uev_output_hatch_4x": "§aUEV§r四重输出仓", + "block.gtceu.uev_output_hatch_9x": "§aUEV§r九重输出仓", + "block.gtceu.uev_packer": "§a史诗打包机 II§r", + "block.gtceu.uev_polarizer": "§a史诗两极磁化机 II§r", + "block.gtceu.uev_quantum_chest": "量子箱 X", + "block.gtceu.uev_quantum_tank": "量子缸 X", + "block.gtceu.uev_rock_crusher": "§a史诗碎岩机 II§r", + "block.gtceu.uev_rotor_holder": "§aUEV§r转子支架", + "block.gtceu.uev_scanner": "§a史诗扫描仪 II§r", + "block.gtceu.uev_sifter": "§a史诗筛选机 II§r", + "block.gtceu.uev_substation_input_hatch_64a": "64安§aUEV§r变电能源仓", + "block.gtceu.uev_substation_output_hatch_64a": "64安§aUEV§r变电动力仓", + "block.gtceu.uev_thermal_centrifuge": "§a史诗热力离心机 II§r", + "block.gtceu.uev_transformer_16a": "§a极超压§r高能变压器(§aUEV§r)", + "block.gtceu.uev_transformer_1a": "§a极超压§r变压器(§aUEV§r)", + "block.gtceu.uev_transformer_2a": "§a极超压§r进阶变压器(§aUEV§r)", + "block.gtceu.uev_transformer_4a": "§a极超压§r高流变压器(§aUEV§r)", + "block.gtceu.uev_wiremill": "§a史诗线材轧机 II§r", + "block.gtceu.uhv_1024a_laser_source_hatch": "1024§e安§r§4UHV§r激光源仓", + "block.gtceu.uhv_1024a_laser_target_hatch": "1024§e安§r§4UHV§r激光靶仓", + "block.gtceu.uhv_16a_energy_converter": "16§e安§r§4UHV§r能量转换器", + "block.gtceu.uhv_1a_energy_converter": "1§e安§r§4UHV§r能量转换器", + "block.gtceu.uhv_256a_laser_source_hatch": "256§e安§r§4UHV§r激光源仓", + "block.gtceu.uhv_256a_laser_target_hatch": "256§e安§r§4UHV§r激光靶仓", + "block.gtceu.uhv_4096a_laser_source_hatch": "4096§e安§r§4UHV§r激光源仓", + "block.gtceu.uhv_4096a_laser_target_hatch": "4096§e安§r§4UHV§r激光靶仓", + "block.gtceu.uhv_4a_energy_converter": "4§e安§r§4UHV§r能量转换器", + "block.gtceu.uhv_8a_energy_converter": "8§e安§r§4UHV§r能量转换器", + "block.gtceu.uhv_alloy_smelter": "§4史诗合金炉§r", + "block.gtceu.uhv_arc_furnace": "§4史诗电弧炉§r", + "block.gtceu.uhv_assembler": "§4史诗组装机§r", + "block.gtceu.uhv_autoclave": "§4史诗高压釜§r", + "block.gtceu.uhv_battery_buffer_16x": "16x§4极高压§r电池箱(§4UHV§r)", + "block.gtceu.uhv_battery_buffer_4x": "4x§4极高压§r电池箱(§4UHV§r)", + "block.gtceu.uhv_battery_buffer_8x": "8x§4极高压§r电池箱(§4UHV§r)", + "block.gtceu.uhv_bender": "§4史诗卷板机§r", + "block.gtceu.uhv_brewery": "§4史诗酿造室§r", + "block.gtceu.uhv_canner": "§4史诗装罐机§r", + "block.gtceu.uhv_centrifuge": "§4史诗离心机§r", + "block.gtceu.uhv_charger_4x": "4x§4极高压§r闪聚充电箱(§4UHV§r)", + "block.gtceu.uhv_chemical_bath": "§4史诗化学浸洗机§r", + "block.gtceu.uhv_chemical_reactor": "§4史诗化学反应釜§r", + "block.gtceu.uhv_circuit_assembler": "§4史诗电路组装机§r", + "block.gtceu.uhv_compressor": "§4史诗压缩机§r", + "block.gtceu.uhv_cutter": "§4史诗切割机§r", + "block.gtceu.uhv_diode": "§4UHV§r二极管", + "block.gtceu.uhv_distillery": "§4史诗蒸馏室§r", + "block.gtceu.uhv_dual_input_hatch": "§4UHV§r输入总成", + "block.gtceu.uhv_dual_output_hatch": "§4UHV§r输出总成", + "block.gtceu.uhv_electric_furnace": "§4史诗电炉§r", + "block.gtceu.uhv_electrolyzer": "§4史诗电解机§r", + "block.gtceu.uhv_electromagnetic_separator": "§4史诗电磁选矿机§r", + "block.gtceu.uhv_energy_input_hatch": "§4UHV§r能源仓", + "block.gtceu.uhv_energy_input_hatch_16a": "16安§4UHV§r能源仓", + "block.gtceu.uhv_energy_input_hatch_4a": "4安§4UHV§r能源仓", + "block.gtceu.uhv_energy_output_hatch": "§4UHV§r动力仓", + "block.gtceu.uhv_energy_output_hatch_16a": "16安§4UHV§r动力仓", + "block.gtceu.uhv_energy_output_hatch_4a": "4安§4UHV§r动力仓", + "block.gtceu.uhv_extractor": "§4史诗提取机§r", + "block.gtceu.uhv_extruder": "§4史诗压模器§r", + "block.gtceu.uhv_fermenter": "§4史诗发酵槽§r", + "block.gtceu.uhv_fluid_heater": "§4史诗流体加热器§r", + "block.gtceu.uhv_fluid_passthrough_hatch": "§4UHV§r流体通行仓", + "block.gtceu.uhv_fluid_solidifier": "§4史诗流体固化器§r", + "block.gtceu.uhv_forge_hammer": "§4史诗锻造锤§r", + "block.gtceu.uhv_forming_press": "§4史诗冲压机床§r", + "block.gtceu.uhv_gas_collector": "§4史诗集气室§r", + "block.gtceu.uhv_hermetic_casing": "密封机械方块 IX", + "block.gtceu.uhv_input_bus": "§4UHV§r输入总线", + "block.gtceu.uhv_input_hatch": "§4UHV§r输入仓", + "block.gtceu.uhv_input_hatch_4x": "§4UHV§r四重输入仓", + "block.gtceu.uhv_input_hatch_9x": "§4UHV§r九重输入仓", + "block.gtceu.uhv_item_passthrough_hatch": "§4UHV§r物品通行仓", + "block.gtceu.uhv_laser_engraver": "§4史诗激光蚀刻机§r", + "block.gtceu.uhv_lathe": "§4史诗车床§r", + "block.gtceu.uhv_macerator": "§4史诗研磨机§r", + "block.gtceu.uhv_machine_casing": "§4UHV§r机械方块", + "block.gtceu.uhv_machine_hull": "§4UHV§f机器外壳", + "block.gtceu.uhv_mixer": "§4史诗搅拌机§r", + "block.gtceu.uhv_muffler_hatch": "§4UHV§r消声仓", + "block.gtceu.uhv_ore_washer": "§4史诗洗矿厂§r", + "block.gtceu.uhv_output_bus": "§4UHV§r输出总线", + "block.gtceu.uhv_output_hatch": "§4UHV§r输出仓", + "block.gtceu.uhv_output_hatch_4x": "§4UHV§r四重输出仓", + "block.gtceu.uhv_output_hatch_9x": "§4UHV§r九重输出仓", + "block.gtceu.uhv_packer": "§4史诗打包机§r", + "block.gtceu.uhv_polarizer": "§4史诗两极磁化机§r", + "block.gtceu.uhv_quantum_chest": "量子箱 IX", + "block.gtceu.uhv_quantum_tank": "量子缸 IX", + "block.gtceu.uhv_rock_crusher": "§4史诗碎岩机§r", + "block.gtceu.uhv_rotor_holder": "§4UHV§r转子支架", + "block.gtceu.uhv_scanner": "§4史诗扫描仪 §r", + "block.gtceu.uhv_sifter": "§4史诗筛选机§r", + "block.gtceu.uhv_substation_input_hatch_64a": "64安§4UHV§r变电能源仓", + "block.gtceu.uhv_substation_output_hatch_64a": "64安§4UHV§r变电动力仓", + "block.gtceu.uhv_thermal_centrifuge": "§4史诗热力离心机§r", + "block.gtceu.uhv_transformer_16a": "§4极高压§r高能变压器(§4UHV§r)", + "block.gtceu.uhv_transformer_1a": "§4极高压§r变压器(§4UHV§r)", + "block.gtceu.uhv_transformer_2a": "§4极高压§r进阶变压器(§4UHV§r) ", + "block.gtceu.uhv_transformer_4a": "§4极高压§r高流变压器(§4UHV§r)", + "block.gtceu.uhv_ultimate_battery": "终极电容(§4UHV§r)", + "block.gtceu.uhv_wiremill": "§4史诗线材轧机§r", + "block.gtceu.uiv_1024a_laser_source_hatch": "1024§e安§r§2UIV§r激光源仓", + "block.gtceu.uiv_1024a_laser_target_hatch": "1024§e安§r§2UIV§r激光靶仓", + "block.gtceu.uiv_16a_energy_converter": "16§e安§r§2UIV§r能量转换器", + "block.gtceu.uiv_1a_energy_converter": "1§e安§r§2UIV§r能量转换器", + "block.gtceu.uiv_256a_laser_source_hatch": "256§e安§r§2UIV§r激光源仓", + "block.gtceu.uiv_256a_laser_target_hatch": "256§e安§r§2UIV§r激光靶仓", + "block.gtceu.uiv_4096a_laser_source_hatch": "4096§e安§r§2UIV§r激光源仓", + "block.gtceu.uiv_4096a_laser_target_hatch": "4096§e安§r§2UIV§r激光靶仓", + "block.gtceu.uiv_4a_energy_converter": "4§e安§r§2UIV§r能量转换器", + "block.gtceu.uiv_8a_energy_converter": "8§e安§r§2UIV§r能量转换器", + "block.gtceu.uiv_alloy_smelter": "§2史诗合金炉 III§r", + "block.gtceu.uiv_arc_furnace": "§2史诗电弧炉 III§r", + "block.gtceu.uiv_assembler": "§2史诗组装机 III§r", + "block.gtceu.uiv_autoclave": "§2史诗高压釜 III§r", + "block.gtceu.uiv_battery_buffer_16x": "16x§2极巨压§r电池箱(§2UIV§r)", + "block.gtceu.uiv_battery_buffer_4x": "4x§2极巨压§r电池箱(§2UIV§r)", + "block.gtceu.uiv_battery_buffer_8x": "8x§2极巨压§r电池箱(§2UIV§r)", + "block.gtceu.uiv_bender": "§2史诗卷板机 III§r", + "block.gtceu.uiv_brewery": "§2史诗酿造室 III§r", + "block.gtceu.uiv_canner": "§2史诗装罐机 III§r", + "block.gtceu.uiv_centrifuge": "§2史诗离心机 III§r", + "block.gtceu.uiv_charger_4x": "4x§2极巨压§r闪聚充电箱(§2UIV§r)", + "block.gtceu.uiv_chemical_bath": "§2史诗化学浸洗机 III§r", + "block.gtceu.uiv_chemical_reactor": "§2史诗化学反应釜 III§r", + "block.gtceu.uiv_circuit_assembler": "§2史诗电路组装机 III§r", + "block.gtceu.uiv_compressor": "§2史诗压缩机 III§r", + "block.gtceu.uiv_cutter": "§2史诗切割机 III§r", + "block.gtceu.uiv_diode": "§2UIV§r二极管", + "block.gtceu.uiv_distillery": "§2史诗蒸馏室 III§r", + "block.gtceu.uiv_dual_input_hatch": "§2UIV§r输入总成", + "block.gtceu.uiv_dual_output_hatch": "§2UIV§r输出总成", + "block.gtceu.uiv_electric_furnace": "§2史诗电炉 III§r", + "block.gtceu.uiv_electrolyzer": "§2史诗电解机 III§r", + "block.gtceu.uiv_electromagnetic_separator": "§2史诗电磁选矿机 III§r", + "block.gtceu.uiv_energy_input_hatch": "§2UIV§r能源仓", + "block.gtceu.uiv_energy_input_hatch_16a": "16安§2UIV§r能源仓", + "block.gtceu.uiv_energy_input_hatch_4a": "4安§2UIV§r能源仓", + "block.gtceu.uiv_energy_output_hatch": "§2UIV§r动力仓", + "block.gtceu.uiv_energy_output_hatch_16a": "16安§2UIV§r动力仓", + "block.gtceu.uiv_energy_output_hatch_4a": "4安§2UIV§r动力仓", + "block.gtceu.uiv_extractor": "§2史诗提取机 III§r", + "block.gtceu.uiv_extruder": "§2史诗压模器 III§r", + "block.gtceu.uiv_fermenter": "§2史诗发酵槽 III§r", + "block.gtceu.uiv_fluid_heater": "§2史诗流体加热器 III§r", + "block.gtceu.uiv_fluid_passthrough_hatch": "§2UIV§r流体通行仓", + "block.gtceu.uiv_fluid_solidifier": "§2史诗流体固化器 III§r", + "block.gtceu.uiv_forge_hammer": "§2史诗锻造锤 III§r", + "block.gtceu.uiv_forming_press": "§2史诗冲压机床 III§r", + "block.gtceu.uiv_gas_collector": "§2史诗集气室 III§r", + "block.gtceu.uiv_input_bus": "§2UIV§r输入总线", + "block.gtceu.uiv_input_hatch": "§2UIV§r输入仓", + "block.gtceu.uiv_input_hatch_4x": "§2UIV§r四重输入仓", + "block.gtceu.uiv_input_hatch_9x": "§2UIV§r九重输入仓", + "block.gtceu.uiv_item_passthrough_hatch": "§2UIV§r物品通行仓", + "block.gtceu.uiv_laser_engraver": "§2史诗激光蚀刻机 III§r", + "block.gtceu.uiv_lathe": "§2史诗车床 III§r", + "block.gtceu.uiv_macerator": "§2史诗研磨机 III§r", + "block.gtceu.uiv_machine_casing": "§2UIV§r机械方块", + "block.gtceu.uiv_machine_hull": "§2UIV§f机器外壳", + "block.gtceu.uiv_mixer": "§2史诗搅拌机 III§r", + "block.gtceu.uiv_muffler_hatch": "§2UIV§r消声仓", + "block.gtceu.uiv_ore_washer": "§2史诗洗矿厂 III§r", + "block.gtceu.uiv_output_bus": "§2UIV§r输出总线", + "block.gtceu.uiv_output_hatch": "§2UIV§r输出仓", + "block.gtceu.uiv_output_hatch_4x": "§2UIV§r四重输出仓", + "block.gtceu.uiv_output_hatch_9x": "§2UIV§r九重输出仓", + "block.gtceu.uiv_packer": "§2史诗打包机 III§r", + "block.gtceu.uiv_polarizer": "§2史诗两极磁化机 III§r", + "block.gtceu.uiv_quantum_chest": "量子箱 XI", + "block.gtceu.uiv_quantum_tank": "量子缸 XI", + "block.gtceu.uiv_rock_crusher": "§2史诗碎岩机 III§r", + "block.gtceu.uiv_rotor_holder": "§2UIV§r转子支架", + "block.gtceu.uiv_scanner": "§2史诗扫描仪 III§r", + "block.gtceu.uiv_sifter": "§2史诗筛选机 III§r", + "block.gtceu.uiv_substation_input_hatch_64a": "64安§2UIV§r变电能源仓", + "block.gtceu.uiv_substation_output_hatch_64a": "64安§2UIV§r变电动力仓", + "block.gtceu.uiv_thermal_centrifuge": "§2史诗热力离心机 III§r", + "block.gtceu.uiv_transformer_16a": "§2极巨压§r高能变压器(§2UIV§r)", + "block.gtceu.uiv_transformer_1a": "§2极巨压§r变压器(§2UIV§r)", + "block.gtceu.uiv_transformer_2a": "§2极巨压§r进阶变压器(§2UIV§r)", + "block.gtceu.uiv_transformer_4a": "§2极巨压§r高流变压器(§2UIV§r)", + "block.gtceu.uiv_wiremill": "§2史诗线材轧机 III§r", + "block.gtceu.ulv_16a_energy_converter": "16§e安§r§8ULV§r能量转换器", + "block.gtceu.ulv_1a_energy_converter": "1§e安§r§8ULV§r能量转换器", + "block.gtceu.ulv_4a_energy_converter": "4§e安§r§8ULV§r能量转换器", + "block.gtceu.ulv_8a_energy_converter": "8§e安§r§8ULV§r能量转换器", + "block.gtceu.ulv_battery_buffer_16x": "16x§8超低压§r电池箱(§8ULV§r)", + "block.gtceu.ulv_battery_buffer_4x": "4x§8超低压§r电池箱(§8ULV§r)", + "block.gtceu.ulv_battery_buffer_8x": "8x§8超低压§r电池箱(§8ULV§r)", + "block.gtceu.ulv_charger_4x": "4x§8超低压§r闪聚充电箱(§8ULV§r)", + "block.gtceu.ulv_energy_input_hatch": "§8ULV§r能源仓", + "block.gtceu.ulv_energy_output_hatch": "§8ULV§r动力仓", + "block.gtceu.ulv_input_bus": "§8ULV§r输入总线", + "block.gtceu.ulv_input_hatch": "§8ULV§r输入仓", + "block.gtceu.ulv_machine_casing": "§8ULV§r机械方块", + "block.gtceu.ulv_machine_hull": "§8ULV§f机器外壳", + "block.gtceu.ulv_output_bus": "§8ULV§r输出总线", + "block.gtceu.ulv_output_hatch": "§8ULV§r输出仓", + "block.gtceu.ulv_transformer_16a": "§8超低压§r高能变压器(§8ULV§r)", + "block.gtceu.ulv_transformer_1a": "§8超低压§r变压器(§8ULV§r)", + "block.gtceu.ulv_transformer_2a": "§8超低压§r进阶变压器(§8ULV§r)", + "block.gtceu.ulv_transformer_4a": "§8超低压§r高流变压器(§8ULV§r)", + "block.gtceu.uv_1024a_laser_source_hatch": "1024§e安§r§3UV§r激光源仓", + "block.gtceu.uv_1024a_laser_target_hatch": "1024§e安§r§3UV§r激光靶仓", + "block.gtceu.uv_16a_energy_converter": "16§e安§r§3UV§r能量转换器", + "block.gtceu.uv_1a_energy_converter": "1§e安§r§3UV§r能量转换器", + "block.gtceu.uv_256a_laser_source_hatch": "256§e安§r§3UV§r激光源仓", + "block.gtceu.uv_256a_laser_target_hatch": "256§e安§r§3UV§r激光靶仓", + "block.gtceu.uv_4096a_laser_source_hatch": "4096§e安§r§3UV§r激光源仓", + "block.gtceu.uv_4096a_laser_target_hatch": "4096§e安§r§3UV§r激光靶仓", + "block.gtceu.uv_4a_energy_converter": "4§e安§r§3UV§r能量转换器", + "block.gtceu.uv_8a_energy_converter": "8§e安§r§3UV§r能量转换器", + "block.gtceu.uv_alloy_smelter": "§3终极合金炉§r", + "block.gtceu.uv_arc_furnace": "§3终极电弧炉§r", + "block.gtceu.uv_assembler": "§3终极组装机§r", + "block.gtceu.uv_autoclave": "§3终极高压釜§r", + "block.gtceu.uv_battery_buffer_16x": "16x§3极限压§r电池箱(§3UV§r)", + "block.gtceu.uv_battery_buffer_4x": "4x§3极限压§r电池箱(§3UV§r)", + "block.gtceu.uv_battery_buffer_8x": "8x§3极限压§r电池箱(§3UV§r)", + "block.gtceu.uv_bender": "§3终极卷板机§r", + "block.gtceu.uv_brewery": "§3终极酿造室§r", + "block.gtceu.uv_canner": "§3终极装罐机§r", + "block.gtceu.uv_centrifuge": "§3终极离心机§r", + "block.gtceu.uv_charger_4x": "4x§3极限压§r闪聚充电箱(§3UV§r)", + "block.gtceu.uv_chemical_bath": "§3终极化学浸洗机§r", + "block.gtceu.uv_chemical_reactor": "§3终极化学反应釜§r", + "block.gtceu.uv_circuit_assembler": "§3终极电路组装机§r", + "block.gtceu.uv_compressor": "§3终极压缩机§r", + "block.gtceu.uv_cutter": "§3终极切割机§r", + "block.gtceu.uv_diode": "§3UV§r二极管", + "block.gtceu.uv_distillery": "§3终极蒸馏室§r", + "block.gtceu.uv_dual_input_hatch": "§3UV§r输入总成", + "block.gtceu.uv_dual_output_hatch": "§3UV§r输出总成", + "block.gtceu.uv_electric_furnace": "§3终极电炉§r", + "block.gtceu.uv_electrolyzer": "§3终极电解机§r", + "block.gtceu.uv_electromagnetic_separator": "§3终极电磁选矿机§r", + "block.gtceu.uv_energy_input_hatch": "§3UV§r能源仓", + "block.gtceu.uv_energy_input_hatch_16a": "16安§3UV§r能源仓", + "block.gtceu.uv_energy_input_hatch_4a": "4安§3UV§r能源仓", + "block.gtceu.uv_energy_output_hatch": "§3UV§r动力仓", + "block.gtceu.uv_energy_output_hatch_16a": "16安§3UV§r动力仓", + "block.gtceu.uv_energy_output_hatch_4a": "4安§3UV§r动力仓", + "block.gtceu.uv_extractor": "§3终极提取机§r", + "block.gtceu.uv_extruder": "§3终极压模器§r", + "block.gtceu.uv_fermenter": "§3终极发酵槽§r", + "block.gtceu.uv_fluid_heater": "§3终极流体加热器§r", + "block.gtceu.uv_fluid_passthrough_hatch": "§3UV§r流体通行仓", + "block.gtceu.uv_fluid_solidifier": "§3终极流体固化器§r", + "block.gtceu.uv_forge_hammer": "§3终极锻造锤§r", + "block.gtceu.uv_forming_press": "§3终极冲压机床§r", + "block.gtceu.uv_fusion_reactor": "核聚变反应堆控制电脑 MK-III", + "block.gtceu.uv_gas_collector": "§3终极集气室§r", + "block.gtceu.uv_hermetic_casing": "密封机械方块 VIII", + "block.gtceu.uv_input_bus": "§3UV§r输入总线", + "block.gtceu.uv_input_hatch": "§3UV§r输入仓", + "block.gtceu.uv_input_hatch_4x": "§3UV§r四重输入仓", + "block.gtceu.uv_input_hatch_9x": "§3UV§r九重输入仓", + "block.gtceu.uv_item_passthrough_hatch": "§3UV§r物品通行仓", + "block.gtceu.uv_lapotronic_battery": "兰波顿电容(§3UV§r)", + "block.gtceu.uv_laser_engraver": "§3终极激光蚀刻机§r", + "block.gtceu.uv_lathe": "§3终极车床§r", + "block.gtceu.uv_macerator": "§3终极研磨机§r", + "block.gtceu.uv_machine_casing": "§3UV§r机械方块", + "block.gtceu.uv_machine_hull": "§3UV§f机器外壳", + "block.gtceu.uv_mixer": "§3终极搅拌机§r", + "block.gtceu.uv_muffler_hatch": "§3UV§r消声仓", + "block.gtceu.uv_ore_washer": "§3终极洗矿厂§r", + "block.gtceu.uv_output_bus": "§3UV§r输出总线", + "block.gtceu.uv_output_hatch": "§3UV§r输出仓", + "block.gtceu.uv_output_hatch_4x": "§3UV§r四重输出仓", + "block.gtceu.uv_output_hatch_9x": "§3UV§r九重输出仓", + "block.gtceu.uv_packer": "§3终极打包机§r", + "block.gtceu.uv_parallel_hatch": "§3UV§r并行控制仓", + "block.gtceu.uv_polarizer": "§3终极两极磁化机§r", + "block.gtceu.uv_quantum_chest": "量子箱 VIII", + "block.gtceu.uv_quantum_tank": "量子缸 VIII", + "block.gtceu.uv_rock_crusher": "§3终极碎岩机§r", + "block.gtceu.uv_rotor_holder": "§3UV§r转子支架", + "block.gtceu.uv_scanner": "§3终极扫描仪§r", + "block.gtceu.uv_sifter": "§3终极筛选机§r", + "block.gtceu.uv_substation_input_hatch_64a": "64安§3UV§r变电能源仓", + "block.gtceu.uv_substation_output_hatch_64a": "64安§3UV§r变电动力仓", + "block.gtceu.uv_thermal_centrifuge": "§3终极热力离心机§r", + "block.gtceu.uv_transformer_16a": "§3极限压§r高能变压器(§3UV§r)", + "block.gtceu.uv_transformer_1a": "§3极限压§r变压器(§3UV§r)", + "block.gtceu.uv_transformer_2a": "§3极限压§r进阶变压器(§3UV§r)", + "block.gtceu.uv_transformer_4a": "§3极限压§r高流变压器(§3UV§r)", + "block.gtceu.uv_wiremill": "§3终极线材轧机§r", + "block.gtceu.uv_world_accelerator": "§3终极世界加速器§r", + "block.gtceu.uxv_1024a_laser_source_hatch": "1024§e安§r§eUXV§r激光源仓", + "block.gtceu.uxv_1024a_laser_target_hatch": "1024§e安§r§eUXV§r激光靶仓", + "block.gtceu.uxv_16a_energy_converter": "16§e安§r§eUXV§r能量转换器", + "block.gtceu.uxv_1a_energy_converter": "1§e安§r§eUXV§r能量转换器", + "block.gtceu.uxv_256a_laser_source_hatch": "256§e安§r§eUXV§r激光源仓", + "block.gtceu.uxv_256a_laser_target_hatch": "256§e安§r§eUXV§r激光靶仓", + "block.gtceu.uxv_4096a_laser_source_hatch": "4096§e安§r§eUXV§r激光源仓", + "block.gtceu.uxv_4096a_laser_target_hatch": "4096§e安§r§eUXV§r激光靶仓", + "block.gtceu.uxv_4a_energy_converter": "4§e安§r§eUXV§r能量转换器", + "block.gtceu.uxv_8a_energy_converter": "8§e安§r§eUXV§r能量转换器", + "block.gtceu.uxv_alloy_smelter": "§e史诗合金炉 IV§r", + "block.gtceu.uxv_arc_furnace": "§e史诗电弧炉 IV§r", + "block.gtceu.uxv_assembler": "§e史诗组装机 IV§r", + "block.gtceu.uxv_autoclave": "§e史诗高压釜 IV§r", + "block.gtceu.uxv_battery_buffer_16x": "16x§e极顶压§r电池箱(§eUXV§r)", + "block.gtceu.uxv_battery_buffer_4x": "4x§e极顶压§r电池箱(§eUXV§r)", + "block.gtceu.uxv_battery_buffer_8x": "8x§e极顶压§r电池箱(§eUXV§r)", + "block.gtceu.uxv_bender": "§e史诗卷板机 IV§r", + "block.gtceu.uxv_brewery": "§e史诗酿造室 IV§r", + "block.gtceu.uxv_canner": "§e史诗装罐机 IV§r", + "block.gtceu.uxv_centrifuge": "§e史诗离心机 IV§r", + "block.gtceu.uxv_charger_4x": "4x§e极顶压§r闪聚充电箱(§eUXV§r)", + "block.gtceu.uxv_chemical_bath": "§e史诗化学浸洗机 IV§r", + "block.gtceu.uxv_chemical_reactor": "§e史诗化学反应釜 IV§r", + "block.gtceu.uxv_circuit_assembler": "§e史诗电路组装机 IV§r", + "block.gtceu.uxv_compressor": "§e史诗压缩机 IV§r", + "block.gtceu.uxv_cutter": "§e史诗切割机 IV§r", + "block.gtceu.uxv_diode": "§eUXV§r二极管", + "block.gtceu.uxv_distillery": "§e史诗蒸馏室 IV§r", + "block.gtceu.uxv_dual_input_hatch": "§eUXV§r输入总成", + "block.gtceu.uxv_dual_output_hatch": "§eUXV§r输出总成", + "block.gtceu.uxv_electric_furnace": "§e史诗电炉 IV§r", + "block.gtceu.uxv_electrolyzer": "§e史诗电解机 IV§r", + "block.gtceu.uxv_electromagnetic_separator": "§e史诗电磁选矿机 IV§r", + "block.gtceu.uxv_energy_input_hatch": "§eUXV§r能源仓", + "block.gtceu.uxv_energy_input_hatch_16a": "16安§eUXV§r能源仓", + "block.gtceu.uxv_energy_input_hatch_4a": "4安§eUXV§r能源仓", + "block.gtceu.uxv_energy_output_hatch": "§eUXV§r动力仓", + "block.gtceu.uxv_energy_output_hatch_16a": "16安§eUXV§r动力仓", + "block.gtceu.uxv_energy_output_hatch_4a": "4安§eUXV§r动力仓", + "block.gtceu.uxv_extractor": "§e史诗提取机 IV§r", + "block.gtceu.uxv_extruder": "§e史诗压模器 IV§r", + "block.gtceu.uxv_fermenter": "§e史诗发酵槽 IV§r", + "block.gtceu.uxv_fluid_heater": "§e史诗流体加热器 IV§r", + "block.gtceu.uxv_fluid_passthrough_hatch": "§eUXV§r流体通行仓", + "block.gtceu.uxv_fluid_solidifier": "§e史诗流体固化器 IV§r", + "block.gtceu.uxv_forge_hammer": "§e史诗锻造锤 IV§r", + "block.gtceu.uxv_forming_press": "§e史诗冲压机床 IV§r", + "block.gtceu.uxv_gas_collector": "§e史诗集气室 IV§r", + "block.gtceu.uxv_input_bus": "§eUXV§r输入总线", + "block.gtceu.uxv_input_hatch": "§eUXV§r输入仓", + "block.gtceu.uxv_input_hatch_4x": "§eUXV§r四重输入仓", + "block.gtceu.uxv_input_hatch_9x": "§eUXV§r九重输入仓", + "block.gtceu.uxv_item_passthrough_hatch": "§eUXV§r物品通行仓", + "block.gtceu.uxv_laser_engraver": "§e史诗激光蚀刻机 IV§r", + "block.gtceu.uxv_lathe": "§e史诗车床 IV§r", + "block.gtceu.uxv_macerator": "§e史诗研磨机 IV§r", + "block.gtceu.uxv_machine_casing": "§eUXV§r机械方块", + "block.gtceu.uxv_machine_hull": "§eUXV§f机器外壳", + "block.gtceu.uxv_mixer": "§e史诗搅拌机 IV§r", + "block.gtceu.uxv_muffler_hatch": "§eUXV§r消声仓", + "block.gtceu.uxv_ore_washer": "§e史诗洗矿厂 IV§r", + "block.gtceu.uxv_output_bus": "§eUXV§r输出总线", + "block.gtceu.uxv_output_hatch": "§eUXV§r输出仓", + "block.gtceu.uxv_output_hatch_4x": "§eUXV§r四重输出仓", + "block.gtceu.uxv_output_hatch_9x": "§eUXV§r九重输出仓", + "block.gtceu.uxv_packer": "§e史诗打包机 IV§r", + "block.gtceu.uxv_polarizer": "§e史诗两极磁化机 IV§r", + "block.gtceu.uxv_quantum_chest": "量子箱 XII", + "block.gtceu.uxv_quantum_tank": "量子缸 XII", + "block.gtceu.uxv_rock_crusher": "§e史诗碎岩机 IV§r", + "block.gtceu.uxv_rotor_holder": "§eUXV§r转子支架", + "block.gtceu.uxv_scanner": "§e史诗扫描仪 IV§r", + "block.gtceu.uxv_sifter": "§e史诗筛选机 IV§r", + "block.gtceu.uxv_substation_input_hatch_64a": "64安§eUXV§r变电能源仓", + "block.gtceu.uxv_substation_output_hatch_64a": "64安§eUXV§r变电动力仓", + "block.gtceu.uxv_thermal_centrifuge": "§e史诗热力离心机 IV§r", + "block.gtceu.uxv_transformer_16a": "§e极顶压§r高能变压器(§eUXV§r)", + "block.gtceu.uxv_transformer_1a": "§e极顶压§r变压器(§eUXV§r)", + "block.gtceu.uxv_transformer_2a": "§e极顶压§r进阶变压器(§eUXV§r)", + "block.gtceu.uxv_transformer_4a": "§e极顶压§r高流变压器(§eUXV§r)", + "block.gtceu.uxv_wiremill": "§e史诗线材轧机 IV§r", + "block.gtceu.vacuum_freezer": "真空冷冻机", + "block.gtceu.vibration_safe_casing": "防震机械方块", + "block.gtceu.void_hazard_sign_block": "虚空危害警示方块", + "block.gtceu.watertight_casing": "防水机械方块", + "block.gtceu.white_borderless_lamp": "白色无框灯", + "block.gtceu.white_lamp": "白色灯", + "block.gtceu.white_large_metal_sheet": "白色粗纹金属板方块", + "block.gtceu.white_metal_sheet": "白色金属板方块", + "block.gtceu.white_studs": "白色橡胶混凝土", + "block.gtceu.wire_coil.tooltip_cracking": "§8裂化机:", + "block.gtceu.wire_coil.tooltip_energy_cracking": "§a耗能:§f%s%%", + "block.gtceu.wire_coil.tooltip_energy_smelter": "§a耗能:§8每配方§f%s EU/t", + "block.gtceu.wire_coil.tooltip_extended_info": "§7按住§6SHIFT§7获得更多线圈信息", + "block.gtceu.wire_coil.tooltip_heat": "§c基础热容:§f%d K", + "block.gtceu.wire_coil.tooltip_parallel_smelter": "§5最大并行:§f%s", + "block.gtceu.wire_coil.tooltip_pyro": "§8热解炉:", + "block.gtceu.wire_coil.tooltip_smelter": "§8工业熔炉:", + "block.gtceu.wire_coil.tooltip_speed_pyro": "§b处理速度:§f%s%%", + "block.gtceu.wood_crate": "木板条箱", + "block.gtceu.wood_drum": "木桶", + "block.gtceu.wood_wall": "木壁", + "block.gtceu.wooden_multiblock_tank": "木制多方块储罐", + "block.gtceu.wooden_tank_valve": "木制储罐阀门", + "block.gtceu.yellow_borderless_lamp": "黄色无框灯", + "block.gtceu.yellow_lamp": "黄色灯", + "block.gtceu.yellow_large_metal_sheet": "黄色粗纹金属板方块", + "block.gtceu.yellow_metal_sheet": "黄色金属板方块", + "block.gtceu.yellow_stripes_block.a": "黄色路障方块", + "block.gtceu.yellow_stripes_block.b": "黄色路障方块", + "block.gtceu.yellow_stripes_block.c": "黄色路障方块", + "block.gtceu.yellow_stripes_block.d": "黄色路障方块", + "block.gtceu.yellow_stripes_block_a": "黄色路障方块A", + "block.gtceu.yellow_stripes_block_b": "黄色路障方块B", + "block.gtceu.yellow_studs": "黄色橡胶混凝土", + "block.gtceu.zpm_1024a_laser_source_hatch": "1024§e安§r§cZPM§r激光源仓", + "block.gtceu.zpm_1024a_laser_target_hatch": "1024§e安§r§cZPM§r激光靶仓", + "block.gtceu.zpm_16a_energy_converter": "16§e安§r§cZPM§r能量转换器", + "block.gtceu.zpm_1a_energy_converter": "1§e安§r§cZPM§r能量转换器", + "block.gtceu.zpm_256a_laser_source_hatch": "256§e安§r§cZPM§r激光源仓", + "block.gtceu.zpm_256a_laser_target_hatch": "256§e安§r§cZPM§r激光靶仓", + "block.gtceu.zpm_4096a_laser_source_hatch": "4096§e安§r§cZPM§r激光源仓", + "block.gtceu.zpm_4096a_laser_target_hatch": "4096§e安§r§cZPM§r激光靶仓", + "block.gtceu.zpm_4a_energy_converter": "4§e安§r§cZPM§r能量转换器", + "block.gtceu.zpm_8a_energy_converter": "8§e安§r§cZPM§r能量转换器", + "block.gtceu.zpm_alloy_smelter": "§c精英合金炉 III§r", + "block.gtceu.zpm_arc_furnace": "§c精英电弧炉 III§r", + "block.gtceu.zpm_assembler": "§c精英组装机 III§r", + "block.gtceu.zpm_autoclave": "§c精英高压釜 III§r", + "block.gtceu.zpm_battery_buffer_16x": "16x§c零点压§r电池箱(§cZPM§r)", + "block.gtceu.zpm_battery_buffer_4x": "4x§c零点压§r电池箱(§cZPM§r)", + "block.gtceu.zpm_battery_buffer_8x": "8x§c零点压§r电池箱(§cZPM§r)", + "block.gtceu.zpm_bender": "§c精英卷板机 III§r", + "block.gtceu.zpm_brewery": "§c精英酿造室 III§r", + "block.gtceu.zpm_canner": "§c精英装罐机 III§r", + "block.gtceu.zpm_centrifuge": "§c精英离心机 III§r", + "block.gtceu.zpm_charger_4x": "4x§c零点压§r闪聚充电箱(§cZPM§r)", + "block.gtceu.zpm_chemical_bath": "§c精英化学浸洗机 III§r", + "block.gtceu.zpm_chemical_reactor": "§c精英化学反应釜 III§r", + "block.gtceu.zpm_circuit_assembler": "§c精英电路组装机 III§r", + "block.gtceu.zpm_compressor": "§c精英压缩机 III§r", + "block.gtceu.zpm_cutter": "§c精英切割机 III§r", + "block.gtceu.zpm_diode": "§cZPM§r二极管", + "block.gtceu.zpm_distillery": "§c精英蒸馏室 III§r", + "block.gtceu.zpm_dual_input_hatch": "§cZPM§r输入总成", + "block.gtceu.zpm_dual_output_hatch": "§cZPM§r输出总成", + "block.gtceu.zpm_electric_furnace": "§c精英电炉 III§r", + "block.gtceu.zpm_electrolyzer": "§c精英电解机 III§r", + "block.gtceu.zpm_electromagnetic_separator": "§c精英电磁选矿机 III§r", + "block.gtceu.zpm_energy_input_hatch": "§cZPM§r能源仓", + "block.gtceu.zpm_energy_input_hatch_16a": "16安§cZPM§r能源仓", + "block.gtceu.zpm_energy_input_hatch_4a": "4安§cZPM§r能源仓", + "block.gtceu.zpm_energy_output_hatch": "§cZPM§r动力仓", + "block.gtceu.zpm_energy_output_hatch_16a": "16安§cZPM§r动力仓", + "block.gtceu.zpm_energy_output_hatch_4a": "4安§cZPM§r动力仓", + "block.gtceu.zpm_extractor": "§c精英提取机 III§r", + "block.gtceu.zpm_extruder": "§c精英压模器 III§r", + "block.gtceu.zpm_fermenter": "§c精英发酵槽 III§r", + "block.gtceu.zpm_fluid_heater": "§c精英流体加热器 III§r", + "block.gtceu.zpm_fluid_passthrough_hatch": "§cZPM§r流体通行仓", + "block.gtceu.zpm_fluid_solidifier": "§c精英流体固化器 III§r", + "block.gtceu.zpm_forge_hammer": "§c精英锻造锤 III§r", + "block.gtceu.zpm_forming_press": "§c精英冲压机床 III§r", + "block.gtceu.zpm_fusion_reactor": "核聚变反应堆控制电脑 MK-II", + "block.gtceu.zpm_gas_collector": "§c精英集气室 III§r", + "block.gtceu.zpm_hermetic_casing": "密封机械方块 VII", + "block.gtceu.zpm_input_bus": "§cZPM§r输入总线", + "block.gtceu.zpm_input_hatch": "§cZPM§r输入仓", + "block.gtceu.zpm_input_hatch_4x": "§cZPM§r四重输入仓", + "block.gtceu.zpm_input_hatch_9x": "§cZPM§r九重输入仓", + "block.gtceu.zpm_item_passthrough_hatch": "§cZPM§r物品通行仓", + "block.gtceu.zpm_lapotronic_battery": "兰波顿电容(§cZPM§r)", + "block.gtceu.zpm_laser_engraver": "§c精英激光蚀刻机 III§r", + "block.gtceu.zpm_lathe": "§c精英车床 III§r", + "block.gtceu.zpm_macerator": "§c精英研磨机 III§r", + "block.gtceu.zpm_machine_casing": "§cZPM§r机械方块", + "block.gtceu.zpm_machine_hull": "§cZPM§f机器外壳", + "block.gtceu.zpm_mixer": "§c精英搅拌机 III§r", + "block.gtceu.zpm_muffler_hatch": "§cZPM§r消声仓", + "block.gtceu.zpm_ore_washer": "§c精英洗矿厂 III§r", + "block.gtceu.zpm_output_bus": "§cZPM§r输出总线", + "block.gtceu.zpm_output_hatch": "§cZPM§r输出仓", + "block.gtceu.zpm_output_hatch_4x": "§cZPM§r四重输出仓", + "block.gtceu.zpm_output_hatch_9x": "§cZPM§r九重输出仓", + "block.gtceu.zpm_packer": "§c精英打包机 III§r", + "block.gtceu.zpm_parallel_hatch": "§cZPM§r并行控制仓", + "block.gtceu.zpm_polarizer": "§c精英两极磁化机 III§r", + "block.gtceu.zpm_quantum_chest": "量子箱 VII", + "block.gtceu.zpm_quantum_tank": "量子缸 VII", + "block.gtceu.zpm_rock_crusher": "§c精英碎岩机 III§r", + "block.gtceu.zpm_rotor_holder": "§cZPM§r转子支架", + "block.gtceu.zpm_scanner": "§c精英扫描仪III§r", + "block.gtceu.zpm_sifter": "§c精英筛选机 III§r", + "block.gtceu.zpm_substation_input_hatch_64a": "64安§cZPM§r变电能源仓", + "block.gtceu.zpm_substation_output_hatch_64a": "64安§cZPM§r变电动力仓", + "block.gtceu.zpm_thermal_centrifuge": "§c精英热力离心机 III§r", + "block.gtceu.zpm_transformer_16a": "§c零点压§r高能变压器(§cZPM§r)", + "block.gtceu.zpm_transformer_1a": "§c零点压§r变压器(§cZPM§r)", + "block.gtceu.zpm_transformer_2a": "§c零点压§r进阶变压器(§cZPM§r)", + "block.gtceu.zpm_transformer_4a": "§c零点压§r高流变压器(§cZPM§r)", + "block.gtceu.zpm_wiremill": "§c精英线材轧机 III§r", + "block.gtceu.zpm_world_accelerator": "§c精英世界加速器 III§r", + "block.sterilizing_filter_casing.tooltip": "创造一个§a无菌§r环境", + "block.surface_rock": "地表岩石(%s)", + "button.gtceu.mark_as_depleted.name": "标记为枯竭", + "button.gtceu.toggle_waypoint.name": "切换路径点", + "command.gtceu.cape.give.failed": "没有解锁新的披风", + "command.gtceu.cape.give.success.multiple": "为%2$s名玩家解锁了%1$s件披风", + "command.gtceu.cape.give.success.single": "为%2$s解锁了%1$s件披风", + "command.gtceu.cape.take.failed": "没有可以被移除的披风", + "command.gtceu.cape.take.success.multiple": "为%2$s名玩家移除了%1$s件披风", + "command.gtceu.cape.take.success.single": "为%2$s移除了%1$s件披风", + "command.gtceu.cape.use.failed": "%s无法使用披风%s,因为他没有此披风(或者此披风不存在)!", + "command.gtceu.cape.use.success": "%s已装备披风%s", + "command.gtceu.cape.use.success.none": "%s不再装备披风", + "command.gtceu.dump_data.success": "已将注册表%2$s中的%1$s个资源转储到%3$s", + "command.gtceu.medical_condition.get": "玩家%s有以下疾病:", + "command.gtceu.medical_condition.get.element": "症状【%s】§r:%s分%s秒", + "command.gtceu.medical_condition.get.element.permanent": "症状【%s】§r:%s分%s秒(永久)", + "command.gtceu.medical_condition.get.empty": "玩家%s没有疾病。", + "command.gtceu.place_vein.failure": "无法放置%s矿脉于%s", + "command.gtceu.place_vein.success": "成功放置%s矿脉于%s", + "command.gtceu.share_prospection_data.notification": "%s向你分享了矿脉数据!", + "config.gtceu.option.addLoot": "添加战利品", + "config.gtceu.option.ae2": "ae2", + "config.gtceu.option.allUniqueStoneTypes": "所有独特石头类型", + "config.gtceu.option.animationTime": "动画时间", + "config.gtceu.option.armorHud": "盔甲HUD", + "config.gtceu.option.batchDuration": "批处理持续时间", + "config.gtceu.option.bedrockOreDistance": "基岩矿石距离", + "config.gtceu.option.bedrockOreDropTagPrefix": "基岩矿石掉落Tag", + "config.gtceu.option.borderColor": "边框颜色", + "config.gtceu.option.bronzeBoilerHeatSpeed": "青铜锅炉-加热速度", + "config.gtceu.option.bronzeBoilerMaxTemperature": "青铜锅炉-最高温度", + "config.gtceu.option.buttonAnchor": "按钮位置", + "config.gtceu.option.casingsPerCraft": "每次合成机械方块数量", + "config.gtceu.option.cleanMultiblocks": "多方块结构是否洁净", + "config.gtceu.option.client": "客户端", + "config.gtceu.option.coloredTieredMachineOutline": "彩色电力机器轮廓", + "config.gtceu.option.coloredWireOutline": "彩色线缆轮廓", + "config.gtceu.option.compat": "兼容", + "config.gtceu.option.debug": "调试", + "config.gtceu.option.debugWorldgen": "矿石位置Debug模式", + "config.gtceu.option.defaultPaintingColor": "机器默认喷漆颜色", + "config.gtceu.option.defaultUIColor": "默认UI颜色", + "config.gtceu.option.dev": "开发", + "config.gtceu.option.direction": "方向", + "config.gtceu.option.disableManualCompression": "关闭手工压缩", + "config.gtceu.option.doBedrockOres": "添加基岩矿石", + "config.gtceu.option.doSuperflatOres": "超平坦世界生成矿石", + "config.gtceu.option.doesExplosionDamagesTerrain": "机器爆炸是否破坏地形", + "config.gtceu.option.dumpAssets": "导出资源", + "config.gtceu.option.dumpRecipes": "导出配方", + "config.gtceu.option.enableCleanroom": "启用超净间", + "config.gtceu.option.enableFEConverters": "启用FE转换器", + "config.gtceu.option.enableMaintenance": "启用维护仓", + "config.gtceu.option.enableResearch": "启用研究", + "config.gtceu.option.enableTieredCasings": "启用分级机械方块", + "config.gtceu.option.enableWorldAccelerators": "启用世界加速器", + "config.gtceu.option.enchantedTools": "附魔工具", + "config.gtceu.option.energy": "能量", + "config.gtceu.option.energyConsumption": "能耗", + "config.gtceu.option.energyUsageMultiplier": "能源消耗倍率", + "config.gtceu.option.environmentalHazardDecayRate": "环境污染衰减速率", + "config.gtceu.option.environmentalHazards": "环境污染", + "config.gtceu.option.euToFeRatio": "GTEU到FE的转换比例", + "config.gtceu.option.feToEuRatio": "FE到GTEU的转换比例", + "config.gtceu.option.flintAndSteelRequireSteel": "打火石配方是否需要钢", + "config.gtceu.option.ftbChunksIntegration": "FTB区块-集成", + "config.gtceu.option.gameplay": "游戏玩法", + "config.gtceu.option.generateLowQualityGems": "生成劣质宝石", + "config.gtceu.option.ghostCircuit": "虚拟电路", + "config.gtceu.option.gt6StylePipesCables": "类GT6管道/线缆", + "config.gtceu.option.hardAdvancedIronRecipes": "更难的高级铁制品配方", + "config.gtceu.option.hardDyeRecipes": "更难的染料配方", + "config.gtceu.option.hardGlassRecipes": "更难的玻璃配方", + "config.gtceu.option.hardIronRecipes": "更难的铁制品配方", + "config.gtceu.option.hardMiscRecipes": "更难的杂项配方", + "config.gtceu.option.hardMultiRecipes": "更难的多方块控制器配方", + "config.gtceu.option.hardRedstoneRecipes": "更难的红石配方", + "config.gtceu.option.hardToolArmorRecipes": "更难的工具盔甲配方", + "config.gtceu.option.hardWoodRecipes": "更难的木头配方", + "config.gtceu.option.harderBrickRecipes": "更难的砖块配方", + "config.gtceu.option.harderCharcoalRecipe": "更难的木炭配方", + "config.gtceu.option.harderCircuitRecipes": "更难的电路板配方", + "config.gtceu.option.harderRods": "更难的杆配方", + "config.gtceu.option.harmlessActiveTransformers": "无害的有源变压器", + "config.gtceu.option.hazardsEnabled": "启用危险物质", + "config.gtceu.option.hideFacadesInRecipeViewer": "配方浏览器中隐藏伪装板", + "config.gtceu.option.hideFilledCellsInRecipeViewer": "配方浏览器中隐藏装满的单元", + "config.gtceu.option.hideOreProcessingDiagrams": "隐藏矿物处理流程图", + "config.gtceu.option.highTierContent": "极高电压内容", + "config.gtceu.option.hpLiquidBoilerBaseOutput": "高压液体锅炉-基础输出", + "config.gtceu.option.hpSolarBoilerBaseOutput": "高压太阳能锅炉-基础输出", + "config.gtceu.option.hpSolidBoilerBaseOutput": "高压固体锅炉-基础输出", + "config.gtceu.option.hudLocation": "HUD位置", + "config.gtceu.option.hudOffsetX": "HUD偏移X", + "config.gtceu.option.hudOffsetY": "HUD偏移Y", + "config.gtceu.option.inWorldPreviewDuration": "世界中预览时长", + "config.gtceu.option.increaseDungeonLoot": "更多的地牢战利品", + "config.gtceu.option.infiniteBedrockOresFluids": "无限基岩矿石流体", + "config.gtceu.option.journeyMapIntegration": "旅行地图-集成", + "config.gtceu.option.largeBoilers": "大型锅炉", + "config.gtceu.option.ldFluidPipeMinDistance": "长距流体管道最小距离", + "config.gtceu.option.ldItemPipeMinDistance": "长距物品管道最小距离", + "config.gtceu.option.liquidBoilerBaseOutput": "液体锅炉-基础输出", + "config.gtceu.option.machineSounds": "机器音效", + "config.gtceu.option.machines": "机器", + "config.gtceu.option.machinesEmissiveTextures": "启用机器泛光纹理", + "config.gtceu.option.meHatchEnergyUsage": "ME仓能耗", + "config.gtceu.option.minerSpeed": "采矿机速度", + "config.gtceu.option.minimap": "小地图", + "config.gtceu.option.nanoSaber": "纳米剑", + "config.gtceu.option.nanoSaberBaseDamage": "纳米剑基础伤害", + "config.gtceu.option.nanoSaberDamageBoost": "纳米剑伤害增幅", + "config.gtceu.option.nativeEUToFE": "线缆直接给FE机器供能", + "config.gtceu.option.nerfPaperCrafting": "削弱纸配方", + "config.gtceu.option.nerfWoodCrafting": "削弱木板木棍合成", + "config.gtceu.option.onlyOwnerBreak": "仅所有者可破坏", + "config.gtceu.option.onlyOwnerGUI": "仅所有者可开启GUI", + "config.gtceu.option.orderedAssemblyLineFluids": "有序的装配线-流体", + "config.gtceu.option.orderedAssemblyLineItems": "有序的装配线-物品", + "config.gtceu.option.oreBlockProspectRange": "矿石方块探测半径", + "config.gtceu.option.oreGenerationChunkCacheSize": "矿物生成区块缓存大小", + "config.gtceu.option.oreIconSize": "矿石图标大小", + "config.gtceu.option.oreIndicatorChunkCacheSize": "矿脉指示物区块缓存大小", + "config.gtceu.option.oreIndicators": "矿脉指示物", + "config.gtceu.option.oreNamePrefix": "矿石名称前缀", + "config.gtceu.option.oreScaleStop": "最大图标缩放比例", + "config.gtceu.option.oreVeinGridSize": "矿脉网格大小", + "config.gtceu.option.oreVeinRandomOffset": "矿脉随机偏移", + "config.gtceu.option.oreVeins": "矿脉", + "config.gtceu.option.ownerOPBypass": "跳过所有权检查的最低权限等级", + "config.gtceu.option.prospectorEnergyUseMultiplier": "探矿仪能源消耗乘数", + "config.gtceu.option.recipeProgressLowEnergy": "跳电时,机器进度将", + "config.gtceu.option.recipes": "配方", + "config.gtceu.option.removeSmeltingForEBFMetals": "移除需要电力高炉冶炼的金属的熔炉配方", + "config.gtceu.option.removeVanillaBlockRecipes": "移除原版方块配方", + "config.gtceu.option.removeVanillaLargeOreVeins": "移除原版大型矿脉", + "config.gtceu.option.removeVanillaOreGen": "移除原版矿石", + "config.gtceu.option.removeVanillaTNTRecipe": "移除原版TNT配方", + "config.gtceu.option.renderFluids": "渲染流体", + "config.gtceu.option.renderer": "渲染器", + "config.gtceu.option.replaceMinedBlocksWith": "用...替换采矿机采过的方块", + "config.gtceu.option.requireGTToolsForBlocks": "方块需要格雷工具", + "config.gtceu.option.rngDamageElectricTools": "电动工具耐久度消耗概率", + "config.gtceu.option.rubberTreeSpawnChance": "橡胶树生成权重", + "config.gtceu.option.sandOresFall": "沙子矿石受重力吗", + "config.gtceu.option.shouldWeatherOrTerrainExplosion": "机器是否因天气或地形爆炸", + "config.gtceu.option.showDimensionTier": "显示维度等级", + "config.gtceu.option.smallBoilers": "小型锅炉", + "config.gtceu.option.solarBoilerBaseOutput": "太阳能锅炉-基础输出", + "config.gtceu.option.solidBoilerBaseOutput": "固体锅炉-基础输出", + "config.gtceu.option.sprayCanChainLength": "喷雾罐单次可喷涂长度", + "config.gtceu.option.steamMultiParallelAmount": "蒸汽多方块机器并行数", + "config.gtceu.option.steamPerWater": "蒸汽-水转化率", + "config.gtceu.option.steelBoilerHeatSpeed": "钢锅炉-加热速度", + "config.gtceu.option.steelBoilerMaxTemperature": "钢锅炉-最高温度", + "config.gtceu.option.steelSteamMultiblocks": "用钢的蒸汽多方块结构", + "config.gtceu.option.surfaceRockProspectRange": "地表岩石探测半径", + "config.gtceu.option.titaniumBoilerHeatSpeed": "钛锅炉-加热速度", + "config.gtceu.option.titaniumBoilerMaxTemperature": "钛锅炉-最高温度", + "config.gtceu.option.toggle": "切换", + "config.gtceu.option.toolCraftingSounds": "使用工具合成时播放声音", + "config.gtceu.option.toolUseSounds": "使用工具时播放声音", + "config.gtceu.option.tools": "工具", + "config.gtceu.option.treeFellingDelay": "砍树延迟", + "config.gtceu.option.tungstensteelBoilerHeatSpeed": "钨钢锅炉-加热速度", + "config.gtceu.option.tungstensteelBoilerMaxTemperature": "钨钢锅炉-最高温度", + "config.gtceu.option.universalHazards": "普遍化的危险物质", + "config.gtceu.option.updateIntervals": "更新间隔", + "config.gtceu.option.useVBO": "使用VBO", + "config.gtceu.option.voltageTierAdvImpeller": "进阶喷气背包电压等级", + "config.gtceu.option.voltageTierAdvNanoSuit": "进阶纳米胸甲电压等级", + "config.gtceu.option.voltageTierAdvQuarkTech": "进阶夸克胸甲电压等级", + "config.gtceu.option.voltageTierImpeller": "喷气背包电压等级", + "config.gtceu.option.voltageTierNanoSuit": "纳米套电压等级", + "config.gtceu.option.voltageTierNightVision": "夜视仪电压等级", + "config.gtceu.option.voltageTierQuarkTech": "夸克套电压等级", + "config.gtceu.option.worldAcceleratorBlacklist": "世界加速器黑名单", + "config.gtceu.option.worldgen": "世界生成", + "config.gtceu.option.xOffset": "x偏移", + "config.gtceu.option.xaerosMapIntegration": "Xaero地图-集成", + "config.gtceu.option.yOffset": "y偏移", + "config.gtceu.option.zombieSpawnWithSabers": "带纳米剑的僵尸生成", + "config.jade.plugin_gtceu.auto_output_info": "[GTCEu] 自动输出信息", + "config.jade.plugin_gtceu.cable_info": "[GTCEu] 线缆信息", + "config.jade.plugin_gtceu.controllable_provider": "[GTCEu] 是否停工", + "config.jade.plugin_gtceu.electric_container_provider": "[GTCEu] 电力槽", + "config.jade.plugin_gtceu.energy_converter_provider": "[GTCEu] 能量转换器模式", + "config.jade.plugin_gtceu.exhaust_vent_info": "[GTCEu] 排气口信息", + "config.jade.plugin_gtceu.hazard_cleaner_provider": "[GTCEu] 污染清理", + "config.jade.plugin_gtceu.machine_mode": "[GTCEu] 机器模式", + "config.jade.plugin_gtceu.maintenance_info": "[GTCEu] 维护信息", + "config.jade.plugin_gtceu.me_pattern_buffer": "[GTCEu] 样板总成信息", + "config.jade.plugin_gtceu.me_pattern_buffer_proxy": "[GTCEu] 样板总成镜像信息", + "config.jade.plugin_gtceu.multiblock_structure": "[GTCEu] 多方块结构", + "config.jade.plugin_gtceu.parallel_info": "[GTCEu] 并行信息", + "config.jade.plugin_gtceu.primitive_pump": "[GTCEu] 原始水泵信息", + "config.jade.plugin_gtceu.recipe_logic_provider": "[GTCEu] 配方信息", + "config.jade.plugin_gtceu.recipe_output_info": "[GTCEu] 配方输出信息", + "config.jade.plugin_gtceu.stained_color": "[GTCEu] 染色方块信息", + "config.jade.plugin_gtceu.steam_boiler_info": "[GTCEu] 蒸汽锅炉信息", + "config.jade.plugin_gtceu.transformer": "[GTCEu] 变压器信息", + "config.jade.plugin_gtceu.workable_provider": "[GTCEu] 工作信息", + "cover.advanced_detector.latch.disabled.0": "行为:线性", + "cover.advanced_detector.latch.disabled.1": "", + "cover.advanced_detector.latch.disabled.2": "更改此覆盖板的红石行为。", + "cover.advanced_detector.latch.disabled.3": "§e线性§7 - 默认模式;物品数量小于最小值时不发出红石信号,大于最大值时发出信号强度15的红石信号,数量介于二者之间发出信号强度在0 - 15之间的红石信号", + "cover.advanced_detector.latch.disabled.4": "§e锁存§7 - 发出满级红石信号,直到物品数量大于最大值;然后停止发出红石信号,直到数量低于最小值", + "cover.advanced_detector.latch.enabled.0": "行为:锁存", + "cover.advanced_detector.latch.enabled.1": "", + "cover.advanced_detector.latch.enabled.2": "更改此覆盖板的红石行为。", + "cover.advanced_detector.latch.enabled.3": "§e线性§7 - 默认模式;物品数量小于最小值时不发出红石信号,大于最大值时发出信号强度15的红石信号,数量介于二者之间发出信号强度在0 - 15之间的红石信号", + "cover.advanced_detector.latch.enabled.4": "§e锁存§7 - 发出满级红石信号,直到物品数量大于最大值;然后停止发出红石信号,直到数量低于最小值", + "cover.advanced_energy_detector.invert.disabled.0": "输出:普通", + "cover.advanced_energy_detector.invert.disabled.1": "", + "cover.advanced_energy_detector.invert.disabled.2": "切换以反转红石逻辑", + "cover.advanced_energy_detector.invert.disabled.3": "默认情况下,能量小于所设定的最小 EU 时覆盖板将发出红石信号,大于最大 EU 时则停止发出红石信号", + "cover.advanced_energy_detector.invert.enabled.0": "输出:反相", + "cover.advanced_energy_detector.invert.enabled.1": "", + "cover.advanced_energy_detector.invert.enabled.2": "切换以反转红石逻辑", + "cover.advanced_energy_detector.invert.enabled.3": "默认情况下,能量小于所设定的最小 EU 时覆盖板将发出红石信号,大于最大 EU 时则停止发出红石信号", + "cover.advanced_energy_detector.label": "进阶能量探测覆盖板", + "cover.advanced_energy_detector.max": "最大值", + "cover.advanced_energy_detector.min": "最小值", + "cover.advanced_energy_detector.use_percent.disabled.0": "模式:EU设定值", + "cover.advanced_energy_detector.use_percent.disabled.1": "", + "cover.advanced_energy_detector.use_percent.disabled.2": "使用给定的EU数值或百分比来比较所附着的能量存储中能量的最大/最小值。", + "cover.advanced_energy_detector.use_percent.enabled.0": "模式: 百分比", + "cover.advanced_energy_detector.use_percent.enabled.1": "", + "cover.advanced_energy_detector.use_percent.enabled.2": "使用给定的EU数值或百分比来比较所附着的能量存储中能量的最大/最小值。", + "cover.advanced_fluid_detector.invert.disabled.0": "输出:普通", + "cover.advanced_fluid_detector.invert.disabled.1": "", + "cover.advanced_fluid_detector.invert.disabled.2": "切换以反转红石逻辑", + "cover.advanced_fluid_detector.invert.disabled.3": "默认情况下,流体量介于所设定的最小值和最大值之间时覆盖板将发出红石信号,小于最小值时则停止发出红石信号", + "cover.advanced_fluid_detector.invert.enabled.0": "输出:反相", + "cover.advanced_fluid_detector.invert.enabled.1": "", + "cover.advanced_fluid_detector.invert.enabled.2": "切换以反转红石逻辑", + "cover.advanced_fluid_detector.invert.enabled.3": "默认情况下,流体量介于所设定的最小值和最大值之间时覆盖板将发出红石信号,小于最小值时则停止发出红石信号", + "cover.advanced_fluid_detector.label": "进阶流体探测器", + "cover.advanced_fluid_detector.max": "最大流体量(mB)", + "cover.advanced_fluid_detector.min": "最小流体量(mB)", + "cover.advanced_item_detector.invert.disabled.0": "输出:普通", + "cover.advanced_item_detector.invert.disabled.1": "", + "cover.advanced_item_detector.invert.disabled.2": "切换以反转红石逻辑", + "cover.advanced_item_detector.invert.disabled.3": "默认情况下,物品数量介于所设定的最小值和最大值之间时覆盖板将发出红石信号,小于最小值时则停止发出红石信号", + "cover.advanced_item_detector.invert.enabled.0": "输出:反相", + "cover.advanced_item_detector.invert.enabled.1": "", + "cover.advanced_item_detector.invert.enabled.2": "切换以反转红石逻辑", + "cover.advanced_item_detector.invert.enabled.3": "默认情况下,物品数量介于所设定的最小值和最大值之间时覆盖板将发出红石信号,小于最小值时则停止发出红石信号", + "cover.advanced_item_detector.label": "进阶物品探测器", + "cover.advanced_item_detector.max": "最大物品数量", + "cover.advanced_item_detector.min": "最小物品数量", + "cover.bucket.mode.bucket": "B", + "cover.bucket.mode.milli_bucket": "mB", + "cover.conveyor.blocks_input.disabled.0": "若启用,覆盖板设置为将物品从存储空间输出至管道时将阻止物品从所在面输入。", + "cover.conveyor.blocks_input.disabled.1": "§c已禁用", + "cover.conveyor.blocks_input.enabled.0": "若启用,覆盖板设置为将物品从存储空间输出至管道时将阻止物品从所在面输入。", + "cover.conveyor.blocks_input.enabled.1": "§a已启用", + "cover.conveyor.distribution.insert_first.0": "分配模式:§b优先级", + "cover.conveyor.distribution.insert_first.1": "§7将物品输入至所搜寻到的优先级最高的物品存储空间", + "cover.conveyor.distribution.insert_first.2": "§7加固物品管道会降低管道路径的优先级。", + "cover.conveyor.distribution.round_robin_global.0": "分配模式:§b轮询调度", + "cover.conveyor.distribution.round_robin_global.1": "§7将物品平分至相连的物品存储空间。", + "cover.conveyor.distribution.round_robin_prio.0": "分配模式:§b轮询调度(次序式)", + "cover.conveyor.distribution.round_robin_prio.1": "§7尝试将物品平分至相连的物品存储空间,并优先考虑优先级更高的。", + "cover.conveyor.distribution.round_robin_prio.2": "§7加固物品管道会降低管道路径的优先级。", + "cover.conveyor.item_filter.title": "物品过滤", + "cover.conveyor.mode": "模式:%s", + "cover.conveyor.mode.export": "模式:输出", + "cover.conveyor.mode.import": "模式:输入", + "cover.conveyor.tag.title.0": "标签名称", + "cover.conveyor.tag.title.1": "(*可作通配符)", + "cover.conveyor.title": "传送带覆盖板配置(%s)", + "cover.conveyor.transfer_rate": "§7物品/秒", + "cover.detector_base.message_inverted_state": "监控状态:反相", + "cover.detector_base.message_normal_state": "监控状态:普通", + "cover.ender_fluid_link.incomplete_hex.0": "输入的颜色不正确!", + "cover.ender_fluid_link.incomplete_hex.1": "输入正确的八位十六进制颜色码方可应用", + "cover.ender_fluid_link.incomplete_hex.2": "此时关闭界面将导致丢失编辑内容!", + "cover.ender_fluid_link.iomode.disabled": "已禁用I/O", + "cover.ender_fluid_link.iomode.enabled": "已启用I/O", + "cover.ender_fluid_link.private.tooltip.disabled.0": "切换至私有储罐模式", + "cover.ender_fluid_link.private.tooltip.disabled.1": "私有权归最初加装该覆盖板的玩家所有", + "cover.ender_fluid_link.private.tooltip.enabled": "切换至公共储罐模式", + "cover.ender_fluid_link.title": "末影流体连接", + "cover.ender_fluid_link.tooltip.channel_description": "把输入文本设为频道描述", + "cover.ender_fluid_link.tooltip.channel_name": "把输入文本设为频道名", + "cover.ender_fluid_link.tooltip.clear_button": "清除频道描述", + "cover.ender_fluid_link.tooltip.list_button": "显示频道列表", + "cover.filter.blacklist.disabled": "白名单", + "cover.filter.blacklist.enabled": "黑名单", + "cover.filter.mode.filter_both": "过滤两者", + "cover.filter.mode.filter_extract": "过滤输出", + "cover.filter.mode.filter_insert": "过滤输入", + "cover.fluid.voiding.advanced.title": "高级流体销毁设置", + "cover.fluid.voiding.title": "流体销毁设置", + "cover.fluid_filter.config_amount.0": "向上或向下滚动鼠标滚轮以增加或减少流体量。", + "cover.fluid_filter.config_amount.1": "Shift[§6x10§r],Ctrl[§ex100§r],Shift+Ctrl[§ax1000§r]", + "cover.fluid_filter.config_amount.2": "亦可通过右击或左击来增减流体量。", + "cover.fluid_filter.config_amount.3": "按住Shift时点击鼠标则将使流体量翻倍或减半。", + "cover.fluid_filter.config_amount.4": "点击中键以清除", + "cover.fluid_filter.mode.filter_both": "过滤两者", + "cover.fluid_filter.mode.filter_drain": "过滤输出", + "cover.fluid_filter.mode.filter_fill": "过滤输入", + "cover.fluid_filter.title": "流体过滤卡", + "cover.fluid_regulator.keep_exact": "保持供应:%s", + "cover.fluid_regulator.supply_exact": "精确供应:%s", + "cover.fluid_regulator.title": "流体校准器设置(%s)", + "cover.fluid_regulator.transfer_mode.description.0": "§e任意传输§r-在此模式下,覆盖板将传输任何与过滤器匹配的流体。", + "cover.fluid_regulator.transfer_mode.description.1": "§e精确供应-在此模式下,覆盖板会将此按钮下方窗口中指定的流体按指定量打包传输。若流体量小于指定量,流体不会被传输。", + "cover.fluid_regulator.transfer_mode.description.2": "§e保持供应-在此模式下,覆盖板将在目标容器中保持指定数量的液体,低于保持量时传输相应量的流体。", + "cover.fluid_regulator.transfer_mode.description.3": "§7小提示:按住Shift/Crtl把增加或减少的数量乘以10/100。", + "cover.item.voiding.advanced.title": "高级物品销毁设置", + "cover.item.voiding.title": "物品销毁设置", + "cover.item_filter.ignore_damage.disabled": "匹配耐久度", + "cover.item_filter.ignore_damage.enabled": "无视耐久度", + "cover.item_filter.ignore_nbt.disabled": "匹配NBT", + "cover.item_filter.ignore_nbt.enabled": "忽略NBT", + "cover.item_filter.title": "物品过滤卡", + "cover.item_smart_filter.filtering_mode.centrifuge": "离心机", + "cover.item_smart_filter.filtering_mode.description.0": "为该智能覆盖板选择目标机器。", + "cover.item_smart_filter.filtering_mode.description.1": "它能够自动挑选符合机器配方的物品。", + "cover.item_smart_filter.filtering_mode.electrolyzer": "电解机", + "cover.item_smart_filter.filtering_mode.sifter": "筛选机", + "cover.item_smart_filter.title": "智能物品过滤", + "cover.machine_controller.invert.disabled.0": "§e普通§r - 该模式下的覆盖板需要比设定强度小的红石信号来触发", + "cover.machine_controller.invert.enabled.0": "§e反相§r - 该模式下的覆盖板需要比设定强度大的红石信号来触发", + "cover.machine_controller.inverted": "反相", + "cover.machine_controller.mode.cover_down": "控制目标:覆盖板(底面)", + "cover.machine_controller.mode.cover_east": "控制目标:覆盖板(东面)", + "cover.machine_controller.mode.cover_north": "控制目标:覆盖板(北面)", + "cover.machine_controller.mode.cover_south": "控制目标:覆盖板(南面)", + "cover.machine_controller.mode.cover_up": "控制目标:覆盖板(顶面)", + "cover.machine_controller.mode.cover_west": "控制目标:覆盖板(西面)", + "cover.machine_controller.mode.machine": "控制目标:机器", + "cover.machine_controller.mode.null": "控制目标:无", + "cover.machine_controller.normal": "普通", + "cover.machine_controller.redstone": "最小红石信号强度:%d", + "cover.machine_controller.title": "机器控制设置", + "cover.pump.fluid_filter.title": "流体过滤", + "cover.pump.mode.export": "模式:输出", + "cover.pump.mode.import": "模式:输入", + "cover.pump.title": "泵覆盖板设置(%s)", + "cover.pump.transfer_rate": "%s", + "cover.robotic_arm.title": "机械臂设置(%s)", + "cover.robotic_arm.transfer_mode.description.0": "§e任意传输§r-在此模式下,覆盖板将尽可能传输一切符合过滤设置的物品。", + "cover.robotic_arm.transfer_mode.description.1": "§e精确补给§r-在此模式下,覆盖板每次都会输入在物品过滤卡的过滤槽中指定(或者在标签过滤卡的按钮里指定)数量的物品。若物品的数量小于指定数量,则不会被输入。", + "cover.robotic_arm.transfer_mode.description.2": "§e保持补给§r-在此模式下,覆盖板将保持目标容器中指定物品的数量,需要物品时则供应相应量的物品。", + "cover.robotic_arm.transfer_mode.description.3": "§7小提示:左/右击过滤槽可以调整物品数量,同时按住Shift可以更快地调整。", + "cover.robotic_arm.transfer_mode.keep_exact": "保持补给", + "cover.robotic_arm.transfer_mode.transfer_any": "任意传输", + "cover.robotic_arm.transfer_mode.transfer_exact": "精确补给", + "cover.shutter.message.disabled": "扇板已开启", + "cover.shutter.message.enabled": "扇板已关闭", + "cover.storage.title": "存储覆盖板", + "cover.tag_filter.info.0": "§b接受复杂表达式", + "cover.tag_filter.info.1": "§6a & b§r = 且(AND)", + "cover.tag_filter.info.10": "§b使用范例:§6*dusts/gold | (gtceu:circuits & !*lv)", + "cover.tag_filter.info.11": "这将匹配所有种类的金粉或LV以外的电路", + "cover.tag_filter.info.2": "§6a | b§r = 或(OR)", + "cover.tag_filter.info.3": "§6a ^ b§r = 异或(XOR)", + "cover.tag_filter.info.4": "§6!a§r = 非(NOT)", + "cover.tag_filter.info.5": "§6(a)§r 改变优先级", + "cover.tag_filter.info.6": "§6*§r 为通配符", + "cover.tag_filter.info.7": "§6$§r 为没有标签的物品/流体等", + "cover.tag_filter.info.8": "§b标签的格式为'命名空间:标签/子类型'。", + "cover.tag_filter.info.9": "如果没有提供命名空间,则为'forge:'。", + "cover.tag_filter.matches": "物品匹配", + "cover.tag_filter.matches_not": "物品不匹配", + "cover.tag_filter.test_slot.info": "放入一件物品以测试是否匹配过滤表达式", + "cover.tag_filter.title": "标签过滤", + "cover.universal.manual_import_export.mode.description.0": "§e禁用§r-仅依照覆盖板与内部过滤器的指定规则传输。", + "cover.universal.manual_import_export.mode.description.1": "§e过滤§r-外部I/O将只根据过滤器的指定规则传输,不受覆盖板的限制。", + "cover.universal.manual_import_export.mode.description.2": "§e无过滤§r-外部I/O无视所有传输规则,过滤器将仅控制覆盖板进行的I/O。", + "cover.universal.manual_import_export.mode.disabled": "特殊I/O模式:§b禁用\n§7仅依照覆盖板与内部过滤器的指定规则传输。", + "cover.universal.manual_import_export.mode.filtered": "特殊I/O模式:§b过滤\n§7外部I/O将只根据过滤器的指定规则传输,不受覆盖板的限制。", + "cover.universal.manual_import_export.mode.unfiltered": "特殊I/O模式:§b无过滤\n§7外部I/O无视所有传输规则,过滤器将仅控制覆盖板进行的I/O。", + "cover.voiding.label.disabled": "禁用", + "cover.voiding.label.enabled": "启用", + "cover.voiding.message.disabled": "已禁用销毁覆盖板", + "cover.voiding.message.enabled": "已启用销毁覆盖板", + "cover.voiding.tooltip": "§c警告!§7“启用”时所有流体和物品全部都会被销毁。", + "cover.voiding.voiding_mode.description.0": "§e匹配销毁§r:匹配过滤规则即销毁。", + "cover.voiding.voiding_mode.description.1": "§e溢出销毁§r:匹配过滤规则即销毁超出设定数量的部分物品/流体。", + "cover.voiding.voiding_mode.void_any": "匹配销毁", + "cover.voiding.voiding_mode.void_overflow": "溢出销毁", + "curios.identifier.gtceu_magnet": "GTCEu磁铁", + "death.attack.gtceu.axe": "%s被%s用斧子砍死了", + "death.attack.gtceu.butchery_knife": "%s死在了%s的屠刀之下", + "death.attack.gtceu.buzzsaw": "%2$手中圆锯的嗞嗞声成为了%1$s生命中最后听到的声音", + "death.attack.gtceu.chainsaw_lv": "%2$s的链锯切碎了%1$s", + "death.attack.gtceu.chemical": "%s历经了一场化学事故", + "death.attack.gtceu.crowbar": "%s被%s用撬棍撬走了半条命", + "death.attack.gtceu.drill_ev": "%2$s的超高压电钻洞穿了%1$s", + "death.attack.gtceu.drill_hv": "%2$s的高压电钻洞穿了%1$s", + "death.attack.gtceu.drill_iv": "%2$s的强导压电钻洞穿了%1$s", + "death.attack.gtceu.drill_lv": "%2$s的低压电钻洞穿了%1$s", + "death.attack.gtceu.drill_mv": "%2$s的中压电钻洞穿了%1$s", + "death.attack.gtceu.electric": "%s触电身亡", + "death.attack.gtceu.explosion": "%s爆炸了", + "death.attack.gtceu.explosion.player": "拜%2$s所赐,%1$s爆炸了", + "death.attack.gtceu.file": "%s历尽了%s的“锉”折", + "death.attack.gtceu.frost": "%s探索到了低温的奥秘", + "death.attack.gtceu.hammer": "%s被%s锤死了", + "death.attack.gtceu.heat": "%s被活活煮熟了", + "death.attack.gtceu.heat.player": "%s被%s活活煮熟了", + "death.attack.gtceu.hoe": "%s被%s锄死了", + "death.attack.gtceu.knife": "%2$s绅士地捅了%1$s几刀", + "death.attack.gtceu.mallet": "%s被%s用锤头活活敲死了", + "death.attack.gtceu.medical_condition/arsenicosis": "%s死于砷中毒", + "death.attack.gtceu.medical_condition/asbestosis": "%s得了间皮瘤", + "death.attack.gtceu.medical_condition/berylliosis": "%s贪婪地挖掘绿宝石,结果有点过火了", + "death.attack.gtceu.medical_condition/carbon_monoxide_poisoning": "%s离开时炉子还开着", + "death.attack.gtceu.medical_condition/carcinogen": "%s身患白血病", + "death.attack.gtceu.medical_condition/chemical_burns": "%s历经了一场化学事故", + "death.attack.gtceu.medical_condition/irritant": "%s身上长了§n§l极其严重§r的皮疹", + "death.attack.gtceu.medical_condition/methanol_poisoning": "%s在禁酒令下尝试饮用私酿烈酒", + "death.attack.gtceu.medical_condition/nausea": "%s死于恶心", + "death.attack.gtceu.medical_condition/none": "%s死于...什么都没有?", + "death.attack.gtceu.medical_condition/poison": "%s忘了毒物的确有毒", + "death.attack.gtceu.medical_condition/silicosis": "%s不是死于肺结核,而是矽肺病", + "death.attack.gtceu.medical_condition/weak_poison": "%s吞下了铅(或水银!)", + "death.attack.gtceu.mining_hammer": "%s被%s当成矿石砸死了", + "death.attack.gtceu.mortar": "%s被%s用研钵磨成了粉", + "death.attack.gtceu.pickaxe": "%s被%s用镐子凿死了", + "death.attack.gtceu.radiation": "%s放射出了喜悦的光芒", + "death.attack.gtceu.screwdriver": "%s被%s用螺丝刀钻死了", + "death.attack.gtceu.screwdriver_lv": "%s的螺丝被%s扭掉了", + "death.attack.gtceu.scythe": "%s一镰刀下去,%s的灵魂灰飞烟灭", + "death.attack.gtceu.shovel": "%s被%s用锹掏死了", + "death.attack.gtceu.spade": "%s被%s用铲子挖死了", + "death.attack.gtceu.turbine": "%s一头扎进了涡轮里", + "death.attack.gtceu.wire_cutter": "%s用剪线钳剪断了%s的血管", + "death.attack.gtceu.wrench": "%s被%s用扳手夯死了!", + "death.attack.gtceu.wrench_hv": "%s的血管被%s狠狠拧松了", + "death.attack.gtceu.wrench_iv": "%2$s一扳手下去,扳倒了%1$s的美好人生", + "death.attack.gtceu.wrench_lv": "%s的血管被%s狠狠拧松了", + "effect.gtceu.weak_poison": "轻度中毒", + "enchantment.damage.disjunction": "末影离析", + "enchantment.disjunction": "末影离析", + "enchantment.gtceu.disjunction.description": "对末影生物施加虚弱和缓慢效果。", + "enchantment.gtceu.hard_hammer.description": "像格雷科技的锤一样粉碎所采掘的方块。", + "enchantment.hard_hammer": "锤碎", + "entity.gtceu.boat": "船", + "entity.gtceu.chest_boat": "运输船", + "entity.gtceu.dynamite": "炸药", + "entity.gtceu.industrial_tnt": "工业TNT", + "entity.gtceu.powderbarrel": "火药桶", + "fluid.empty": "空", + "fluid.gtceu.potion": "药水", + "fluid.spawnlocation.name": "流体矿脉信息", + "fluid.tile.lava": "熔岩", + "fluid.tile.water": "水", + "fluid_cell.empty": "空", + "gtceu.air_scrubber": "空气净化器", + "gtceu.alloy_blast_smelter": "合金冶炼炉", + "gtceu.alloy_smelter": "合金炉", + "gtceu.arc_furnace": "电弧炉", + "gtceu.assembler": "组装机", + "gtceu.assembly_line": "装配线", + "gtceu.auto_decomp.rotor": "涡轮转子", + "gtceu.auto_decomp.tool": "非电动工具", + "gtceu.autoclave": "高压釜", + "gtceu.battery_buffer.average_input": "平均输入:%s EU/t", + "gtceu.battery_buffer.average_output": "平均输出:%s EU/t", + "gtceu.bender": "卷板机", + "gtceu.brewery": "酿造室", + "gtceu.bus.collapse.error": "总线位于已成型的多方块结构后方可进行该操作", + "gtceu.bus.collapse_false": "已禁用物品堆叠自动合并", + "gtceu.bus.collapse_true": "已启用物品堆叠自动合并", + "gtceu.button.bedrock_fluids": "显示基岩流体矿脉", + "gtceu.button.hide_depleted": "隐藏枯竭的矿脉", + "gtceu.button.ore_veins": "显示GT矿脉", + "gtceu.button.show_depleted": "显示枯竭的矿脉", + "gtceu.cable.amperage": "§e最大电流:§r§e%d", + "gtceu.cable.loss_per_block": "§c线损/米/安:§r§c%d§7 伏", + "gtceu.cable.superconductor": "%s§d超导体", + "gtceu.cable.voltage": "§a最大电压:§r§a%d§a(%s§a)", + "gtceu.canner": "装罐机", + "gtceu.centrifuge": "离心机", + "gtceu.chance_logic.and": "AND", + "gtceu.chance_logic.first": "第一", + "gtceu.chance_logic.none": "NONE", + "gtceu.chance_logic.or": "OR", + "gtceu.chance_logic.xor": "XOR", + "gtceu.chat.cape": "§5恭喜你:你刚刚解锁了一件新披风!查看终端应用程序“披风选择器”来使用它。§r", + "gtceu.chemical_bath": "化学浸洗机", + "gtceu.chemical_reactor": "化学反应釜", + "gtceu.circuit_assembler": "电路组装机", + "gtceu.coke_oven": "焦炉", + "gtceu.combustion_generator": "内燃发电机", + "gtceu.command.copy.click_to_copy": "点击复制", + "gtceu.command.copy.copied_and_click": "已复制到剪贴板,点击再次复制", + "gtceu.command.copy.copied_end": "]到剪贴板", + "gtceu.command.copy.copied_start": "已复制[", + "gtceu.command.hand.electric": "电量信息:%d / %d EU - 等级:%d; 是否为电池:%s", + "gtceu.command.hand.fluid": "流体信息:%d / %d mB;是否可输入:%s; 是否可输出:%s", + "gtceu.command.hand.fluid2": "流体 ID:", + "gtceu.command.hand.groovy": "考虑使用§6/gs hand", + "gtceu.command.hand.item_id": "物品:%s(元数据:%d)", + "gtceu.command.hand.material": "材料 ID:", + "gtceu.command.hand.meta_item": "元物品 ID:", + "gtceu.command.hand.no_item": "在执行此命令之前,您的主手或副手必须拿着物品。", + "gtceu.command.hand.not_a_player": "这个命令只有玩家可以使用。", + "gtceu.command.hand.ore_prefix": "矿物前缀:", + "gtceu.command.hand.tag_entries": "§3标签条目:", + "gtceu.command.hand.tool_stats": "工具状态类:%s", + "gtceu.command.hand.usage": "用法:/gtceu hand", + "gtceu.command.recipecheck.begin": "开始配方冲突检查...", + "gtceu.command.recipecheck.end": "配方冲突检查找到%d可能存在的冲突,查看服务器日志以了解更多信息", + "gtceu.command.recipecheck.end_no_conflicts": "未发现配方冲突!", + "gtceu.command.recipecheck.usage": "用法:/gtceu recipecheck", + "gtceu.command.usage": "用法:/gtceu ", + "gtceu.command.worldgen.reload.failed": "Worldgen重新加载失败。检查控制台是否有错误。", + "gtceu.command.worldgen.reload.success": "Worldgen已成功从配置重新加载。", + "gtceu.command.worldgen.reload.usage": "用法:/gtceu worldgen reload", + "gtceu.command.worldgen.usage": "用法:/gtceu worldgen ", + "gtceu.compressor": "压缩机", + "gtceu.cover.activity_detector.message_activity_inverted": "正在以反相模式监控活动状态", + "gtceu.cover.activity_detector.message_activity_normal": "正在以普通模式监控活动状态", + "gtceu.cover.activity_detector_advanced.message_activity_inverted": "正在以反相模式监控处理状态", + "gtceu.cover.activity_detector_advanced.message_activity_normal": "正在以普通模式监控处理状态", + "gtceu.cover.energy_detector.message_electricity_storage_inverted": "正在以反相模式监控电力存储", + "gtceu.cover.energy_detector.message_electricity_storage_normal": "正在以普通模式监控电力存储", + "gtceu.cover.fluid_detector.message_fluid_storage_inverted": "正在以反相模式监控流体存储", + "gtceu.cover.fluid_detector.message_fluid_storage_normal": "正在以普通模式监控流体存储", + "gtceu.cover.item_detector.message_item_storage_inverted": "正在以反相模式监控物品存储", + "gtceu.cover.item_detector.message_item_storage_normal": "正在以普通模式监控物品存储", + "gtceu.cracker": "裂化机", + "gtceu.creative.activity.off": "未激活", + "gtceu.creative.activity.on": "已激活", + "gtceu.creative.chest.ipc": "每次输出物品数", + "gtceu.creative.chest.item": "物品", + "gtceu.creative.chest.tpc": "每次输出间隔Tick", + "gtceu.creative.computation.average": "平均CWU/t请求", + "gtceu.creative.energy.amperage": "电流", + "gtceu.creative.energy.sink": "归零", + "gtceu.creative.energy.source": "最大值", + "gtceu.creative.energy.voltage": "电压", + "gtceu.creative.tank.fluid": "流体", + "gtceu.creative.tank.mbpc": "每次输出流体量", + "gtceu.creative.tank.tpc": "每次输出间隔Tick", + "gtceu.creative_tooltip.1": "§7你需要", + "gtceu.creative_tooltip.2": "§b创造模式", + "gtceu.creative_tooltip.3": "§7来使用它", + "gtceu.cutter": "切割机", + "gtceu.debug.f3_h.enabled": "格雷科技修改了调试信息!对于开发人员:在GregTech配置文件中启用misc:debug以查看更多信息", + "gtceu.direction.tooltip.back": "背面", + "gtceu.direction.tooltip.down": "底面", + "gtceu.direction.tooltip.front": "正面", + "gtceu.direction.tooltip.left": "左面", + "gtceu.direction.tooltip.right": "右面", + "gtceu.direction.tooltip.up": "顶面", + "gtceu.distillation_tower": "蒸馏塔", + "gtceu.distillery": "蒸馏室", + "gtceu.duct_pipe.transfer_rate": "§b空气传输速率:%s", + "gtceu.dummy": "占位符", + "gtceu.electric_blast_furnace": "电力高炉", + "gtceu.electric_furnace": "电炉", + "gtceu.electrolyzer": "电解机", + "gtceu.electromagnetic_separator": "电磁选矿机", + "gtceu.extractor": "提取机", + "gtceu.extruder": "压模器", + "gtceu.fermenter": "发酵槽", + "gtceu.fluid.amount": "§9总量:%d/%d mB", + "gtceu.fluid.click_combined": "§7手持流体容器点击流体槽以§c倒出§7或§b填入§7流体(Shift+单击以用整组容器倒出流体或用整组容器中的流体填入)", + "gtceu.fluid.click_to_empty": "§7手持流体容器点击流体槽以§c倒出§7流体(Shift+单击以用整组容器倒出流体)", + "gtceu.fluid.click_to_fill": "§7手持流体容器点击流体槽以§b填入§7流体(Shift+单击以用整组容器中的流体填入)", + "gtceu.fluid.empty": "空", + "gtceu.fluid.gas_generic": "气态%s", + "gtceu.fluid.gas_vapor": "%s蒸气", + "gtceu.fluid.generic": "%s", + "gtceu.fluid.liquid_generic": "液态%s", + "gtceu.fluid.molten": "熔融%s", + "gtceu.fluid.plasma": "%s等离子体", + "gtceu.fluid.state_gas": "§a状态:气态", + "gtceu.fluid.state_liquid": "§a状态:液态", + "gtceu.fluid.state_plasma": "§a状态:等离子态", + "gtceu.fluid.temperature": "§c温度:%d K", + "gtceu.fluid.temperature.cryogenic": "§b低温流体!轻拿轻放!", + "gtceu.fluid.type_acid.tooltip": "§6酸性流体!轻拿轻放!", + "gtceu.fluid_heater": "流体加热器", + "gtceu.fluid_pipe.acid_proof": "§6可传输酸性物质", + "gtceu.fluid_pipe.capacity": "§9容积:§f%d mB", + "gtceu.fluid_pipe.channels": "§e并行管道:§f%d", + "gtceu.fluid_pipe.cryo_proof": "§6可传输低温物质", + "gtceu.fluid_pipe.gas_proof": "§6可以传输气体", + "gtceu.fluid_pipe.max_temperature": "§c温度上限:§f%d K", + "gtceu.fluid_pipe.not_gas_proof": "§4气体可能泄漏!", + "gtceu.fluid_pipe.plasma_proof": "§6可传输所有等离子体", + "gtceu.fluid_solidifier": "流体固化器", + "gtceu.forge_hammer": "锻造锤", + "gtceu.forming_press": "冲压机床", + "gtceu.forming_press.naming.named": "§o已命名物品", + "gtceu.forming_press.naming.press": "§o名称模板", + "gtceu.forming_press.naming.to_name": "§o待命名物品", + "gtceu.fusion_reactor": "核聚变反应堆", + "gtceu.gas_collector": "集气室", + "gtceu.gas_turbine": "燃气轮机", + "gtceu.gui.auto_output.name": "自动", + "gtceu.gui.charger_slot.tooltip.0": "§f充电槽§r", + "gtceu.gui.charger_slot.tooltip.1": "§7从%s电池中取电§7", + "gtceu.gui.charger_slot.tooltip.2": "§7也可为%s工具或电池充电", + "gtceu.gui.chunkmode.disabled.0": "区块模式§c禁用§r:单击启用。", + "gtceu.gui.chunkmode.disabled.1": "§7切换需要机器待机。", + "gtceu.gui.chunkmode.enabled.0": "区块模式§a启用§r:单击禁用。", + "gtceu.gui.chunkmode.enabled.1": "§7切换需要机器待机。", + "gtceu.gui.circuit.title": "电路设置", + "gtceu.gui.config_slot": "§f配置槽位§r", + "gtceu.gui.config_slot.auto_pull_managed": "§4禁用:§7由ME自动拉取管理", + "gtceu.gui.config_slot.remove": "§7右击§4清除§7配置槽位。§r", + "gtceu.gui.config_slot.scroll": "§7使用滚轮§a切换§7配置数。§r", + "gtceu.gui.config_slot.set": "§7点击§b设置/选择§7配置槽位。§r", + "gtceu.gui.config_slot.set_only": "§7点击§b设置§7配置槽位。§r", + "gtceu.gui.configurator_slot.tooltip.0": "§f配置器槽§r", + "gtceu.gui.configurator_slot.tooltip.1": "§7在此插槽放置一个§6编程电路§7以", + "gtceu.gui.configurator_slot.tooltip.2": "§7更改其配置值。", + "gtceu.gui.configurator_slot.tooltip.3": "§7按住§6Shift§7时点击按钮,一次加减§6§75个编号", + "gtceu.gui.configurator_slot.tooltip.4": "§a此插槽中的编程电路也视为一个配方输入。§r", + "gtceu.gui.content.chance_base": "基础概率:%s%%", + "gtceu.gui.content.chance_base_logic": "基础概率:%s%% (%s)", + "gtceu.gui.content.chance_boosted": "当前等级概率:%s%%", + "gtceu.gui.content.chance_boosted_logic": "当前等级概率:%s%%(%s)", + "gtceu.gui.content.chance_nc": "§c不会被消耗§r", + "gtceu.gui.content.chance_nc_short": "§c不消耗§r", + "gtceu.gui.content.chance_no_boost": "概率:%s%%", + "gtceu.gui.content.chance_no_boost_logic": "概率:%s%%(%s)", + "gtceu.gui.content.chance_tier_boost_minus": "奖励概率:- %s%%/电压等级", + "gtceu.gui.content.chance_tier_boost_plus": "奖励概率:+ %s%%/电压等级", + "gtceu.gui.content.count_range": "%s-%sx", + "gtceu.gui.content.fluid_range": "%s-%smB", + "gtceu.gui.content.per_tick": "§a每刻(tick)消耗/产生§r", + "gtceu.gui.content.tips.per_second_short": "§a/秒§r", + "gtceu.gui.content.tips.per_tick_short": "§a/刻(tick)§r", + "gtceu.gui.content.units.per_second": "/s", + "gtceu.gui.content.units.per_tick": "/t", + "gtceu.gui.cover_setting.title": "覆盖板设置", + "gtceu.gui.editor.group.recipe_type": "封顶", + "gtceu.gui.editor.tips.citation": "引用次数", + "gtceu.gui.fisher_mode.tooltip.0": "捕捉垃圾物品", + "gtceu.gui.fisher_mode.tooltip.1": "关闭时,每次运行消耗两根线。", + "gtceu.gui.fluid_amount": "流体总量:", + "gtceu.gui.fluid_auto_input.tooltip.disabled": "流体自动输入已禁用", + "gtceu.gui.fluid_auto_input.tooltip.enabled": "流体自动输入已启用", + "gtceu.gui.fluid_auto_output.allow_input.disabled": "禁止从输出面输入流体", + "gtceu.gui.fluid_auto_output.allow_input.enabled": "允许从输出面输入流体", + "gtceu.gui.fluid_auto_output.tooltip.disabled": "流体自动输出已禁用", + "gtceu.gui.fluid_auto_output.tooltip.enabled": "流体自动输出已启用", + "gtceu.gui.fluid_lock.tooltip.disabled": "流体锁定已禁用", + "gtceu.gui.fluid_lock.tooltip.enabled": "流体锁定已启用", + "gtceu.gui.fluid_voiding_partial.tooltip.disabled": "过量流体销毁已禁用", + "gtceu.gui.fluid_voiding_partial.tooltip.enabled": "过量流体销毁已启用", + "gtceu.gui.fuel_amount": "燃料总量:", + "gtceu.gui.item_auto_input.tooltip.disabled": "物品自动输入已禁用", + "gtceu.gui.item_auto_input.tooltip.enabled": "物品自动输入已启用", + "gtceu.gui.item_auto_output.allow_input.disabled": "禁止从输出面输入物品", + "gtceu.gui.item_auto_output.allow_input.enabled": "允许从输出面输入物品", + "gtceu.gui.item_auto_output.tooltip.disabled": "物品自动输出已禁用", + "gtceu.gui.item_auto_output.tooltip.enabled": "物品自动输出已启用", + "gtceu.gui.item_lock.tooltip.disabled": "物品锁定已禁用", + "gtceu.gui.item_lock.tooltip.enabled": "物品锁定已启用", + "gtceu.gui.item_voiding_partial.tooltip.disabled": "物品过量销毁已禁用", + "gtceu.gui.item_voiding_partial.tooltip.enabled": "物品过量销毁已开启", + "gtceu.gui.machinemode": "当前机器模式:%s", + "gtceu.gui.machinemode.title": "当前机器模式", + "gtceu.gui.me_bus.auto_pull_button": "单击以切换ME自动拉取模式", + "gtceu.gui.me_network.offline": "网络状态:§4离线§r", + "gtceu.gui.me_network.online": "网络状态:§2在线§r", + "gtceu.gui.multiblock_fluid_voiding.0": "销毁模式", + "gtceu.gui.multiblock_fluid_voiding.1": "§7销毁§9流体", + "gtceu.gui.multiblock_item_fluid_voiding.0": "销毁模式", + "gtceu.gui.multiblock_item_fluid_voiding.1": "§7销毁§6物品§7和§9流体", + "gtceu.gui.multiblock_item_voiding.0": "销毁模式", + "gtceu.gui.multiblock_item_voiding.1": "§7销毁§6物品", + "gtceu.gui.multiblock_no_voiding.0": "销毁模式", + "gtceu.gui.multiblock_no_voiding.1": "§7不销毁", + "gtceu.gui.output_setting.title": "输出设置", + "gtceu.gui.output_setting.tooltips.0": "左键单击以自动输出物品", + "gtceu.gui.output_setting.tooltips.1": "右键单击以自动输出流体", + "gtceu.gui.overclock.description.0": "超频按钮", + "gtceu.gui.overclock.description.1": "§7配方可以超频到设定的电压等级", + "gtceu.gui.overclock.disabled.0": "超频已禁用", + "gtceu.gui.overclock.disabled.1": "单击启用", + "gtceu.gui.overclock.enabled.0": "超频已启用", + "gtceu.gui.overclock.enabled.1": "单击禁用", + "gtceu.gui.overclock.off": "X", + "gtceu.gui.overclock.range": "可用电压级 [%s,%s]", + "gtceu.gui.overclock.title": "超频电压级", + "gtceu.gui.silktouch.disabled.0": "精准采集已禁用:单击启用。", + "gtceu.gui.silktouch.disabled.1": "§7切换需要机器待机。", + "gtceu.gui.silktouch.enabled.0": "精准采集已启用:单击禁用。", + "gtceu.gui.silktouch.enabled.1": "§7切换需要机器待机。", + "gtceu.gui.sort": "分类", + "gtceu.gui.title_bar.back": "返回", + "gtceu.gui.title_bar.page_switcher": "页面", + "gtceu.gui.toggle_view.disabled": "切换视图(流体)", + "gtceu.gui.toggle_view.enabled": "切换视图(物品)", + "gtceu.gui.waiting_list": "发送队列:", + "gtceu.hazard_trigger.any": "任何方式", + "gtceu.hazard_trigger.description": "由此导致:", + "gtceu.hazard_trigger.inhalation": "吸入", + "gtceu.hazard_trigger.none": "无", + "gtceu.hazard_trigger.protection.description": "免受:", + "gtceu.hazard_trigger.skin_contact": "皮肤接触", + "gtceu.implosion_compressor": "聚爆压缩机", + "gtceu.io.both": "同时", + "gtceu.io.export": "输出", + "gtceu.io.import": "输入", + "gtceu.io.none": "无", + "gtceu.item_filter.empty_item": "空(无物品)", + "gtceu.item_filter.footer": "§e手持物品右键覆盖设置", + "gtceu.item_list.item_stored": "§7储量:%d", + "gtceu.item_pipe.priority": "§9优先级:§f%d", + "gtceu.jade.cleaned_this_second": "污染清理速率:%s/s", + "gtceu.jade.energy_stored": "%d / %d EU", + "gtceu.jade.progress_computation": "%s / %s CWU", + "gtceu.jade.progress_sec": "%s / %s s", + "gtceu.jade.progress_tick": "%s / %s t", + "gtceu.jei.bedrock_fluid.heavy_oil_deposit": "重油矿藏", + "gtceu.jei.bedrock_fluid.lava_deposit": "熔岩矿藏", + "gtceu.jei.bedrock_fluid.light_oil_deposit": "轻油矿藏", + "gtceu.jei.bedrock_fluid.natural_gas_deposit": "天然气矿藏", + "gtceu.jei.bedrock_fluid.nether_natural_gas_deposit": "下界天然气矿藏", + "gtceu.jei.bedrock_fluid.oil_deposit": "石油矿藏", + "gtceu.jei.bedrock_fluid.raw_oil_deposit": "原油矿藏", + "gtceu.jei.bedrock_fluid.salt_water_deposit": "盐水矿藏", + "gtceu.jei.bedrock_fluid_diagram": "基岩流体生成信息", + "gtceu.jei.bedrock_ore_diagram": "基岩矿脉生成信息", + "gtceu.jei.fluid.dep_amount_hover": "消耗后消耗的量", + "gtceu.jei.fluid.dep_chance_hover": "开采流体矿脉时消耗的概率", + "gtceu.jei.fluid.dep_yield_hover": "流体矿脉殆尽后能开采的最大流体量", + "gtceu.jei.fluid.depleted_rate": "殆尽后产量:%d", + "gtceu.jei.fluid.depletion_amount": "消耗量:%d", + "gtceu.jei.fluid.depletion_chance": "消耗概率:%d%%", + "gtceu.jei.fluid.dimension": "维度:", + "gtceu.jei.fluid.max_hover": "流体矿脉所能具有的的最大产量", + "gtceu.jei.fluid.max_yield": "最大产量:%d", + "gtceu.jei.fluid.min_hover": "流体矿脉所能具有的的最小产量", + "gtceu.jei.fluid.min_yield": "最小产量:%d", + "gtceu.jei.fluid.vein_weight": "矿脉权重:%d", + "gtceu.jei.fluid.weight_hover": "流体矿脉的生成权重。鼠标悬于图标可查看该流体在特定生物群系中特殊的生成权重", + "gtceu.jei.materials.average_mass": "平均质量:%d", + "gtceu.jei.materials.average_neutrons": "平均中子数:%d", + "gtceu.jei.materials.average_protons": "平均质子数:%d", + "gtceu.jei.multiblock_info": "多方块结构信息", + "gtceu.jei.ore.between.0": "中层矿石", + "gtceu.jei.ore.between.1": "和其他矿石一起生成在矿脉的中间%d层", + "gtceu.jei.ore.biome_weighting": "§d%s的生成权重:§3%d", + "gtceu.jei.ore.biome_weighting_no_spawn": "§d%s的生成权重:§c无法生成", + "gtceu.jei.ore.biome_weighting_title": "§d特定生物群系中的例外权重:", + "gtceu.jei.ore.ore_weight": "矿脉内生成权重:%d%%", + "gtceu.jei.ore.primary.0": "顶层矿石", + "gtceu.jei.ore.primary.1": "在矿脉的顶部%d层生成", + "gtceu.jei.ore.secondary.0": "底层矿石", + "gtceu.jei.ore.secondary.1": "在矿脉的底部%d层生成", + "gtceu.jei.ore.sporadic.0": "散布矿石", + "gtceu.jei.ore.sporadic.1": "生成在矿脉的任何地方", + "gtceu.jei.ore.surface_rock.0": "这种地表岩石标志着矿脉的生成位置。", + "gtceu.jei.ore.surface_rock.1": "挖掘掉落3小撮粉受时运加成", + "gtceu.jei.ore_processing_diagram": "矿物处理流程图", + "gtceu.jei.ore_vein.apatite_vein": "磷灰石矿脉", + "gtceu.jei.ore_vein.banded_iron_vein": "带状铁矿脉", + "gtceu.jei.ore_vein.bauxite_vein_end": "末地铝土矿脉", + "gtceu.jei.ore_vein.beryllium_vein": "铍矿脉", + "gtceu.jei.ore_vein.cassiterite_vein": "锡石矿脉", + "gtceu.jei.ore_vein.certus_quartz": "赛特斯石英", + "gtceu.jei.ore_vein.coal_vein": "煤炭矿脉", + "gtceu.jei.ore_vein.copper_tin_vein": "铜锡矿脉", + "gtceu.jei.ore_vein.copper_vein": "铜矿脉", + "gtceu.jei.ore_vein.diamond_vein": "钻石矿脉", + "gtceu.jei.ore_vein.galena_vein": "方铅矿脉", + "gtceu.jei.ore_vein.garnet_tin_vein": "锡石榴石矿脉", + "gtceu.jei.ore_vein.garnet_vein": "石榴石矿脉", + "gtceu.jei.ore_vein.iron_vein": "铁矿脉", + "gtceu.jei.ore_vein.lapis_vein": "青金石矿脉", + "gtceu.jei.ore_vein.lubricant_vein": "皂滑矿脉", + "gtceu.jei.ore_vein.magnetite_vein_end": "末地磁铁矿脉", + "gtceu.jei.ore_vein.magnetite_vein_ow": "主世界磁铁矿脉", + "gtceu.jei.ore_vein.manganese_vein": "锰矿脉", + "gtceu.jei.ore_vein.manganese_vein_ow": "主世界锰矿脉", + "gtceu.jei.ore_vein.mica_vein": "云母矿脉", + "gtceu.jei.ore_vein.mineral_sand_vein": "矿砂矿脉", + "gtceu.jei.ore_vein.molybdenum_vein": "钼矿脉", + "gtceu.jei.ore_vein.monazite_vein": "独居石矿脉", + "gtceu.jei.ore_vein.naquadah_vein": "硅岩矿脉", + "gtceu.jei.ore_vein.nether_quartz_vein": "下界石英矿脉", + "gtceu.jei.ore_vein.nickel_vein": "镍矿脉", + "gtceu.jei.ore_vein.oilsands_vein": "油砂矿脉", + "gtceu.jei.ore_vein.olivine_vein": "橄榄石矿脉", + "gtceu.jei.ore_vein.pitchblende_vein_end": "末地沥青铀矿脉", + "gtceu.jei.ore_vein.redstone_vein": "红石矿脉", + "gtceu.jei.ore_vein.redstone_vein_ow": "主世界红石矿脉", + "gtceu.jei.ore_vein.saltpeter_vein": "硝石矿脉", + "gtceu.jei.ore_vein.salts_vein": "盐矿脉", + "gtceu.jei.ore_vein.sapphire_vein": "蓝宝石矿脉", + "gtceu.jei.ore_vein.scheelite_vein": "白钨矿脉", + "gtceu.jei.ore_vein.sheldonite_vein": "谢尔顿矿脉", + "gtceu.jei.ore_vein.sulfur_vein": "硫矿脉", + "gtceu.jei.ore_vein.tetrahedrite_vein": "黝铜矿脉", + "gtceu.jei.ore_vein.topaz_vein": "黄玉矿脉", + "gtceu.jei.ore_vein_diagram": "矿脉生成信息", + "gtceu.jei.ore_vein_diagram.chance": "§e概率:%s§r", + "gtceu.jei.ore_vein_diagram.dimensions": "维度:", + "gtceu.jei.ore_vein_diagram.spawn_range": "生成范围:", + "gtceu.jei.ore_vein_diagram.weight": "权重:%s", + "gtceu.jei.programmed_circuit": "编程电路页", + "gtceu.journeymap.options.layers": "勘探层", + "gtceu.journeymap.options.layers.bedrock_fluids": "显示基岩流体矿脉", + "gtceu.journeymap.options.layers.hide_depleted": "隐藏枯竭的矿脉", + "gtceu.journeymap.options.layers.ore_veins": "显示矿脉", + "gtceu.key.armor_charging": "启用/禁用盔甲向物品栏充能", + "gtceu.key.armor_hover": "切换盔甲悬浮模式", + "gtceu.key.armor_mode_switch": "切换盔甲模式", + "gtceu.key.enable_boots": "启用跳跃提升", + "gtceu.key.enable_jetpack": "启用喷气背包", + "gtceu.key.tool_aoe_change": "切换工具范围模式", + "gtceu.large_boiler": "大型锅炉", + "gtceu.large_chemical_reactor": "大型化学反应釜", + "gtceu.laser_engraver": "激光蚀刻机", + "gtceu.lathe": "车床", + "gtceu.macerator": "研磨机", + "gtceu.machine.active_transformer.tooltip.0": "§7变形金刚:伪装的激光", + "gtceu.machine.active_transformer.tooltip.1": "§7可以将任意数量的能量§f输入§7整合为任意数量的能量§f输出§7。", + "gtceu.machine.active_transformer.tooltip.2": "§7当你使用§d激光§7进行能量传输时,拥有惊人的传输距离。", + "gtceu.machine.active_transformer.tooltip.3": " ", + "gtceu.machine.advanced_processing_array.tooltip": "这个世界需要更多并行", + "gtceu.machine.assembly_line.tooltip": "真不是什么多方块组装机!", + "gtceu.machine.available_recipe_map_1.tooltip": "可用配方类型:%s", + "gtceu.machine.available_recipe_map_2.tooltip": "可用配方类型:%s,%s", + "gtceu.machine.available_recipe_map_3.tooltip": "可用配方类型:%s,%s,%s", + "gtceu.machine.available_recipe_map_4.tooltip": "可用配方类型:%s,%s,%s,%s", + "gtceu.machine.basic.input_from_output_side.allow": "允许从输出面输入:", + "gtceu.machine.basic.input_from_output_side.disallow": "禁止从输出面输入:", + "gtceu.machine.batch_disabled": "批处理已禁用", + "gtceu.machine.batch_enabled": "批处理已启用", + "gtceu.machine.bedrock_ore_miner.depletion": "§b损耗率:§f%s%%", + "gtceu.machine.bedrock_ore_miner.description": "§7钻掘基岩之下的叠叠矿石。", + "gtceu.machine.bedrock_ore_miner.production": "§e产量乘数:§f%dx,超频后%fx", + "gtceu.machine.block_breaker.speed_bonus": "§e速度奖励:§f%d%%", + "gtceu.machine.block_breaker.tooltip": "§7挖掘正面的方块并收集掉落物", + "gtceu.machine.boiler.info.cooling.down": "§9冷却中§r%s", + "gtceu.machine.boiler.info.heating.up": "§c加热中§r%s", + "gtceu.machine.boiler.info.producing.steam": " §a(沸腾)", + "gtceu.machine.buffer.tooltip": "存储物品和流体的小小缓冲器", + "gtceu.machine.canner.jei_description": "填入或倒空流体容器,例如桶和流体单元", + "gtceu.machine.central_monitor.tooltip": "但它能运行《毁灭战士》吗?", + "gtceu.machine.charcoal_pile.tooltip": "不烤面包烤燃料的地下面包房", + "gtceu.machine.charcoal_pile.tooltip.0": "§c点火后§7将原木烧制成§a木炭§7。", + "gtceu.machine.charcoal_pile.tooltip.1": "使用可点火的物品右击即可启动。", + "gtceu.machine.charcoal_pile.tooltip.2": "热解发生在下方至多§b9x4x9§7的空间内。", + "gtceu.machine.charcoal_pile.tooltip.3": "原木不可暴露在§e空气§7中!", + "gtceu.machine.cleanroom.tooltip": "将那些讨厌的灰尘拒之门外", + "gtceu.machine.cleanroom.tooltip.0": "将机器放在内部运行超净间配方。", + "gtceu.machine.cleanroom.tooltip.1": "清理污染时耗能为§f30EU/t§7,洁净状态耗能为§f4EU/t§7。", + "gtceu.machine.cleanroom.tooltip.2": "超频增加每个周期的清洁度。", + "gtceu.machine.cleanroom.tooltip.3": "§b大小:§f5x5x5到15x15x15", + "gtceu.machine.cleanroom.tooltip.4": "天花板需要§f过滤器机械方块§7,不包含天花板的边缘。", + "gtceu.machine.cleanroom.tooltip.5": "接受最多§f四扇门§7!门处于打开状态时不会影响洁净度。", + "gtceu.machine.cleanroom.tooltip.6": "发电机、消声仓、采矿机和原始机器对于超净间来说太脏了!", + "gtceu.machine.cleanroom.tooltip.7": "通过墙壁上的§f机器外壳§7或§f二极管§7向内部输入能量。", + "gtceu.machine.cleanroom.tooltip.ae2.channels": "通过墙壁上的§f机器外壳§7发送最多§f8个AE2频道§7。", + "gtceu.machine.cleanroom.tooltip.ae2.no_channels": "通过墙壁上的§f机器外壳§7连通§aAE2网络§7。", + "gtceu.machine.cleanroom.tooltip.hold_ctrl": "按住CTRL以显示完整的结构信息", + "gtceu.machine.coke_oven.tooltip": "为炼钢和发电提供更优质的燃料", + "gtceu.machine.coke_oven_hatch.tooltip": "§7允许自动化焦炉的物品吞吐。", + "gtceu.machine.combustion_generator.tooltip": "§7需要液体燃料", + "gtceu.machine.computation_receiver_hatch.tooltip": "为多方块结构输入算力数据", + "gtceu.machine.computation_transmitter_hatch.tooltip": "从多方块结构输出算力数据", + "gtceu.machine.cracker.tooltip": "有它,石油才有用", + "gtceu.machine.cracker.tooltip.1": "使用§6白铜§7后的每个线圈等级可以减少§f10%%§7的能源消耗。", + "gtceu.machine.data_access_hatch.tooltip.0": "令多方块结构得以访问数据", + "gtceu.machine.data_access_hatch.tooltip.1": "添加了§a%s§7个数据容器(闪存等)插槽", + "gtceu.machine.data_bank.tooltip.0": "你的个人网络存储器", + "gtceu.machine.data_bank.tooltip.1": "大容量数据存储,使用光缆传输。", + "gtceu.machine.data_bank.tooltip.2": "数据库间可以相互连接。", + "gtceu.machine.data_bank.tooltip.3": "每个数据/光学仓耗能为§f%s EU/t§7。", + "gtceu.machine.data_bank.tooltip.4": "每个已连接的数据/光学仓耗能为§f%s EU/t§7。", + "gtceu.machine.data_receiver_hatch.tooltip": "为多方块结构输入研究数据", + "gtceu.machine.data_transmitter_hatch.tooltip": "从多方块结构输出研究数据", + "gtceu.machine.diode.message": "最大电流:%s", + "gtceu.machine.diode.tooltip_general": "将只允许能量向一个方向流动,并限制电流。", + "gtceu.machine.diode.tooltip_starts_at": "默认允许§f1A§r电流通行,使用软锤切换。", + "gtceu.machine.diode.tooltip_tool_usage": "用软锤右击以改变电流。", + "gtceu.machine.distillation_tower.tooltip": "流体精炼厂", + "gtceu.machine.drum.disable_output": "不排出液体", + "gtceu.machine.drum.enable_output": "将液体排到底面相邻的容器中", + "gtceu.machine.dual_hatch.export.tooltip": "为多方块结构输出物品和流体", + "gtceu.machine.dual_hatch.import.tooltip": "为多方块结构输入物品和流体", + "gtceu.machine.electric_blast_furnace.tooltip": "电力高炉有了,那电力烟熏炉呢?", + "gtceu.machine.electric_blast_furnace.tooltip.0": "每超过配方温度§f900K§7,耗能均将乘以§f95%%§7(不计超频)。", + "gtceu.machine.electric_blast_furnace.tooltip.1": "每超过配方温度§f1800K§7,将一次超频的效率变为§f100%%§7(无损超频)。", + "gtceu.machine.electric_blast_furnace.tooltip.2": "超过§fMV§7后的每一级电压,都会将温度提高§f100K§7。", + "gtceu.machine.endpoint.tooltip.0": "使用§f长距离管道§7方块连接管道接口以创建管路。", + "gtceu.machine.endpoint.tooltip.1": "管路必须有且仅有一个§f1输入§7接口和一个§f1输出§7接口。", + "gtceu.machine.endpoint.tooltip.2": "只有管道接口需要被§f区块加载§7。", + "gtceu.machine.endpoint.tooltip.min_length": "§b最低接口间距:§f%d格方块", + "gtceu.machine.energy_converter.description": "在EU和FE之间转换能量形式。", + "gtceu.machine.energy_converter.message_conversion_eu": "EU转为FE,输入:%dA %d EU,输出:%d FE", + "gtceu.machine.energy_converter.message_conversion_native": "FE转为EU,输入:%dFE,输出:%dA %d EU", + "gtceu.machine.energy_converter.tooltip_conversion_eu": "§aEU转换:§f%dA %d EU(%s§f)§7 -> %d FE", + "gtceu.machine.energy_converter.tooltip_conversion_native": "§cFE转换:§f%d FE -> %dA %d EU (%s§f)", + "gtceu.machine.energy_converter.tooltip_tool_usage": "默认§f转换为FE§r,使用软锤切换。", + "gtceu.machine.energy_hatch.input.tooltip": "为多方块结构输入能量", + "gtceu.machine.energy_hatch.input_hi_amp.tooltip": "为多方块结构输入更多电流", + "gtceu.machine.energy_hatch.output.tooltip": "为多方块结构输出能量", + "gtceu.machine.energy_hatch.output_hi_amp.tooltip": "为多方块结构输出更多电流", + "gtceu.machine.ev_alloy_smelter.tooltip": "§7高科技融合冶炼炉", + "gtceu.machine.ev_arc_furnace.tooltip": "§7谁需要高炉?", + "gtceu.machine.ev_assembler.tooltip": "§7复仇者,集结!", + "gtceu.machine.ev_autoclave.tooltip": "§7使粉末结晶", + "gtceu.machine.ev_bender.tooltip": "§7吁,他不行!我们要的是BENDER!!!", + "gtceu.machine.ev_brewery.tooltip": "§7紧凑高效的药剂酿造", + "gtceu.machine.ev_canner.tooltip": "§7为容器填入或从中倒出物品及流体", + "gtceu.machine.ev_centrifuge.tooltip": "§7分子分离机", + "gtceu.machine.ev_chemical_bath.tooltip": "§7用化学品浸渍以分离矿物", + "gtceu.machine.ev_chemical_reactor.tooltip": "§7让化学品相互反应", + "gtceu.machine.ev_circuit_assembler.tooltip": "§7一拿一放,东拣西装", + "gtceu.machine.ev_compressor.tooltip": "§7全自动压缩机 C77", + "gtceu.machine.ev_cutter.tooltip": "§7切片,切块", + "gtceu.machine.ev_distillery.tooltip": "§7提取流体精华", + "gtceu.machine.ev_electric_furnace.tooltip": "§7别把它当成 Commodore 64 了", + "gtceu.machine.ev_electrolyzer.tooltip": "§7电离分子", + "gtceu.machine.ev_electromagnetic_separator.tooltip": "§7分离出磁性矿物", + "gtceu.machine.ev_extractor.tooltip": "§7毁灭级榨汁机 - D123", + "gtceu.machine.ev_extruder.tooltip": "§7通用型金属加工器", + "gtceu.machine.ev_fermenter.tooltip": "§7发酵流体", + "gtceu.machine.ev_fluid_drilling_rig.tooltip": "甚至可以抽空整个油田", + "gtceu.machine.ev_fluid_heater.tooltip": "§7加热你的流体", + "gtceu.machine.ev_fluid_solidifier.tooltip": "§7冷却液体形成固体", + "gtceu.machine.ev_forge_hammer.tooltip": "§7停,抡锤时间到!", + "gtceu.machine.ev_forming_press.tooltip": "§7图像拓印者", + "gtceu.machine.ev_gas_collector.tooltip": "§7依照维度从空气中收集种类各异的气体", + "gtceu.machine.ev_laser_engraver.tooltip": "§7请勿直视激光", + "gtceu.machine.ev_lathe.tooltip": "§7以更高的效率生产杆", + "gtceu.machine.ev_macerator.tooltip": "§7粉碎矿石并获得副产物", + "gtceu.machine.ev_mass_fabricator.tooltip": "§7UU物质 = “质量” * “发生”的平方", + "gtceu.machine.ev_mixer.tooltip": "§7它能被搅碎吗?", + "gtceu.machine.ev_ore_washer.tooltip": "§7清洗矿石以获得更多副产物", + "gtceu.machine.ev_packer.tooltip": "§7取出盒外,放入盒中", + "gtceu.machine.ev_polarizer.tooltip": "§7将你的磁体极化", + "gtceu.machine.ev_replicator.tooltip": "§7生产最纯净的元素", + "gtceu.machine.ev_rock_crusher.tooltip": "§7在水平相邻处放置熔岩和水", + "gtceu.machine.ev_scanner.tooltip": "§7扫描材料及其它物质", + "gtceu.machine.ev_sifter.tooltip": "§7保持冷静,继续筛选", + "gtceu.machine.ev_thermal_centrifuge.tooltip": "§7更精确地分离矿石", + "gtceu.machine.ev_wiremill.tooltip": "§7更高效地生产导线", + "gtceu.machine.extreme_combustion_engine.tooltip": "极限化学能释放者", + "gtceu.machine.fisher.requirement": "需要以机器正下方为中心的%dx%d正方形水源。", + "gtceu.machine.fisher.speed": "每%d刻抓到一些东西", + "gtceu.machine.fisher.tooltip": "每次消耗一根线捕鱼", + "gtceu.machine.fluid_drilling_rig.depletion": "§b损耗率:§f%s%%", + "gtceu.machine.fluid_drilling_rig.description": "§7钻取基岩之下的漫漫流体。", + "gtceu.machine.fluid_drilling_rig.production": "§e产量乘数:§f%dx,超频后%fx", + "gtceu.machine.fluid_hatch.export.tooltip": "为多方块结构输出流体", + "gtceu.machine.fluid_hatch.import.tooltip": "为多方块结构输入流体", + "gtceu.machine.fluid_tank.fluid": "含有%sL%s", + "gtceu.machine.fluid_tank.max_multiblock": "多方块结构最大尺寸:%dx%dx%d", + "gtceu.machine.fusion_reactor.capacity": "§7储能上限:§e%sM EU", + "gtceu.machine.fusion_reactor.luv.tooltip": "原子级合金熔炼机", + "gtceu.machine.fusion_reactor.overclocking": "超频时消耗两倍能量,工作时间减半", + "gtceu.machine.fusion_reactor.uv.tooltip": "化 作 白 矮 星 砸 向 你", + "gtceu.machine.fusion_reactor.zpm.tooltip": "一 轮 红 日 落 大 地", + "gtceu.machine.gas_turbine.tooltip": "§7需要气体燃料", + "gtceu.machine.high_performance_computation_array.tooltip.0": "只是普通的超级计算机", + "gtceu.machine.high_performance_computation_array.tooltip.1": "用于生产§f算力§7(同时会产生热量)。", + "gtceu.machine.high_performance_computation_array.tooltip.2": "需要HPCA组件来生产§fCWU/t§7(计算工作单元)。", + "gtceu.machine.hp_steam_alloy_smelter.tooltip": "§7融合冶炼炉", + "gtceu.machine.hp_steam_compressor.tooltip": "§7压缩物品", + "gtceu.machine.hp_steam_extractor.tooltip": "§7提取你的第一块橡胶", + "gtceu.machine.hp_steam_forge_hammer.tooltip": "§7锻造锤", + "gtceu.machine.hp_steam_furnace.tooltip": "§7利用蒸汽冶炼物品", + "gtceu.machine.hp_steam_liquid_boiler.tooltip": "§7比小型液体燃料锅炉更快", + "gtceu.machine.hp_steam_macerator.tooltip": "§7粉碎你的矿石", + "gtceu.machine.hp_steam_rock_crusher.tooltip": "§7在水平相邻处放置熔岩和水", + "gtceu.machine.hp_steam_solar_boiler.tooltip": "§7来自太阳的蒸汽能源", + "gtceu.machine.hp_steam_solid_boiler.tooltip": "§7比小型固体燃料锅炉更快", + "gtceu.machine.hpca.active_cooler_component.tooltip": "不再免费,但效果更好", + "gtceu.machine.hpca.advanced_computation_component.damaged.name": "损坏的HPCA高级计算组件", + "gtceu.machine.hpca.advanced_computation_component.damaged.tooltip": "只花了一只胳膊和一条腿", + "gtceu.machine.hpca.advanced_computation_component.tooltip": "计算大联盟", + "gtceu.machine.hpca.bridge_component.tooltip": "这就是高性能计算阵列中“阵列”一词的来源", + "gtceu.machine.hpca.component_general.max_eut": "§6最大能量:§f%d EU/t", + "gtceu.machine.hpca.component_general.upkeep_eut": "§e维持耗能:§f%d EU/t", + "gtceu.machine.hpca.component_type.bridge": "允许§fHPCA§7与§f网络交换机§7连接", + "gtceu.machine.hpca.component_type.computation_cooling": "§c最多需要:§f%d 冷却", + "gtceu.machine.hpca.component_type.computation_cwut": "§9算力:§f%d CWU/t", + "gtceu.machine.hpca.component_type.cooler_active": "§b冷却类型:§f主动", + "gtceu.machine.hpca.component_type.cooler_active_coolant": "§c最多需要:§f%d mB/t %s", + "gtceu.machine.hpca.component_type.cooler_cooling": "§a提供:§f%d 冷却", + "gtceu.machine.hpca.component_type.cooler_passive": "§b冷却类型:§f被动", + "gtceu.machine.hpca.component_type.damaged": "HPCA过热可能会损坏!", + "gtceu.machine.hpca.computation_component.damaged.name": "损坏的HPCA计算组件", + "gtceu.machine.hpca.computation_component.damaged.tooltip": "免费的可回收材料", + "gtceu.machine.hpca.computation_component.tooltip": "宝宝的第一次计算", + "gtceu.machine.hpca.empty_component.tooltip": "只是为了填充空间", + "gtceu.machine.hpca.heat_sink_component.tooltip": "免费冷却!有免费的吗?", + "gtceu.machine.hull.tooltip": "§7你需要§5绝§d对§4天§c马§e行§a空§b的§3想§9象§1能§5力§7来使用它", + "gtceu.machine.hv_alloy_smelter.tooltip": "§7高科技融合冶炼炉", + "gtceu.machine.hv_arc_furnace.tooltip": "§7谁需要高炉?", + "gtceu.machine.hv_assembler.tooltip": "§7复仇者,集结!", + "gtceu.machine.hv_autoclave.tooltip": "§7使粉末结晶", + "gtceu.machine.hv_bender.tooltip": "§7吁,他不行!我们要的是BENDER!!!", + "gtceu.machine.hv_brewery.tooltip": "§7紧凑高效的药剂酿造", + "gtceu.machine.hv_canner.tooltip": "§7为容器填入或从中倒出物品及流体", + "gtceu.machine.hv_centrifuge.tooltip": "§7分离分子", + "gtceu.machine.hv_chemical_bath.tooltip": "§7用化学品浸渍以分离矿物", + "gtceu.machine.hv_chemical_reactor.tooltip": "§7让化学品相互反应", + "gtceu.machine.hv_circuit_assembler.tooltip": "§7一拿一放,东拣西装", + "gtceu.machine.hv_compressor.tooltip": "§7全自动压缩机 C77", + "gtceu.machine.hv_cutter.tooltip": "§7切片,切块", + "gtceu.machine.hv_distillery.tooltip": "§7提取流体精华", + "gtceu.machine.hv_electric_furnace.tooltip": "§7别把它当成 Commodore 64 了", + "gtceu.machine.hv_electrolyzer.tooltip": "§7电离分子", + "gtceu.machine.hv_electromagnetic_separator.tooltip": "§7分离出磁性矿物", + "gtceu.machine.hv_extractor.tooltip": "§7毁灭级榨汁机 - D123", + "gtceu.machine.hv_extruder.tooltip": "§7通用型金属加工器", + "gtceu.machine.hv_fermenter.tooltip": "§7发酵流体", + "gtceu.machine.hv_fluid_drilling_rig.tooltip": "并不能用来液压破碎", + "gtceu.machine.hv_fluid_heater.tooltip": "§7加热你的流体", + "gtceu.machine.hv_fluid_solidifier.tooltip": "§7冷却液体形成固体", + "gtceu.machine.hv_forge_hammer.tooltip": "§7停,抡锤时间到!", + "gtceu.machine.hv_forming_press.tooltip": "§7图像拓印者", + "gtceu.machine.hv_gas_collector.tooltip": "§7依照维度从空气中收集种类各异的气体", + "gtceu.machine.hv_laser_engraver.tooltip": "§7请勿直视激光", + "gtceu.machine.hv_lathe.tooltip": "§7以更高的效率生产杆", + "gtceu.machine.hv_macerator.tooltip": "§7粉碎矿石并获得副产物", + "gtceu.machine.hv_mass_fabricator.tooltip": "§7UU物质 = “质量” * “发生”的平方", + "gtceu.machine.hv_mixer.tooltip": "§7它能被搅碎吗?", + "gtceu.machine.hv_ore_washer.tooltip": "§7清洗矿石以获得更多副产物", + "gtceu.machine.hv_packer.tooltip": "§7取出盒外,放入盒中", + "gtceu.machine.hv_polarizer.tooltip": "§7将你的磁体极化", + "gtceu.machine.hv_replicator.tooltip": "§7生产最纯净的元素", + "gtceu.machine.hv_rock_crusher.tooltip": "§7在水平相邻处放置熔岩和水", + "gtceu.machine.hv_scanner.tooltip": "§7扫描材料及其它物质", + "gtceu.machine.hv_sifter.tooltip": "§7保持冷静,继续筛选", + "gtceu.machine.hv_thermal_centrifuge.tooltip": "§7更精确地分离矿石", + "gtceu.machine.hv_wiremill.tooltip": "§7更高效地生产导线", + "gtceu.machine.implosion_compressor.tooltip": "唯一一台你想要爆一爆的机器", + "gtceu.machine.item_bus.export.tooltip": "为多方块结构输出物品", + "gtceu.machine.item_bus.import.tooltip": "为多方块结构输入物品", + "gtceu.machine.item_collector.gui.collect_range": "作用区域:%sx%s格", + "gtceu.machine.item_collector.tooltip": "吸取它周围的掉落物", + "gtceu.machine.iv_alloy_smelter.tooltip": "§7合金集聚器", + "gtceu.machine.iv_arc_furnace.tooltip": "§7放电加热器", + "gtceu.machine.iv_assembler.tooltip": "§l不是§7工作台", + "gtceu.machine.iv_autoclave.tooltip": "§7高压锅", + "gtceu.machine.iv_bender.tooltip": "§7形态扭曲器", + "gtceu.machine.iv_brewery.tooltip": "§7酿酒好手", + "gtceu.machine.iv_canner.tooltip": "§7罐作机", + "gtceu.machine.iv_centrifuge.tooltip": "§7分子旋风", + "gtceu.machine.iv_chemical_bath.tooltip": "§7化学品浸润器", + "gtceu.machine.iv_chemical_reactor.tooltip": "§7化学表演艺术家", + "gtceu.machine.iv_circuit_assembler.tooltip": "§7电子厂", + "gtceu.machine.iv_compressor.tooltip": "§7奇点凝缩机", + "gtceu.machine.iv_cutter.tooltip": "§7物质切削器", + "gtceu.machine.iv_distillery.tooltip": "§7凝结物质分离器", + "gtceu.machine.iv_electric_furnace.tooltip": "§7电子激发处理器", + "gtceu.machine.iv_electrolyzer.tooltip": "§7分子崩解机 E-4906", + "gtceu.machine.iv_electromagnetic_separator.tooltip": "§7电磁分类器", + "gtceu.machine.iv_extractor.tooltip": "§7真空提取机", + "gtceu.machine.iv_extruder.tooltip": "§7材料压出器", + "gtceu.machine.iv_fermenter.tooltip": "§7发酵加速器", + "gtceu.machine.iv_fluid_heater.tooltip": "§7热量灌注器", + "gtceu.machine.iv_fluid_solidifier.tooltip": "§7并不是制冰机", + "gtceu.machine.iv_forge_hammer.tooltip": "§7锻板机", + "gtceu.machine.iv_forming_press.tooltip": "§7对象层化机", + "gtceu.machine.iv_gas_collector.tooltip": "§7依照维度从大气层中收集种类各异的气体", + "gtceu.machine.iv_laser_engraver.tooltip": "§7功率高达两百零四万瓦", + "gtceu.machine.iv_lathe.tooltip": "§7全自动旋转车削机 L-5906", + "gtceu.machine.iv_macerator.tooltip": "§7全自动破壁机 9001", + "gtceu.machine.iv_mass_fabricator.tooltip": "§7创世纪工厂", + "gtceu.machine.iv_mixer.tooltip": "§7物质组织器", + "gtceu.machine.iv_ore_washer.tooltip": "§7全新用途滚筒洗衣机 I-360", + "gtceu.machine.iv_packer.tooltip": "§7装箱者", + "gtceu.machine.iv_polarizer.tooltip": "§7磁性引入机", + "gtceu.machine.iv_replicator.tooltip": "§7物质粘贴机", + "gtceu.machine.iv_rock_crusher.tooltip": "§7岩浆冷却固化器 R-8200", + "gtceu.machine.iv_scanner.tooltip": "§7异常探测仪", + "gtceu.machine.iv_sifter.tooltip": "§7由群峦传说赞助提供", + "gtceu.machine.iv_thermal_centrifuge.tooltip": "§7烈焰血汗工厂 T-6350", + "gtceu.machine.iv_wiremill.tooltip": "§7锭材拉伸机", + "gtceu.machine.large_boiler.bronze.tooltip": "再多来点蒸汽!", + "gtceu.machine.large_boiler.steel.tooltip": "木炭吞噬者", + "gtceu.machine.large_boiler.titanium.tooltip": "我超级魔法燃料呢?", + "gtceu.machine.large_boiler.tungstensteel.tooltip": "你手上有几座煤矿也不够它吃的吧?", + "gtceu.machine.large_chemical_reactor.tooltip": "黑盒反应器", + "gtceu.machine.large_combustion_engine.tooltip": "燃料点火室", + "gtceu.machine.large_combustion_engine.tooltip.boost_extreme": "提供§f80 mB/s§7的液态氧,并消耗§f双倍§7燃料以产生高达§f%s§7EU/t的功率。", + "gtceu.machine.large_combustion_engine.tooltip.boost_regular": "提供§f20 mB/s§7的氧气,并消耗§f双倍§7燃料以产生高达§f%s§7EU/t的功率。", + "gtceu.machine.large_miner.ev.tooltip": "替你挖矿", + "gtceu.machine.large_miner.iv.tooltip": "挖掉整个生物群系", + "gtceu.machine.large_miner.luv.tooltip": "掀翻整片大陆", + "gtceu.machine.large_turbine.gas.tooltip": "并不是喷气发动机", + "gtceu.machine.large_turbine.plasma.tooltip": "等离子能量虹吸器", + "gtceu.machine.large_turbine.steam.tooltip": "别把头伸进去", + "gtceu.machine.laser_hatch.both.tooltip": "§c激光传导线缆必须直线摆放!§7", + "gtceu.machine.laser_hatch.source.tooltip": "§7远距离发射能量", + "gtceu.machine.laser_hatch.target.tooltip": "§7远距离接收能量", + "gtceu.machine.laser_source_hatch.tooltip.0": "远距离发射能量", + "gtceu.machine.laser_source_hatch.tooltip.1": "§c激光传导线缆必须直线摆放!§7", + "gtceu.machine.laser_target_hatch.tooltip.0": "远距离接收能量", + "gtceu.machine.laser_target_hatch.tooltip.1": "§c激光传导线缆必须直线摆放!§7", + "gtceu.machine.locked_safe.malfunctioning": "§c故障中!", + "gtceu.machine.locked_safe.requirements": "§7需要更换以下部件:", + "gtceu.machine.lp_steam_alloy_smelter.tooltip": "§7融合冶炼炉", + "gtceu.machine.lp_steam_compressor.tooltip": "§7压缩物品", + "gtceu.machine.lp_steam_extractor.tooltip": "§7提取你的第一块橡胶", + "gtceu.machine.lp_steam_forge_hammer.tooltip": "§7锻造锤", + "gtceu.machine.lp_steam_furnace.tooltip": "§7利用蒸汽冶炼物品", + "gtceu.machine.lp_steam_liquid_boiler.tooltip": "§7消耗液体的锅炉", + "gtceu.machine.lp_steam_macerator.tooltip": "§7粉碎你的矿石", + "gtceu.machine.lp_steam_rock_crusher.tooltip": "§7在水平相邻处放置熔岩和水", + "gtceu.machine.lp_steam_solar_boiler.tooltip": "§7来自太阳的蒸汽能源", + "gtceu.machine.lp_steam_solid_boiler.tooltip": "§7获取蒸汽能源的早期手段", + "gtceu.machine.luv_alloy_smelter.tooltip": "§7合金集聚器", + "gtceu.machine.luv_arc_furnace.tooltip": "§7放电加热器", + "gtceu.machine.luv_assembler.tooltip": "§l不是§7工作台", + "gtceu.machine.luv_autoclave.tooltip": "§7高压锅", + "gtceu.machine.luv_bender.tooltip": "§7形态扭曲器", + "gtceu.machine.luv_brewery.tooltip": "§7酿酒好手", + "gtceu.machine.luv_canner.tooltip": "§7罐作机", + "gtceu.machine.luv_centrifuge.tooltip": "§7分子旋风", + "gtceu.machine.luv_chemical_bath.tooltip": "§7化学品浸润器", + "gtceu.machine.luv_chemical_reactor.tooltip": "§7化学表演艺术家", + "gtceu.machine.luv_circuit_assembler.tooltip": "§7电子厂", + "gtceu.machine.luv_compressor.tooltip": "§7奇点凝缩机", + "gtceu.machine.luv_cutter.tooltip": "§7物质切削器", + "gtceu.machine.luv_distillery.tooltip": "§7凝结物质分离器", + "gtceu.machine.luv_electric_furnace.tooltip": "§7电子激发处理器", + "gtceu.machine.luv_electrolyzer.tooltip": "§7分子崩解机 E-4907", + "gtceu.machine.luv_electromagnetic_separator.tooltip": "§7电磁分类器", + "gtceu.machine.luv_extractor.tooltip": "§7真空提取机", + "gtceu.machine.luv_extruder.tooltip": "§7材料压出器", + "gtceu.machine.luv_fermenter.tooltip": "§7发酵加速器", + "gtceu.machine.luv_fluid_heater.tooltip": "§7热量灌注器", + "gtceu.machine.luv_fluid_solidifier.tooltip": "§7并不是制冰机", + "gtceu.machine.luv_forge_hammer.tooltip": "§7锻板机", + "gtceu.machine.luv_forming_press.tooltip": "§7对象层化机", + "gtceu.machine.luv_gas_collector.tooltip": "§7依照维度从大气层中收集种类各异的气体", + "gtceu.machine.luv_laser_engraver.tooltip": "§7功率高达八百一十六万瓦", + "gtceu.machine.luv_lathe.tooltip": "§7全自动旋转车削机 L-5907", + "gtceu.machine.luv_macerator.tooltip": "§7全自动破壁机 9002", + "gtceu.machine.luv_mass_fabricator.tooltip": "§7创世纪工厂", + "gtceu.machine.luv_mixer.tooltip": "§7物质组织器", + "gtceu.machine.luv_ore_washer.tooltip": "§7全新用途滚筒洗衣机 I-361", + "gtceu.machine.luv_packer.tooltip": "§7装箱者", + "gtceu.machine.luv_polarizer.tooltip": "§7磁性引入机", + "gtceu.machine.luv_replicator.tooltip": "§7物质粘贴机", + "gtceu.machine.luv_rock_crusher.tooltip": "§7岩浆冷却固化器 R-9200", + "gtceu.machine.luv_scanner.tooltip": "§7异常探测仪", + "gtceu.machine.luv_sifter.tooltip": "§7由群峦传说赞助提供", + "gtceu.machine.luv_thermal_centrifuge.tooltip": "§7烈焰血汗工厂 T-6351", + "gtceu.machine.luv_wiremill.tooltip": "§7锭材拉伸机", + "gtceu.machine.lv_alloy_smelter.tooltip": "§7高科技融合冶炼炉", + "gtceu.machine.lv_arc_furnace.tooltip": "§7谁需要高炉?", + "gtceu.machine.lv_assembler.tooltip": "§7复仇者,集结!", + "gtceu.machine.lv_autoclave.tooltip": "§7使粉末结晶", + "gtceu.machine.lv_bender.tooltip": "§7吁,他不行!我们要的是BENDER!!!", + "gtceu.machine.lv_brewery.tooltip": "§7紧凑高效的药剂酿造", + "gtceu.machine.lv_canner.tooltip": "§7为容器填入或从中倒出物品及流体", + "gtceu.machine.lv_centrifuge.tooltip": "§7分离分子", + "gtceu.machine.lv_chemical_bath.tooltip": "§7用化学品浸渍以分离矿物", + "gtceu.machine.lv_chemical_reactor.tooltip": "§7让化学品相互反应", + "gtceu.machine.lv_circuit_assembler.tooltip": "§7一拿一放,东拣西装", + "gtceu.machine.lv_compressor.tooltip": "§7全自动压缩机 C77", + "gtceu.machine.lv_cutter.tooltip": "§7切片,切块", + "gtceu.machine.lv_distillery.tooltip": "§7提取流体精华", + "gtceu.machine.lv_electric_furnace.tooltip": "§7别把它当成 Commodore 64 了", + "gtceu.machine.lv_electrolyzer.tooltip": "§7电离分子", + "gtceu.machine.lv_electromagnetic_separator.tooltip": "§7分离出磁性矿物", + "gtceu.machine.lv_extractor.tooltip": "§7毁灭级榨汁机 - D123", + "gtceu.machine.lv_extruder.tooltip": "§7通用型金属加工器", + "gtceu.machine.lv_fermenter.tooltip": "§7发酵流体", + "gtceu.machine.lv_fluid_heater.tooltip": "§7加热你的流体", + "gtceu.machine.lv_fluid_solidifier.tooltip": "§7冷却液体形成固体", + "gtceu.machine.lv_forge_hammer.tooltip": "§7停,抡锤时间到!", + "gtceu.machine.lv_forming_press.tooltip": "§7图像拓印者", + "gtceu.machine.lv_gas_collector.tooltip": "§7依照维度从空气中收集种类各异的气体", + "gtceu.machine.lv_laser_engraver.tooltip": "§7请勿直视激光", + "gtceu.machine.lv_lathe.tooltip": "§7以更高的效率生产杆", + "gtceu.machine.lv_macerator.tooltip": "§7粉碎矿石,但没有副产物", + "gtceu.machine.lv_mass_fabricator.tooltip": "§7UU物质 = “质量” * “发生”的平方", + "gtceu.machine.lv_mixer.tooltip": "§7它能被搅碎吗?", + "gtceu.machine.lv_ore_washer.tooltip": "§7清洗矿石以获得更多副产物", + "gtceu.machine.lv_packer.tooltip": "§7取出盒外,放入盒中", + "gtceu.machine.lv_polarizer.tooltip": "§7将你的磁体极化", + "gtceu.machine.lv_replicator.tooltip": "§7生产最纯净的元素", + "gtceu.machine.lv_rock_crusher.tooltip": "§7在水平相邻处放置熔岩和水", + "gtceu.machine.lv_scanner.tooltip": "§7扫描材料及其它物质", + "gtceu.machine.lv_sifter.tooltip": "§7保持冷静,继续筛选", + "gtceu.machine.lv_thermal_centrifuge.tooltip": "§7更精确地分离矿石", + "gtceu.machine.lv_wiremill.tooltip": "§7更高效地生产导线", + "gtceu.machine.machine_hatch.locked": "机器接口已锁定", + "gtceu.machine.machine_hatch.processing_array": "当在§e处理阵列§7中时,仅可搭载适用于§e处理阵列§7的机器", + "gtceu.machine.machine_hatch.tooltip": "仅可容纳有效物品的特型访问总线", + "gtceu.machine.maintenance_hatch.tooltip": "用于维护多方块结构", + "gtceu.machine.maintenance_hatch_cleanroom_auto.tooltip.0": "可以自动维护多方块结构,附带清洁功能!", + "gtceu.machine.maintenance_hatch_cleanroom_auto.tooltip.1": "清洁方式:", + "gtceu.machine.maintenance_hatch_configurable.tooltip.0": "更精细的维护多方块结构", + "gtceu.machine.maintenance_hatch_configurable.tooltip.1": "起手无需维护!", + "gtceu.machine.maintenance_hatch_full_auto.tooltip": "可以自动维护多方块结构", + "gtceu.machine.maintenance_hatch_tape_slot.tooltip": "放入胶带以防止出现故障", + "gtceu.machine.maintenance_hatch_tool_slot.tooltip": "所需工具处于物品栏时空手点击该槽位来维护", + "gtceu.machine.me.copy_paste.tooltip": "手持闪存潜行右键点击以复制设置,右键点击以应用", + "gtceu.machine.me.export.tooltip": "在连接到ME网络之前,它具有无限容量。", + "gtceu.machine.me.fluid_export.tooltip": "将流体直接存储到ME网络中。", + "gtceu.machine.me.fluid_import.data_stick.name": "§oME输入仓配置数据", + "gtceu.machine.me.fluid_import.tooltip": "自动从ME网络获取流体。", + "gtceu.machine.me.import_copy_settings": "已将设置保存到闪存", + "gtceu.machine.me.import_paste_settings": "已从闪存应用设置", + "gtceu.machine.me.item_export.tooltip": "将物品直接存储到ME网络中。", + "gtceu.machine.me.item_import.data_stick.name": "§oME输入总线配置数据", + "gtceu.machine.me.item_import.tooltip": "自动从ME网络获取物品。", + "gtceu.machine.me.stocking_auto_pull_disabled": "ME自动拉取已禁用", + "gtceu.machine.me.stocking_auto_pull_enabled": "ME自动拉取已启用", + "gtceu.machine.me.stocking_fluid.tooltip.0": "直接从ME网络抽取流体", + "gtceu.machine.me.stocking_fluid.tooltip.1": "ME自动拉取模式将自动标记ME网络中的前16种流体,每5秒更新一次。", + "gtceu.machine.me.stocking_item.tooltip.0": "直接从ME网络抽取物品", + "gtceu.machine.me.stocking_item.tooltip.1": "ME自动拉取模式将自动标记ME网络中的前16种物品,每5秒更新一次。", + "gtceu.machine.me_import_fluid_hatch.configs.tooltip": "可标记16种流体", + "gtceu.machine.me_import_item_hatch.configs.tooltip": "可标记16种物品", + "gtceu.machine.miner.chunkradius": "区块半径:%d", + "gtceu.machine.miner.fluid_usage": "消耗§f%d mB/t§7的§f%s§7,每次超频都会使消耗量加倍。", + "gtceu.machine.miner.minex": "mX:%d", + "gtceu.machine.miner.miney": "mY:%d", + "gtceu.machine.miner.minez": "mZ:%d", + "gtceu.machine.miner.multi.description": "一种占地面积大、产矿量大的多方块采矿机。", + "gtceu.machine.miner.multi.modes": "具有精准采集和区块对齐模式。", + "gtceu.machine.miner.multi.production": "它能产出§f三倍§7于§f研磨机§7的粉碎矿石。", + "gtceu.machine.miner.per_block": "§7每个方块需要§f%d§7秒。", + "gtceu.machine.miner.radius": "半径:%d", + "gtceu.machine.miner.startx": "sX:%d", + "gtceu.machine.miner.starty": "sY:%d", + "gtceu.machine.miner.startz": "sZ:%d", + "gtceu.machine.miner.tooltip": "§7只挖掘机器下方的矿石!工作范围默认为§f%sx%s§7。", + "gtceu.machine.muffle.off": "静音:已禁用", + "gtceu.machine.muffle.on": "静音:已启用", + "gtceu.machine.muffler_hatch.tooltip.0": "从机器中回收废料", + "gtceu.machine.muffler_hatch.tooltip.1": "§l切 勿 阻 隔 输 出 口!", + "gtceu.machine.multi_furnace.tooltip": "就像家里的烤箱一样", + "gtceu.machine.multiblock.tank.tooltip": "通过控制器或储罐阀门进行吞吐。", + "gtceu.machine.mv_alloy_smelter.tooltip": "§7高科技融合冶炼炉", + "gtceu.machine.mv_arc_furnace.tooltip": "§7谁需要高炉?", + "gtceu.machine.mv_assembler.tooltip": "§7复仇者,集结!", + "gtceu.machine.mv_autoclave.tooltip": "§7使粉末结晶", + "gtceu.machine.mv_bender.tooltip": "§7吁,他不行!我们要的是BENDER!!!", + "gtceu.machine.mv_brewery.tooltip": "§7紧凑高效的药剂酿造", + "gtceu.machine.mv_canner.tooltip": "§7为容器填入或从中倒出物品及流体", + "gtceu.machine.mv_centrifuge.tooltip": "§7分离分子", + "gtceu.machine.mv_chemical_bath.tooltip": "§7用化学品浸渍以分离矿物", + "gtceu.machine.mv_chemical_reactor.tooltip": "§7让化学品相互反应", + "gtceu.machine.mv_circuit_assembler.tooltip": "§7一拿一放,东拣西装", + "gtceu.machine.mv_compressor.tooltip": "§7全自动压缩机 C77", + "gtceu.machine.mv_cutter.tooltip": "§7切片,切块", + "gtceu.machine.mv_distillery.tooltip": "§7提取流体精华", + "gtceu.machine.mv_electric_furnace.tooltip": "§7别把它当成 Commodore 64 了", + "gtceu.machine.mv_electrolyzer.tooltip": "§7电离分子", + "gtceu.machine.mv_electromagnetic_separator.tooltip": "§7分离出磁性矿物", + "gtceu.machine.mv_extractor.tooltip": "§7毁灭级榨汁机 - D123", + "gtceu.machine.mv_extruder.tooltip": "§7通用型金属加工器", + "gtceu.machine.mv_fermenter.tooltip": "§7发酵流体", + "gtceu.machine.mv_fluid_drilling_rig.tooltip": "我猜你做这个是为了采油", + "gtceu.machine.mv_fluid_heater.tooltip": "§7加热你的流体", + "gtceu.machine.mv_fluid_solidifier.tooltip": "§7冷却液体形成固体", + "gtceu.machine.mv_forge_hammer.tooltip": "§7停,抡锤时间到!", + "gtceu.machine.mv_forming_press.tooltip": "§7图像拓印者", + "gtceu.machine.mv_gas_collector.tooltip": "§7依照维度从空气中收集种类各异的气体", + "gtceu.machine.mv_laser_engraver.tooltip": "§7请勿直视激光", + "gtceu.machine.mv_lathe.tooltip": "§7以更高的效率生产杆", + "gtceu.machine.mv_macerator.tooltip": "§7粉碎矿石,但没有副产物", + "gtceu.machine.mv_mass_fabricator.tooltip": "§7UU物质 = “质量” * “发生”的平方", + "gtceu.machine.mv_mixer.tooltip": "§7它能被搅碎吗?", + "gtceu.machine.mv_ore_washer.tooltip": "§7清洗矿石以获得更多副产物", + "gtceu.machine.mv_packer.tooltip": "§7取出盒外,放入盒中", + "gtceu.machine.mv_polarizer.tooltip": "§7将你的磁体极化", + "gtceu.machine.mv_replicator.tooltip": "§7生产最纯净的元素", + "gtceu.machine.mv_rock_crusher.tooltip": "§7在水平相邻处放置熔岩和水", + "gtceu.machine.mv_scanner.tooltip": "§7扫描材料及其它物质", + "gtceu.machine.mv_sifter.tooltip": "§7保持冷静,继续筛选", + "gtceu.machine.mv_thermal_centrifuge.tooltip": "§7更精确地分离矿石", + "gtceu.machine.mv_wiremill.tooltip": "§7更高效地生产导线", + "gtceu.machine.network_switch.tooltip.0": "以太网集线器", + "gtceu.machine.network_switch.tooltip.1": "用于路由与分发§f算力§7。", + "gtceu.machine.network_switch.tooltip.2": "可以将任意数量的算力§f输入§7整合为为任意数量的算力§f输出§7。", + "gtceu.machine.network_switch.tooltip.3": "每个算力数据仓使用§f%s EU/t§7。", + "gtceu.machine.object_holder.tooltip": "研究站的先进支撑机构", + "gtceu.machine.opv_gas_collector.tooltip": "§7依照维度从宇宙中收集种类各异的气体", + "gtceu.machine.opv_rock_crusher.tooltip": "§7火山成型室", + "gtceu.machine.parallel_hatch.display": "调整多方块的最多并行处理数。", + "gtceu.machine.parallel_hatch_mk5.tooltip": "允许同时处理至多4个配方。", + "gtceu.machine.parallel_hatch_mk6.tooltip": "允许同时处理至多16个配方。", + "gtceu.machine.parallel_hatch_mk7.tooltip": "允许同时处理至多64个配方。", + "gtceu.machine.parallel_hatch_mk8.tooltip": "允许同时处理至多256个配方。", + "gtceu.machine.parallel_limit": "可同时处理至多§b%d§r§7个配方。", + "gtceu.machine.passthrough_hatch_fluid.tooltip": "将流体从一侧输送到另一侧", + "gtceu.machine.passthrough_hatch_item.tooltip": "将物品从一侧发送到另一侧", + "gtceu.machine.perfect_oc": "超频不会损失能效。", + "gtceu.machine.power_substation.tooltip.0": "集中电网的核心", + "gtceu.machine.power_substation.tooltip.1": "所有§f电容§r不需要保持同一电压等级。", + "gtceu.machine.power_substation.tooltip.2": "最多容许§f%d层电容§r。", + "gtceu.machine.power_substation.tooltip.3": "每§f24小时§7损失相当于总容量的§f1%%§r的能量。", + "gtceu.machine.power_substation.tooltip.4": "每个电容的损失上限为§f%d kEU/t§r。", + "gtceu.machine.power_substation.tooltip.5": "可以使用", + "gtceu.machine.power_substation.tooltip.6": "激光仓§r。", + "gtceu.machine.primitive_blast_furnace.bronze.tooltip": "为你带来第一块钢", + "gtceu.machine.primitive_water_pump.tooltip": "末影接口蓄水库-家用款", + "gtceu.machine.processing_array.tooltip": "当几台机器无法解决问题时", + "gtceu.machine.pump.tooltip": "§7抽干大海的最佳手段!", + "gtceu.machine.pump.tooltip_buckets": "每桶§f%d§7tick", + "gtceu.machine.pump_hatch.tooltip": "原始水泵专用流体输出口", + "gtceu.machine.pyrolyse_oven.tooltip": "电力焦炉", + "gtceu.machine.pyrolyse_oven.tooltip.1": "§a白铜§7线圈会使效率降低§f25%%§7,§a坎塔尔合金§7后的每个线圈都会增加§f50%%§7的速度。", + "gtceu.machine.quantum_chest.items_stored": "物品数量:", + "gtceu.machine.quantum_chest.tooltip": "§7比储物抽屉好", + "gtceu.machine.quantum_tank.tooltip": "§7小小身体,大大肚量", + "gtceu.machine.research_station.researching": "研究中。", + "gtceu.machine.research_station.tooltip.0": "不仅仅是一个多方块扫描仪", + "gtceu.machine.research_station.tooltip.1": "用于扫描§f数据球§7和§f数据模块§7。", + "gtceu.machine.research_station.tooltip.2": "需要§f算力§7来进行工作。", + "gtceu.machine.research_station.tooltip.3": "提供更多的算力可以使研究进展的更快。", + "gtceu.machine.rotor_holder.tooltip.0": "为多方块结构固定转子,", + "gtceu.machine.rotor_holder.tooltip.1": "使其不能飞走", + "gtceu.machine.steam.steam_hatch.tooltip": "§e接受流体:§f蒸汽", + "gtceu.machine.steam_boiler.heat_amount": "热容:%s %%", + "gtceu.machine.steam_bus.tooltip": "无法作用于非蒸汽驱动的多方块结构", + "gtceu.machine.steam_grinder.tooltip": "多方块研磨机,但是没有副产物", + "gtceu.machine.steam_miner.tooltip": "§7只挖掘机器下方的矿石!", + "gtceu.machine.steam_oven.tooltip": "不要与工业熔炉混淆", + "gtceu.machine.steam_turbine.tooltip": "§7将蒸汽转化为 EU", + "gtceu.machine.substation_hatch.input.tooltip": "为蓄能变电站输入能量", + "gtceu.machine.substation_hatch.output.tooltip": "为蓄能变电站输出能量", + "gtceu.machine.tank_valve.tooltip": "用于吞吐多方块储罐中的流体。正面向下时可自动输出。", + "gtceu.machine.transformer.description": "§7转换能量的电压等级", + "gtceu.machine.transformer.message_transform_down": "降压,输入:%s EU %dA,输出:%s EU %dA", + "gtceu.machine.transformer.message_transform_up": "升压,输入:%s EU %dA,输出:%s EU %dA", + "gtceu.machine.transformer.tooltip_tool_usage": "默认§f降压§r,使用螺丝刀切换。", + "gtceu.machine.transformer.tooltip_transform_down": "§a降压:§f%dA %s EU(%s§f)-> %dA %s EU(%s§f)", + "gtceu.machine.transformer.tooltip_transform_up": "§c升压:§f%dA %s EU(%s§f)-> %dA %s EU(%s§f)", + "gtceu.machine.uev_gas_collector.tooltip": "§7依照维度从太阳系中收集种类各异的气体", + "gtceu.machine.uev_rock_crusher.tooltip": "§7火山成型室", + "gtceu.machine.uhv_gas_collector.tooltip": "§7根据维度从太阳系中收集气体", + "gtceu.machine.uhv_rock_crusher.tooltip": "§7火山成型室", + "gtceu.machine.uiv_gas_collector.tooltip": "§7根据维度从太阳系中收集气体", + "gtceu.machine.uiv_rock_crusher.tooltip": "§7火山成型室", + "gtceu.machine.uv_alloy_smelter.tooltip": "§7金属混合调制装置", + "gtceu.machine.uv_arc_furnace.tooltip": "§7短路加热器", + "gtceu.machine.uv_assembler.tooltip": "§7装配构建者", + "gtceu.machine.uv_autoclave.tooltip": "§7重压单元", + "gtceu.machine.uv_bender.tooltip": "§7物质畸变者", + "gtceu.machine.uv_brewery.tooltip": "§7强劲酿制者", + "gtceu.machine.uv_canner.tooltip": "§7罐子致动器", + "gtceu.machine.uv_centrifuge.tooltip": "§7分子龙卷风", + "gtceu.machine.uv_chemical_bath.tooltip": "§7化学沉浸洗涤者", + "gtceu.machine.uv_chemical_reactor.tooltip": "§7反应催化器", + "gtceu.machine.uv_circuit_assembler.tooltip": "§7计算机工厂", + "gtceu.machine.uv_compressor.tooltip": "§7物质约束器", + "gtceu.machine.uv_cutter.tooltip": "§7对象分割者", + "gtceu.machine.uv_distillery.tooltip": "§7馏分分离器", + "gtceu.machine.uv_electric_furnace.tooltip": "§7原子激发器", + "gtceu.machine.uv_electrolyzer.tooltip": "§7原子离子化装置", + "gtceu.machine.uv_electromagnetic_separator.tooltip": "§7电磁场驱离装置", + "gtceu.machine.uv_extractor.tooltip": "§7液化吸取者", + "gtceu.machine.uv_extruder.tooltip": "§7形制驱动者", + "gtceu.machine.uv_fermenter.tooltip": "§7呼吸控制器", + "gtceu.machine.uv_fluid_heater.tooltip": "§7热量灌输器", + "gtceu.machine.uv_fluid_solidifier.tooltip": "§7流体硬化器", + "gtceu.machine.uv_forge_hammer.tooltip": "§7冲击调制器", + "gtceu.machine.uv_forming_press.tooltip": "§7表面移相器", + "gtceu.machine.uv_gas_collector.tooltip": "§7根据维度从太阳系中收集气体", + "gtceu.machine.uv_laser_engraver.tooltip": "§7高精度光子加农炮", + "gtceu.machine.uv_lathe.tooltip": "§7飞旋磨轮", + "gtceu.machine.uv_macerator.tooltip": "§7形态毁灭者", + "gtceu.machine.uv_mass_fabricator.tooltip": "§7存在之源", + "gtceu.machine.uv_mixer.tooltip": "§7材料均质机", + "gtceu.machine.uv_ore_washer.tooltip": "§7微型洗车房", + "gtceu.machine.uv_packer.tooltip": "§7亚马逊仓库", + "gtceu.machine.uv_polarizer.tooltip": "§7磁场重置设备", + "gtceu.machine.uv_replicator.tooltip": "§7元素创制者", + "gtceu.machine.uv_rock_crusher.tooltip": "§7火山成型室", + "gtceu.machine.uv_scanner.tooltip": "§7电子显微镜", + "gtceu.machine.uv_sifter.tooltip": "§7脉冲过滤器", + "gtceu.machine.uv_thermal_centrifuge.tooltip": "§7腾焰旋风", + "gtceu.machine.uv_wiremill.tooltip": "§7导线易形者", + "gtceu.machine.uxv_gas_collector.tooltip": "§7根据维度从太阳系中收集气体", + "gtceu.machine.uxv_rock_crusher.tooltip": "§7火山成型室", + "gtceu.machine.vacuum_freezer.tooltip": "啊哈我的大冰箱!", + "gtceu.machine.workbench.storage_note.0": "(相邻的物品容器中", + "gtceu.machine.workbench.storage_note.1": "可参与合成的物品)", + "gtceu.machine.workbench.tab.container": "存储", + "gtceu.machine.workbench.tab.crafting": "合成", + "gtceu.machine.workbench.tab.item_list": "存储空间", + "gtceu.machine.workbench.tab.workbench": "合成", + "gtceu.machine.workbench.tooltip.0": "比林业的好", + "gtceu.machine.workbench.tooltip.1": "具有物品存储、工具存储、从相邻的存储容器中读取物品和保存配方功能。", + "gtceu.machine.world_accelerator.description": "以两种模式之一加速周围方块的更新刻:§f方块实体§r或§f随机刻§7。使用螺丝刀切换模式。", + "gtceu.machine.world_accelerator.mode_entity": "随机刻模式", + "gtceu.machine.world_accelerator.mode_tile": "方块实体模式", + "gtceu.machine.world_accelerator.working_area": "§b作用范围:", + "gtceu.machine.world_accelerator.working_area_random": " 随机刻模式:§f%dx%d", + "gtceu.machine.world_accelerator.working_area_tile": " 方块实体模式:§f相邻方块", + "gtceu.machine.zpm_alloy_smelter.tooltip": "§7合金集聚器", + "gtceu.machine.zpm_arc_furnace.tooltip": "§7放电加热器", + "gtceu.machine.zpm_assembler.tooltip": "§l不是§7工作台", + "gtceu.machine.zpm_autoclave.tooltip": "§7高压锅", + "gtceu.machine.zpm_bender.tooltip": "§7形态扭曲器", + "gtceu.machine.zpm_brewery.tooltip": "§7酿酒好手", + "gtceu.machine.zpm_canner.tooltip": "§7罐作机", + "gtceu.machine.zpm_centrifuge.tooltip": "§7分子旋风", + "gtceu.machine.zpm_chemical_bath.tooltip": "§7化学品浸润器", + "gtceu.machine.zpm_chemical_reactor.tooltip": "§7化学表演艺术家", + "gtceu.machine.zpm_circuit_assembler.tooltip": "§7电子厂", + "gtceu.machine.zpm_compressor.tooltip": "§7奇点凝缩机", + "gtceu.machine.zpm_cutter.tooltip": "§7物质切削器", + "gtceu.machine.zpm_distillery.tooltip": "§7凝结物质分离器", + "gtceu.machine.zpm_electric_furnace.tooltip": "§7电子激发处理器", + "gtceu.machine.zpm_electrolyzer.tooltip": "§7分子崩解机 E-4908", + "gtceu.machine.zpm_electromagnetic_separator.tooltip": "§7电磁分类器", + "gtceu.machine.zpm_extractor.tooltip": "§7真空提取机", + "gtceu.machine.zpm_extruder.tooltip": "§7材料压出器", + "gtceu.machine.zpm_fermenter.tooltip": "§7发酵加速器", + "gtceu.machine.zpm_fluid_heater.tooltip": "§7热量灌注器", + "gtceu.machine.zpm_fluid_solidifier.tooltip": "§7并不是制冰机", + "gtceu.machine.zpm_forge_hammer.tooltip": "§7锻板机", + "gtceu.machine.zpm_forming_press.tooltip": "§7对象层化机", + "gtceu.machine.zpm_gas_collector.tooltip": "§7收集不同维度的大气中种类各异的气体", + "gtceu.machine.zpm_laser_engraver.tooltip": "§7功率高达三千两百六十四万瓦", + "gtceu.machine.zpm_lathe.tooltip": "§7全自动旋转车削机 L-5908", + "gtceu.machine.zpm_macerator.tooltip": "§7全自动破壁机 9003", + "gtceu.machine.zpm_mass_fabricator.tooltip": "§7创世纪工厂", + "gtceu.machine.zpm_mixer.tooltip": "§7物质组织器", + "gtceu.machine.zpm_ore_washer.tooltip": "§7全新用途滚筒洗衣机 I-362", + "gtceu.machine.zpm_packer.tooltip": "§7装箱者", + "gtceu.machine.zpm_polarizer.tooltip": "§7磁性引入机", + "gtceu.machine.zpm_replicator.tooltip": "§7物质粘贴机", + "gtceu.machine.zpm_rock_crusher.tooltip": "§7岩浆冷却固化器 R-10200", + "gtceu.machine.zpm_scanner.tooltip": "§7异常探测仪", + "gtceu.machine.zpm_sifter.tooltip": "§7由群峦传说赞助提供", + "gtceu.machine.zpm_thermal_centrifuge.tooltip": "§7烈焰血汗工厂 T-6352", + "gtceu.machine.zpm_wiremill.tooltip": "§7锭材拉伸机", + "gtceu.maintenance.configurable_duration": "处理耗时:%fx", + "gtceu.maintenance.configurable_duration.changed_description": "配方处理速度现为正常速度(不计超频)的%f倍。", + "gtceu.maintenance.configurable_duration.modify": "修改耗时:", + "gtceu.maintenance.configurable_duration.unchanged_description": "配方以正常速度运行。更改配置以更新。", + "gtceu.maintenance.configurable_time": "故障概率:%fx", + "gtceu.maintenance.configurable_time.changed_description": "故障的发生概率现为正常值的%f倍。", + "gtceu.maintenance.configurable_time.unchanged_description": "故障的发生概率为正常值。更改配置以更新。", + "gtceu.medical_condition.antidote.description": "§a解毒剂 §7按住Shift以显示详情", + "gtceu.medical_condition.antidote.description.effect_removed": "疾病效果持续时间降低%s%%", + "gtceu.medical_condition.antidote.description.effect_removed.all": "消除所有疾病效果", + "gtceu.medical_condition.antidote.description_shift": "§a治愈以下疾病:", + "gtceu.medical_condition.arsenicosis": "§b砷中毒", + "gtceu.medical_condition.asbestosis": "§d石棉肺", + "gtceu.medical_condition.berylliosis": "§5铍中毒", + "gtceu.medical_condition.carbon_monoxide_poisoning": "§7一氧化碳污染", + "gtceu.medical_condition.carcinogen": "§e致癌", + "gtceu.medical_condition.chemical_burns": "§5化学烧伤", + "gtceu.medical_condition.description": "§c§l危险物质 §7按住Shift以显示详情", + "gtceu.medical_condition.description_shift": "§c§l危险物质:", + "gtceu.medical_condition.irritant": "§6刺激性", + "gtceu.medical_condition.methanol_poisoning": "§6甲醇中毒", + "gtceu.medical_condition.nausea": "§3恶心", + "gtceu.medical_condition.none": "§2无害", + "gtceu.medical_condition.poison": "§2中毒", + "gtceu.medical_condition.silicosis": "§1矽肺病", + "gtceu.medical_condition.weak_poison": "§a轻度中毒", + "gtceu.minimap.ore_vein.depleted": "已枯竭", + "gtceu.mixer": "搅拌机", + "gtceu.mode.both": "§d全部(流体和物品)§r", + "gtceu.mode.fluid": "§9流体§r", + "gtceu.mode.item": "§6物品§r", + "gtceu.muffler.recovery_tooltip": "§b回收概率:§f%d%%", + "gtceu.multiblock.active_transformer.average_in": "§b平均输入:§f%s EU/t", + "gtceu.multiblock.active_transformer.average_out": "§b平均输出:§f%s EU/t", + "gtceu.multiblock.active_transformer.danger_enabled": "§c§b危险:易爆", + "gtceu.multiblock.active_transformer.max_input": "§a最大输入:§f%s EU/t", + "gtceu.multiblock.active_transformer.max_output": "§c最大输出:§f%s EU/t", + "gtceu.multiblock.assembly_line.description": "装配线是由5到16“片”组成的大型多方块结构。理论上,它是一个大型组装机,用于生产高级元件。", + "gtceu.multiblock.batch_enabled": "批处理模式:已启用(%sx)", + "gtceu.multiblock.blast_furnace.max_temperature": "热容:%s", + "gtceu.multiblock.central_monitor.height": "屏幕高度:%d", + "gtceu.multiblock.central_monitor.height_modify": "调整高度:%d", + "gtceu.multiblock.central_monitor.low_power": "供能不足", + "gtceu.multiblock.central_monitor.tooltip.0": "这台机器可以监控由数字接口覆盖板代理的机器。您可以方便地监视能源网络中代理的机器的流体、物品、能量和状态。", + "gtceu.multiblock.central_monitor.tooltip.1": "监控器屏幕的搭建尺寸为3x2到%dx%d (宽x高)。", + "gtceu.multiblock.central_monitor.tooltip.2": "默认高度为3,在结构形成之前,您可以在GUI中调整屏幕高度。", + "gtceu.multiblock.central_monitor.tooltip.3": "能源消耗:每块屏幕%d EU/s。", + "gtceu.multiblock.central_monitor.width": "屏幕宽度:%d", + "gtceu.multiblock.charcoal_pile.description.0": "将下方最大9x4x9区域内的原木烧制成脆木炭块。", + "gtceu.multiblock.charcoal_pile.description.1": "", + "gtceu.multiblock.charcoal_pile.description.2": "木炭堆底部必须由砖块构成,壁面和顶面则可选用泥土、沙子等任何土地类方块。堆内必须填满,不可存在空气。", + "gtceu.multiblock.charcoal_pile.description.3": "", + "gtceu.multiblock.charcoal_pile.description.4": "木炭堆的尺寸越大,所需的处理时间就越长,但效率更高。", + "gtceu.multiblock.cleanroom.clean_amount": "洁净度:§a%s%%", + "gtceu.multiblock.cleanroom.clean_state": "状态:§a洁净", + "gtceu.multiblock.cleanroom.dirty_state": "状态:§4污染", + "gtceu.multiblock.coke_oven.description": "焦炉是一种多方块结构,用于在早期生产焦煤和杂酚油,无需燃料即可工作,内部至多可容纳 32 桶杂酚油。其存储可通过焦炉仓进行访问。", + "gtceu.multiblock.computation.max": "最大算力:%s", + "gtceu.multiblock.computation.non_bridging": "发现非桥接连接", + "gtceu.multiblock.computation.non_bridging.detailed": "算力数据仓与一台无法桥接的机器连接", + "gtceu.multiblock.computation.not_enough_computation": "机器需要更多算力!", + "gtceu.multiblock.computation.usage": "使用:%s", + "gtceu.multiblock.cracker.description": "裂化机是一种用于将轻燃油和重燃油裂化为相应裂化物的多方块结构。", + "gtceu.multiblock.cracking_unit.energy": "耗能:%s%%", + "gtceu.multiblock.data_bank.description": "数据库是一个用于在多个装配线间分享研究数据的多方块结构。此外,它也能让装配线读取数据模块里更复杂的研究数据。", + "gtceu.multiblock.data_bank.providing": "提供数据。", + "gtceu.multiblock.dimension": "§e尺寸:§r%sx%sx%s", + "gtceu.multiblock.dimensions.0": "尺寸:", + "gtceu.multiblock.dimensions.1": " §c§l长§r:%s,§a§l高§r:%s,§9§l宽§r:%s ", + "gtceu.multiblock.distillation_tower.description": "蒸馏塔是一种用于蒸馏不同石油及其副产品的多方块结构。", + "gtceu.multiblock.distillation_tower.distilling_fluid": "正在蒸馏%s", + "gtceu.multiblock.electric_blast_furnace.description": "电力高炉是一种用来熔炼合金、熔化金属或冶炼矿石的多方块结构。也可用于获取高级的合金和金属,例如铝、不锈钢、钛或硅岩合金。", + "gtceu.multiblock.energy_consumption": "能量消耗:%s EU/t(%s)", + "gtceu.multiblock.exact_hatch_1.tooltip": "§f只允许有且仅有§6一个§f能源仓。", + "gtceu.multiblock.extreme_combustion_engine.description": "极限内燃引擎是一种产出§9IV§r能量的多方块结构,工作方式与内燃发电机类似。", + "gtceu.multiblock.fluid_rig.drilled_fluid": "流体:%s", + "gtceu.multiblock.fluid_rig.fluid_amount": "抽取速率:%s", + "gtceu.multiblock.fluid_rig.no_fluid_in_area": "区域内没有。", + "gtceu.multiblock.fluid_rig.vein_depleted": "矿脉已枯竭", + "gtceu.multiblock.fluid_rig.vein_depletion": "矿脉大小:%s", + "gtceu.multiblock.fusion_reactor.energy": "EU:%d / %d", + "gtceu.multiblock.fusion_reactor.heat": "热量:%d", + "gtceu.multiblock.generation_eu": "输出功率:§a%s EU/t", + "gtceu.multiblock.hpca.computation": "提供:%s", + "gtceu.multiblock.hpca.description": "高性能计算阵列(HPCA)是个多方块结构,用于为更复杂的装配线研究数据提供计算工作单元(CWU/t)。该结构中有3×3的区域可以以任意方式填充HPCA组件,不同的组件提供不同数量的算力,冷却与能源成本,并且影响热量的产出与冷却液的消耗。当存在桥接组件时,HPCA可以连接入网络交换机,让不同来源的算力整合并输出到一个或多个目的地。", + "gtceu.multiblock.hpca.energy": "使用:%s / %s EU/t (%s)", + "gtceu.multiblock.hpca.error_damaged": "计算组件损坏!", + "gtceu.multiblock.hpca.error_temperature": "温度超过100℃,可能导致计算组件损坏!", + "gtceu.multiblock.hpca.hover_for_info": "悬停以显示细节", + "gtceu.multiblock.hpca.info_bridging_disabled": "桥接已关闭", + "gtceu.multiblock.hpca.info_bridging_enabled": "桥接已启动", + "gtceu.multiblock.hpca.info_coolant_name": "多氯联苯冷却液", + "gtceu.multiblock.hpca.info_max_computation": "最大算力:%s", + "gtceu.multiblock.hpca.info_max_coolant_required": "冷却液需求:%s mB/t", + "gtceu.multiblock.hpca.info_max_cooling_available": "冷却可用:%s", + "gtceu.multiblock.hpca.info_max_cooling_demand": "冷却需求:%s", + "gtceu.multiblock.hpca.temperature": "温度:%s", + "gtceu.multiblock.hpca.warning_low_cooling": "- 冷却不足", + "gtceu.multiblock.hpca.warning_multiple_bridges": "- 多个桥接组件(没有额外好处)", + "gtceu.multiblock.hpca.warning_no_computation": "- 没有计算组件", + "gtceu.multiblock.hpca.warning_structure_header": "结构警告:", + "gtceu.multiblock.hpca.warning_temperature": "温度超过50℃,超过100℃时可能导致计算组件损坏!", + "gtceu.multiblock.hpca.warning_temperature_active_cool": "充分利用主动冷却组件", + "gtceu.multiblock.idling": "§6待机。", + "gtceu.multiblock.implosion_compressor.description": "聚爆压缩机是一种多方块结构,能够借助炸药将宝石粉转化为相应的宝石。", + "gtceu.multiblock.invalid_structure": "结构无效。", + "gtceu.multiblock.invalid_structure.tooltip": "该方块是多方块结构的控制器,请查看该方块的JEI界面以获取搭建图示。", + "gtceu.multiblock.large_boiler.description": "大型锅炉是一种使用水和能量源产生蒸汽的多方块结构。这里说的“能量源”通常是指固体燃料和高密度流体。不同等级的锅炉仅在蒸汽产量上有所差别。", + "gtceu.multiblock.large_boiler.efficiency": "效率:%s", + "gtceu.multiblock.large_boiler.explosion_tooltip": "无水时提供燃料将爆炸", + "gtceu.multiblock.large_boiler.heat_time_tooltip": "§7需要§f%d秒§7预热", + "gtceu.multiblock.large_boiler.max_temperature": "最高温度:%dK,蒸汽产量:%dmB/t", + "gtceu.multiblock.large_boiler.rate_tooltip": "§7每块§1煤炭§7可以生产§f%dL§7的蒸汽", + "gtceu.multiblock.large_boiler.steam_output": "蒸汽输出:%s mB/t", + "gtceu.multiblock.large_boiler.temperature": "温度:%sK / %sK", + "gtceu.multiblock.large_boiler.throttle": "节流:%d", + "gtceu.multiblock.large_boiler.throttle.tooltip": "锅炉可以节流,以减少燃料消耗与蒸汽产出,并且不损失效率,不影响加热时间。", + "gtceu.multiblock.large_boiler.throttle_modify": "修改节流:", + "gtceu.multiblock.large_chemical_reactor.description": "大型化学反应釜能够以 100% 的能效进行化学反应。超频将使得处理速度与耗能提升 4 倍。该多方块结构需要在中心位置的聚四氟乙烯管道方块旁放置 1 个白铜线圈方块。", + "gtceu.multiblock.large_combustion_engine.boost_disallowed": "§b升级你的动力仓以激活氧气促燃", + "gtceu.multiblock.large_combustion_engine.description": "大型内燃引擎是一种产出§5EV§r能量的多方块结构,工作方式与内燃发电机类似。", + "gtceu.multiblock.large_combustion_engine.liquid_oxygen_amount": "液氧存量:%sL", + "gtceu.multiblock.large_combustion_engine.liquid_oxygen_boosted": "§b液氧促燃中", + "gtceu.multiblock.large_combustion_engine.lubricant_amount": "润滑油存量:%sL", + "gtceu.multiblock.large_combustion_engine.obstructed": "引擎进气口受阻。", + "gtceu.multiblock.large_combustion_engine.oxygen_amount": "氧气存量:%sL", + "gtceu.multiblock.large_combustion_engine.oxygen_boosted": "§b氧气促燃中", + "gtceu.multiblock.large_combustion_engine.supply_liquid_oxygen_to_boost": "提供液氧来促燃", + "gtceu.multiblock.large_combustion_engine.supply_oxygen_to_boost": "提供氧气来促燃", + "gtceu.multiblock.large_miner.done": "完成!", + "gtceu.multiblock.large_miner.errorradius": "§c工作中不能调整半径!", + "gtceu.multiblock.large_miner.invfull": "存储空间已满!", + "gtceu.multiblock.large_miner.needsfluid": "需要钻井液", + "gtceu.multiblock.large_miner.needspower": "需要能量!", + "gtceu.multiblock.large_miner.radius": "半径:§a%d§r格", + "gtceu.multiblock.large_miner.steam": "需要蒸汽!", + "gtceu.multiblock.large_miner.vent": "排气口受阻!", + "gtceu.multiblock.large_miner.working": "工作中……", + "gtceu.multiblock.large_turbine.description": "大型涡轮是一种使用蒸汽、燃气或等离子体转动涡轮转子来发电的多方块结构。转子效率和转子转速影响能量的输出。", + "gtceu.multiblock.luv_fusion_reactor.description": "核聚变反应堆MK-I是台大型多方块结构,用于融合元素形成更重的元素。它仅可使用LuV,ZPM或UV等级的能源仓。每个能源仓可增加10MEU的能量缓存,最大能量缓存为160MEU。", + "gtceu.multiblock.max_energy_per_tick": "最大功率:§a%s EU/t(%s§r)", + "gtceu.multiblock.max_energy_per_tick_amps": "最大功率:%s(%sA %s)", + "gtceu.multiblock.max_energy_per_tick_hover": "可用于运行配方或超频的最大EU/t", + "gtceu.multiblock.max_recipe_tier": "最大配方等级:%s", + "gtceu.multiblock.max_recipe_tier_hover": "可运行配方的最大等级", + "gtceu.multiblock.monitor_screen.tooltip.0": "用螺丝刀右击即可打开GUI。", + "gtceu.multiblock.monitor_screen.tooltip.1": "数字接口覆盖板的代理模式可托管机器的功能与界面(是的,你可以在屏幕上直接连接管道)。", + "gtceu.multiblock.monitor_screen.tooltip.2": "该屏幕也支持插件。", + "gtceu.multiblock.multi_furnace.description": "工业熔炉是一种用于一次性烧制大量物品的多方块结构。不同级别的线圈会提供速度增幅和能量效率增幅。每次运作的基础烧制数量为32,且可以使用高等级的线圈增加烧制数量。", + "gtceu.multiblock.multi_furnace.heating_coil_discount": "加热线圈增幅:%sx", + "gtceu.multiblock.multi_furnace.heating_coil_level": "加热线圈等级:%s", + "gtceu.multiblock.multiple_recipemaps.header": "机器模式:", + "gtceu.multiblock.multiple_recipemaps.switch_message": "机器必须关闭才能切换模式!", + "gtceu.multiblock.multiple_recipemaps.tooltip": "使用螺丝刀右键控制器以更改机器模式。", + "gtceu.multiblock.multiple_recipemaps_recipes.tooltip": "机器模式:§e%s§r", + "gtceu.multiblock.network_switch.description": "网络交换机是个多方块结构,可以接受任意数量的算力数据靶仓输入,并从任意数量的算力数据源仓输出。对于需要更高算力的研究数据配方,网络交换机的存在是必要的,这是因为研究站只接受一个算力数据靶仓。当与HPCA连接时,HPCA必须具有桥接组件才可以令网络交换机接收其算力。", + "gtceu.multiblock.not_enough_energy": "警告:能量不足。", + "gtceu.multiblock.not_enough_energy_output": "警告:能源/动力仓等级过低!", + "gtceu.multiblock.ore_rig.drilled_ore_entry": " - %s", + "gtceu.multiblock.ore_rig.drilled_ores_list": "矿石:", + "gtceu.multiblock.ore_rig.ore_amount": "钻进速率:%s", + "gtceu.multiblock.output_line.0": "%s x §e%s§r(%ss/ea)", + "gtceu.multiblock.output_line.1": "%s x §e%s§r(%s/s)", + "gtceu.multiblock.output_line.2": "%s ≈ §e%s§r(%ss/ea)", + "gtceu.multiblock.output_line.3": "%s ≈ §e%s§r (%s/s)", + "gtceu.multiblock.page_switcher.io.both": "§5兼顾输入/输出", + "gtceu.multiblock.page_switcher.io.export": "§4输出", + "gtceu.multiblock.page_switcher.io.import": "§2输入", + "gtceu.multiblock.parallel": "同时处理至多%d个配方", + "gtceu.multiblock.parallel.exact": "同时处理%d个配方", + "gtceu.multiblock.parallelizable.tooltip": "通过并行控制仓让机器同时处理多个相同配方。", + "gtceu.multiblock.pattern.clear_amount_1": "§6前方必须有1x1x1大小的空间§r", + "gtceu.multiblock.pattern.clear_amount_3": "§6前方必须有3x3x1大小的空间§r", + "gtceu.multiblock.pattern.error": "在%2$s处需要%1$s。", + "gtceu.multiblock.pattern.error.batteries": "§c必须使用同种电池§r", + "gtceu.multiblock.pattern.error.coils": "§c必须使用同种线圈方块§r", + "gtceu.multiblock.pattern.error.filters": "§c必须使用同种过滤器§r", + "gtceu.multiblock.pattern.error.limited.0": "§c最多:%d个§r", + "gtceu.multiblock.pattern.error.limited.1": "§c最少:%d个§r", + "gtceu.multiblock.pattern.error.limited.2": "§c最多:每层%d个§r", + "gtceu.multiblock.pattern.error.limited.3": "§c最少:每层%d个§r", + "gtceu.multiblock.pattern.error.limited_exact": "§c精确:%d§r", + "gtceu.multiblock.pattern.error.limited_within": "§c最少%d个,最多%d个§r", + "gtceu.multiblock.pattern.location_end": "§c最末端§r", + "gtceu.multiblock.pattern.replaceable_air": "可为空气", + "gtceu.multiblock.pattern.single": "§6仅可使用该种方块§r", + "gtceu.multiblock.power_substation.average_in": "§7平均输入:%s §7EU/t", + "gtceu.multiblock.power_substation.average_in_hover": "蓄能变电站内部的平均功率输入", + "gtceu.multiblock.power_substation.average_out": "§7平均输出:%s §7EU/t", + "gtceu.multiblock.power_substation.average_out_hover": "蓄能变电站内部的平均功率输出", + "gtceu.multiblock.power_substation.capacity": "§7容量:%s §7EU", + "gtceu.multiblock.power_substation.passive_drain": "§7被动损失:%s §7EU/t", + "gtceu.multiblock.power_substation.stored": "§7存储:%s §7EU", + "gtceu.multiblock.power_substation.time_days": "%s天", + "gtceu.multiblock.power_substation.time_forever": "永远", + "gtceu.multiblock.power_substation.time_hours": "%s时", + "gtceu.multiblock.power_substation.time_minutes": "%s分", + "gtceu.multiblock.power_substation.time_seconds": "%s秒", + "gtceu.multiblock.power_substation.time_to_drain": "§7预计耗空时间:%s", + "gtceu.multiblock.power_substation.time_to_fill": "§7预计充满时间:%s", + "gtceu.multiblock.power_substation.time_years": "%s年", + "gtceu.multiblock.power_substation.under_one_hour_left": "不到一小时就会完全耗光!", + "gtceu.multiblock.preview.rotate": "左键拖拽以旋转", + "gtceu.multiblock.preview.select": "右击方块以查看其他可选方块", + "gtceu.multiblock.preview.zoom": "使用鼠标滚轮或右键拖拽以缩放", + "gtceu.multiblock.primitive_blast_furnace.bronze.description": "土高炉是一种在游戏前期用来生产钢的多方块结构。尽管它不是很快,却能为你的发展提供钢材。", + "gtceu.multiblock.primitive_water_pump.description": "原始水泵是一台前蒸汽时代的多方块设施,每秒进行一次水资源收集,每秒的收集量取决于其所处的生物群系。水泵输出仓以及 §8ULV§r 和 §7LV§r 的输出仓均可用于该设施,输出仓的等级越高,水资源的产出量也越高。产出量遵循的公式为:生物群系系数 * 输出仓倍数。", + "gtceu.multiblock.primitive_water_pump.extra1.0": "生物群系系数:", + "gtceu.multiblock.primitive_water_pump.extra1.1": " 海洋,河流:1000 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.2": " 沼泽:800 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.3": " 丛林:350 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.4": " 覆雪群系:300 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.5": " 平原,森林:250 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.6": " 针叶林:175 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.7": " 沙滩:170 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.8": " 其他:100 mB/s", + "gtceu.multiblock.primitive_water_pump.extra2.0": "输出乘数:", + "gtceu.multiblock.primitive_water_pump.extra2.1": " 水泵仓:1x", + "gtceu.multiblock.primitive_water_pump.extra2.2": "§8ULV§r输出仓:2x", + "gtceu.multiblock.primitive_water_pump.extra2.3": "§7LV§r输出仓:4x", + "gtceu.multiblock.primitive_water_pump.extra2.4": "", + "gtceu.multiblock.primitive_water_pump.extra2.5": "当水泵所处的生物群系下雨时,总产水量将增加50%%。", + "gtceu.multiblock.progress": "进度:%ss / %ss(%s%%)", + "gtceu.multiblock.progress_percent": "进度:%s%%", + "gtceu.multiblock.pyrolyse_oven.description": "热解炉是一种用于将原木处理为木炭、杂酚油、灰烬或重油的多方块结构。", + "gtceu.multiblock.pyrolyse_oven.speed": "处理速度:%s%%", + "gtceu.multiblock.require_steam_parts": "需要蒸汽仓与输入/输出总线(蒸汽)!", + "gtceu.multiblock.research_station.description": "研究站是个多方块结构,用于研究更复杂的装配线研究数据。任何需要数据球或数据模块的研究必须使用研究站而非扫描仪来扫描。研究站需要计算工作单位(CWU/t)来进行工作,这由高性能计算阵列(HPCA)提供。", + "gtceu.multiblock.research_station.researching": "§6研究中…", + "gtceu.multiblock.running": "运行正常。", + "gtceu.multiblock.steam.duration_modifier": "处理耗时为基础的§f1.5§7倍,不受物品数量影响。", + "gtceu.multiblock.steam.low_steam": "蒸汽不足,无法运行!", + "gtceu.multiblock.steam.steam_stored": "蒸汽:%s / %s mB", + "gtceu.multiblock.steam_grinder.description": "蒸汽时代的多方块研磨机。需要至少14块青铜机械方块成型。仅可使用输入/输出总线(蒸汽),并且只能用蒸汽仓供给蒸汽。", + "gtceu.multiblock.steam_oven.description": "蒸汽时代的多方块熔炉。需要至少6块青铜机械方块成型。仅可使用输入/输出总线(蒸汽),并且只能用蒸汽仓供给蒸汽。蒸汽仓必须放置于结构底层,数量至多为一个。", + "gtceu.multiblock.title": "多方块结构", + "gtceu.multiblock.turbine.efficiency": "涡轮效率:%s%%", + "gtceu.multiblock.turbine.efficiency_tooltip": "转子支架等级超过%s§r时,每级§7增加§f10%%效率,并翻倍输出功率§7。", + "gtceu.multiblock.turbine.energy_per_tick": "能量输出:%s/%s EU/t", + "gtceu.multiblock.turbine.energy_per_tick_maxed": "能量输出:%s EU/t", + "gtceu.multiblock.turbine.fuel_amount": "燃料量:%sL(%s)", + "gtceu.multiblock.turbine.fuel_needed": "消耗量:%s / %s ticks", + "gtceu.multiblock.turbine.obstructed": "涡轮受阻", + "gtceu.multiblock.turbine.rotor_durability": "转子耐久度:%s%%", + "gtceu.multiblock.turbine.rotor_speed": "转子转速:%s/%sRPM", + "gtceu.multiblock.universal.distinct": "总线隔离:", + "gtceu.multiblock.universal.distinct.info": "启用时,每个物品总线将在配方识别中被视为完全独立。对于消耗材料相同,使用的非消耗材料(模头、透镜等)不同则产物也不同的配方来说作用显著。", + "gtceu.multiblock.universal.distinct.no": "否", + "gtceu.multiblock.universal.distinct.yes": "是", + "gtceu.multiblock.universal.has_problems": "存在故障!", + "gtceu.multiblock.universal.has_problems_header": "在维护仓中修复以下问题:", + "gtceu.multiblock.universal.muffler_obstructed": "消声仓受阻!", + "gtceu.multiblock.universal.muffler_obstructed.tooltip": "消音仓口前方必须有一格空气。", + "gtceu.multiblock.universal.no_problems": "无故障!", + "gtceu.multiblock.universal.problem.crowbar": "§7这东西不属于这儿。(§a撬棍§7)", + "gtceu.multiblock.universal.problem.hard_hammer": "§7外壳有些凹痕。(§a锻造锤§7)", + "gtceu.multiblock.universal.problem.screwdriver": "§7螺丝没拧紧。(§a螺丝刀§7)", + "gtceu.multiblock.universal.problem.soft_mallet": "§7有什么东西卡住了。(§a软锤§7)", + "gtceu.multiblock.universal.problem.wire_cutter": "§7有几根线烧焦了(§a剪线钳§7)", + "gtceu.multiblock.universal.problem.wrench": "§7管道松动了。(§a扳手§7)", + "gtceu.multiblock.universal.rotor_obstructed": "转子进气口受阻!", + "gtceu.multiblock.uv_fusion_reactor.description": "核聚变反应堆MK-III是台大型多方块结构,用于融合元素形成更重的元素。它仅可使用UV等级的能源仓。每个能源仓可增加40MEU的能量缓存,最大能量缓存为640MEU。", + "gtceu.multiblock.vacuum_freezer.description": "真空冷冻机是一种多方块结构,主要用于将热锭冷却为成品锭。此外,它还可以冻结水等其他物质。", + "gtceu.multiblock.validation_failed": "输入仓/输出仓数量无效。", + "gtceu.multiblock.waiting": "警告:机器待机", + "gtceu.multiblock.work_paused": "暂停。", + "gtceu.multiblock.zpm_fusion_reactor.description": "核聚变反应堆MK-II是台大型多方块结构,用于融合元素形成更重的元素。它仅可使用ZPM或UV等级的能源仓。每个能源仓可增加20MEU的能量缓存,最大能量缓存为320MEU。", + "gtceu.oc.tooltip.0": "最低:%s", + "gtceu.oc.tooltip.1": "左键单击增加超频等级", + "gtceu.oc.tooltip.2": "右键单击降低超频等级", + "gtceu.oc.tooltip.3": "中键单击重设超频等级", + "gtceu.oc.tooltip.4": "按住Shift以无损超频显示", + "gtceu.ore_washer": "洗矿厂", + "gtceu.ownership.name.argonauts": "Argonauts公会", + "gtceu.ownership.name.ftb": "FTB团队", + "gtceu.ownership.name.player": "玩家", + "gtceu.packer": "打包机", + "gtceu.part_sharing.disabled": "多方块结构共享:§4禁止", + "gtceu.part_sharing.enabled": "多方块结构共享:§a允许", + "gtceu.plasma_generator": "等离子燃料", + "gtceu.polarizer": "两极磁化机", + "gtceu.primitive_blast_furnace": "土高炉", + "gtceu.pyrolyse_oven": "热解炉", + "gtceu.recipe.category.arc_furnace_recycling": "电弧炉:等离子回收", + "gtceu.recipe.category.chem_dyes": "化学浸洗机:化学染色", + "gtceu.recipe.category.extractor_recycling": "流体提取机:重熔回收", + "gtceu.recipe.category.ingot_molding": "合金炉:金属成型", + "gtceu.recipe.category.macerator_recycling": "研磨机:粉碎回收", + "gtceu.recipe.category.ore_bathing": "化学浸洗机:矿物处理", + "gtceu.recipe.category.ore_crushing": "研磨机:矿物处理", + "gtceu.recipe.category.ore_forging": "锻造锤:矿物处理", + "gtceu.recipe.chance": "概率:%s + %s/电压等级", + "gtceu.recipe.cleanroom": "需要%s", + "gtceu.recipe.cleanroom.display_name": "超净间", + "gtceu.recipe.cleanroom_sterile.display_name": "无菌超净间", + "gtceu.recipe.coil.tier": "线圈:%s", + "gtceu.recipe.computation_per_tick": "最小算力:%s CWU/t", + "gtceu.recipe.dimensions": "维度:%s", + "gtceu.recipe.duration": "耗时:%s秒", + "gtceu.recipe.environmental_hazard": "§c区域内必须有%s", + "gtceu.recipe.environmental_hazard.reverse": "§c区域内必须没有%s", + "gtceu.recipe.eu": "耗能功率:%sA @ %s", + "gtceu.recipe.eu.total": "%s EU/t", + "gtceu.recipe.eu_inverted": "产能功率:%sA @ %s", + "gtceu.recipe.eu_to_start": "启动耗能:%sEU%s", + "gtceu.recipe.explosive": "爆炸物:%s", + "gtceu.recipe.max_eu": "最大功率:%s EU", + "gtceu.recipe.not_consumed": "不在加工中消耗", + "gtceu.recipe.research": "需要研究", + "gtceu.recipe.scan_for_research": "装配线配方扫描", + "gtceu.recipe.temperature": "温度:%sK", + "gtceu.recipe.total": "总计:%s EU", + "gtceu.recipe.total_computation": "算力:%s CWU", + "gtceu.recipe.total_eu": "总功率:%s EU/t", + "gtceu.recipe.voltage": "耗能功率:%sA @ %s", + "gtceu.recipe_logic.condition_fails": "条件不足", + "gtceu.recipe_logic.insufficient_fuel": "燃料不足", + "gtceu.recipe_logic.insufficient_in": "需要输入", + "gtceu.recipe_logic.insufficient_out": "输出堵塞", + "gtceu.recipe_logic.no_capabilities": "机器无功能", + "gtceu.recipe_logic.no_contents": "配方无内容", + "gtceu.recipe_memory_widget.tooltip.0": "§7左键点击可自动将该配方输入至合成格", + "gtceu.recipe_memory_widget.tooltip.1": "§7按住Shift并点击以锁定或解锁该配方", + "gtceu.recipe_type.show_recipes": "查看配方", + "gtceu.rei.group.potion_fluids": "药水流体", + "gtceu.research_station": "研究站", + "gtceu.rock_breaker": "碎岩机", + "gtceu.scanner": "扫描仪", + "gtceu.scanner.copy_stick_empty": "§o空闪存", + "gtceu.scanner.copy_stick_from": "§o要复制的闪存", + "gtceu.scanner.copy_stick_to": "§o闪存(已复制)", + "gtceu.sifter": "筛选机", + "gtceu.steam_boiler": "蒸汽锅炉", + "gtceu.steam_turbine": "蒸汽涡轮", + "gtceu.subtitle.arc": "电弧炉:嗡——", + "gtceu.subtitle.assembler": "组装机:运行中", + "gtceu.subtitle.bath": "化学浸洗机:嘶嘶", + "gtceu.subtitle.boiler": "锅炉:液体沸腾", + "gtceu.subtitle.centrifuge": "离心机:旋转", + "gtceu.subtitle.chainsaw": "链锯:拉动油门", + "gtceu.subtitle.chemical": "化学反应釜:运行中", + "gtceu.subtitle.combustion": "内燃发电机:燃料燃烧", + "gtceu.subtitle.compressor": "压缩机:挤压", + "gtceu.subtitle.computation": "计算机:哔哔", + "gtceu.subtitle.cooling": "真空冷冻机:嗡——", + "gtceu.subtitle.cut": "切割机:嘶嘶叫", + "gtceu.subtitle.drill": "电钻:嗡嗡", + "gtceu.subtitle.electrolyzer": "电解机:爆出火花", + "gtceu.subtitle.file": "锉:磨削", + "gtceu.subtitle.fire": "火:爆裂", + "gtceu.subtitle.forge_hammer": "锻造锤:DUANG", + "gtceu.subtitle.furnace": "电炉:冶炼", + "gtceu.subtitle.jet_engine": "喷气背包:轰轰", + "gtceu.subtitle.macerator": "研磨机:破碎", + "gtceu.subtitle.metal_pipe": "流体管道:Destruction_Metal_Pole_L_Wave_2_0_0.wav", + "gtceu.subtitle.miner": "采矿机:开采", + "gtceu.subtitle.mixer": "搅拌机:搅动", + "gtceu.subtitle.mortar": "研钵:研磨", + "gtceu.subtitle.motor": "马达:转啊转", + "gtceu.subtitle.plunger": "搋子:清理流体", + "gtceu.subtitle.portable_scanner": "便携式扫描仪:扫描", + "gtceu.subtitle.portal_closing": "传送门:关闭", + "gtceu.subtitle.portal_opening": "传送门:开启", + "gtceu.subtitle.replicator": "复制机:运行", + "gtceu.subtitle.saw": "锯:切割", + "gtceu.subtitle.science": "化学反应釜:科!学!", + "gtceu.subtitle.screwdriver": "螺丝刀:拧螺丝", + "gtceu.subtitle.soft_hammer": "软锤:轻敲", + "gtceu.subtitle.spray_can": "喷漆罐:喷涂", + "gtceu.subtitle.sus": "唱片:你有嫌疑", + "gtceu.subtitle.turbine": "涡轮:呼啸", + "gtceu.subtitle.wirecutter": "剪线钳:剪断", + "gtceu.subtitle.wrench": "扳手:嘎啦", + "gtceu.thermal_centrifuge": "热力离心机", + "gtceu.tool.class.axe": "斧", + "gtceu.tool.class.butchery_knife": "屠刀", + "gtceu.tool.class.crowbar": "撬棍", + "gtceu.tool.class.drill": "电钻", + "gtceu.tool.class.file": "锉", + "gtceu.tool.class.hammer": "锤", + "gtceu.tool.class.hoe": "锄", + "gtceu.tool.class.knife": "刀", + "gtceu.tool.class.mallet": "软锤", + "gtceu.tool.class.mining_hammer": "采矿锤", + "gtceu.tool.class.mortar": "研钵", + "gtceu.tool.class.pickaxe": "镐", + "gtceu.tool.class.plunger": "搋子", + "gtceu.tool.class.rolling_pin": "擀面杖", + "gtceu.tool.class.saw": "锯", + "gtceu.tool.class.screwdriver": "螺丝刀", + "gtceu.tool.class.scythe": "镰刀", + "gtceu.tool.class.shears": "剪刀", + "gtceu.tool.class.shovel": "锹", + "gtceu.tool.class.spade": "铲", + "gtceu.tool.class.sword": "剑", + "gtceu.tool.class.wire_cutter": "剪线钳", + "gtceu.tool.class.wrench": "扳手", + "gtceu.tool_action.crowbar": "§8使用撬棍卸下覆盖板", + "gtceu.tool_action.hammer": "§8使用锻造锤消除声响", + "gtceu.tool_action.screwdriver.access_covers": "§8使用螺丝刀访问覆盖板", + "gtceu.tool_action.screwdriver.auto_collapse": "§8使用螺丝刀开关物品堆叠自动合并", + "gtceu.tool_action.screwdriver.auto_output": "§8使用螺丝刀切换自动输出", + "gtceu.tool_action.screwdriver.auto_output_covers": "§8使用螺丝刀设置允许从输出端输入或访问覆盖板", + "gtceu.tool_action.screwdriver.toggle_mode": "§8使用螺丝刀切换模式", + "gtceu.tool_action.screwdriver.toggle_mode_covers": "§8使用螺丝刀切换模式或访问覆盖板", + "gtceu.tool_action.show_tooltips": "§7按住§6SHIFT§7显示工具信息", + "gtceu.tool_action.soft_mallet.reset": "§8使用软锤开关机器", + "gtceu.tool_action.soft_mallet.toggle_mode": "§8使用软锤切换模式", + "gtceu.tool_action.tape": "§8使用胶带维护机器", + "gtceu.tool_action.wire_cutter.connect": "§8使用剪线钳连接/断开电线", + "gtceu.tool_action.wrench.connect": "§8使用扳手连接/断开管道,潜行可以阻止输入", + "gtceu.tool_action.wrench.set_facing": "§8使用扳手设置朝向", + "gtceu.tooltip.fluid_pipe_hold_shift": "§7按住§6SHIFT§7以查看流体容器详情", + "gtceu.tooltip.hold_ctrl": "§7按住CTRL获得更多信息", + "gtceu.tooltip.hold_shift": "§7按住§6SHIFT§7获得更多信息", + "gtceu.tooltip.potion.each": "§r%4$s%%§7概率获得§r%1$s %2$s§7(§r%3$s§7tick)", + "gtceu.tooltip.potion.header": "§6包含效果:", + "gtceu.tooltip.proxy_bind": "§f绑定到%s %s %s处的样板总成", + "gtceu.tooltip.status.trinary.false": "假", + "gtceu.tooltip.status.trinary.true": "真", + "gtceu.tooltip.status.trinary.unknown": "未知", + "gtceu.tooltip.tool_fluid_hold_shift": "§7按住§6SHIFT§7以查看流体容器及工具详情", + "gtceu.top.allow_output_input": "允许输入", + "gtceu.top.auto_output": "自动输出", + "gtceu.top.buffer_bound_pos": "已绑定至 - X:%s;Y:%s;Z:%s", + "gtceu.top.buffer_not_bound": "尚未绑定总成", + "gtceu.top.cable_amperage": "电流:", + "gtceu.top.cable_voltage": "电压:", + "gtceu.top.convert_eu": "转换模式:§eEU§r ->§cFE§r", + "gtceu.top.convert_fe": "转换模式:§cFE§r ->§eEU§r", + "gtceu.top.energy_consumption": "耗能", + "gtceu.top.energy_production": "产能", + "gtceu.top.energy_stored": " / %d EU", + "gtceu.top.exhaust_vent_blocked": "受阻", + "gtceu.top.exhaust_vent_direction": "排气口:%s", + "gtceu.top.filter.label": "过滤:", + "gtceu.top.fluid_auto_output": "流体输出:%s", + "gtceu.top.fuel_min_consume": "需要", + "gtceu.top.fuel_none": "无燃料", + "gtceu.top.invalid_structure": "结构不完整", + "gtceu.top.item_auto_output": "物品输出:%s", + "gtceu.top.link_cover.color": "颜色:", + "gtceu.top.machine_mode": "机器模式:", + "gtceu.top.maintenance.crowbar": "这东西不属于这儿", + "gtceu.top.maintenance.hard_hammer": "外壳有些凹痕", + "gtceu.top.maintenance.screwdriver": "螺丝没拧紧", + "gtceu.top.maintenance.soft_mallet": "有什么东西卡住了", + "gtceu.top.maintenance.wire_cutter": "有几根线烧焦了", + "gtceu.top.maintenance.wrench": "管道松动了", + "gtceu.top.maintenance_broken": "需要维护", + "gtceu.top.maintenance_fixed": "无需维护", + "gtceu.top.mode.export": "输出", + "gtceu.top.mode.import": "输入", + "gtceu.top.obstructed_structure": "结构受阻", + "gtceu.top.primitive_pump_production": "产出:%s mB/s", + "gtceu.top.progress_computation": " / %s CWU", + "gtceu.top.progress_sec": " / %s s", + "gtceu.top.progress_tick": " / %s t", + "gtceu.top.proxies_bound": "样板总成镜像绑定数量:%s", + "gtceu.top.recipe_output": "配方输出:", + "gtceu.top.stained": "颜色:%s", + "gtceu.top.transform_down": "§a降压§r %s", + "gtceu.top.transform_input": "§6输入:§r%s", + "gtceu.top.transform_output": "§9输出:§r%s", + "gtceu.top.transform_up": "§c升压§r %s", + "gtceu.top.unit.fluid_buckets": "kL", + "gtceu.top.unit.fluid_milibuckets": "L", + "gtceu.top.unit.items": "物品", + "gtceu.top.valid_structure": "结构已成型", + "gtceu.top.working_disabled": "已暂停工作", + "gtceu.universal.clear_nbt_recipe.tooltip": "§c这将清除所有内容物!", + "gtceu.universal.kiloliters": "%s B", + "gtceu.universal.liters": "%s mB", + "gtceu.universal.tooltip.amperage_in": "§e输入电流:§f%dA", + "gtceu.universal.tooltip.amperage_in_out": "§e输入/输出电流:§f%dA", + "gtceu.universal.tooltip.amperage_in_out_till": "§e输入/输出电流上限:§f%dA", + "gtceu.universal.tooltip.amperage_in_till": "§e输入电流上限:§f%dA", + "gtceu.universal.tooltip.amperage_out": "§e输出电流:§f%dA", + "gtceu.universal.tooltip.amperage_out_till": "§e输出电流上限:§f%dA", + "gtceu.universal.tooltip.base_production_eut": "§e基础产能功率:§f%d EU/t", + "gtceu.universal.tooltip.base_production_fluid": "§e基础产出速率:§f%d mB/t", + "gtceu.universal.tooltip.chunk_mode": "区块模式:", + "gtceu.universal.tooltip.deprecated": "§4§l警告:§r§4已弃用。将在未来版本中移除。§r", + "gtceu.universal.tooltip.energy_storage_capacity": "§c能量缓存:§r%d EU", + "gtceu.universal.tooltip.energy_tier_range": "§a适配电压等级:§f%s§f-%s", + "gtceu.universal.tooltip.fluid_storage_capacity": "§9流体容量:§f%d mB", + "gtceu.universal.tooltip.fluid_storage_capacity_mult": "§9流体容量:§r共§f%d§7个流体槽,每个§f%d mB§7", + "gtceu.universal.tooltip.fluid_stored": "§2内部流体:%2$d mB§f%1$s", + "gtceu.universal.tooltip.fluid_transfer_rate": "§b传输速率:§f%d mB/t", + "gtceu.universal.tooltip.item_storage_capacity": "§6物品槽位数量:§f%d", + "gtceu.universal.tooltip.item_storage_total": "§6物品容量:§f%d物品", + "gtceu.universal.tooltip.item_stored": "§d内部物品:§f%2$d个%1$s", + "gtceu.universal.tooltip.item_transfer_rate": "§b传输速率:§f%d物品/s", + "gtceu.universal.tooltip.item_transfer_rate_stacks": "§b传输速率:§f%d组/s", + "gtceu.universal.tooltip.max_voltage_in": "§a最大输入电压:§f%d(%s§f)", + "gtceu.universal.tooltip.max_voltage_in_out": "§a最大输入/输出电压:§f%d EU/t(%s§f)", + "gtceu.universal.tooltip.max_voltage_out": "§a最大输出电压:§f%d(%s§f)", + "gtceu.universal.tooltip.parallel": "§d最大并行:§f%d", + "gtceu.universal.tooltip.produces_fluid": "§e产出速率:§f%d mB/t", + "gtceu.universal.tooltip.requires_redstone": "§4需要红石信号", + "gtceu.universal.tooltip.silk_touch": "精准采集:", + "gtceu.universal.tooltip.terrain_resist": "该机器不会在暴露于恶劣天气时爆炸", + "gtceu.universal.tooltip.uses_per_hour_lubricant": "工作时消耗§f%d mB/hr§7§6润滑油§7", + "gtceu.universal.tooltip.uses_per_op": "每次工作时消耗§f%d EU§7", + "gtceu.universal.tooltip.uses_per_second": "工作时消耗§f%d EU/s§7", + "gtceu.universal.tooltip.uses_per_tick": "工作时消耗§f%d EU/t§7", + "gtceu.universal.tooltip.uses_per_tick_steam": "工作时消耗§f%d mB/t§7§f蒸汽§7", + "gtceu.universal.tooltip.voltage_in": "§a输入电压:§f%d EU/t(%s§f)", + "gtceu.universal.tooltip.voltage_in_out": "§a输入/输出电压:§f%d EU/t(%s§f)", + "gtceu.universal.tooltip.voltage_out": "§a输出电压:§f%d EU/t(%s§f)", + "gtceu.universal.tooltip.working_area": "§b工作范围:§f%dx%d", + "gtceu.universal.tooltip.working_area_chunks": "§b工作范围:§f%dx%d 区块", + "gtceu.universal.tooltip.working_area_chunks_max": "§b最大工作范围:§f%dx%d 区块", + "gtceu.universal.tooltip.working_area_max": "§b最大工作范围:§f%dx%d", + "gtceu.vacuum_freezer": "真空冷冻机", + "gtceu.wiremill": "线材轧机", + "gui.gtceu.refund_all.desc": "将共享库存返还到AE2", + "gui.gtceu.rename.desc": "重命名样板总成", + "gui.gtceu.share_inventory.desc.0": "与总成内的所有样板共享物品!", + "gui.gtceu.share_inventory.desc.1": "保存不消耗的催化剂,实现更高效的自动化", + "gui.gtceu.share_inventory.title": "共享物品库存", + "gui.gtceu.share_tank.desc.0": "与总成内的所有样板共享流体!", + "gui.gtceu.share_tank.title": "共享流体库存", + "gui.widget.incrementButton.default_tooltip": "按住Shift,Ctrl键或同时按住这两个键来改变数量", + "gui.widget.recipeProgressWidget.default_tooltip": "查看配方", + "item.glass_lens": "玻璃透镜(白色)", + "item.gtceu.activity_detector_cover": "活跃探测覆盖板", + "item.gtceu.activity_detector_cover.tooltip": "§7作§f覆盖板§7时依照§f机器活跃状态§7发出红石信号。", + "item.gtceu.advanced_activity_detector_cover": "进阶活跃状态探测器", + "item.gtceu.advanced_activity_detector_cover.tooltip": "§7作§f覆盖板§7时依照§f机器处理进度§7发出红石信号。", + "item.gtceu.advanced_electric_jetpack": "进阶电力喷气背包", + "item.gtceu.advanced_energy_detector_cover": "进阶能量探测覆盖板", + "item.gtceu.advanced_energy_detector_cover.tooltip": "§7作§f覆盖板§7时依照由§fRS锁存器§7控制的§f能量状态§7发出红石信号。", + "item.gtceu.advanced_fluid_detector_cover": "进阶流体探测器", + "item.gtceu.advanced_fluid_detector_cover.tooltip": "作§f覆盖板§7时依照由§fRS锁存器§7控制的§f流体存储状态§7发出红石信号。", + "item.gtceu.advanced_fluid_voiding_cover": "进阶流体销毁覆盖板", + "item.gtceu.advanced_fluid_voiding_cover.tooltip.0": "§7作§f覆盖板§7时允许按数量销毁§f流体§7。", + "item.gtceu.advanced_fluid_voiding_cover.tooltip.1": "加装后使用§f软锤§7激活", + "item.gtceu.advanced_integrated_circuit": "进阶集成电路", + "item.gtceu.advanced_integrated_circuit.tooltip.0": "§7更小也更强", + "item.gtceu.advanced_integrated_circuit.tooltip.1": "§6HV级电路", + "item.gtceu.advanced_item_detector_cover": "进阶物品探测器", + "item.gtceu.advanced_item_detector_cover.tooltip": "作§f覆盖板§7时依照由§fRS锁存器§7控制的§f物品存储状态§7发出红石信号。", + "item.gtceu.advanced_item_voiding_cover": "进阶物品销毁覆盖板", + "item.gtceu.advanced_item_voiding_cover.tooltip.0": "§7作§f覆盖板§7时销毁物品。", + "item.gtceu.advanced_item_voiding_cover.tooltip.1": "加装后使用§f软锤§7激活", + "item.gtceu.advanced_nanomuscle_chestplate": "纳米肌体™进阶套装胸甲", + "item.gtceu.advanced_power_thruster": "进阶电力推进器", + "item.gtceu.advanced_quarktech_chestplate": "夸克高科™进阶套装胸甲", + "item.gtceu.advanced_smd_capacitor": "高级贴片电容", + "item.gtceu.advanced_smd_capacitor.tooltip": "§7高级电子元件", + "item.gtceu.advanced_smd_diode": "高级贴片二极管", + "item.gtceu.advanced_smd_diode.tooltip": "§7高级电子元件", + "item.gtceu.advanced_smd_inductor": "高级贴片电感", + "item.gtceu.advanced_smd_inductor.tooltip": "§7高级电子元件", + "item.gtceu.advanced_smd_resistor": "高级贴片电阻", + "item.gtceu.advanced_smd_resistor.tooltip": "§7高级电子元件", + "item.gtceu.advanced_smd_transistor": "高级贴片晶体管", + "item.gtceu.advanced_smd_transistor.tooltip": "§7高级电子元件", + "item.gtceu.advanced_soc": "ASoC", + "item.gtceu.advanced_soc.tooltip": "§7先进系统级芯片", + "item.gtceu.advanced_soc_wafer": "ASoC晶圆", + "item.gtceu.advanced_soc_wafer.tooltip": "§7先进电路原料", + "item.gtceu.aluminium_fluid_cell": "%s铝单元", + "item.gtceu.anvil_casting_mold": "模具(砧)", + "item.gtceu.anvil_casting_mold.tooltip": "§7用来制作砧的模具", + "item.gtceu.armor.boots": "%s靴子", + "item.gtceu.armor.chestplate": "%s胸甲", + "item.gtceu.armor.helmet": "%s头盔", + "item.gtceu.armor.leggings": "%s护腿", + "item.gtceu.ash_dust": "灰烬", + "item.gtceu.axe_extruder_mold.tooltip": "§7用来制作斧的模头", + "item.gtceu.ball_casting_mold": "模具(球)", + "item.gtceu.ball_casting_mold.tooltip": "§7用来制作球的模具", + "item.gtceu.basaltic_mineral_sand_dust": "玄武岩矿砂", + "item.gtceu.basic_electronic_circuit": "基础电子电路", + "item.gtceu.basic_electronic_circuit.tooltip.0": "§7你的第一块电路", + "item.gtceu.basic_electronic_circuit.tooltip.1": "§cLV级电路", + "item.gtceu.basic_integrated_circuit": "基础集成电路", + "item.gtceu.basic_integrated_circuit.tooltip.0": "§7更小也更强", + "item.gtceu.basic_integrated_circuit.tooltip.1": "§6LV级电路", + "item.gtceu.basic_tape": "胶带", + "item.gtceu.basic_tape.tooltip": "§7强度不足,无法解决机械故障\n可以带走板条箱,且不丢失物品", + "item.gtceu.battery.charge_detailed": "%s/%sEU-%s级§7(剩余供能时长:%s/%s%s§7)", + "item.gtceu.battery.charge_time": "§a最大供能时长:%s%s(%s)", + "item.gtceu.battery.charge_unit.hour": "时", + "item.gtceu.battery.charge_unit.minute": "分", + "item.gtceu.battery.charge_unit.second": "秒", + "item.gtceu.bentonite_dust": "膨润土", + "item.gtceu.bio_chaff": "生物糠", + "item.gtceu.black_dye_spray_can": "喷漆罐(黑色)", + "item.gtceu.black_glass_lens": "玻璃透镜(黑色)", + "item.gtceu.blacklight": "黑光灯", + "item.gtceu.blacklight.tooltip": "§7长波§d紫外线§7光源", + "item.gtceu.block_casting_mold": "模具(块)", + "item.gtceu.block_casting_mold.tooltip": "§7用来制作块的模具", + "item.gtceu.block_extruder_mold": "模头(块)", + "item.gtceu.block_extruder_mold.tooltip": "§7用来制作块的模头", + "item.gtceu.blue_dye_spray_can": "喷漆罐(蓝色)", + "item.gtceu.blue_glass_lens": "玻璃透镜(蓝色)", + "item.gtceu.bolt_extruder_mold": "模头(螺栓)", + "item.gtceu.bolt_extruder_mold.tooltip": "§7用来制作螺栓的模头", + "item.gtceu.bone_dust": "骨粉", + "item.gtceu.borosilicate_glass_ingot": "硼硅玻璃条", + "item.gtceu.bottle.purple.drink.tooltip": "§7来点柠檬汽水,还是冰红茶?我手里这瓶可是紫色饮料!", + "item.gtceu.bottle_casting_mold": "模具(瓶子)", + "item.gtceu.bottle_casting_mold.tooltip": "§7用来制作瓶的模具", + "item.gtceu.bottle_extruder_mold": "模头(瓶子)", + "item.gtceu.bottle_extruder_mold.tooltip": "§7用来制作瓶子的模头", + "item.gtceu.brick_wooden_form": "木制砖模具", + "item.gtceu.brown_dye_spray_can": "喷漆罐(棕色)", + "item.gtceu.brown_glass_lens": "玻璃透镜(棕色)", + "item.gtceu.bucket": "%s桶", + "item.gtceu.capacitor": "电容", + "item.gtceu.capacitor.tooltip": "§7基础电子元件", + "item.gtceu.carbon_fiber_mesh": "碳纤维网", + "item.gtceu.carbon_fiber_plate": "碳板", + "item.gtceu.carbon_fibers": "生碳纤维", + "item.gtceu.casing_casting_mold.tooltip": "§7用来制作外壳的模具", + "item.gtceu.casing_extruder_mold.tooltip": "§7用来制作外壳的模头", + "item.gtceu.cassiterite_sand_dust": "锡石矿砂", + "item.gtceu.cell_extruder_mold": "模头(单元)", + "item.gtceu.cell_extruder_mold.tooltip": "§7用来制作单元的模头", + "item.gtceu.chemical_black_dye": "黑色化学染料", + "item.gtceu.chemical_blue_dye": "蓝色化学染料", + "item.gtceu.chemical_brown_dye": "棕色化学染料", + "item.gtceu.chemical_cyan_dye": "青色化学染料", + "item.gtceu.chemical_gray_dye": "灰色化学染料", + "item.gtceu.chemical_green_dye": "绿色化学染料", + "item.gtceu.chemical_light_blue_dye": "淡蓝色化学染料", + "item.gtceu.chemical_light_gray_dye": "淡灰色化学染料", + "item.gtceu.chemical_lime_dye": "黄绿色化学染料", + "item.gtceu.chemical_magenta_dye": "品红色化学染料", + "item.gtceu.chemical_orange_dye": "橙色化学染料", + "item.gtceu.chemical_pink_dye": "粉红色化学染料", + "item.gtceu.chemical_purple_dye": "紫色化学染料", + "item.gtceu.chemical_red_dye": "红色化学染料", + "item.gtceu.chemical_white_dye": "白色化学染料", + "item.gtceu.chemical_yellow_dye": "黄色化学染料", + "item.gtceu.chipped_glass_gem": "破碎的玻璃晶体", + "item.gtceu.chipped_sugar_gem": "小块方糖", + "item.gtceu.circuit.integrated.gui": "§7编程电路配置", + "item.gtceu.coke_oven_brick": "焦炉砖", + "item.gtceu.compressed_clay": "压缩黏土", + "item.gtceu.compressed_coke_clay": "压缩焦黏土", + "item.gtceu.compressed_fireclay": "压缩耐火黏土", + "item.gtceu.computer_monitor_cover": "电脑屏幕覆盖板", + "item.gtceu.computer_monitor_cover.tooltip": "§7作§f覆盖板§7时显示§f数据§7。", + "item.gtceu.conveyor.module.tooltip": "§7作§f覆盖板§7时以特定速率传输§f物品§7。", + "item.gtceu.cpu_chip": "CPU芯片", + "item.gtceu.cpu_chip.tooltip": "§7中央处理器", + "item.gtceu.cpu_wafer": "CPU晶圆", + "item.gtceu.cpu_wafer.tooltip": "§7中央处理器原料", + "item.gtceu.crushed_bentonite_ore": "精研膨润土", + "item.gtceu.crushed_cassiterite_sand_ore": "粉碎锡石矿砂", + "item.gtceu.crushed_pitchblende_ore": "精研沥青铀矿", + "item.gtceu.crushed_talc_ore_ore": "精研滑石", + "item.gtceu.crystal_cpu": "晶体CPU", + "item.gtceu.crystal_cpu.tooltip": "§7晶体处理器", + "item.gtceu.crystal_processor": "晶体处理器", + "item.gtceu.crystal_processor.tooltip.0": "§7得益于晶体蚀刻技术", + "item.gtceu.crystal_processor.tooltip.1": "§9IV级电路", + "item.gtceu.crystal_processor_assembly": "晶体处理器集群", + "item.gtceu.crystal_processor_assembly.tooltip.0": "§7得益于晶体蚀刻技术", + "item.gtceu.crystal_processor_assembly.tooltip.1": "§9LuV级电路", + "item.gtceu.crystal_processor_computer": "晶体处理器超级计算机", + "item.gtceu.crystal_processor_computer.tooltip.0": "§7得益于晶体蚀刻技术", + "item.gtceu.crystal_processor_computer.tooltip.1": "§9ZPM级电路", + "item.gtceu.crystal_processor_mainframe": "晶体处理器主机", + "item.gtceu.crystal_processor_mainframe.tooltip.0": "§7得益于晶体蚀刻技术", + "item.gtceu.crystal_processor_mainframe.tooltip.1": "§9UV级电路", + "item.gtceu.crystal_soc": "晶体SoC", + "item.gtceu.crystal_soc.tooltip": "§7晶体系统级芯片", + "item.gtceu.cyan_dye_spray_can": "喷漆罐(青色)", + "item.gtceu.cyan_glass_lens": "玻璃透镜(青色)", + "item.gtceu.cylinder_casting_mold": "模具(圆柱)", + "item.gtceu.cylinder_casting_mold.tooltip": "§7用来制作圆柱的模具", + "item.gtceu.dark_ash_dust": "黑色灰烬", + "item.gtceu.data_module": "数据模块", + "item.gtceu.data_orb": "数据球", + "item.gtceu.data_orb.tooltip": " §7大容量的数据存储器", + "item.gtceu.data_stick": "闪存", + "item.gtceu.data_stick.tooltip": "§7小容量的数据存储器", + "item.gtceu.diamond_grinding_head": "钻石研磨头", + "item.gtceu.diode": "二极管", + "item.gtceu.diode.tooltip": "§7基础电子元件", + "item.gtceu.dough": "面团", + "item.gtceu.duct_tape": "布莱恩科技航空专用强化胶带FAL-84型", + "item.gtceu.duct_tape.tooltip": "§7如果一卷修不好,那就再来一卷!", + "item.gtceu.dynamite": "炸药", + "item.gtceu.electric.pump.tooltip": "§7作§f覆盖板§7时以特定速率传输§f流体§7。", + "item.gtceu.electric_jetpack": "电力喷气背包", + "item.gtceu.empty_mold": "空模板", + "item.gtceu.empty_mold.tooltip": "§7用以制作模具与压模器的模头", + "item.gtceu.empty_spray_can": "空喷漆罐", + "item.gtceu.empty_spray_can.tooltip": "§7可充入各种颜色的喷剂", + "item.gtceu.empty_wooden_form": "空木制模具", + "item.gtceu.ender_fluid_link_cover": "末影流体连接", + "item.gtceu.ender_fluid_link_cover.tooltip": "§7作§f覆盖板§7时利用§f无线§7§d末影§f连接§7传输§f流体§7。", + "item.gtceu.energium_dust": "能量粉", + "item.gtceu.energy_cluster": "能量簇", + "item.gtceu.energy_cluster.tooltip": "§7可充电电池", + "item.gtceu.energy_crystal": "能量水晶", + "item.gtceu.energy_crystal.tooltip": "§7可充电电池", + "item.gtceu.energy_detector_cover": "能量探测覆盖板", + "item.gtceu.energy_detector_cover.tooltip": "§7作§f覆盖板§7时依照§f能量储量§7发出红石信号。", + "item.gtceu.energy_module": "能量模块", + "item.gtceu.energy_module.tooltip": "§7可充电电池", + "item.gtceu.engraved_crystal_chip": "刻蚀水晶芯片", + "item.gtceu.engraved_crystal_chip.tooltip": "§7晶体电路所需", + "item.gtceu.engraved_lapotron_crystal_chip": "刻蚀兰波顿芯片", + "item.gtceu.epoxy_circuit_board": "环氧树脂基板", + "item.gtceu.epoxy_circuit_board.tooltip": "§7进阶电路基板", + "item.gtceu.epoxy_printed_circuit_board": "环氧树脂印刷电路基板", + "item.gtceu.epoxy_printed_circuit_board.tooltip": "§7更高级的电路基板", + "item.gtceu.ev_battery_hull": "小型钒电池外壳", + "item.gtceu.ev_battery_hull.tooltip": "§7一个空的§5EV§7电池外壳", + "item.gtceu.ev_conveyor_module": "§5EV§r传送带", + "item.gtceu.ev_electric_motor": "§5EV§r电动马达", + "item.gtceu.ev_electric_piston": "§5EV§r电力活塞", + "item.gtceu.ev_electric_pump": "§5EV§r电动泵", + "item.gtceu.ev_emitter": "§5EV§r发射器", + "item.gtceu.ev_field_generator": "§5EV§r力场发生器", + "item.gtceu.ev_fluid_regulator": "§5EV§r流体校准器", + "item.gtceu.ev_power_unit": "§5EV§r能量单元", + "item.gtceu.ev_robot_arm": "§5EV§r机械臂", + "item.gtceu.ev_sensor": "§5EV§r传感器", + "item.gtceu.ev_solar_panel": "超高压太阳能板(§5EV§r)", + "item.gtceu.ev_vanadium_battery": "小型钒电池", + "item.gtceu.ev_vanadium_battery.tooltip": "§7可充电电池", + "item.gtceu.ev_voltage_coil": "超高压线圈", + "item.gtceu.ev_voltage_coil.tooltip": "极限线圈", + "item.gtceu.exquisite_glass_gem": "精致的玻璃晶体", + "item.gtceu.facade_cover": "%s覆盖伪装板", + "item.gtceu.facade_cover.tooltip.0": "§7可作为§f覆盖板§7加装的装饰性外壳。", + "item.gtceu.facade_cover.tooltip.1": "§7使用三个铁板与任意方块合成", + "item.gtceu.face_mask": "面罩", + "item.gtceu.fertilizer": "肥料", + "item.gtceu.fiber_reinforced_circuit_board": "纤维强化电路基板", + "item.gtceu.fiber_reinforced_circuit_board.tooltip": "§7超级电路基板", + "item.gtceu.fiber_reinforced_printed_circuit_board": "纤维强化印刷电路基板", + "item.gtceu.fiber_reinforced_printed_circuit_board.tooltip": "§7更高级的电路基板", + "item.gtceu.file_extruder_mold.tooltip": "§7用来制作锉的模头", + "item.gtceu.fine_borosilicate_glass_wire": "硼硅玻璃纤维", + "item.gtceu.firebrick": "耐火砖", + "item.gtceu.firebrick.tooltip": "§7耐热", + "item.gtceu.flawed_glass_gem": "有瑕的玻璃晶体", + "item.gtceu.flawed_sugar_gem": "小颗方糖", + "item.gtceu.flawless_glass_gem": "无瑕的玻璃晶体", + "item.gtceu.fluid.regulator.tooltip": "§7作§f覆盖板§7时§7限制§f§f流体§7的流量。", + "item.gtceu.fluid_cell": "%s单元", + "item.gtceu.fluid_detector_cover": "流体探测覆盖板", + "item.gtceu.fluid_detector_cover.tooltip": "§7作§f覆盖板§7时依照§f流体储量§7发出红石信号。", + "item.gtceu.fluid_filter": "流体过滤卡", + "item.gtceu.fluid_filter.tooltip.0": "§7作§f覆盖板§7时过滤§流体§7的输入/输出。", + "item.gtceu.fluid_filter.tooltip.1": "亦可为§f电动泵§7和§f流体校准器§7提供此功能。", + "item.gtceu.fluid_tag_filter": "流体标签过滤卡", + "item.gtceu.fluid_tag_filter.tooltip.0": "§7作§f覆盖板§7时以§f流体标签§7过滤§f流体§7的输入/输出。", + "item.gtceu.fluid_tag_filter.tooltip.1": "§7可用于升级§f电动泵§7与§f流体校准器§7。", + "item.gtceu.fluid_voiding_cover": "流体销毁覆盖板", + "item.gtceu.fluid_voiding_cover.tooltip.0": "§7作§f覆盖板§7时允许销毁§f流体§7。", + "item.gtceu.fluid_voiding_cover.tooltip.1": "§7加装后使用§f软锤§7激活", + "item.gtceu.foam_sprayer.tooltip.0": "§7喷射建筑泡沫", + "item.gtceu.foam_sprayer.tooltip.1": "右击框架来给框架喷涂泡沫", + "item.gtceu.foam_sprayer.tooltip.2": "泡沫可以染色", + "item.gtceu.foil_extruder_mold": "模头(箔)", + "item.gtceu.foil_extruder_mold.tooltip": "§7用来制作箔的模头", + "item.gtceu.fullers_earth_dust": "漂白土", + "item.gtceu.garnet_sand_dust": "石榴石砂", + "item.gtceu.gear_casting_mold": "模具(齿轮)", + "item.gtceu.gear_casting_mold.small.tooltip": "§7用来制作小型齿轮的模具", + "item.gtceu.gear_casting_mold.tooltip": "§7用来制作齿轮的模具", + "item.gtceu.gear_extruder_mold": "模头(齿轮)", + "item.gtceu.gear_extruder_mold.tooltip": "§7用来制作齿轮的模头", + "item.gtceu.gear_small_extruder_mold.tooltip": "§7用来制作小型齿轮的模头", + "item.gtceu.gelled_toluene": "胶凝甲苯", + "item.gtceu.gelled_toluene.tooltip": "§7炸药原料", + "item.gtceu.glass_gem": "玻璃晶体", + "item.gtceu.glass_plate": "玻璃板", + "item.gtceu.glass_tube": "玻璃管", + "item.gtceu.glass_vial": "%s玻璃试管", + "item.gtceu.glauconite_sand_dust": "海绿石砂", + "item.gtceu.good_electronic_circuit": "优质电子电路", + "item.gtceu.good_electronic_circuit.tooltip.0": "§7你的第二块电路", + "item.gtceu.good_electronic_circuit.tooltip.1": "§cMV级电路", + "item.gtceu.good_integrated_circuit": "优质集成电路", + "item.gtceu.good_integrated_circuit.tooltip.0": "§7更小也更强", + "item.gtceu.good_integrated_circuit.tooltip.1": "§6MV级电路", + "item.gtceu.granitic_mineral_sand_dust": "花岗岩矿砂", + "item.gtceu.gravi_star": "重力之星", + "item.gtceu.gravi_star.tooltip": "§7终极下界之星", + "item.gtceu.gravitation_engine_unit": "重力引擎单元", + "item.gtceu.gray_dye_spray_can": "喷漆罐(灰色)", + "item.gtceu.gray_glass_lens": "玻璃透镜(灰色)", + "item.gtceu.green_dye_spray_can": "喷漆罐(绿色)", + "item.gtceu.green_glass_lens": "玻璃透镜(绿色)", + "item.gtceu.hammer_extruder_mold.tooltip": "§7用来制作锤的模头", + "item.gtceu.hazmat_boots": "防化靴子", + "item.gtceu.hazmat_chestpiece": "防化胸甲", + "item.gtceu.hazmat_headpiece": "防化头盔", + "item.gtceu.hazmat_leggings": "防化护腿", + "item.gtceu.highly_advanced_soc": "HASoC", + "item.gtceu.highly_advanced_soc.tooltip": "§7高度先进的系统级芯片", + "item.gtceu.highly_advanced_soc_wafer": "HASoC晶圆", + "item.gtceu.highly_advanced_soc_wafer.tooltip": "§7高度先进的电路原料", + "item.gtceu.hoe_extruder_mold.tooltip": "§7用来制作锄的模头", + "item.gtceu.hpic_chip": "HPIC芯片", + "item.gtceu.hpic_chip.tooltip": "§7高功率集成电路", + "item.gtceu.hpic_wafer": "HPIC晶圆", + "item.gtceu.hpic_wafer.tooltip": "§7高功率集成电路原料", + "item.gtceu.huge_pipe_extruder_mold": "模头(巨型管道)", + "item.gtceu.hv_battery_hull": "大型电池外壳", + "item.gtceu.hv_battery_hull.tooltip": "§7一个空的§6HV§7电池外壳", + "item.gtceu.hv_cadmium_battery": "大型镉电池", + "item.gtceu.hv_cadmium_battery.tooltip": "§7可充电电池", + "item.gtceu.hv_conveyor_module": "§6HV§r传送带", + "item.gtceu.hv_electric_motor": "§6HV§r电动马达", + "item.gtceu.hv_electric_piston": "§6HV§r电力活塞", + "item.gtceu.hv_electric_pump": "§6HV§r电动泵", + "item.gtceu.hv_emitter": "§6HV§r发射器", + "item.gtceu.hv_field_generator": "§6HV§r力场发生器", + "item.gtceu.hv_fluid_regulator": "§6HV§r流体校准器", + "item.gtceu.hv_item_magnet": "§6HV§r物品磁铁", + "item.gtceu.hv_lithium_battery": "大型锂电池", + "item.gtceu.hv_lithium_battery.tooltip": "§7可充电电池", + "item.gtceu.hv_power_unit": "§6HV§r能量单元", + "item.gtceu.hv_robot_arm": "§6HV§r机械臂", + "item.gtceu.hv_sensor": "§6HV§r传感器", + "item.gtceu.hv_sodium_battery": "大型钠电池", + "item.gtceu.hv_sodium_battery.tooltip": "§7可充电电池", + "item.gtceu.hv_solar_panel": "高压太阳能板(§6HV§r)", + "item.gtceu.hv_voltage_coil": "高压线圈", + "item.gtceu.hv_voltage_coil.tooltip": "高级线圈", + "item.gtceu.ice_dust": "碎冰", + "item.gtceu.ilc_chip": "IC芯片", + "item.gtceu.ilc_chip.tooltip": "§7集成逻辑电路", + "item.gtceu.ilc_wafer": "ILC晶圆", + "item.gtceu.ilc_wafer.tooltip": "§7集成电路原料", + "item.gtceu.impure_bentonite_dust": "含杂膨润土", + "item.gtceu.impure_cassiterite_sand_dust": "含杂锡石矿砂", + "item.gtceu.impure_pitchblende_dust": "含杂沥青铀矿", + "item.gtceu.impure_rock_salt_dust": "含杂岩盐", + "item.gtceu.impure_salt_dust": "含杂盐", + "item.gtceu.impure_talc_dust": "含杂滑石", + "item.gtceu.inductor": "电感", + "item.gtceu.inductor.tooltip": "§7一个小线圈", + "item.gtceu.inert_metal_mixture_dust": "惰性金属混合物", + "item.gtceu.infinite_water_cover": "无限水覆盖板", + "item.gtceu.infinite_water_cover.tooltip": "§7作§f覆盖板§7时为所附着的容器供§9水§7。", + "item.gtceu.ingot_casting_mold": "模具(锭)", + "item.gtceu.ingot_casting_mold.tooltip": "§7用来制作锭的模具", + "item.gtceu.ingot_extruder_mold": "模头(锭)", + "item.gtceu.ingot_extruder_mold.tooltip": "§7用来……等会,用熔炉不好吗?", + "item.gtceu.invar_lighter": "殷钢打火机", + "item.gtceu.iridium_metal_residue_dust": "铱金属渣", + "item.gtceu.iron_minecart_wheels": "铁矿车车轮", + "item.gtceu.item_detector_cover": "物品探测覆盖板", + "item.gtceu.item_detector_cover.tooltip": "§7作§f覆盖板§7时依照§f物品储量§7发出红石信号。", + "item.gtceu.item_filter": "物品过滤卡", + "item.gtceu.item_filter.tooltip.0": "§7作§f覆盖板§7时过滤§f物品§7的输入/输出。", + "item.gtceu.item_filter.tooltip.1": "亦可为§f传送带§7和§f机械臂§7提供此功能。", + "item.gtceu.item_smart_filter": "智能物品过滤卡", + "item.gtceu.item_smart_filter.tooltip.0": "作§f覆盖板§7时以§f机器的配方§7过滤§f物品§7的输入/输出。", + "item.gtceu.item_smart_filter.tooltip.1": "亦可为§f传送带§7和§f机械臂§7提供此功能。", + "item.gtceu.item_tag_filter": "物品标签过滤卡", + "item.gtceu.item_tag_filter.tooltip.0": "§7作§f覆盖板§7时以§f物品标签§7过滤§f物品§7的输入/输出。", + "item.gtceu.item_tag_filter.tooltip.1": "亦可为§f传送带§7和§f机械臂§7提供此功能。", + "item.gtceu.item_voiding_cover": "物品销毁覆盖板", + "item.gtceu.item_voiding_cover.tooltip.0": "§7作§f覆盖板§7时销毁物品。", + "item.gtceu.item_voiding_cover.tooltip.1": "§7加装后使用§f软锤§7激活", + "item.gtceu.iv_battery_hull": "中型钒电池外壳", + "item.gtceu.iv_battery_hull.tooltip": "§7一个空的§1IV§7电池外壳", + "item.gtceu.iv_conveyor_module": "§9IV§r传送带", + "item.gtceu.iv_electric_motor": "§9IV§r电动马达", + "item.gtceu.iv_electric_piston": "§9IV§r电力活塞", + "item.gtceu.iv_electric_pump": "§9IV§r电动泵", + "item.gtceu.iv_emitter": "§9IV§r发射器", + "item.gtceu.iv_field_generator": "§9IV§r力场发生器", + "item.gtceu.iv_fluid_regulator": "§9IV§r流体校准器", + "item.gtceu.iv_power_unit": "§9IV§r能量单元", + "item.gtceu.iv_robot_arm": "§9IV§r机械臂", + "item.gtceu.iv_sensor": "§9IV§r传感器", + "item.gtceu.iv_solar_panel": "强导压太阳能板(§9IV§r)", + "item.gtceu.iv_vanadium_battery": "中型钒电池", + "item.gtceu.iv_vanadium_battery.tooltip": "§7可充电电池", + "item.gtceu.iv_voltage_coil": "强导压线圈", + "item.gtceu.iv_voltage_coil.tooltip": "精英线圈", + "item.gtceu.lapotron_crystal": "兰波顿水晶", + "item.gtceu.lapotron_crystal.tooltip": "§7可充电电池", + "item.gtceu.lapotronic_energy_orb": "兰波顿能量球", + "item.gtceu.lapotronic_energy_orb.tooltip": "§7可充电电池", + "item.gtceu.lapotronic_energy_orb_cluster": "兰波顿能量球簇", + "item.gtceu.lapotronic_energy_orb_cluster.tooltip": "§7可充电电池", + "item.gtceu.large_pipe_extruder_mold": "模头(大型管道)", + "item.gtceu.light_blue_dye_spray_can": "喷漆罐(淡蓝色)", + "item.gtceu.light_blue_glass_lens": "玻璃透镜(淡蓝色)", + "item.gtceu.light_gray_dye_spray_can": "喷漆罐(淡灰色)", + "item.gtceu.light_gray_glass_lens": "玻璃透镜(淡灰色)", + "item.gtceu.lime_dye_spray_can": "喷漆罐(黄绿色)", + "item.gtceu.lime_glass_lens": "玻璃透镜(黄绿色)", + "item.gtceu.liquid_fuel_jetpack": "液体燃料喷气背包", + "item.gtceu.long_treated_wood_rod": "长防腐木棍", + "item.gtceu.long_wood_rod": "长木棍", + "item.gtceu.lpic_chip": "LPIC芯片", + "item.gtceu.lpic_chip.tooltip": "§7低功率集成电路", + "item.gtceu.lpic_wafer": "LPIC晶圆", + "item.gtceu.lpic_wafer.tooltip": "§7低功率集成电路原料", + "item.gtceu.luv_battery_hull": "大型钒电池外壳", + "item.gtceu.luv_battery_hull.tooltip": "§7一个空的§dLuV§r电池外壳", + "item.gtceu.luv_conveyor_module": "§dLuV§r传送带", + "item.gtceu.luv_electric_motor": "§dLuV§r电动马达", + "item.gtceu.luv_electric_piston": "§dLuV§r电力活塞", + "item.gtceu.luv_electric_pump": "§dLuV§r电动泵", + "item.gtceu.luv_emitter": "§dLuV§r发射器", + "item.gtceu.luv_field_generator": "§dLuV§r力场发生器", + "item.gtceu.luv_fluid_regulator": "§dLuV§r流体校准器", + "item.gtceu.luv_robot_arm": "§dLuV§r机械臂", + "item.gtceu.luv_sensor": "§dLuV§r传感器", + "item.gtceu.luv_solar_panel": "剧差压太阳能板(§dLuV§r)", + "item.gtceu.luv_vanadium_battery": "大型钒电池", + "item.gtceu.luv_vanadium_battery.tooltip": "§7可充电电池", + "item.gtceu.luv_voltage_coil": "剧差压线圈", + "item.gtceu.luv_voltage_coil.tooltip": "大师线圈", + "item.gtceu.lv_battery_hull": "小型电池外壳", + "item.gtceu.lv_battery_hull.tooltip": "§7一个空的§7LV§7电池外壳", + "item.gtceu.lv_cadmium_battery": "小型镉电池", + "item.gtceu.lv_cadmium_battery.tooltip": "§7可充电电池", + "item.gtceu.lv_conveyor_module": "§7LV§r传送带", + "item.gtceu.lv_electric_motor": "§7LV§r电动马达", + "item.gtceu.lv_electric_piston": "§7LV§r电力活塞", + "item.gtceu.lv_electric_pump": "§7LV§r电动泵", + "item.gtceu.lv_emitter": "§7LV§r发射器", + "item.gtceu.lv_field_generator": "§7LV§r力场发生器", + "item.gtceu.lv_fluid_regulator": "§7LV§r流体校准器", + "item.gtceu.lv_item_magnet": "§7LV§r物品磁铁", + "item.gtceu.lv_lithium_battery": "小型锂电池", + "item.gtceu.lv_lithium_battery.tooltip": "§7可充电电池", + "item.gtceu.lv_power_unit": "§7LV§r能量单元", + "item.gtceu.lv_robot_arm": "§7LV§r机械臂", + "item.gtceu.lv_sensor": "§7LV§r传感器", + "item.gtceu.lv_sodium_battery": "小型钠电池", + "item.gtceu.lv_sodium_battery.tooltip": "§7可充电电池", + "item.gtceu.lv_solar_panel": "低压太阳能板(§7LV§r)", + "item.gtceu.lv_voltage_coil": "低压线圈", + "item.gtceu.lv_voltage_coil.tooltip": "基础线圈", + "item.gtceu.machine_controller.tooltip": "§7作§f覆盖板§7时可以§f开/关§7机器。", + "item.gtceu.machine_controller_cover": "机器控制覆盖板", + "item.gtceu.machine_memory_card": "机器内存卡", + "item.gtceu.magenta_dye_spray_can": "喷漆罐(品红色)", + "item.gtceu.magenta_glass_lens": "玻璃透镜(品红色)", + "item.gtceu.maintenance_detector_cover": "维护探测覆盖板", + "item.gtceu.mask_filter": "防毒面具过滤罐", + "item.gtceu.matchbox": "火柴盒", + "item.gtceu.matches": "火柴", + "item.gtceu.max_battery": "终极电池", + "item.gtceu.max_battery.tooltip": "§7填满就能通关Minecraft", + "item.gtceu.max_voltage_coil.tooltip": "至高线圈", + "item.gtceu.meat_dust": "肉末", + "item.gtceu.micro_processor": "微型处理器", + "item.gtceu.micro_processor.tooltip.0": "§7运算速度惊人!", + "item.gtceu.micro_processor.tooltip.1": "§eMV级电路", + "item.gtceu.micro_processor_assembly": "微型处理器集群", + "item.gtceu.micro_processor_assembly.tooltip.0": "§7运算速度惊人!", + "item.gtceu.micro_processor_assembly.tooltip.1": "§eHV级电路", + "item.gtceu.micro_processor_computer": "微型处理器超级计算机", + "item.gtceu.micro_processor_computer.tooltip.0": "§7运算速度惊人!", + "item.gtceu.micro_processor_computer.tooltip.1": "§eEV级电路", + "item.gtceu.micro_processor_mainframe": "微型处理器主机", + "item.gtceu.micro_processor_mainframe.tooltip.0": "§7运算速度惊人!", + "item.gtceu.micro_processor_mainframe.tooltip.1": "§eIV级电路", + "item.gtceu.microchip_processor": "微芯片处理器", + "item.gtceu.microchip_processor.tooltip.0": "§7卓越的基础电路", + "item.gtceu.microchip_processor.tooltip.1": "§eLV级电路", + "item.gtceu.mpic_chip": "MPIC芯片", + "item.gtceu.mpic_chip.tooltip": "§7功率集成电路", + "item.gtceu.mpic_wafer": "MPIC晶圆", + "item.gtceu.mpic_wafer.tooltip": "§7功率集成电路原料", + "item.gtceu.multilayer_fiber_reinforced_circuit_board": "多层纤维强化电路基板", + "item.gtceu.multilayer_fiber_reinforced_circuit_board.tooltip": "§7精英电路基板", + "item.gtceu.multilayer_fiber_reinforced_printed_circuit_board": "多层纤维强化印刷电路基板", + "item.gtceu.multilayer_fiber_reinforced_printed_circuit_board.tooltip": "§7精英级电路基板", + "item.gtceu.mv_battery_hull": "中型电池外壳", + "item.gtceu.mv_battery_hull.tooltip": "§7一个空的§bMV§7电池外壳", + "item.gtceu.mv_cadmium_battery": "中型镉电池", + "item.gtceu.mv_cadmium_battery.tooltip": "§7可充电电池", + "item.gtceu.mv_conveyor_module": "§bMV§r传送带", + "item.gtceu.mv_electric_motor": "§bMV§r电动马达", + "item.gtceu.mv_electric_piston": "§bMV§r电力活塞", + "item.gtceu.mv_electric_pump": "§bMV§r电动泵", + "item.gtceu.mv_emitter": "§bMV§r发射器", + "item.gtceu.mv_field_generator": "§bMV§r力场发生器", + "item.gtceu.mv_fluid_regulator": "§bMV§r流体校准器", + "item.gtceu.mv_lithium_battery": "中型锂电池", + "item.gtceu.mv_lithium_battery.tooltip": "§7可充电电池", + "item.gtceu.mv_power_unit": "§bMV§r能量单元", + "item.gtceu.mv_robot_arm": "§bMV§r机械臂", + "item.gtceu.mv_sensor": "§bMV§r传感器", + "item.gtceu.mv_sodium_battery": "中型钠电池", + "item.gtceu.mv_sodium_battery.tooltip": "§7可充电电池", + "item.gtceu.mv_solar_panel": "中压太阳能板(§bMV§r)", + "item.gtceu.mv_voltage_coil": "中压线圈", + "item.gtceu.mv_voltage_coil.tooltip": "优质线圈", + "item.gtceu.name_casting_mold": "模具(命名)", + "item.gtceu.name_casting_mold.tooltip": "§7用来在冲压机床中为物品命名的模具(用铁砧重命名模具)", + "item.gtceu.nan_certificate": "不再是菜鸟的证明", + "item.gtceu.nan_certificate.tooltip": "已接受挑战!", + "item.gtceu.nand_chip": "NAND芯片", + "item.gtceu.nand_chip.tooltip.0": "§7卓越的简单电路", + "item.gtceu.nand_chip.tooltip.1": "§6ULV级电路", + "item.gtceu.nand_memory_chip": "NAND存储器芯片", + "item.gtceu.nand_memory_chip.tooltip": "§7与非逻辑门", + "item.gtceu.nand_memory_wafer": "NAND存储器晶圆", + "item.gtceu.nand_memory_wafer.tooltip": "§7逻辑门原料", + "item.gtceu.nano_cpu_chip": "纳米CPU芯片", + "item.gtceu.nano_cpu_chip.tooltip": "§7纳米中央处理器", + "item.gtceu.nano_cpu_wafer": "纳米CPU晶圆", + "item.gtceu.nano_cpu_wafer.tooltip": "§7纳米电路原料", + "item.gtceu.nano_processor": "纳米处理器", + "item.gtceu.nano_processor.tooltip.0": "§7比小更小", + "item.gtceu.nano_processor.tooltip.1": "§bHV级电路", + "item.gtceu.nano_processor_assembly": "纳米处理器集群", + "item.gtceu.nano_processor_assembly.tooltip.0": "§7比小更小", + "item.gtceu.nano_processor_assembly.tooltip.1": "§bEV级电路", + "item.gtceu.nano_processor_computer": "纳米处理器超级计算机", + "item.gtceu.nano_processor_computer.tooltip.0": "§7比小更小", + "item.gtceu.nano_processor_computer.tooltip.1": "§bIV级电路", + "item.gtceu.nano_processor_mainframe": "纳米处理器主机", + "item.gtceu.nano_processor_mainframe.tooltip.0": "§7比小更小", + "item.gtceu.nano_processor_mainframe.tooltip.1": "§bLuV级电路", + "item.gtceu.nano_saber": "纳米剑", + "item.gtceu.nano_saber.tooltip": "§7尝尝龙神之剑!", + "item.gtceu.nanomuscle_boots": "纳米肌体™套装靴子", + "item.gtceu.nanomuscle_chestplate": "纳米肌体™套装胸甲", + "item.gtceu.nanomuscle_helmet": "纳米肌体™套装头盔", + "item.gtceu.nanomuscle_leggings": "纳米肌体™套装护腿", + "item.gtceu.naquadah_boule": "硅岩掺杂的单晶硅", + "item.gtceu.naquadah_boule.tooltip": "§7电路原料", + "item.gtceu.naquadah_wafer": "硅岩掺杂的晶圆", + "item.gtceu.naquadah_wafer.tooltip": "§7电路原料", + "item.gtceu.neuro_processing_unit": "神经处理单元", + "item.gtceu.neuro_processing_unit.tooltip": "§7神经CPU", + "item.gtceu.neutron_reflector": "铱中子反射板", + "item.gtceu.neutron_reflector.tooltip": "§7坚不可摧", + "item.gtceu.neutronium_boule": "中子素掺杂的单晶硅", + "item.gtceu.neutronium_boule.tooltip": "§7电路原料", + "item.gtceu.neutronium_wafer": "中子素掺杂的晶圆", + "item.gtceu.neutronium_wafer.tooltip": "§7电路原料", + "item.gtceu.nightvision_goggles": "夜视护目镜", + "item.gtceu.nor_memory_chip": "NOR存储器芯片", + "item.gtceu.nor_memory_chip.tooltip": "§7或非逻辑门", + "item.gtceu.nor_memory_wafer": "NOR存储器晶圆", + "item.gtceu.nor_memory_wafer.tooltip": "§7逻辑门原料", + "item.gtceu.normal_pipe_extruder_mold": "模头(普通管道)", + "item.gtceu.nugget_casting_mold": "模具(粒)", + "item.gtceu.nugget_casting_mold.tooltip": "§7用来制作粒的模具", + "item.gtceu.opv_conveyor_module": "§9§lOpV§r传送带", + "item.gtceu.opv_electric_motor": "§9§lOpV§r电动马达", + "item.gtceu.opv_electric_piston": "§9§lOpV§r电力活塞", + "item.gtceu.opv_electric_pump": "§9§lOpV§r电动泵", + "item.gtceu.opv_emitter": "§9OpV§r发射器", + "item.gtceu.opv_field_generator": "§9§lOpV§r力场发生器", + "item.gtceu.opv_fluid_regulator": "§9§lOpV§r流体校准器", + "item.gtceu.opv_robot_arm": "§9§lOpV§r机械臂", + "item.gtceu.opv_sensor": "§9§lOpV§r传感器", + "item.gtceu.opv_voltage_coil.tooltip": "传奇线圈", + "item.gtceu.orange_dye_spray_can": "喷漆罐(橙色)", + "item.gtceu.orange_glass_lens": "玻璃透镜(橙色)", + "item.gtceu.palladium_raw_dust": "粗钯粉", + "item.gtceu.paper_dust": "纸屑", + "item.gtceu.paracetamol_pill": "对乙酰氨基酚药片", + "item.gtceu.petri_dish": "培养皿", + "item.gtceu.petri_dish.tooltip": "§7用来培育细胞", + "item.gtceu.phenolic_circuit_board": "酚醛树脂电路基板", + "item.gtceu.phenolic_circuit_board.tooltip": "§7更好的基板", + "item.gtceu.phenolic_printed_circuit_board": "酚醛树脂印刷电路基板", + "item.gtceu.phenolic_printed_circuit_board.tooltip": "§7优质电路基板", + "item.gtceu.phosphorus_boule": "磷掺杂的单晶硅", + "item.gtceu.phosphorus_boule.tooltip": "§7电路原料", + "item.gtceu.phosphorus_wafer": "磷掺杂的晶圆", + "item.gtceu.phosphorus_wafer.tooltip": "§7电路原料", + "item.gtceu.pickaxe_extruder_mold.tooltip": "§7用来制作镐的模头", + "item.gtceu.pill_casting_mold": "模具(药片)", + "item.gtceu.pink_dye_spray_can": "喷漆罐(粉红色)", + "item.gtceu.pink_glass_lens": "玻璃透镜(粉红色)", + "item.gtceu.pipe.huge_extruder_mold.tooltip": "§7用来制作占据整个方块的管道的模头", + "item.gtceu.pipe.large_extruder_mold.tooltip": "§7用来制作大型管道的模头", + "item.gtceu.pipe.normal_extruder_mold.tooltip": "§7用来制作管道的模头", + "item.gtceu.pipe.small_extruder_mold.tooltip": "§7用来制作小型管道的模头", + "item.gtceu.pipe.tiny_extruder_mold.tooltip": "§7用来制作微型管道的模头", + "item.gtceu.pitchblende_dust": "沥青铀矿", + "item.gtceu.plant_ball": "植物球", + "item.gtceu.plastic_circuit_board": "塑料电路基板", + "item.gtceu.plastic_circuit_board.tooltip": "§7更好的基板", + "item.gtceu.plastic_printed_circuit_board": "塑料印刷电路基板", + "item.gtceu.plastic_printed_circuit_board.tooltip": "§7优质电路基板", + "item.gtceu.plate_casting_mold": "模具(板)", + "item.gtceu.plate_casting_mold.tooltip": "§7用来制作板的模具", + "item.gtceu.plate_extruder_mold": "模头(板)", + "item.gtceu.plate_extruder_mold.tooltip": "§7用来制作板的模头", + "item.gtceu.platinum_group_sludge_dust": "铂系矿泥", + "item.gtceu.platinum_lighter": "铂打火机", + "item.gtceu.platinum_raw_dust": "粗铂粉", + "item.gtceu.platinum_sludge_residue_dust": "铂泥渣", + "item.gtceu.portable_debug_scanner": "便携式调试扫描仪", + "item.gtceu.portable_scanner": "便携式扫描仪", + "item.gtceu.power_thruster": "电力推进器", + "item.gtceu.programmed_circuit": "编程电路", + "item.gtceu.programmed_circuit.tooltip.0": "右击打开配置页面", + "item.gtceu.programmed_circuit.tooltip.1": "潜行右击有虚拟电路槽的", + "item.gtceu.programmed_circuit.tooltip.2": "机器,将其设置为本电路", + "item.gtceu.programmed_circuit.tooltip.3": "的值。", + "item.gtceu.prospector.hv": "进阶探矿仪(§6HV§r)", + "item.gtceu.prospector.luv": "超级探矿仪(§dLuV§r)", + "item.gtceu.prospector.lv": "探矿仪(§7LV§r)", + "item.gtceu.pure_bentonite_dust": "纯净膨润土", + "item.gtceu.pure_cassiterite_sand_dust": "纯净锡石矿砂", + "item.gtceu.pure_pitchblende_dust": "纯净沥青铀矿", + "item.gtceu.pure_rock_salt_dust": "纯净岩盐", + "item.gtceu.pure_salt_dust": "纯净盐", + "item.gtceu.pure_talc_dust": "纯净滑石", + "item.gtceu.purified_bentonite_ore": "纯净膨润土", + "item.gtceu.purified_cassiterite_sand_ore": "纯净锡石矿砂", + "item.gtceu.purified_pitchblende_ore": "纯净沥青铀矿", + "item.gtceu.purified_talc_ore": "纯净滑石", + "item.gtceu.purple_drink": "紫色饮料", + "item.gtceu.purple_dye_spray_can": "喷漆罐(紫色)", + "item.gtceu.purple_glass_lens": "玻璃透镜(紫色)", + "item.gtceu.qbit_cpu_chip": "量子位CPU芯片", + "item.gtceu.qbit_cpu_chip.tooltip": "§7量子位中央处理器", + "item.gtceu.qbit_cpu_wafer": "量子位CPU晶圆", + "item.gtceu.qbit_cpu_wafer.tooltip": "§7量子位电路原料", + "item.gtceu.quantum_eye": "量子之眼", + "item.gtceu.quantum_eye.tooltip": "§7改良的末影之眼", + "item.gtceu.quantum_processor": "量子处理器", + "item.gtceu.quantum_processor.tooltip.0": "§7量子计算终成现实!", + "item.gtceu.quantum_processor.tooltip.1": "§aEV级电路", + "item.gtceu.quantum_processor_assembly": "量子处理器集群", + "item.gtceu.quantum_processor_assembly.tooltip.0": "§7量子计算终成现实!", + "item.gtceu.quantum_processor_assembly.tooltip.1": "§aIV级电路", + "item.gtceu.quantum_processor_computer": "量子处理器超级计算机", + "item.gtceu.quantum_processor_computer.tooltip.0": "§7量子计算终成现实!", + "item.gtceu.quantum_processor_computer.tooltip.1": "§aLuV级电路", + "item.gtceu.quantum_processor_mainframe": "量子处理器主机", + "item.gtceu.quantum_processor_mainframe.tooltip.0": "§7量子计算终成现实!", + "item.gtceu.quantum_processor_mainframe.tooltip.1": "§aZPM级电路", + "item.gtceu.quantum_star": "量子之星", + "item.gtceu.quantum_star.tooltip": "§7改良的下界之星", + "item.gtceu.quarktech_boots": "夸克高科™套装靴子", + "item.gtceu.quarktech_chestplate": "夸克高科™套装胸甲", + "item.gtceu.quarktech_helmet": "夸克高科™套装头盔", + "item.gtceu.quarktech_leggings": "夸克高科™套装护腿", + "item.gtceu.quartz_sand_dust": "石英砂", + "item.gtceu.rad_away_pill": "消辐宁™药片", + "item.gtceu.ram_chip": "RAM芯片", + "item.gtceu.ram_chip.tooltip": "§7随机存取存储器", + "item.gtceu.ram_wafer": "RAM晶圆", + "item.gtceu.ram_wafer.tooltip": "§7内存原料", + "item.gtceu.rare_earth_dust": "稀土", + "item.gtceu.rarest_metal_mixture_dust": "稀有金属混合物", + "item.gtceu.raw_crystal_chip": "晶体芯片原料", + "item.gtceu.raw_crystal_chip.tooltip": "§7晶体处理器原料", + "item.gtceu.raw_crystal_chip_parts": "晶体芯片部件原料", + "item.gtceu.raw_crystal_chip_parts.tooltip": "§7晶体处理器部件原料", + "item.gtceu.red_dye_spray_can": "喷漆罐(红色)", + "item.gtceu.red_glass_lens": "玻璃透镜(红色)", + "item.gtceu.refined_bentonite_ore": "精炼膨润土", + "item.gtceu.refined_cassiterite_sand_ore": "精炼锡石矿砂", + "item.gtceu.refined_pitchblende_ore": "精炼沥青铀矿", + "item.gtceu.refined_talc_ore": "精炼滑石", + "item.gtceu.resin_circuit_board": "覆膜电路基板", + "item.gtceu.resin_circuit_board.tooltip": "§7电路的基底", + "item.gtceu.resin_printed_circuit_board": "覆膜印刷电路基板", + "item.gtceu.resin_printed_circuit_board.tooltip": "§7基础电路基板", + "item.gtceu.resistor": "电阻", + "item.gtceu.resistor.tooltip": "§7基础电子元件", + "item.gtceu.ring_extruder_mold": "模头(环)", + "item.gtceu.ring_extruder_mold.tooltip": "§7用来制作环的模头", + "item.gtceu.robot.arm.tooltip": "作§f覆盖板§7时限制§f物品§7到特定数量。", + "item.gtceu.rock_salt_dust": "岩盐", + "item.gtceu.rod_extruder_mold": "模头(杆)", + "item.gtceu.rod_extruder_mold.tooltip": "§7用来制作杆的模头", + "item.gtceu.rod_long_extruder_mold.tooltip": "§7用来制作长杆的模头", + "item.gtceu.rotor_casting_mold": "模具(转子)", + "item.gtceu.rotor_casting_mold.tooltip": "§7用来制作转子的模具", + "item.gtceu.rotor_extruder_mold": "模头(转子)", + "item.gtceu.rotor_extruder_mold.tooltip": "§7用来制作转子的模头", + "item.gtceu.rubber_boat": "橡胶木船", + "item.gtceu.rubber_chest_boat": "橡胶木运输船", + "item.gtceu.rubber_gloves": "橡胶手套", + "item.gtceu.salt_dust": "盐", + "item.gtceu.saw_extruder_mold.tooltip": "§7用来制作锯的模头", + "item.gtceu.shovel_extruder_mold.tooltip": "§7用来制作锹的模头", + "item.gtceu.shutter_module_cover": "扇板", + "item.gtceu.shutter_module_cover.tooltip": "§7作§f覆盖板§7时§f阻止§7机器侧面的任何§f传输§7行为。", + "item.gtceu.silicon_boule": "单晶硅", + "item.gtceu.silicon_boule.tooltip": "§7电路原料", + "item.gtceu.silicon_wafer": "硅晶圆", + "item.gtceu.silicon_wafer.tooltip": "§7电路原料", + "item.gtceu.simple_soc": "简易SoC", + "item.gtceu.simple_soc.tooltip": "§7简易系统级芯片", + "item.gtceu.simple_soc_wafer": "简易SoC晶圆", + "item.gtceu.simple_soc_wafer.tooltip": "§7简易电路原料", + "item.gtceu.small_ash_dust": "小堆灰烬", + "item.gtceu.small_basaltic_mineral_sand_dust": "小堆玄武岩矿砂", + "item.gtceu.small_bentonite_dust": "小堆膨润土", + "item.gtceu.small_blaze_dust": "小堆烈焰粉", + "item.gtceu.small_bone_dust": "小堆骨粉", + "item.gtceu.small_cassiterite_sand_dust": "小堆锡石矿砂", + "item.gtceu.small_dark_ash_dust": "小堆黑色灰烬", + "item.gtceu.small_fullers_earth_dust": "小堆漂白土", + "item.gtceu.small_garnet_sand_dust": "小堆石榴石砂", + "item.gtceu.small_gear_casting_mold": "模具(小型齿轮)", + "item.gtceu.small_gear_extruder_mold": "模头(小型齿轮)", + "item.gtceu.small_glauconite_sand_dust": "小堆海绿石砂", + "item.gtceu.small_granitic_mineral_sand_dust": "小堆花岗岩矿砂", + "item.gtceu.small_gunpowder_dust": "小堆火药", + "item.gtceu.small_ice_dust": "小堆碎冰", + "item.gtceu.small_inert_metal_mixture_dust": "小堆惰性金属混合物", + "item.gtceu.small_iridium_metal_residue_dust": "小堆铱金属渣", + "item.gtceu.small_meat_dust": "小堆肉末", + "item.gtceu.small_palladium_raw_dust": "小堆粗钯粉", + "item.gtceu.small_paper_dust": "小堆纸屑", + "item.gtceu.small_pipe_extruder_mold": "模头(小型管道)", + "item.gtceu.small_pitchblende_dust": "小堆沥青铀矿", + "item.gtceu.small_platinum_group_sludge_dust": "小堆铂系矿泥", + "item.gtceu.small_platinum_raw_dust": "小堆粗铂粉", + "item.gtceu.small_platinum_sludge_residue_dust": "小堆铂泥渣", + "item.gtceu.small_quartz_sand_dust": "小堆石英砂", + "item.gtceu.small_rare_earth_dust": "小堆稀土", + "item.gtceu.small_rarest_metal_mixture_dust": "小堆稀有金属混合物", + "item.gtceu.small_rock_salt_dust": "小堆岩盐", + "item.gtceu.small_salt_dust": "小堆盐", + "item.gtceu.small_sugar_dust": "小堆糖", + "item.gtceu.small_talc_dust": "小堆滑石", + "item.gtceu.small_treated_wood_dust": "小堆防腐木浆", + "item.gtceu.small_wheat_dust": "小堆面粉", + "item.gtceu.small_wood_dust": "小堆木浆", + "item.gtceu.smd_capacitor": "贴片电容", + "item.gtceu.smd_capacitor.tooltip": "§7电子元件", + "item.gtceu.smd_diode": "贴片二极管", + "item.gtceu.smd_diode.tooltip": "§7电子元件", + "item.gtceu.smd_inductor": "贴片电感", + "item.gtceu.smd_inductor.tooltip": "§7电子元件", + "item.gtceu.smd_resistor": "贴片电阻", + "item.gtceu.smd_resistor.tooltip": "§7电子元件", + "item.gtceu.smd_transistor": "贴片晶体管", + "item.gtceu.smd_transistor.tooltip": "§7电子元件", + "item.gtceu.soc": "SoC", + "item.gtceu.soc.tooltip": "§7系统级芯片", + "item.gtceu.soc_wafer": "SoC晶圆", + "item.gtceu.soc_wafer.tooltip": "§7基础电路原料", + "item.gtceu.solar_panel": "太阳能板", + "item.gtceu.solar_panel.tooltip.0": "§7愿太阳与你同在。", + "item.gtceu.solar_panel.tooltip.1": "§7作§f覆盖板§7时利用§e太阳§7生产§f能量§7。", + "item.gtceu.solvent_spray_can": "喷漆罐(溶剂)", + "item.gtceu.stainless_steel_fluid_cell": "%s不锈钢单元", + "item.gtceu.steel_fluid_cell": "%s钢单元", + "item.gtceu.steel_minecart_wheels": "钢矿车车轮", + "item.gtceu.stem_cells": "干细胞", + "item.gtceu.stem_cells.tooltip": "§7智慧原料", + "item.gtceu.sticky_resin": "黏性树脂", + "item.gtceu.storage_cover": "存储覆盖板", + "item.gtceu.sugar_gem": "方糖", + "item.gtceu.sus_record": "音乐唱片", + "item.gtceu.sus_record.desc": "§7可疑!", + "item.gtceu.sword_extruder_mold.tooltip": "§7用来制作剑刃的模头", + "item.gtceu.tag_filter.tooltip.0": "作§f覆盖板§7时以§f标签§7过滤§f物品§7的输入/输出。", + "item.gtceu.tag_filter.tooltip.1": "亦可为§f传送带§7和§f机械臂§7提供此功能。", + "item.gtceu.talc_dust": "滑石", + "item.gtceu.tantalum_capacitor": "钽电容", + "item.gtceu.terminal": "终端", + "item.gtceu.terminal.tooltip": "潜行右击多方块控制器以自动搭建此多方块结构", + "item.gtceu.tiny_ash_dust": "小撮灰烬", + "item.gtceu.tiny_basaltic_mineral_sand_dust": "小撮玄武岩矿砂", + "item.gtceu.tiny_bentonite_dust": "小撮膨润土", + "item.gtceu.tiny_blaze_dust": "小撮烈焰粉", + "item.gtceu.tiny_bone_dust": "小撮骨粉", + "item.gtceu.tiny_cassiterite_sand_dust": "小撮锡石矿砂", + "item.gtceu.tiny_dark_ash_dust": "小撮黑色灰烬", + "item.gtceu.tiny_fullers_earth_dust": "小撮漂白土", + "item.gtceu.tiny_garnet_sand_dust": "小撮石榴石砂", + "item.gtceu.tiny_glauconite_sand_dust": "小撮海绿石砂", + "item.gtceu.tiny_granitic_mineral_sand_dust": "小撮花岗岩矿砂", + "item.gtceu.tiny_gunpowder_dust": "小撮火药", + "item.gtceu.tiny_ice_dust": "小撮碎冰", + "item.gtceu.tiny_inert_metal_mixture_dust": "小撮惰性金属混合物", + "item.gtceu.tiny_iridium_metal_residue_dust": "小撮铱金属渣", + "item.gtceu.tiny_meat_dust": "小撮肉末", + "item.gtceu.tiny_palladium_raw_dust": "小撮粗钯粉", + "item.gtceu.tiny_paper_dust": "小撮纸屑", + "item.gtceu.tiny_pipe_extruder_mold": "模头(微型管道)", + "item.gtceu.tiny_pitchblende_dust": "小撮沥青铀矿", + "item.gtceu.tiny_platinum_group_sludge_dust": "小撮铂系矿泥", + "item.gtceu.tiny_platinum_raw_dust": "小撮粗铂粉", + "item.gtceu.tiny_platinum_sludge_residue_dust": "小撮铂泥渣", + "item.gtceu.tiny_quartz_sand_dust": "小撮石英砂", + "item.gtceu.tiny_rare_earth_dust": "小撮稀土", + "item.gtceu.tiny_rarest_metal_mixture_dust": "小撮稀有金属混合物", + "item.gtceu.tiny_rock_salt_dust": "小撮岩盐", + "item.gtceu.tiny_salt_dust": "小撮盐", + "item.gtceu.tiny_sugar_dust": "小撮糖", + "item.gtceu.tiny_talc_dust": "小撮滑石", + "item.gtceu.tiny_treated_wood_dust": "小撮防腐木浆", + "item.gtceu.tiny_wheat_dust": "小撮面粉", + "item.gtceu.tiny_wood_dust": "小撮木浆", + "item.gtceu.titanium_fluid_cell": "%s钛单元", + "item.gtceu.tool.aoe.columns": "列", + "item.gtceu.tool.aoe.layers": "层", + "item.gtceu.tool.aoe.rows": "行", + "item.gtceu.tool.axe": "%s斧", + "item.gtceu.tool.behavior.aoe_mining": "§5作用范围:§f%sx%sx%s", + "item.gtceu.tool.behavior.block_rotation": "§2精械师傅:§f旋转方块", + "item.gtceu.tool.behavior.crop_harvesting": "§a庄稼收割:§f收获成熟的作物", + "item.gtceu.tool.behavior.damage_boost": "§4伤害增益:§f对%s造成额外伤害", + "item.gtceu.tool.behavior.grass_path": "§e园林策划:§f制造草径", + "item.gtceu.tool.behavior.ground_tilling": "§e耕地农夫:§f耕耘土地", + "item.gtceu.tool.behavior.plunger": "§9水管工人:§f清除流体", + "item.gtceu.tool.behavior.rail_rotation": "§e铁路技工:§f旋转轨道", + "item.gtceu.tool.behavior.relocate_mining": "§2磁力吸引:§f吸入采掘的方块与生物掉落物", + "item.gtceu.tool.behavior.remove_wax": "§6清洁试剂:§f脱蜡", + "item.gtceu.tool.behavior.scrape": "§b抛光工艺:§f除锈", + "item.gtceu.tool.behavior.shield_disable": "§c野兽蛮攻:§f无视盾牌", + "item.gtceu.tool.behavior.silk_ice": "§b切冰利刃:§f精准采集冰块", + "item.gtceu.tool.behavior.strip_log": "§5林业工匠:§f剥去原木的表皮", + "item.gtceu.tool.behavior.torch_place": "§e洞窟探客:§f右击放置火把", + "item.gtceu.tool.behavior.tree_felling": "§4伐木好手:§f连锁砍树", + "item.gtceu.tool.butchery_knife": "%s屠刀", + "item.gtceu.tool.butchery_knife.tooltip": "§8攻击速度较慢", + "item.gtceu.tool.buzzsaw": "%s圆锯(§7LV§r)", + "item.gtceu.tool.buzzsaw.tooltip": "§8并不适合用来采掘方块", + "item.gtceu.tool.crowbar": "%s撬棍", + "item.gtceu.tool.crowbar.tooltip": "§8卸下覆盖板", + "item.gtceu.tool.ev_drill": "%s电钻(§5EV§r)", + "item.gtceu.tool.file": "%s锉", + "item.gtceu.tool.hammer": "%s锻造锤", + "item.gtceu.tool.hammer.tooltip": "§8锤碎而非采掘方块", + "item.gtceu.tool.harvest_level.0": "§8木", + "item.gtceu.tool.harvest_level.1": "§7石头", + "item.gtceu.tool.harvest_level.2": "§a铁", + "item.gtceu.tool.harvest_level.3": "§b钻石", + "item.gtceu.tool.harvest_level.4": "§d下界合金", + "item.gtceu.tool.harvest_level.5": "§9铿铀", + "item.gtceu.tool.harvest_level.6": "§c中子素", + "item.gtceu.tool.hoe": "%s锄", + "item.gtceu.tool.hv_chainsaw": "%s链锯(§6HV§r)", + "item.gtceu.tool.hv_drill": "%s电钻(§6HV§r)", + "item.gtceu.tool.hv_wirecutter": "%s剪线钳(HV)", + "item.gtceu.tool.hv_wrench": "%s扳手(§6HV§r)", + "item.gtceu.tool.hv_wrench.tooltip": "§8按住左键以拆卸机器", + "item.gtceu.tool.iv_drill": "%s电钻(§9IV§r)", + "item.gtceu.tool.iv_wirecutter": "%s剪线钳(IV)", + "item.gtceu.tool.iv_wrench": "%s扳手(§9IV§r)", + "item.gtceu.tool.iv_wrench.tooltip": "§8按住左键以拆卸机器", + "item.gtceu.tool.knife": "%s刀", + "item.gtceu.tool.lighter.platinum.tooltip": "§7上面刻着一位知名的恶作剧大师", + "item.gtceu.tool.lv_chainsaw": "%s链锯(§7LV§r)", + "item.gtceu.tool.lv_drill": "%s电钻(§7LV§r)", + "item.gtceu.tool.lv_screwdriver": "%s螺丝刀(§7LV§r)", + "item.gtceu.tool.lv_screwdriver.tooltip": "§8调整覆盖板和机器", + "item.gtceu.tool.lv_wirecutter": "%s剪线钳(LV)", + "item.gtceu.tool.lv_wrench": "%s扳手(§7LV§r)", + "item.gtceu.tool.lv_wrench.tooltip": "§8按住左键以拆卸机器", + "item.gtceu.tool.mallet": "%s软锤", + "item.gtceu.tool.mallet.tooltip.0": "§8潜行以在当前配方完成后暂停机器。", + "item.gtceu.tool.mallet.tooltip.1": "§8关/开机", + "item.gtceu.tool.matchbox.tooltip": "§7别把它当成玩具车了", + "item.gtceu.tool.mining_hammer": "%s采矿锤", + "item.gtceu.tool.mining_hammer.tooltip": "§8一次性开采大片区域(除非你蹲下)", + "item.gtceu.tool.mortar": "%s研钵", + "item.gtceu.tool.mv_chainsaw": "%s链锯(§bMV§r)", + "item.gtceu.tool.mv_drill": "%s电钻(§bMV§r)", + "item.gtceu.tool.pickaxe": "%s镐", + "item.gtceu.tool.plunger": "%s搋子", + "item.gtceu.tool.plunger.tooltip": "§8从机器中抽除流体", + "item.gtceu.tool.replace_tool_head": "在合成栏用新的工具头替换", + "item.gtceu.tool.rolling_pin": "%s擀面杖", + "item.gtceu.tool.saw": "%s锯", + "item.gtceu.tool.screwdriver": "%s螺丝刀", + "item.gtceu.tool.screwdriver.tooltip": "§8调整覆盖板和机器", + "item.gtceu.tool.scythe": "%s镰刀", + "item.gtceu.tool.scythe.tooltip": "§8因为镰刀(scythe)没有意义(sense)", + "item.gtceu.tool.shears": "%s剪刀", + "item.gtceu.tool.shovel": "%s锹", + "item.gtceu.tool.spade": "%s铲", + "item.gtceu.tool.spade.tooltip": "§8一次性开采大片区域(除非你蹲下)", + "item.gtceu.tool.sword": "%s剑", + "item.gtceu.tool.tooltip.attack_damage": "§c攻击伤害§r:%s", + "item.gtceu.tool.tooltip.attack_speed": "§9攻击速度§r:%s", + "item.gtceu.tool.tooltip.crafting_uses": "§a合成耐久度§r:%s", + "item.gtceu.tool.tooltip.general_uses": "§b耐久度§r:%s", + "item.gtceu.tool.tooltip.harvest_level": "§e采掘等级:%s", + "item.gtceu.tool.tooltip.harvest_level_extra": "§e采掘等级:%s§f(%s§f)", + "item.gtceu.tool.tooltip.max_uses": "§e最大耐久度§r:%s", + "item.gtceu.tool.tooltip.mining_speed": "§d采掘速度§r:%s", + "item.gtceu.tool.tooltip.repair_info": "§8按住SHIFT显示修复详情", + "item.gtceu.tool.tooltip.repair_material": "§8修复材料§r:§f§a%s", + "item.gtceu.tool.usable_as": "§8可用作§r:§f%s", + "item.gtceu.tool.wire_cutter": "%s剪线钳", + "item.gtceu.tool.wrench": "%s扳手", + "item.gtceu.tool.wrench.tooltip": "§8按住左键以拆卸机器", + "item.gtceu.transistor": "晶体管", + "item.gtceu.transistor.tooltip": "§7基础电子元件", + "item.gtceu.treated_wood_boat": "防腐木船", + "item.gtceu.treated_wood_bolt": "短防腐木棍", + "item.gtceu.treated_wood_chest_boat": "防腐木运输船", + "item.gtceu.treated_wood_dust": "防腐木浆", + "item.gtceu.treated_wood_plate": "防腐木板", + "item.gtceu.treated_wood_rod": "防腐木棍", + "item.gtceu.tungsten_grinding_head": "钨研磨头", + "item.gtceu.tungsten_steel_fluid_cell": "%s钨钢单元", + "item.gtceu.turbine_rotor": "%s涡轮转子", + "item.gtceu.turbine_rotor.tooltip": "供涡轮机使用的涡轮转子", + "item.gtceu.uev_conveyor_module": "§aUEV§r传送带", + "item.gtceu.uev_electric_motor": "§aUEV§r电动马达", + "item.gtceu.uev_electric_piston": "§aUEV§r电力活塞", + "item.gtceu.uev_electric_pump": "§aUEV§r电动泵", + "item.gtceu.uev_emitter": "§aUEV§r发射器", + "item.gtceu.uev_field_generator": "§aUEV§r力场发生器", + "item.gtceu.uev_fluid_regulator": "§aUEV§r流体校准器", + "item.gtceu.uev_robot_arm": "§aUEV§r机械臂", + "item.gtceu.uev_sensor": "§aUEV§r传感器", + "item.gtceu.uev_voltage_coil.tooltip": "超凡线圈", + "item.gtceu.uhpic_chip": "UHPIC芯片", + "item.gtceu.uhpic_chip.tooltip": "§7超高功率集成电路", + "item.gtceu.uhpic_wafer": "UHPIC晶圆", + "item.gtceu.uhpic_wafer.tooltip": "§7超高功率集成电路原料", + "item.gtceu.uhv_conveyor_module": "§4UHV§r传送带", + "item.gtceu.uhv_electric_motor": "§4UHV§r电动马达", + "item.gtceu.uhv_electric_piston": "§4UHV§r电力活塞", + "item.gtceu.uhv_electric_pump": "§4UHV§r电动泵", + "item.gtceu.uhv_emitter": "§4UHV§r发射器", + "item.gtceu.uhv_field_generator": "§4UHV§r力场发生器", + "item.gtceu.uhv_fluid_regulator": "§4UHV§r流体校准器", + "item.gtceu.uhv_robot_arm": "§4UHV§r机械臂", + "item.gtceu.uhv_sensor": "§4UHV§r传感器", + "item.gtceu.uhv_voltage_coil.tooltip": "极致线圈", + "item.gtceu.uiv_conveyor_module": "§2UIV§r传送带", + "item.gtceu.uiv_electric_motor": "§2UIV§r电动马达", + "item.gtceu.uiv_electric_piston": "§2UIV§r电力活塞", + "item.gtceu.uiv_electric_pump": "§2UIV§r电动泵", + "item.gtceu.uiv_emitter": "§2UIV§r发射器", + "item.gtceu.uiv_field_generator": "§2UIV§r力场发生器", + "item.gtceu.uiv_fluid_regulator": "§2UIV§r流体校准器", + "item.gtceu.uiv_robot_arm": "§2UIV§r机械臂", + "item.gtceu.uiv_sensor": "§2UIV§r传感器", + "item.gtceu.uiv_voltage_coil.tooltip": "疯狂线圈", + "item.gtceu.ulpic_chip": "ULPIC芯片", + "item.gtceu.ulpic_chip.tooltip": "§7超低功率集成电路", + "item.gtceu.ulpic_wafer": "ULPIC晶圆", + "item.gtceu.ulpic_wafer.tooltip": "§7超低功率集成电路原料", + "item.gtceu.ulv_solar_panel": "超低压太阳能板(§8ULV§r)", + "item.gtceu.ulv_tantalum_battery.tooltip": "§7可充电电池", + "item.gtceu.ulv_voltage_coil": "超低压线圈", + "item.gtceu.ulv_voltage_coil.tooltip": "初级线圈", + "item.gtceu.universal_fluid_cell": "%s通用单元", + "item.gtceu.uv_battery_hull": "大型超能硅岩电池外壳", + "item.gtceu.uv_battery_hull.tooltip": "§7一个空的§3UV§7电池外壳", + "item.gtceu.uv_conveyor_module": "§3UV§r传送带", + "item.gtceu.uv_electric_motor": "§3UV§r电动马达", + "item.gtceu.uv_electric_piston": "§3UV§r电力活塞", + "item.gtceu.uv_electric_pump": "§3UV§r电动泵", + "item.gtceu.uv_emitter": "§3UV§r发射器", + "item.gtceu.uv_field_generator": "§3UV§r力场发生器", + "item.gtceu.uv_fluid_regulator": "§3UV§r流体校准器", + "item.gtceu.uv_naquadria_battery": "大型超能硅岩电池", + "item.gtceu.uv_naquadria_battery.tooltip": "§7可充电电池", + "item.gtceu.uv_robot_arm": "§3UV§r机械臂", + "item.gtceu.uv_sensor": "§3UV§r传感器", + "item.gtceu.uv_solar_panel": "极限压太阳能板(§3UV§r)", + "item.gtceu.uv_voltage_coil": "极限压线圈", + "item.gtceu.uv_voltage_coil.tooltip": "终极线圈", + "item.gtceu.uxv_conveyor_module": "§eUXV§r传送带", + "item.gtceu.uxv_electric_motor": "§eUXV§r电动马达", + "item.gtceu.uxv_electric_piston": "§eUXV§r电力活塞", + "item.gtceu.uxv_electric_pump": "§eUXV§r§r电动泵", + "item.gtceu.uxv_emitter": "§eUXV§r发射器", + "item.gtceu.uxv_field_generator": "§eUXV§r力场发生器", + "item.gtceu.uxv_fluid_regulator": "§eUXV§r流体校准器", + "item.gtceu.uxv_robot_arm": "§eUXV§r机械臂", + "item.gtceu.uxv_sensor": "§eUXV§r传感器", + "item.gtceu.uxv_voltage_coil.tooltip": "史诗线圈", + "item.gtceu.vacuum_tube": "真空管", + "item.gtceu.vacuum_tube.tooltip.0": "§7技术上是二极管", + "item.gtceu.vacuum_tube.tooltip.1": "§cULV等级", + "item.gtceu.wetware_circuit_board": "湿件电路基板", + "item.gtceu.wetware_circuit_board.tooltip": "§7维生之板", + "item.gtceu.wetware_printed_circuit_board": "湿件印刷电路基板", + "item.gtceu.wetware_printed_circuit_board.tooltip": "§7维生之板", + "item.gtceu.wetware_processor": "湿件处理器", + "item.gtceu.wetware_processor.tooltip.0": "§7祂在看我吗?", + "item.gtceu.wetware_processor.tooltip.1": "§4LuV级电路", + "item.gtceu.wetware_processor_assembly": "湿件处理器集群", + "item.gtceu.wetware_processor_assembly.tooltip.0": "§7可以玩Minecraft", + "item.gtceu.wetware_processor_assembly.tooltip.1": "§4ZPM级电路", + "item.gtceu.wetware_processor_computer": "湿件处理器超级计算机", + "item.gtceu.wetware_processor_computer.tooltip.0": "§7肉体与机器的终极结合", + "item.gtceu.wetware_processor_computer.tooltip.1": "§4UV级电路", + "item.gtceu.wetware_processor_mainframe": "湿件处理器主机", + "item.gtceu.wetware_processor_mainframe.tooltip.0": "§7千载独步,惟公一人", + "item.gtceu.wetware_processor_mainframe.tooltip.1": "§4UHV级电路", + "item.gtceu.wheat_dust": "面粉", + "item.gtceu.white_dye_spray_can": "喷漆罐(白色)", + "item.gtceu.wire_extruder_mold": "模头(导线)", + "item.gtceu.wire_extruder_mold.tooltip": "§7用来制作导线的模头", + "item.gtceu.wood_bolt": "短木棍", + "item.gtceu.wood_dust": "木浆", + "item.gtceu.wood_plate": "木板", + "item.gtceu.yellow_dye_spray_can": "喷漆罐(黄色)", + "item.gtceu.yellow_glass_lens": "玻璃透镜(黄色)", + "item.gtceu.zero_point_module": "零点模块", + "item.gtceu.zpm_battery_hull": "中型超能硅岩电池外壳", + "item.gtceu.zpm_battery_hull.tooltip": "§7一个空的§fZPM§7电池外壳", + "item.gtceu.zpm_conveyor_module": "§cZPM§r传送带", + "item.gtceu.zpm_electric_motor": "§cZPM§r电动马达", + "item.gtceu.zpm_electric_piston": "§cZPM§r电力活塞", + "item.gtceu.zpm_electric_pump": "§cZPM§r电动泵", + "item.gtceu.zpm_emitter": "§cZPM§r发射器", + "item.gtceu.zpm_field_generator": "§cZPM§r力场发生器", + "item.gtceu.zpm_fluid_regulator": "§cZPM§r流体校准器", + "item.gtceu.zpm_naquadria_battery": "中型超能硅岩电池", + "item.gtceu.zpm_naquadria_battery.tooltip": "§7可充电电池", + "item.gtceu.zpm_robot_arm": "§cZPM§r机械臂", + "item.gtceu.zpm_sensor": "§cZPM§r传感器", + "item.gtceu.zpm_solar_panel": "零点压太阳能板(§cZPM§r)", + "item.gtceu.zpm_voltage_coil": "零点压线圈", + "item.gtceu.zpm_voltage_coil.tooltip": "超级线圈", + "item.invalid.name": "无效物品", + "item.netherrack_nether_quartz": "下界石英矿石", + "item.toggle.advanced.info.tooltip": "§8<按住Shift查阅已存储配置信息>", + "itemGroup.gtceu.decoration": "格雷科技 | 装饰方块", + "itemGroup.gtceu.item": "格雷科技 | 物品", + "itemGroup.gtceu.machine": "格雷科技 | 机器", + "itemGroup.gtceu.material_block": "格雷科技 | 材料-方块", + "itemGroup.gtceu.material_fluid": "格雷科技 | 材料-流体容器", + "itemGroup.gtceu.material_item": "格雷科技 | 材料-物品", + "itemGroup.gtceu.material_pipe": "格雷科技 | 材料-管道", + "itemGroup.gtceu.tool": "格雷科技 | 工具", + "ldlib.gui.editor.group.widget.gtm_container": "GTM容器小部件", + "ldlib.gui.editor.register.editor.gtceu.mui": "机器UI项目", + "ldlib.gui.editor.register.editor.gtceu.rtui": "配方类型UI项目", + "ldlib.gui.editor.register.editor.gtceu.template_tab": "模板", + "ldlib.gui.editor.register.widget.container.gtm_fluid_slot": "GTM流体槽位", + "ldlib.gui.editor.register.widget.container.gtm_item_slot": "GTM物品槽位", + "ldlib.gui.editor.register.widget.container.gtm_phantom_fluid_slot": "GTM幻影流体槽位", + "ldlib.gui.editor.register.widget.container.gtm_phantom_item_slot": "GTM幻影物品槽位", + "mataarmor.hud.supply_mode": "供能模式:%s", + "material.gtceu.acetic_acid": "乙酸", + "material.gtceu.acetic_anhydride": "乙酸酐", + "material.gtceu.acetone": "丙酮", + "material.gtceu.acidic_enriched_naquadah_solution": "酸性富集硅岩溶液", + "material.gtceu.acidic_naquadria_solution": "酸性超能硅岩溶液", + "material.gtceu.acidic_osmium_solution": "酸性锇溶液", + "material.gtceu.actinium": "锕", + "material.gtceu.activated_carbon": "活性炭", + "material.gtceu.agar": "琼脂", + "material.gtceu.air": "空气", + "material.gtceu.allyl_chloride": "烯丙基氯", + "material.gtceu.almandine": "铁铝榴石", + "material.gtceu.aluminium": "铝", + "material.gtceu.aluminium_sulfite": "亚硫酸铝", + "material.gtceu.alunite": "明矾石", + "material.gtceu.americium": "镅", + "material.gtceu.amethyst": "紫水晶", + "material.gtceu.aminophenol": "氨基苯酚", + "material.gtceu.ammonia": "氨", + "material.gtceu.ammonium_chloride": "氯化铵", + "material.gtceu.ammonium_formate": "甲酸铵", + "material.gtceu.andesite": "安山岩", + "material.gtceu.andradite": "钙铁榴石", + "material.gtceu.annealed_copper": "退火铜", + "material.gtceu.antimony": "锑", + "material.gtceu.antimony_trifluoride": "三氟化锑", + "material.gtceu.antimony_trioxide": "三氧化二锑", + "material.gtceu.apatite": "磷灰石", + "material.gtceu.aqua_regia": "王水", + "material.gtceu.argon": "氩", + "material.gtceu.arsenic": "砷", + "material.gtceu.arsenic_trioxide": "三氧化二砷", + "material.gtceu.asbestos": "石棉", + "material.gtceu.ash": "灰烬", + "material.gtceu.astatine": "砹", + "material.gtceu.bacteria": "细菌", + "material.gtceu.bacterial_sludge": "细菌浆液", + "material.gtceu.barite": "重晶石", + "material.gtceu.barium": "钡", + "material.gtceu.barium_sulfide": "硫化钡", + "material.gtceu.basalt": "玄武岩", + "material.gtceu.basaltic_mineral_sand": "玄武岩矿砂", + "material.gtceu.bastnasite": "氟碳镧铈矿", + "material.gtceu.battery_alloy": "电池合金", + "material.gtceu.bauxite": "铝土矿", + "material.gtceu.bauxite_slag": "铝土矿渣", + "material.gtceu.bauxite_sludge": "铝土泥渣", + "material.gtceu.bauxite_slurry": "铝土浆液", + "material.gtceu.bentonite": "膨润土", + "material.gtceu.benzene": "苯", + "material.gtceu.berkelium": "锫", + "material.gtceu.beryllium": "铍", + "material.gtceu.bio_diesel": "生物柴油", + "material.gtceu.biomass": "生物质", + "material.gtceu.biotite": "黑云母", + "material.gtceu.biphenyl": "联苯", + "material.gtceu.bismuth": "铋", + "material.gtceu.bismuth_bronze": "铋青铜", + "material.gtceu.bisphenol_a": "双酚A", + "material.gtceu.black_bronze": "黑青铜", + "material.gtceu.black_dye": "黑色染料", + "material.gtceu.black_steel": "黑钢", + "material.gtceu.blackstone": "黑石", + "material.gtceu.blaze": "烈焰", + "material.gtceu.blue_alloy": "蓝色合金", + "material.gtceu.blue_dye": "蓝色染料", + "material.gtceu.blue_steel": "蓝钢", + "material.gtceu.blue_topaz": "蓝黄玉", + "material.gtceu.bohrium": "𬭛", + "material.gtceu.bone": "骨头", + "material.gtceu.borax": "硼砂", + "material.gtceu.bornite": "斑铜矿", + "material.gtceu.boron": "硼", + "material.gtceu.borosilicate_glass": "硼硅玻璃", + "material.gtceu.brass": "黄铜", + "material.gtceu.brick": "砖", + "material.gtceu.bromine": "溴", + "material.gtceu.bronze": "青铜", + "material.gtceu.brown_dye": "棕色染料", + "material.gtceu.butadiene": "丁二烯", + "material.gtceu.butane": "丁烷", + "material.gtceu.butene": "丁烯", + "material.gtceu.butyraldehyde": "丁醛", + "material.gtceu.cadmium": "镉", + "material.gtceu.caesium": "铯", + "material.gtceu.calcite": "方解石", + "material.gtceu.calcium": "钙", + "material.gtceu.calcium_carbonate": "碳酸钙", + "material.gtceu.calcium_chloride": "氯化钙", + "material.gtceu.calcium_ferrocyanide": "亚铁氰化钙", + "material.gtceu.calcium_hydroxide": "氢氧化钙", + "material.gtceu.calcium_phosphide": "磷化钙", + "material.gtceu.californium": "锎", + "material.gtceu.caprolactam": "己内酰胺", + "material.gtceu.carbon": "碳", + "material.gtceu.carbon_dioxide": "二氧化碳", + "material.gtceu.carbon_monoxide": "一氧化碳", + "material.gtceu.cassiterite": "锡石", + "material.gtceu.cassiterite_sand": "锡石矿砂", + "material.gtceu.cerium": "铈", + "material.gtceu.certus_quartz": "赛特斯石英", + "material.gtceu.cetane_boosted_diesel": "高十六烷值柴油", + "material.gtceu.chalcocite": "辉铜矿", + "material.gtceu.chalcopyrite": "黄铜矿", + "material.gtceu.charcoal": "木炭", + "material.gtceu.charcoal_byproducts": "木炭副产物", + "material.gtceu.chlorine": "氯", + "material.gtceu.chlorobenzene": "氯苯", + "material.gtceu.chloroform": "氯仿", + "material.gtceu.chloromethane": "氯甲烷", + "material.gtceu.chromite": "铬铁矿", + "material.gtceu.chromium": "铬", + "material.gtceu.chromium_trioxide": "三氧化铬", + "material.gtceu.cinnabar": "朱砂", + "material.gtceu.clay": "黏土", + "material.gtceu.coal": "煤炭", + "material.gtceu.coal_gas": "煤气", + "material.gtceu.coal_tar": "煤焦油", + "material.gtceu.cobalt": "钴", + "material.gtceu.cobalt_brass": "钴黄铜", + "material.gtceu.cobalt_oxide": "氧化钴", + "material.gtceu.cobaltite": "辉钴矿", + "material.gtceu.cocoa": "可可", + "material.gtceu.coke": "焦煤", + "material.gtceu.collagen": "胶原", + "material.gtceu.concrete": "混凝土", + "material.gtceu.construction_foam": "建筑泡沫", + "material.gtceu.cooperite": "谢尔顿矿", + "material.gtceu.copernicium": "鿔", + "material.gtceu.copper": "铜", + "material.gtceu.cracked_bauxite_slurry": "裂化铝土浆液", + "material.gtceu.creosote": "杂酚油", + "material.gtceu.cumene": "异丙苯", + "material.gtceu.cupric_oxide": "氧化铜", + "material.gtceu.cupronickel": "白铜", + "material.gtceu.curium": "锔", + "material.gtceu.cyan_dye": "青色染料", + "material.gtceu.cyclohexane": "环己烷", + "material.gtceu.cyclohexanone_oxime": "环己酮肟", + "material.gtceu.damascus_steel": "大马士革钢", + "material.gtceu.dark_ash": "黑色灰烬", + "material.gtceu.darmstadtium": "𫟼", + "material.gtceu.decalcified_bauxite_sludge": "脱钙铝土泥渣", + "material.gtceu.deepslate": "深板岩", + "material.gtceu.depleted_uranium_hexafluoride": "枯竭六氟化铀", + "material.gtceu.deuterium": "氘", + "material.gtceu.diaminobenzidine": "二氨基联苯胺", + "material.gtceu.diamond": "钻石", + "material.gtceu.diatomite": "硅藻土", + "material.gtceu.dichlorobenzene": "二氯苯", + "material.gtceu.dichlorobenzidine": "二氯联苯胺", + "material.gtceu.dichloroethane": "二氯乙烷", + "material.gtceu.diesel": "柴油", + "material.gtceu.diethylenetriamine": "二乙烯三胺", + "material.gtceu.diethylenetriamine_pentaacetonitrile": "二乙烯三胺五乙腈", + "material.gtceu.diethylenetriaminepentaacetic_acid": "二乙烯三胺五乙酸", + "material.gtceu.diluted_hydrochloric_acid": "稀盐酸", + "material.gtceu.diluted_sulfuric_acid": "稀硫酸", + "material.gtceu.dimethylamine": "二甲胺", + "material.gtceu.dimethylbenzene": "二甲苯", + "material.gtceu.dimethyldichlorosilane": "二甲基二氯硅烷", + "material.gtceu.dimethylhydrazine": "二甲基肼", + "material.gtceu.dinitrogen_tetroxide": "四氧化二氮", + "material.gtceu.diorite": "闪长岩", + "material.gtceu.diphenyl_isophthalate": "间苯二甲酸二苯酯", + "material.gtceu.dissolved_calcium_acetate": "乙酸钙溶液", + "material.gtceu.distilled_water": "蒸馏水", + "material.gtceu.drilling_fluid": "钻井液", + "material.gtceu.dubnium": "𬭊", + "material.gtceu.duranium": "铿铀", + "material.gtceu.dysprosium": "镝", + "material.gtceu.echo_shard": "回响碎片", + "material.gtceu.einsteinium": "锿", + "material.gtceu.electrotine": "蓝石", + "material.gtceu.electrum": "琥珀金", + "material.gtceu.emerald": "绿宝石", + "material.gtceu.ender_air": "末地空气", + "material.gtceu.ender_eye": "末影之眼", + "material.gtceu.ender_pearl": "末影珍珠", + "material.gtceu.endstone": "末地石", + "material.gtceu.enriched_bacterial_sludge": "富集细菌浆液", + "material.gtceu.enriched_naquadah": "富集硅岩", + "material.gtceu.enriched_naquadah_solution": "富集硅岩溶液", + "material.gtceu.enriched_naquadah_sulfate": "硫酸富集硅岩", + "material.gtceu.enriched_naquadah_trinium_europium_duranide": "富集硅岩凯金铕铿铀合金", + "material.gtceu.enriched_naquadah_waste": "富集硅岩废液", + "material.gtceu.enriched_uranium_hexafluoride": "富集六氟化铀", + "material.gtceu.epichlorohydrin": "环氧氯丙烷", + "material.gtceu.epoxy": "环氧树脂", + "material.gtceu.erbium": "铒", + "material.gtceu.ethane": "乙烷", + "material.gtceu.ethanol": "乙醇", + "material.gtceu.ethenone": "乙烯酮", + "material.gtceu.ethyl_tertbutyl_ether": "乙基叔丁基醚", + "material.gtceu.ethylbenzene": "乙苯", + "material.gtceu.ethylene": "乙烯", + "material.gtceu.europium": "铕", + "material.gtceu.fermented_biomass": "发酵生物质", + "material.gtceu.fermium": "镄", + "material.gtceu.ferrite_mixture": "铁氧体混合物", + "material.gtceu.ferrosilite": "铁辉石", + "material.gtceu.fireclay": "耐火黏土", + "material.gtceu.fish_oil": "鱼油", + "material.gtceu.flerovium": "𫓧", + "material.gtceu.flint": "燧石", + "material.gtceu.fluorine": "氟", + "material.gtceu.fluoroantimonic_acid": "氟锑酸", + "material.gtceu.formaldehyde": "甲醛", + "material.gtceu.formamide": "甲酰胺", + "material.gtceu.formic_acid": "甲酸", + "material.gtceu.francium": "钫", + "material.gtceu.fullers_earth": "漂白土", + "material.gtceu.gadolinium": "钆", + "material.gtceu.galena": "方铅矿", + "material.gtceu.gallium": "镓", + "material.gtceu.gallium_arsenide": "砷化镓", + "material.gtceu.gallium_sulfide": "硫化镓", + "material.gtceu.garnet_sand": "石榴石砂", + "material.gtceu.garnierite": "硅镁镍矿", + "material.gtceu.gasoline": "汽油", + "material.gtceu.gelatin": "明胶", + "material.gtceu.gelatin_mixture": "明胶混合物", + "material.gtceu.germanium": "锗", + "material.gtceu.glass": "玻璃", + "material.gtceu.glauconite_sand": "海绿石砂", + "material.gtceu.glowstone": "荧石", + "material.gtceu.glue": "胶水", + "material.gtceu.glycerol": "甘油", + "material.gtceu.glyceryl_trinitrate": "硝酸甘油", + "material.gtceu.glycolonitrile": "乙腈", + "material.gtceu.goethite": "针铁矿", + "material.gtceu.gold": "金", + "material.gtceu.granite": "花岗岩", + "material.gtceu.granite_red": "红花岗岩", + "material.gtceu.granitic_mineral_sand": "花岗岩矿砂", + "material.gtceu.graphene": "石墨烯", + "material.gtceu.graphite": "石墨", + "material.gtceu.gray_dye": "灰色染料", + "material.gtceu.green_dye": "绿色染料", + "material.gtceu.green_sapphire": "绿色蓝宝石", + "material.gtceu.green_sapphire_slurry": "绿色蓝宝石浆液", + "material.gtceu.grossular": "钙铝榴石", + "material.gtceu.gunpowder": "火药", + "material.gtceu.gypsum": "石膏", + "material.gtceu.hafnium": "铪", + "material.gtceu.hassium": "𬭶", + "material.gtceu.hastelloy_c_276": "哈斯特洛依合金 C-276", + "material.gtceu.hastelloy_x": "哈斯特洛依合金-X", + "material.gtceu.heavy_fuel": "重燃油", + "material.gtceu.helium": "氦", + "material.gtceu.helium_3": "氦-3", + "material.gtceu.hematite": "赤铁矿", + "material.gtceu.high_octane_gasoline": "高辛烷值汽油", + "material.gtceu.holmium": "钬", + "material.gtceu.hsla_steel": "HSLA钢", + "material.gtceu.hsse": "高速钢-E", + "material.gtceu.hssg": "高速钢-G", + "material.gtceu.hsss": "高速钢-S", + "material.gtceu.hydro_cracked_butadiene": "加氢裂化丁二烯", + "material.gtceu.hydro_cracked_butane": "加氢裂化丁烷", + "material.gtceu.hydro_cracked_butene": "加氢裂化丁烯", + "material.gtceu.hydro_cracked_ethane": "加氢裂化乙烷", + "material.gtceu.hydro_cracked_ethylene": "加氢裂化乙烯", + "material.gtceu.hydro_cracked_propane": "加氢裂化丙烷", + "material.gtceu.hydro_cracked_propene": "加氢裂化丙烯", + "material.gtceu.hydrochloric_acid": "盐酸", + "material.gtceu.hydrofluoric_acid": "氢氟酸", + "material.gtceu.hydrogen": "氢", + "material.gtceu.hydrogen_cyanide": "氰化氢", + "material.gtceu.hydrogen_peroxide": "过氧化氢", + "material.gtceu.hydrogen_sulfide": "硫化氢", + "material.gtceu.hypochlorous_acid": "次氯酸", + "material.gtceu.ice": "冰", + "material.gtceu.ilmenite": "钛铁矿", + "material.gtceu.ilmenite_slag": "钛铁矿渣", + "material.gtceu.impure_enriched_naquadah_solution": "含杂富集硅岩溶液", + "material.gtceu.impure_naquadria_solution": "含杂超能硅岩溶液", + "material.gtceu.incoloy_ma_956": "耐热铬铁合金 MA-956", + "material.gtceu.indium": "铟", + "material.gtceu.indium_concentrate": "铟富集溶液", + "material.gtceu.indium_gallium_phosphide": "磷化铟镓", + "material.gtceu.indium_phosphide": "磷化铟", + "material.gtceu.indium_tin_barium_titanium_cuprate": "铟锡钡钛铜氧化物", + "material.gtceu.inert_metal_mixture": "惰性金属混合物", + "material.gtceu.invar": "殷钢", + "material.gtceu.iodine": "碘", + "material.gtceu.iridium": "铱", + "material.gtceu.iridium_chloride": "氯化铱", + "material.gtceu.iridium_metal_residue": "铱金属渣", + "material.gtceu.iron": "铁", + "material.gtceu.iron_ii_chloride": "氯化亚铁", + "material.gtceu.iron_iii_chloride": "氯化铁", + "material.gtceu.isoprene": "异戊二烯", + "material.gtceu.kanthal": "坎塔尔合金", + "material.gtceu.krypton": "氪", + "material.gtceu.kyanite": "蓝晶石", + "material.gtceu.lanthanum": "镧", + "material.gtceu.lapis": "青金石", + "material.gtceu.lapotron": "兰波顿", + "material.gtceu.lava": "熔岩", + "material.gtceu.lawrencium": "铹", + "material.gtceu.lazurite": "蓝金石", + "material.gtceu.lead": "铅", + "material.gtceu.lead_zinc_solution": "铅锌溶液", + "material.gtceu.lepidolite": "锂云母", + "material.gtceu.light_blue_dye": "淡蓝色染料", + "material.gtceu.light_fuel": "轻燃油", + "material.gtceu.light_gray_dye": "淡灰色染料", + "material.gtceu.lightly_hydro_cracked_gas": "轻度加氢裂化炼油气", + "material.gtceu.lightly_hydro_cracked_heavy_fuel": "轻度加氢裂化重燃油", + "material.gtceu.lightly_hydro_cracked_light_fuel": "轻度加氢裂化轻燃油", + "material.gtceu.lightly_hydro_cracked_naphtha": "轻度加氢裂化石脑油", + "material.gtceu.lightly_steam_cracked_gas": "轻度蒸汽裂化炼油气", + "material.gtceu.lightly_steam_cracked_heavy_fuel": "轻度蒸汽裂化重燃油", + "material.gtceu.lightly_steam_cracked_light_fuel": "轻度蒸汽裂化轻燃油", + "material.gtceu.lightly_steam_cracked_naphtha": "轻度蒸汽裂化石脑油", + "material.gtceu.lime_dye": "黄绿色染料", + "material.gtceu.liquid_air": "液态空气", + "material.gtceu.liquid_ender_air": "液态末地空气", + "material.gtceu.liquid_nether_air": "液态下界空气", + "material.gtceu.lithium": "锂", + "material.gtceu.lithium_chloride": "氯化锂", + "material.gtceu.livermorium": "𫟷", + "material.gtceu.lpg": "液化石油气", + "material.gtceu.lubricant": "润滑油", + "material.gtceu.lutetium": "镥", + "material.gtceu.magenta_dye": "品红色染料", + "material.gtceu.magnalium": "镁铝合金", + "material.gtceu.magnesia": "氧化镁", + "material.gtceu.magnesite": "菱镁矿", + "material.gtceu.magnesium": "镁", + "material.gtceu.magnesium_chloride": "氯化镁", + "material.gtceu.magnesium_diboride": "二硼化镁", + "material.gtceu.magnetic_iron": "磁化铁", + "material.gtceu.magnetic_neodymium": "磁化钕", + "material.gtceu.magnetic_samarium": "磁化钐", + "material.gtceu.magnetic_steel": "磁化钢", + "material.gtceu.magnetite": "磁铁矿", + "material.gtceu.malachite": "孔雀石", + "material.gtceu.manganese": "锰", + "material.gtceu.manganese_phosphide": "磷化锰", + "material.gtceu.maraging_steel_300": "马氏体时效钢-300", + "material.gtceu.marble": "大理石", + "material.gtceu.massicot": "铅黄", + "material.gtceu.mc_guffium_239": "麦高芬-239", + "material.gtceu.meat": "肉", + "material.gtceu.meitnerium": "鿏", + "material.gtceu.mendelevium": "钔", + "material.gtceu.mercury": "汞", + "material.gtceu.mercury_barium_calcium_cuprate": "汞钡钙铜氧化物", + "material.gtceu.metal_mixture": "金属混合物", + "material.gtceu.methane": "甲烷", + "material.gtceu.methanol": "甲醇", + "material.gtceu.methyl_acetate": "乙酸甲酯", + "material.gtceu.mica": "云母", + "material.gtceu.milk": "牛奶", + "material.gtceu.mirabilite": "芒硝", + "material.gtceu.molybdenite": "辉钼矿", + "material.gtceu.molybdenum": "钼", + "material.gtceu.molybdenum_disilicide": "二硅化钼", + "material.gtceu.monazite": "独居石", + "material.gtceu.monochloramine": "氯胺", + "material.gtceu.moscovium": "镆", + "material.gtceu.mutagen": "诱变剂", + "material.gtceu.naphtha": "石脑油", + "material.gtceu.naphthalene": "萘", + "material.gtceu.naquadah": "硅岩", + "material.gtceu.naquadah_alloy": "硅岩合金", + "material.gtceu.naquadria": "超能硅岩", + "material.gtceu.naquadria_solution": "超能硅岩溶液", + "material.gtceu.naquadria_sulfate": "硫酸超能硅岩", + "material.gtceu.naquadria_waste": "超能硅岩废液", + "material.gtceu.natural_gas": "天然气", + "material.gtceu.neodymium": "钕", + "material.gtceu.neon": "氖", + "material.gtceu.neptunium": "镎", + "material.gtceu.nether_air": "下界空气", + "material.gtceu.nether_quartz": "下界石英", + "material.gtceu.nether_star": "下界之星", + "material.gtceu.netherite": "下界合金", + "material.gtceu.netherrack": "地狱岩", + "material.gtceu.neutronium": "中子素", + "material.gtceu.nichrome": "镍铬合金", + "material.gtceu.nickel": "镍", + "material.gtceu.nickel_zinc_ferrite": "镍锌铁氧体", + "material.gtceu.nihonium": "鿭", + "material.gtceu.niobium": "铌", + "material.gtceu.niobium_nitride": "氮化铌", + "material.gtceu.niobium_titanium": "铌钛合金", + "material.gtceu.nitration_mixture": "硝酸混酸", + "material.gtceu.nitric_acid": "硝酸", + "material.gtceu.nitric_oxide": "一氧化氮", + "material.gtceu.nitrobenzene": "硝基苯", + "material.gtceu.nitrochlorobenzene": "硝基氯苯", + "material.gtceu.nitrogen": "氮", + "material.gtceu.nitrogen_dioxide": "二氧化氮", + "material.gtceu.nitrosyl_chloride": "亚硝酰氯", + "material.gtceu.nitrous_oxide": "一氧化二氮", + "material.gtceu.nobelium": "锘", + "material.gtceu.obsidian": "黑曜石", + "material.gtceu.octane": "辛烷", + "material.gtceu.oganesson": "鿫", + "material.gtceu.oil": "石油", + "material.gtceu.oil_heavy": "重油", + "material.gtceu.oil_light": "轻油", + "material.gtceu.oil_medium": "原油", + "material.gtceu.oilsands": "油砂", + "material.gtceu.olivine": "橄榄石", + "material.gtceu.opal": "猫眼石", + "material.gtceu.orange_dye": "橙色染料", + "material.gtceu.osmiridium": "铱锇合金", + "material.gtceu.osmium": "锇", + "material.gtceu.osmium_tetroxide": "四氧化锇", + "material.gtceu.oxygen": "氧", + "material.gtceu.palladium": "钯", + "material.gtceu.palladium_raw": "粗钯", + "material.gtceu.paper": "纸", + "material.gtceu.paracetamol": "对乙酰氨基酚", + "material.gtceu.pcb_coolant": "多氯联苯冷却液 ", + "material.gtceu.pentlandite": "镍黄铁矿", + "material.gtceu.perlite": "珍珠岩", + "material.gtceu.phenol": "苯酚", + "material.gtceu.phosphate": "磷酸盐", + "material.gtceu.phosphoric_acid": "磷酸", + "material.gtceu.phosphorus": "磷", + "material.gtceu.phosphorus_pentoxide": "五氧化二磷", + "material.gtceu.phthalic_acid": "邻苯二甲酸", + "material.gtceu.pink_dye": "粉红色染料", + "material.gtceu.pitchblende": "沥青铀矿", + "material.gtceu.platinum": "铂", + "material.gtceu.platinum_group_sludge": "铂系矿泥", + "material.gtceu.platinum_raw": "粗铂", + "material.gtceu.platinum_sludge_residue": "铂泥渣", + "material.gtceu.plutonium": "钚", + "material.gtceu.plutonium_241": "钚-241", + "material.gtceu.pollucite": "铯榴石", + "material.gtceu.polonium": "钋", + "material.gtceu.polybenzimidazole": "聚苯并咪唑", + "material.gtceu.polycaprolactam": "聚己内酰胺", + "material.gtceu.polychlorinated_biphenyl": "多氯联苯", + "material.gtceu.polydimethylsiloxane": "聚二甲基硅氧烷", + "material.gtceu.polyethylene": "聚乙烯", + "material.gtceu.polyphenylene_sulfide": "聚苯硫醚", + "material.gtceu.polytetrafluoroethylene": "聚四氟乙烯", + "material.gtceu.polyvinyl_acetate": "聚乙酸乙烯酯", + "material.gtceu.polyvinyl_butyral": "聚乙烯醇缩丁醛", + "material.gtceu.polyvinyl_chloride": "聚氯乙烯", + "material.gtceu.potash": "钾碱", + "material.gtceu.potassium": "钾", + "material.gtceu.potassium_carbonate": "碳酸钾", + "material.gtceu.potassium_cyanide": "氰化钾", + "material.gtceu.potassium_dichromate": "重铬酸钾", + "material.gtceu.potassium_feldspar": "钾长石", + "material.gtceu.potassium_ferrocyanide": "亚铁氰化钾", + "material.gtceu.potassium_hydroxide": "氢氧化钾", + "material.gtceu.potassium_iodide": "碘化钾", + "material.gtceu.potassium_sulfate": "硫酸钾", + "material.gtceu.potin": "粗青铜合金", + "material.gtceu.powellite": "钼钙矿", + "material.gtceu.praseodymium": "镨", + "material.gtceu.promethium": "钷", + "material.gtceu.propane": "丙烷", + "material.gtceu.propene": "丙烯", + "material.gtceu.protactinium": "镤", + "material.gtceu.prussian_blue": "普鲁士蓝", + "material.gtceu.purple_dye": "紫色染料", + "material.gtceu.pyrite": "黄铁矿", + "material.gtceu.pyrochlore": "烧绿石", + "material.gtceu.pyrolusite": "软锰矿", + "material.gtceu.pyrope": "镁铝榴石", + "material.gtceu.quartz_sand": "石英砂", + "material.gtceu.quartzite": "石英岩", + "material.gtceu.quicklime": "生石灰", + "material.gtceu.rad_away": "消辐宁", + "material.gtceu.radium": "镭", + "material.gtceu.radon": "氡", + "material.gtceu.rare_earth": "稀土", + "material.gtceu.rarest_metal_mixture": "稀有金属混合物", + "material.gtceu.raw_gasoline": "粗汽油", + "material.gtceu.raw_growth_medium": "培养基原液", + "material.gtceu.raw_rubber": "生橡胶", + "material.gtceu.raw_styrene_butadiene_rubber": "生丁苯橡胶", + "material.gtceu.realgar": "雄黄", + "material.gtceu.red_alloy": "红色合金", + "material.gtceu.red_dye": "红色染料", + "material.gtceu.red_garnet": "红石榴石", + "material.gtceu.red_steel": "红钢", + "material.gtceu.redrock": "红岩", + "material.gtceu.redstone": "红石", + "material.gtceu.refinery_gas": "炼油气", + "material.gtceu.reinforced_epoxy_resin": "强化环氧树脂", + "material.gtceu.rhenium": "铼", + "material.gtceu.rhodium": "铑", + "material.gtceu.rhodium_plated_palladium": "镀铑钯", + "material.gtceu.rhodium_sulfate": "硫酸铑", + "material.gtceu.rock_salt": "岩盐", + "material.gtceu.rocket_fuel": "火箭燃料", + "material.gtceu.roentgenium": "𬬭", + "material.gtceu.rose_gold": "玫瑰金", + "material.gtceu.rtm_alloy": "钌钨钼合金", + "material.gtceu.rubber": "橡胶", + "material.gtceu.rubidium": "铷", + "material.gtceu.ruby": "红宝石", + "material.gtceu.ruby_slurry": "红宝石浆液", + "material.gtceu.ruridit": "钌铱合金", + "material.gtceu.ruthenium": "钌", + "material.gtceu.ruthenium_tetroxide": "四氧化钌", + "material.gtceu.ruthenium_trinium_americium_neutronate": "钌凯金镅中子素氧化物", + "material.gtceu.rutherfordium": "𬬻", + "material.gtceu.rutile": "金红石", + "material.gtceu.salt": "盐", + "material.gtceu.salt_water": "盐水", + "material.gtceu.saltpeter": "硝石", + "material.gtceu.samarium": "钐", + "material.gtceu.samarium_iron_arsenic_oxide": "钐铁砷氧化物", + "material.gtceu.sapphire": "蓝宝石", + "material.gtceu.sapphire_slurry": "蓝宝石浆液", + "material.gtceu.scandium": "钪", + "material.gtceu.scheelite": "白钨矿", + "material.gtceu.sculk": "幽匿", + "material.gtceu.seaborgium": "𬭳", + "material.gtceu.seed_oil": "种子油", + "material.gtceu.selenium": "硒", + "material.gtceu.severely_hydro_cracked_gas": "重度加氢裂化炼油气", + "material.gtceu.severely_hydro_cracked_heavy_fuel": "重度加氢裂化重燃油", + "material.gtceu.severely_hydro_cracked_light_fuel": "重度加氢裂化轻燃油", + "material.gtceu.severely_hydro_cracked_naphtha": "重度加氢裂化石脑油", + "material.gtceu.severely_steam_cracked_gas": "重度蒸汽裂化炼油气", + "material.gtceu.severely_steam_cracked_heavy_fuel": "重度蒸汽裂化重燃油", + "material.gtceu.severely_steam_cracked_light_fuel": "重度蒸汽裂化轻燃油", + "material.gtceu.severely_steam_cracked_naphtha": "重度蒸汽裂化石脑油", + "material.gtceu.silicon": "硅", + "material.gtceu.silicon_dioxide": "二氧化硅", + "material.gtceu.silicone_rubber": "硅橡胶", + "material.gtceu.silver": "银", + "material.gtceu.soapstone": "皂石", + "material.gtceu.soda_ash": "纯碱", + "material.gtceu.sodalite": "方钠石", + "material.gtceu.sodium": "钠", + "material.gtceu.sodium_bicarbonate": "碳酸氢钠", + "material.gtceu.sodium_bisulfate": "硫酸氢钠", + "material.gtceu.sodium_hydroxide": "氢氧化钠", + "material.gtceu.sodium_nitrite": "亚硝酸钠", + "material.gtceu.sodium_persulfate": "过硫酸钠", + "material.gtceu.sodium_potassium": "钠钾合金", + "material.gtceu.sodium_sulfide": "硫化钠", + "material.gtceu.soldering_alloy": "焊锡", + "material.gtceu.spessartine": "锰铝榴石", + "material.gtceu.sphalerite": "闪锌矿", + "material.gtceu.spodumene": "锂辉石", + "material.gtceu.stainless_steel": "不锈钢", + "material.gtceu.steam": "蒸汽", + "material.gtceu.steam_cracked_butadiene": "蒸汽裂化丁二烯", + "material.gtceu.steam_cracked_butane": "蒸汽裂化丁烷", + "material.gtceu.steam_cracked_butene": "蒸汽裂化丁烯", + "material.gtceu.steam_cracked_ethane": "蒸汽裂化乙烷", + "material.gtceu.steam_cracked_ethylene": "蒸汽裂化乙烯", + "material.gtceu.steam_cracked_propane": "蒸汽裂化丙烷", + "material.gtceu.steam_cracked_propene": "蒸汽裂化丙烯", + "material.gtceu.steel": "钢", + "material.gtceu.stellite_100": "司太立-100", + "material.gtceu.sterilized_growth_medium": "无菌培养基", + "material.gtceu.sterling_silver": "标准纯银", + "material.gtceu.stibnite": "辉锑矿", + "material.gtceu.stone": "石头", + "material.gtceu.strontium": "锶", + "material.gtceu.styrene": "苯乙烯", + "material.gtceu.styrene_butadiene_rubber": "丁苯橡胶", + "material.gtceu.sugar": "糖", + "material.gtceu.sulfur": "硫", + "material.gtceu.sulfur_dioxide": "二氧化硫", + "material.gtceu.sulfur_trioxide": "三氧化硫", + "material.gtceu.sulfuric_acid": "硫酸", + "material.gtceu.sulfuric_copper_solution": "硫酸铜溶液", + "material.gtceu.sulfuric_gas": "含硫炼油气", + "material.gtceu.sulfuric_heavy_fuel": "含硫重燃油", + "material.gtceu.sulfuric_light_fuel": "含硫轻燃油", + "material.gtceu.sulfuric_naphtha": "含硫石脑油", + "material.gtceu.sulfuric_nickel_solution": "硫酸镍溶液", + "material.gtceu.talc": "滑石", + "material.gtceu.tantalite": "钽铁矿", + "material.gtceu.tantalum": "钽", + "material.gtceu.tantalum_carbide": "碳化钽", + "material.gtceu.technetium": "锝", + "material.gtceu.tellurium": "碲", + "material.gtceu.tennessine": "鿬", + "material.gtceu.terbium": "铽", + "material.gtceu.tetrafluoroethylene": "四氟乙烯", + "material.gtceu.tetrahedrite": "黝铜矿", + "material.gtceu.tetranitromethane": "四硝基甲烷", + "material.gtceu.thallium": "铊", + "material.gtceu.thorium": "钍", + "material.gtceu.thulium": "铥", + "material.gtceu.tin": "锡", + "material.gtceu.tin_alloy": "锡铁合金", + "material.gtceu.titanium": "钛", + "material.gtceu.titanium_carbide": "碳化钛", + "material.gtceu.titanium_tetrachloride": "四氯化钛", + "material.gtceu.titanium_trifluoride": "三氟化钛", + "material.gtceu.titanium_tungsten_carbide": "碳化钛钨", + "material.gtceu.toluene": "甲苯", + "material.gtceu.topaz": "黄玉", + "material.gtceu.treated_wood": "防腐木", + "material.gtceu.tricalcium_phosphate": "磷酸三钙", + "material.gtceu.trinium": "凯金", + "material.gtceu.trinium_sulfide": "硫化凯金", + "material.gtceu.tritanium": "三钛", + "material.gtceu.tritium": "氚", + "material.gtceu.trona": "天然碱", + "material.gtceu.tungstate": "钨酸锂", + "material.gtceu.tungsten": "钨", + "material.gtceu.tungsten_carbide": "碳化钨", + "material.gtceu.tungsten_steel": "钨钢", + "material.gtceu.tungstic_acid": "钨酸", + "material.gtceu.ultimet": "哈氏合金", + "material.gtceu.uraninite": "晶质铀矿", + "material.gtceu.uranium": "铀", + "material.gtceu.uranium_235": "铀-235", + "material.gtceu.uranium_hexafluoride": "六氟化铀", + "material.gtceu.uranium_rhodium_dinaquadide": "铀铑硅岩合金", + "material.gtceu.uranium_triplatinum": "三铂化铀", + "material.gtceu.uu_matter": "UU物质", + "material.gtceu.uvarovite": "钙铬榴石", + "material.gtceu.vanadium": "钒", + "material.gtceu.vanadium_gallium": "钒镓合金", + "material.gtceu.vanadium_magnetite": "钒磁铁矿", + "material.gtceu.vanadium_steel": "钒钢", + "material.gtceu.vinyl_acetate": "乙酸乙烯酯", + "material.gtceu.vinyl_chloride": "氯乙烯", + "material.gtceu.water": "水", + "material.gtceu.watertight_steel": "防水钢", + "material.gtceu.wax": "蜡", + "material.gtceu.wheat": "小麦", + "material.gtceu.white_dye": "白色染料", + "material.gtceu.wood": "木", + "material.gtceu.wood_gas": "木煤气", + "material.gtceu.wood_tar": "木焦油", + "material.gtceu.wood_vinegar": "木醋酸", + "material.gtceu.wrought_iron": "锻铁", + "material.gtceu.wulfenite": "钼铅矿", + "material.gtceu.xenon": "氙", + "material.gtceu.yellow_dye": "黄色染料", + "material.gtceu.yellow_garnet": "黄石榴石", + "material.gtceu.yellow_limonite": "黄褐铁矿", + "material.gtceu.ytterbium": "镱", + "material.gtceu.yttrium": "钇", + "material.gtceu.yttrium_barium_cuprate": "钇钡铜氧化物", + "material.gtceu.zeolite": "沸石", + "material.gtceu.zeron_100": "赛龙-100", + "material.gtceu.zinc": "锌", + "material.gtceu.zinc_sulfide": "硫化锌", + "material.gtceu.zincite": "红锌矿", + "material.gtceu.zirconium": "锆", + "message.gtceu.new_veins.amount": "勘探到%d条新矿脉!", + "message.gtceu.new_veins.name": "勘探到%s!", + "metaarmor.energy_share.disable": "能量供给:工具充能已禁用", + "metaarmor.energy_share.enable": "能量供给:工具充能已启用", + "metaarmor.energy_share.error": "能量供给:§c能量不足,无法为工具充能!", + "metaarmor.energy_share.tooltip": "供能模式:%s", + "metaarmor.energy_share.tooltip.guide": "手持物品并潜行右击以更换模式", + "metaarmor.hud.energy_lvl": "能量存储:%s", + "metaarmor.hud.engine_enabled": "引擎已启用:%s", + "metaarmor.hud.fuel_lvl": "燃料存储:%s", + "metaarmor.hud.gravi_engine": "重力引擎:%s", + "metaarmor.hud.hover_mode": "悬浮模式:%s", + "metaarmor.hud.status.disabled": "§c关", + "metaarmor.hud.status.enabled": "§a开", + "metaarmor.jetpack.emergency_hover_mode": "紧急悬停模式已启用!", + "metaarmor.jetpack.flight.disable": "喷气背包:飞行已禁用", + "metaarmor.jetpack.flight.enable": "喷气背包:飞行已启用", + "metaarmor.jetpack.hover.disable": "喷气背包:悬停模式已禁用", + "metaarmor.jetpack.hover.enable": "喷气背包:悬停模式已启用", + "metaarmor.message.nightvision.disabled": "§b夜视:§c关闭", + "metaarmor.message.nightvision.enabled": "§b夜视:§a开启", + "metaarmor.message.nightvision.error": "§c能量不足!", + "metaarmor.nms.boosted_jump.disabled": "纳米肌体™套装:跳跃提升已禁用", + "metaarmor.nms.boosted_jump.enabled": "纳米肌体™套装:跳跃提升已启用", + "metaarmor.nms.nightvision.disabled": "纳米肌体™套装:夜视已禁用", + "metaarmor.nms.nightvision.enabled": "纳米肌体™套装:夜视已启用", + "metaarmor.nms.nightvision.error": "纳米肌体™套装:§c能量不足!", + "metaarmor.nms.share.disable": "纳米肌体™套装:供能模式已禁用", + "metaarmor.nms.share.enable": "纳米肌体™套装:供能模式已启用", + "metaarmor.nms.share.error": "纳米肌体™套装:§c能量不足,无法供能!", + "metaarmor.qts.nightvision.disabled": "夸克高科™套装:夜视已禁用", + "metaarmor.qts.nightvision.enabled": "夸克高科™套装:夜视已启用", + "metaarmor.qts.nightvision.error": "夸克高科™套装:§c能量不足!", + "metaarmor.qts.share.disable": "夸克高科™套装:供能模式已禁用", + "metaarmor.qts.share.enable": "夸克高科™套装:供能模式已启用", + "metaarmor.qts.share.error": "夸克高科™套装:§c能量不足,无法供能!", + "metaarmor.tooltip.autoeat": "使用物品栏中的食物补充饱食度", + "metaarmor.tooltip.breath": "补充氧气条", + "metaarmor.tooltip.burning": "扑灭身上的火焰", + "metaarmor.tooltip.falldamage": "消除摔落伤害", + "metaarmor.tooltip.freezing": "防止寒冷侵袭", + "metaarmor.tooltip.jump": "提升跳跃高度与距离", + "metaarmor.tooltip.potions": "消除负面效果", + "metaarmor.tooltip.speed": "提升奔跑速度", + "metaarmor.tooltip.stepassist": "提供步行辅助", + "metaitem.behavior.mode_switch.current_mode": "模式:%s", + "metaitem.behavior.mode_switch.mode_switched": "§e模式设置为:%s", + "metaitem.behavior.mode_switch.tooltip": "潜行右击以切换模式", + "metaitem.clipboard.tooltip": "可以在上面书写(无需任何书写工具)。手持右键在墙面上放置,潜行右击取下。", + "metaitem.cover.digital.mode.energy.disabled": "点击以启用能量模式", + "metaitem.cover.digital.mode.energy.enabled": "已启用能量模式", + "metaitem.cover.digital.mode.fluid.disabled": "点击以启用流体模式", + "metaitem.cover.digital.mode.fluid.enabled": "已启用流体模式", + "metaitem.cover.digital.mode.item.disabled": "点击以启用物品模式", + "metaitem.cover.digital.mode.item.enabled": "已启用物品模式", + "metaitem.cover.digital.mode.machine.disabled": "点击以启用机器模式", + "metaitem.cover.digital.mode.machine.enabled": "已启用机器模式", + "metaitem.cover.digital.mode.proxy.disabled": "点击以启用代理模式", + "metaitem.cover.digital.mode.proxy.enabled": "已启用代理模式", + "metaitem.cover.digital.tooltip": "§7作§f覆盖板§7时通过§f能量线缆f7将机器连接到§f中央监视器§7。", + "metaitem.cover.digital.wireless.tooltip.0": "§7作§f覆盖板§7时§f将机器§f无线§7接入§f中央监控器§7。", + "metaitem.cover.digital.wireless.tooltip.1": "§f手持右击中央监控器§7来进行远程绑定。", + "metaitem.cover.digital.wireless.tooltip.2": "§f手持并潜行右击§7则可移除现有绑定。", + "metaitem.cover.digital.wireless.tooltip.3": "§a绑定至:§f%s", + "metaitem.crushed.tooltip.purify": "右击盛有水的炼药锅以清洗", + "metaitem.debug_scanner.tooltip": "三录仪", + "metaitem.dust.tooltip.purify": "右击盛有水的炼药锅以清洗", + "metaitem.electric.discharge_mode.disabled": "§e释能模式已禁用", + "metaitem.electric.discharge_mode.enabled": "§e释能模式已启用", + "metaitem.electric.discharge_mode.tooltip": "潜行右击以开关释能模式", + "metaitem.generic.electric_item.stored": "%d/%d EU(%s)", + "metaitem.generic.electric_item.tooltip": "%d/%d EU - %s电压", + "metaitem.generic.fluid_container.tooltip": "%d/%dL %s", + "metaitem.int_circuit.configuration": "配置:%d", + "metaitem.liquid_fuel_jetpack.tooltip": "利用内燃发电机的燃料来提供推进动力", + "metaitem.machine_configuration.mode": "§a配置模式:§r%s", + "metaitem.plugin.proxy.tooltips.1": "(请将屏幕调整为代理模式)", + "metaitem.plugin.tooltips.1": "可为屏幕安装插件以实现更多功能。", + "metaitem.prospector.mode.bedrock_ore": "§b基岩矿石勘探模式§r", + "metaitem.prospector.mode.fluid": "§b流体勘探模式§r", + "metaitem.prospector.mode.ores": "§a矿石探勘模式§r", + "metaitem.prospector.tooltip.modes": "可用模式:", + "metaitem.prospector.tooltip.radius": "扫描半径:%s", + "metaitem.record.sus.tooltip": "§7Leonz - Among Us Drip", + "metaitem.terminal.tooltip": "工欲善其事,必先利其器。", + "metaitem.terminal.tooltip.creative": "§b创造模式", + "metaitem.terminal.tooltip.hardware": "§a硬件:%d", + "metaitem.tool.tooltip.durability": "§f耐久度:§a%d / %d", + "metaitem.tool.tooltip.primary_material": "§f材料:§e%s", + "metaitem.tool.tooltip.rotor.efficiency": "涡轮效率:§9%d%%", + "metaitem.tool.tooltip.rotor.power": "涡轮产能:§9%d%%", + "metaitem.tricorder_scanner.tooltip": "三录仪", + "monitor.gui.title.argb": "ARGB:", + "monitor.gui.title.back": "返回", + "monitor.gui.title.config": "配置", + "monitor.gui.title.plugin": "插件:", + "monitor.gui.title.scale": "尺寸:", + "monitor.gui.title.slot": "槽位:", + "ore.spawnlocation.name": "矿物生成信息", + "recipe.capability.eu.name": "GTCEu能量", + "recipe.capability.fluid.name": "流体", + "recipe.capability.item.name": "物品", + "recipe.condition.adjacent_block.tooltip": "水平相邻方块应为", + "recipe.condition.biome.tooltip": "生物群系:%s", + "recipe.condition.daytime.day.tooltip": "需要白天才能工作", + "recipe.condition.daytime.night.tooltip": "需要夜晚才能工作", + "recipe.condition.dimension.tooltip": "维度:%s", + "recipe.condition.dimension_marker.tooltip": "维度:", + "recipe.condition.eu_to_start.tooltip": "启动耗能:%d%s", + "recipe.condition.gamestage.locked_stage": "锁定阶段:%s", + "recipe.condition.gamestage.unlocked_stage": "解锁阶段:%s", + "recipe.condition.pos_y.tooltip": "Y轴高度:%d <= Y <= %d", + "recipe.condition.quest.completed.tooltip": "完成任务:%s", + "recipe.condition.quest.not_completed.tooltip": "未完成任务:%s", + "recipe.condition.rain.tooltip": "雨量:%d", + "recipe.condition.rock_breaker.tooltip": "水平相邻方块需要为流体源", + "recipe.condition.steam_vent.tooltip": "清洁蒸汽排气口", + "recipe.condition.thunder.tooltip": "雷级:%d", + "tagprefix.andesite": "安山岩%s矿石", + "tagprefix.basalt": "玄武岩%s矿石", + "tagprefix.blackstone": "黑石%s矿石", + "tagprefix.block": "%s块", + "tagprefix.bolt": "%s螺栓", + "tagprefix.buzz_saw_blade": "%s圆锯锯片", + "tagprefix.cable_gt_double": "2x%s线缆", + "tagprefix.cable_gt_hex": "16x%s线缆", + "tagprefix.cable_gt_octal": "8x%s线缆", + "tagprefix.cable_gt_quadruple": "4x%s线缆", + "tagprefix.cable_gt_single": "1x%s线缆", + "tagprefix.chainsaw_head": "%s链锯头", + "tagprefix.chipped_gem": "破碎的%s", + "tagprefix.crushed_ore": "粉碎%s矿石", + "tagprefix.deepslate": "深板岩%s矿石", + "tagprefix.dense_plate": "致密%s板", + "tagprefix.diorite": "闪长岩%s矿石", + "tagprefix.door": "%s门", + "tagprefix.double_plate": "双层%s板", + "tagprefix.drill_head": "%s钻头", + "tagprefix.dust": "%s粉", + "tagprefix.dye": "%s染料", + "tagprefix.endstone": "末地石%s矿石", + "tagprefix.exquisite_gem": "精致的%s", + "tagprefix.fence": "%s栅栏", + "tagprefix.fence_gate": "%s栅栏门", + "tagprefix.fine_wire": "细%s导线", + "tagprefix.flawed_gem": "有瑕的%s", + "tagprefix.flawless_gem": "无瑕的%s", + "tagprefix.foil": "%s箔", + "tagprefix.frame": "%s框架", + "tagprefix.gear": "%s齿轮", + "tagprefix.gem": "%s", + "tagprefix.granite": "花岗岩%s矿石", + "tagprefix.gravel": "沙砾%s矿石", + "tagprefix.hot_ingot": "热%s锭", + "tagprefix.impure_dust": "含杂%s粉", + "tagprefix.ingot": "%s锭", + "tagprefix.lens": "%s透镜", + "tagprefix.log": "%s原木", + "tagprefix.long_rod": "长%s杆", + "tagprefix.marble": "大理岩%s矿石", + "tagprefix.netherrack": "下界岩%s矿石", + "tagprefix.nugget": "%s粒", + "tagprefix.null": "%s Null", + "tagprefix.pipe_huge_fluid": "巨型%s流体管道", + "tagprefix.pipe_huge_item": "巨型%s物品管道", + "tagprefix.pipe_huge_restrictive": "巨型加固%s物品管道", + "tagprefix.pipe_large_fluid": "大型%s流体管道", + "tagprefix.pipe_large_item": "大型%s物品管道", + "tagprefix.pipe_large_restrictive": "大型加固%s物品管道", + "tagprefix.pipe_nonuple_fluid": "九重%s流体管道", + "tagprefix.pipe_normal_fluid": "普通%s流体管道", + "tagprefix.pipe_normal_item": "普通%s物品管道", + "tagprefix.pipe_normal_restrictive": "普通加固%s物品管道", + "tagprefix.pipe_quadruple_fluid": "四重%s流体管道", + "tagprefix.pipe_small_fluid": "小型%s流体管道", + "tagprefix.pipe_small_item": "小型%s物品管道", + "tagprefix.pipe_small_restrictive": "小型加固%s物品管道", + "tagprefix.pipe_tiny_fluid": "微型%s流体管道", + "tagprefix.planks": "%s木板", + "tagprefix.plate": "%s板", + "tagprefix.polymer.dense_plate": "致密%s片", + "tagprefix.polymer.double_plate": "双层%s片", + "tagprefix.polymer.dust": "%s末", + "tagprefix.polymer.foil": "薄%s片", + "tagprefix.polymer.ingot": "%s条", + "tagprefix.polymer.nugget": "%s颗粒", + "tagprefix.polymer.plate": "%s片", + "tagprefix.polymer.small_dust": "小堆%s末", + "tagprefix.polymer.tiny_dust": "小撮%s末", + "tagprefix.pure_dust": "洁净%s粉", + "tagprefix.purified_ore": "纯净%s矿石", + "tagprefix.raw": "粗%s", + "tagprefix.raw_ore_block": "粗%s块", + "tagprefix.red_granite": "红花岗岩%s矿石", + "tagprefix.red_sand": "红沙%s矿石", + "tagprefix.refined_ore": "精炼%s矿石", + "tagprefix.ring": "%s环", + "tagprefix.rock": "%s", + "tagprefix.rod": "%s杆", + "tagprefix.rotor": "%s转子", + "tagprefix.round": "%s滚珠", + "tagprefix.sand": "沙子%s矿石", + "tagprefix.screw": "%s螺丝", + "tagprefix.screwdriver_tip": "%s螺丝刀刀头", + "tagprefix.slab": "%s台阶", + "tagprefix.small_dust": "小堆%s粉", + "tagprefix.small_gear": "小型%s齿轮", + "tagprefix.small_spring": "小型%s弹簧", + "tagprefix.spring": "%s弹簧", + "tagprefix.stairs": "%s楼梯", + "tagprefix.stone": "%s矿石", + "tagprefix.surface_rock": "地表岩石(%s)", + "tagprefix.tiny_dust": "小撮%s粉", + "tagprefix.tuff": "凝灰岩%s矿石", + "tagprefix.turbine_blade": "%s涡轮扇叶", + "tagprefix.wire_cutter_head": "%s剪线钳钳头", + "tagprefix.wire_gt_double": "2x%s导线", + "tagprefix.wire_gt_hex": "16x%s导线", + "tagprefix.wire_gt_octal": "8x%s导线", + "tagprefix.wire_gt_quadruple": "4x%s导线", + "tagprefix.wire_gt_single": "1x%s导线", + "tagprefix.wrench_tip": "%s扳手顶", + "tile.gtceu.brittle_charcoal.name": "脆木炭块", + "tile.gtceu.brittle_charcoal.tooltip.0": "产自木炭堆点火器。", + "tile.gtceu.brittle_charcoal.tooltip.1": "挖掘可掉落木炭。", + "tile.gtceu.foam.name": "建筑泡沫", + "tile.gtceu.petrified_foam.name": "石化建筑泡沫", + "tile.gtceu.reinforced_foam.name": "强化建筑泡沫", + "tile.gtceu.reinforced_stone.name": "防爆石", + "tile.gtceu.seal.name": "密封方块" } diff --git a/src/main/resources/assets/gtceu/lang/zh_tw.json b/src/main/resources/assets/gtceu/lang/zh_tw.json index 33cfbf4490c..412cf332802 100644 --- a/src/main/resources/assets/gtceu/lang/zh_tw.json +++ b/src/main/resources/assets/gtceu/lang/zh_tw.json @@ -1,5526 +1,5544 @@ { - "behavior.data_item.assemblyline.data":"- §a%s", - "behavior.data_item.assemblyline.title":"§n裝配線結構資料:", - "behavior.item_magnet.disabled":"§c磁場已禁用", - "behavior.item_magnet.enabled":"§a磁場已啟用", - "behavior.portable_scanner.amp_per_sec":"最後一秒 %s A", - "behavior.portable_scanner.bedrock_fluid.amount":"流體儲量:%s %s - %s%%", - "behavior.portable_scanner.bedrock_fluid.amount_unknown":"流體儲量:%s%%", - "behavior.portable_scanner.bedrock_fluid.nothing":"流體儲量:§6無§r", - "behavior.portable_scanner.block_hardness":"硬度:%s;爆炸抗性:%s", - "behavior.portable_scanner.block_name":"名稱:%s;後設資料:%s", - "behavior.portable_scanner.debug_cpu_load":"%2$s刻內平均CPU負載約%1$sns,最差情況為%sns。", - "behavior.portable_scanner.debug_cpu_load_seconds":"負載秒數為%s秒。", - "behavior.portable_scanner.debug_lag_count":"已在伺服器中造成%s次延遲尖峰警告(任何大於%sms的情況)。", - "behavior.portable_scanner.debug_machine":"元ID:%s", - "behavior.portable_scanner.debug_machine_invalid":" 無效!", - "behavior.portable_scanner.debug_machine_invalid_null=invalid! MetaTileEntity =":" null!", - "behavior.portable_scanner.debug_machine_valid":"無效!", - "behavior.portable_scanner.divider":"=========================", - "behavior.portable_scanner.energy_container_in":"輸入上限:%s(%s)EU,%s A", - "behavior.portable_scanner.energy_container_out":"輸出上限:%s(%s)EU,%s A", - "behavior.portable_scanner.energy_container_storage":"電量:%s EU / %s EU", - "behavior.portable_scanner.environmental_hazard":"區域內的環境污染:%s§r - %s ppm", - "behavior.portable_scanner.environmental_hazard.nothing":"區域內的環境污染:§6無§r", - "behavior.portable_scanner.eu_per_sec":"最後一秒 %s EU/t", - "behavior.portable_scanner.guild_name":"§2公會名稱:%s§r", - "behavior.portable_scanner.local_hazard":"區域內的其他污染:%s§r - %s ppm", - "behavior.portable_scanner.local_hazard.nothing":"區域內的其他污染:§6無§r", - "behavior.portable_scanner.machine_disabled":"已停止。", - "behavior.portable_scanner.machine_front_facing":"控制器面向:%s", - "behavior.portable_scanner.machine_ownership":"§2機器所有者型別:%s§r", - "behavior.portable_scanner.machine_power_loss":"因斷電而停止工作。", - "behavior.portable_scanner.machine_progress":"處理進度/總計:%s / %s", - "behavior.portable_scanner.machine_upwards_facing":"控制器正面朝向:%s", - "behavior.portable_scanner.mode.caption":"顯示模式:%s", - "behavior.portable_scanner.mode.show_all_info":"顯示所有資訊", - "behavior.portable_scanner.mode.show_block_info":"顯示方塊資訊", - "behavior.portable_scanner.mode.show_electrical_info":"顯示電器資訊", - "behavior.portable_scanner.mode.show_environmental_info":"顯示環境資訊", - "behavior.portable_scanner.mode.show_machine_info":"顯示機器資訊", - "behavior.portable_scanner.mode.show_recipe_info":"顯示配方資訊", - "behavior.portable_scanner.muffled":"已靜音。", - "behavior.portable_scanner.multiblock_energy_input":"最大輸入:%s EU/t,電壓等級 %s", - "behavior.portable_scanner.multiblock_energy_output":"最大輸出:%s EU/t,電壓等級 %s", - "behavior.portable_scanner.multiblock_maintenance":"故障:%s", - "behavior.portable_scanner.multiblock_parallel":"平行處理:%s", - "behavior.portable_scanner.player_name":"§2玩家姓名:%s§r,§7玩家線上:%s§r", - "behavior.portable_scanner.position":"----- X:%s;Y:%s;Z:%s;D:%s -----", - "behavior.portable_scanner.state":"%s:%s", - "behavior.portable_scanner.tank":"流體儲量(槽位%s):%s mB / %s mB %s", - "behavior.portable_scanner.tanks_empty":"未儲存流體", - "behavior.portable_scanner.team_name":"§2團隊名稱:%s§r", - "behavior.portable_scanner.workable_consumption":"預計耗能:%s EU/t,%s A", - "behavior.portable_scanner.workable_production":"預計產能:%s EU/t,%s A", - "behavior.portable_scanner.workable_progress":"處理進度:%s s / %s s", - "behavior.portable_scanner.workable_stored_energy":"能量暫存:%s EU / %s EU", - "behavior.prospector.added_waypoint":"已建立路徑點:%s!", - "behavior.prospector.not_enough_energy":"能量不足!", - "behavior.toggle_energy_consumer.tooltip":"右擊切換模式", - "behaviour.boor.by":"透過%s", - "behaviour.hammer":"右擊機器以開啟或關閉消音功能", - "behaviour.hoe":"可以翻耕泥土", - "behaviour.lighter.fluid.tooltip":"可使用丙烷或丁烷來生火", - "behaviour.lighter.tooltip.description":"可以點火", - "behaviour.lighter.tooltip.usage":"潛行右擊以開/關", - "behaviour.lighter.uses":"剩餘次數:%d", - "behaviour.meta.machine.config.copy.tooltip":"§7潛行右擊以複製機器設定", - "behaviour.meta.machine.config.paste.tooltip":"§7右擊以貼上機器設定", - "behaviour.paintspray.black.tooltip":"可以將物品染成黑色", - "behaviour.paintspray.blue.tooltip":"可以將物品染成藍色", - "behaviour.paintspray.brown.tooltip":"可以將物品染成棕色", - "behaviour.paintspray.cyan.tooltip":"可以將物品染成青色", - "behaviour.paintspray.gray.tooltip":"可以將物品染成灰色", - "behaviour.paintspray.green.tooltip":"可以將物品染成綠色", - "behaviour.paintspray.light_blue.tooltip":"可以將物品染成淺藍色", - "behaviour.paintspray.light_gray.tooltip":"可以將物品染成淺灰色", - "behaviour.paintspray.lime.tooltip":"可以將物品染成淺綠色", - "behaviour.paintspray.magenta.tooltip":"可以將物品染成洋紅色", - "behaviour.paintspray.orange.tooltip":"可以將物品染成橙色", - "behaviour.paintspray.pink.tooltip":"可以將物品染成粉紅色", - "behaviour.paintspray.purple.tooltip":"可以將物品染成紫色", - "behaviour.paintspray.red.tooltip":"可以將物品染成紅色", - "behaviour.paintspray.solvent.tooltip":"可以移除已染色物品的顏色", - "behaviour.paintspray.uses":"剩餘次數:%d", - "behaviour.paintspray.white.tooltip":"可以將物品染成白色", - "behaviour.paintspray.yellow.tooltip":"可以將物品染成黃色", - "behaviour.prospecting":"適用於探礦", - "behaviour.setting.allow.input.from.output.tooltip":"%s-允許從輸出面輸入:%s", - "behaviour.setting.item_auto_output.tooltip":"%s-自動輸出:%s", - "behaviour.setting.muffled.tooltip":"靜音:%s", - "behaviour.setting.output.direction.tooltip":"%s-輸出面方向:%s", - "behaviour.soft_hammer":"用來開啟與關閉機器", - "behaviour.soft_hammer.disabled":"已暫停工作", - "behaviour.soft_hammer.enabled":"已恢復工作", - "behaviour.soft_hammer.idle_after_cycle":"當前週期結束後暫停機器", - "behaviour.wrench":"右擊以旋轉方塊", - "block.filter_casing.tooltip":"建立一個§a無塵§r環境", - "block.gtceu.acid_hazard_sign_block":"強酸危害警示方塊", - "block.gtceu.active_transformer":"有源變壓器", - "block.gtceu.advanced_computer_casing":"高階電腦外殼", - "block.gtceu.advanced_data_access_hatch":"高階資料訪問倉", - "block.gtceu.alloy_blast_smelter":"合金冶煉爐", - "block.gtceu.aluminium_crate":"鋁板條箱", - "block.gtceu.aluminium_drum":"鋁桶", - "block.gtceu.antimatter_hazard_sign_block":"反物質危害警示方塊", - "block.gtceu.assembly_line":"裝配線", - "block.gtceu.assembly_line_casing":"裝配線外殼", - "block.gtceu.assembly_line_grating":"裝配線格柵", - "block.gtceu.assembly_line_unit":"裝配線控制外殼", - "block.gtceu.atomic_casing":"原子機械方塊", - "block.gtceu.auto_maintenance_hatch":"自動維護倉", - "block.gtceu.bio_hazard_sign_block":"生化危害警示方塊", - "block.gtceu.black_borderless_lamp":"黑色無框燈", - "block.gtceu.black_lamp":"黑色燈", - "block.gtceu.black_large_metal_sheet":"黑色粗紋金屬板方塊", - "block.gtceu.black_metal_sheet":"黑色金屬板方塊", - "block.gtceu.black_studs":"黑色橡膠混凝土", - "block.gtceu.blue_borderless_lamp":"藍色無框燈", - "block.gtceu.blue_lamp":"藍色燈", - "block.gtceu.blue_large_metal_sheet":"藍色粗紋金屬板方塊", - "block.gtceu.blue_metal_sheet":"藍色金屬板方塊", - "block.gtceu.blue_studs":"藍色橡膠混凝土", - "block.gtceu.boss_hazard_sign_block":"Boss危害警示方塊", - "block.gtceu.brittle_charcoal":"脆木炭塊", - "block.gtceu.bronze_brick_casing":"磚砌青銅外殼", - "block.gtceu.bronze_crate":"青銅板條箱", - "block.gtceu.bronze_drum":"青銅桶", - "block.gtceu.bronze_firebox_casing":"青銅燃燒室", - "block.gtceu.bronze_gearbox":"青銅齒輪箱機械方塊", - "block.gtceu.bronze_large_boiler":"大型青銅鍋爐", - "block.gtceu.bronze_machine_casing":"青銅機器外殼", - "block.gtceu.bronze_pipe_casing":"青銅管道方塊", - "block.gtceu.brown_borderless_lamp":"棕色無框燈", - "block.gtceu.brown_lamp":"棕色燈", - "block.gtceu.brown_large_metal_sheet":"棕色粗紋金屬板方塊", - "block.gtceu.brown_metal_sheet":"棕色金屬板方塊", - "block.gtceu.brown_studs":"棕色橡膠混凝土", - "block.gtceu.casing_coke_bricks":"焦爐磚塊", - "block.gtceu.casing_grate":"柵格機械方塊", - "block.gtceu.causality_hazard_sign_block":"因果律危害警示方塊", - "block.gtceu.charcoal_pile_igniter":"木炭堆點火器", - "block.gtceu.chiseled_dark_concrete":"浮雕深色混凝土", - "block.gtceu.chiseled_light_concrete":"浮雕淺色混凝土", - "block.gtceu.chiseled_marble":"浮雕大理岩", - "block.gtceu.chiseled_red_granite":"浮雕紅花崗岩", - "block.gtceu.clean_machine_casing":"潔淨不鏽鋼機械方塊", - "block.gtceu.cleaning_maintenance_hatch":"無塵維護倉", - "block.gtceu.cleanroom":"無塵室", - "block.gtceu.cleanroom_glass":"無塵室玻璃", - "block.gtceu.coke_oven":"焦爐", - "block.gtceu.coke_oven_bricks":"焦爐磚塊", - "block.gtceu.coke_oven_hatch":"焦爐倉", - "block.gtceu.computation_receiver_hatch":"算力資料靶倉", - "block.gtceu.computation_transmitter_hatch":"算力資料來源倉", - "block.gtceu.computer_casing":"電腦外殼", - "block.gtceu.computer_heat_vent":"電腦散熱口", - "block.gtceu.configurable_maintenance_hatch":"可配置維護倉", - "block.gtceu.corrosion_proof_casing":"耐腐蝕機械方塊", - "block.gtceu.cracked_dark_concrete_bricks":"裂紋深色混凝土磚", - "block.gtceu.cracked_light_concrete_bricks":"裂紋淺色混凝土磚", - "block.gtceu.cracked_marble_bricks":"裂紋大理岩磚", - "block.gtceu.cracked_red_granite_bricks":"裂紋紅花崗岩磚", - "block.gtceu.cracker":"裂解機", - "block.gtceu.creative_chest":"創造模式箱子", - "block.gtceu.creative_computation_provider":"創造模式算力提供器", - "block.gtceu.creative_data_access_hatch":"創造模式資料訪問倉", - "block.gtceu.creative_energy":"創造模式能量單元", - "block.gtceu.creative_tank":"創造模式儲罐", - "block.gtceu.crushing_wheels":"粉碎輪", - "block.gtceu.cupronickel_coil_block":"白銅線圈方塊", - "block.gtceu.cyan_borderless_lamp":"青色無框燈", - "block.gtceu.cyan_lamp":"青色燈", - "block.gtceu.cyan_large_metal_sheet":"青色粗紋金屬板方塊", - "block.gtceu.cyan_metal_sheet":"青色金屬板方塊", - "block.gtceu.cyan_studs":"青色橡膠混凝土", - "block.gtceu.dark_concrete":"深色混凝土", - "block.gtceu.dark_concrete_bricks":"深色混凝土磚", - "block.gtceu.dark_concrete_cobblestone":"深色混凝土鵝卵石", - "block.gtceu.dark_concrete_small_tile":"深色混凝土小片磚瓦", - "block.gtceu.dark_concrete_tile":"深色混凝土磚瓦", - "block.gtceu.dark_concrete_windmill_a":"深色混凝土風車形磚瓦 A", - "block.gtceu.dark_concrete_windmill_b":"深色混凝土風車形磚瓦 B", - "block.gtceu.data_access_hatch":"資料訪問倉", - "block.gtceu.data_bank":"資料庫", - "block.gtceu.data_receiver_hatch":"光學資料靶倉", - "block.gtceu.data_transmitter_hatch":"光學資料來源倉", - "block.gtceu.distillation_tower":"蒸餾塔", - "block.gtceu.electric_blast_furnace":"電力高爐", - "block.gtceu.electrolytic_cell":"電解器", - "block.gtceu.empty_tier_i_battery":"空電容(Tier I)", - "block.gtceu.empty_tier_ii_battery":"空電容(Tier II)", - "block.gtceu.empty_tier_iii_battery":"空電容(Tier III)", - "block.gtceu.engine_intake_casing":"引擎進氣機械方塊", - "block.gtceu.ev_16a_energy_converter":"16§e安§r§5EV§r能量轉換器", - "block.gtceu.ev_1a_energy_converter":"1§e安§r§5EV§r能量轉換器", - "block.gtceu.ev_4a_energy_converter":"4§e安§r§5EV§r能量轉換器", - "block.gtceu.ev_8a_energy_converter":"8§e安§r§5EV§r能量轉換器", - "block.gtceu.ev_air_scrubber":"§5進階空氣淨化器 III§r", - "block.gtceu.ev_alloy_smelter":"§5進階合金爐 III§r", - "block.gtceu.ev_arc_furnace":"§5進階電弧爐 III§r", - "block.gtceu.ev_assembler":"§5進階組裝機 III§r", - "block.gtceu.ev_autoclave":"§5進階高壓釜 III§r", - "block.gtceu.ev_battery_buffer_16x":"16x§5超高壓§r電池箱(§5EV§r)", - "block.gtceu.ev_battery_buffer_4x":"4x§5超高壓§r電池箱(§5EV§r)", - "block.gtceu.ev_battery_buffer_8x":"8x§5超高壓§r電池箱(§5EV§r)", - "block.gtceu.ev_bedrock_ore_miner":"§5進階基岩採礦機 III§r", - "block.gtceu.ev_bender":"§5進階卷板機 III§r", - "block.gtceu.ev_block_breaker":"§5進階方塊破壞器 III§r", - "block.gtceu.ev_brewery":"§5進階釀造室 III§r", - "block.gtceu.ev_canner":"§5進階裝罐機 III§r", - "block.gtceu.ev_centrifuge":"§5進階離心機 III§r", - "block.gtceu.ev_charger_4x":"4x§5超高壓§r充電機(§5EV§r)", - "block.gtceu.ev_chemical_bath":"§5進階化學水浴機 III§r", - "block.gtceu.ev_chemical_reactor":"§5進階化學反應器 III§r", - "block.gtceu.ev_circuit_assembler":"§5進階電路組裝機 III§r", - "block.gtceu.ev_compressor":"§5進階壓縮機 III§r", - "block.gtceu.ev_cutter":"§5進階切割機 III§r", - "block.gtceu.ev_diode":"§5EV§r二極體", - "block.gtceu.ev_distillery":"§5進階蒸餾室 III§r", - "block.gtceu.ev_electric_furnace":"§5進階電爐 III§r", - "block.gtceu.ev_electrolyzer":"§5進階電解機 III§r", - "block.gtceu.ev_electromagnetic_separator":"§5進階電磁分離機 III§r", - "block.gtceu.ev_energy_input_hatch":"§5EV§r能量輸入倉", - "block.gtceu.ev_energy_input_hatch_16a":"16安§5EV§r能量輸入倉", - "block.gtceu.ev_energy_input_hatch_4a":"4安§5EV§r能量輸入倉 ", - "block.gtceu.ev_energy_output_hatch":"§5EV§r能量輸出倉", - "block.gtceu.ev_energy_output_hatch_16a":"16安§5EV§r能量輸出倉", - "block.gtceu.ev_energy_output_hatch_4a":"4安§5EV§r能量輸出倉", - "block.gtceu.ev_extractor":"§5進階提取機 III§r", - "block.gtceu.ev_extruder":"§5進階壓模器 III§r", - "block.gtceu.ev_fermenter":"§5進階發酵槽 III§r", - "block.gtceu.ev_fisher":"§5進階捕魚機 III§r", - "block.gtceu.ev_fluid_drilling_rig":"§5進階流體鑽機 III§r", - "block.gtceu.ev_fluid_heater":"§5進階流體加熱器 III§r", - "block.gtceu.ev_fluid_passthrough_hatch":"§5EV§r流體通行倉", - "block.gtceu.ev_fluid_solidifier":"§5進階流體固化器 III§r", - "block.gtceu.ev_forge_hammer":"§5進階鍛造錘 III§r", - "block.gtceu.ev_forming_press":"§5進階衝壓機床 III§r", - "block.gtceu.ev_gas_collector":"§5進階集氣室 III§r", - "block.gtceu.ev_hermetic_casing":"密封機械方塊 IV", - "block.gtceu.ev_input_bus":"§5EV§r輸入匯流排", - "block.gtceu.ev_input_hatch":"§5EV§r輸入倉", - "block.gtceu.ev_input_hatch_4x":"§5EV§r四重輸入倉", - "block.gtceu.ev_input_hatch_9x":"§5EV§r九重輸入倉", - "block.gtceu.ev_item_collector":"§5進階物品收集器 III§r", - "block.gtceu.ev_item_passthrough_hatch":"§5EV§r物品通行倉", - "block.gtceu.ev_lapotronic_battery":"§5EV§r蘭波頓電池", - "block.gtceu.ev_large_miner":"§5進階大型採礦機 III§r", - "block.gtceu.ev_laser_engraver":"§5進階雷射蝕刻機 III§r", - "block.gtceu.ev_lathe":"§5進階車床 III§r", - "block.gtceu.ev_macerator":"§5進階研磨機 III§r", - "block.gtceu.ev_machine_casing":"§5EV§r機械方塊", - "block.gtceu.ev_machine_hull":"§5EV§r機器外殼", - "block.gtceu.ev_mixer":"§5進階攪拌機 III§r", - "block.gtceu.ev_muffler_hatch":"§5EV§r消音倉", - "block.gtceu.ev_ore_washer":"§5進階洗礦廠 III§r", - "block.gtceu.ev_output_bus":"§5EV§r輸出匯流排", - "block.gtceu.ev_output_hatch":"§5EV§r輸出倉", - "block.gtceu.ev_output_hatch_4x":"§5EV§r四重輸出倉", - "block.gtceu.ev_output_hatch_9x":"§5EV§r九重輸出倉", - "block.gtceu.ev_packer":"§5進階打包機 III§r", - "block.gtceu.ev_polarizer":"§5進階兩極磁化機 III§r", - "block.gtceu.ev_pump":"§5進階泵 III§r", - "block.gtceu.ev_rock_crusher":"§5進階碎岩機 III§r", - "block.gtceu.ev_rotor_holder":"§5EV§r轉子支架", - "block.gtceu.ev_scanner":"§5進階掃描器 III§r", - "block.gtceu.ev_sifter":"§5進階篩選機 III§r", - "block.gtceu.ev_substation_input_hatch_64a":"64安§5EV§r變電能量輸入倉", - "block.gtceu.ev_substation_output_hatch_64a":"64安§5EV§r變電能量輸出倉", - "block.gtceu.ev_super_chest":"超級箱 IV", - "block.gtceu.ev_super_tank":"超級缸 IV", - "block.gtceu.ev_thermal_centrifuge":"§5進階熱力離心機 III§r", - "block.gtceu.ev_transformer_16a":"§5超高壓§r高能變壓器(§5EV§r)", - "block.gtceu.ev_transformer_1a":"§5超高壓§r變壓器(§5EV§r)", - "block.gtceu.ev_transformer_2a":"§5超高壓§r進階變壓器(§5EV§r)", - "block.gtceu.ev_transformer_4a":"§5超高壓§r高流變壓器(§5EV§r)", - "block.gtceu.ev_wiremill":"§5進階線材軋機 III§r", - "block.gtceu.ev_world_accelerator":"§5進階世界加速器 III§r", - "block.gtceu.evaporation_plant":"蒸發塔", - "block.gtceu.explosion_hazard_sign_block":"爆炸危害警示方塊", - "block.gtceu.explosive.breaking_tooltip":"破壞它會引爆火藥,潛行挖掘以重新拾取", - "block.gtceu.explosive.lighting_tooltip":"無法用紅石信號引爆", - "block.gtceu.extreme_combustion_engine":"極限內燃引擎", - "block.gtceu.extreme_engine_intake_casing":"極限引擎進氣機械方塊", - "block.gtceu.filter_casing":"過濾器機械方塊", - "block.gtceu.fire_hazard_sign_block":"易燃危害警示方塊", - "block.gtceu.firebricks":"耐火磚塊", - "block.gtceu.foam":"建築泡沫", - "block.gtceu.frost_hazard_sign_block":"低溫危害警示方塊", - "block.gtceu.frostproof_machine_casing":"鋁製防凍機械方塊", - "block.gtceu.fusion_casing":"核融合機械方塊", - "block.gtceu.fusion_casing_mk2":"核融合機械方塊 MK-II", - "block.gtceu.fusion_casing_mk3":"核融合機械方塊 MK-III", - "block.gtceu.fusion_coil":"核融合線圈方塊", - "block.gtceu.fusion_glass":"核融合玻璃", - "block.gtceu.gas_large_turbine":"大型燃氣渦輪", - "block.gtceu.generic_hazard_sign_block":"泛用危害警示方塊", - "block.gtceu.gold_drum":"金桶", - "block.gtceu.gray_borderless_lamp":"灰色無框燈", - "block.gtceu.gray_lamp":"灰色燈", - "block.gtceu.gray_large_metal_sheet":"灰色粗紋金屬板方塊", - "block.gtceu.gray_metal_sheet":"灰色金屬板方塊", - "block.gtceu.gray_studs":"灰色橡膠混凝土", - "block.gtceu.green_borderless_lamp":"綠色無框燈", - "block.gtceu.green_lamp":"綠色燈", - "block.gtceu.green_large_metal_sheet":"綠色粗紋金屬板方塊", - "block.gtceu.green_metal_sheet":"綠色金屬板方塊", - "block.gtceu.green_studs":"綠色橡膠混凝土", - "block.gtceu.gregification_hazard_sign_block":"格雷化危害警示方塊", - "block.gtceu.heat_vent":"散熱片", - "block.gtceu.heatproof_machine_casing":"殷鋼隔熱機械方塊", - "block.gtceu.high_performance_computation_array":"高效能運算陣列(HPCA)", - "block.gtceu.high_power_casing":"高能機械方塊", - "block.gtceu.high_pressure_hazard_sign_block":"高壓力危害警示方塊", - "block.gtceu.high_temperature_hazard_sign_block":"高溫危害警示方塊", - "block.gtceu.high_temperature_smelting_casing":"高溫冶煉機械方塊", - "block.gtceu.high_voltage_hazard_sign_block":"高壓電危害警示方塊", - "block.gtceu.hp_steam_alloy_smelter":"高壓蒸汽合金爐", - "block.gtceu.hp_steam_compressor":"高壓蒸汽壓縮機", - "block.gtceu.hp_steam_extractor":"高壓蒸汽提取機", - "block.gtceu.hp_steam_forge_hammer":"高壓蒸汽鍛造錘", - "block.gtceu.hp_steam_furnace":"高壓蒸汽熔爐", - "block.gtceu.hp_steam_liquid_boiler":"高壓蒸汽液體燃料鍋爐", - "block.gtceu.hp_steam_macerator":"高壓蒸汽研磨機", - "block.gtceu.hp_steam_miner":"高壓蒸汽採礦機", - "block.gtceu.hp_steam_rock_crusher":"高壓蒸汽碎岩機", - "block.gtceu.hp_steam_solar_boiler":"高壓蒸汽太陽能鍋爐", - "block.gtceu.hp_steam_solid_boiler":"高壓蒸汽固體燃料鍋爐", - "block.gtceu.hpca_active_cooler_component":"HPCA主動冷卻元件", - "block.gtceu.hpca_advanced_computation_component":"HPCA高階計算元件", - "block.gtceu.hpca_bridge_component":"HPCA橋接元件", - "block.gtceu.hpca_computation_component":"HPCA計算元件", - "block.gtceu.hpca_empty_component":"空HPCA元件", - "block.gtceu.hpca_heat_sink_component":"HPCA散熱元件", - "block.gtceu.hssg_coil_block":"高速鋼-G線圈方塊", - "block.gtceu.huge_duct_pipe":"巨型風管", - "block.gtceu.hv_16a_energy_converter":"16§e安§r§6HV§r能量轉換器", - "block.gtceu.hv_1a_energy_converter":"1§e安§r§6HV§r能量轉換器", - "block.gtceu.hv_4a_energy_converter":"4§e安§r§6HV§r能量轉換器", - "block.gtceu.hv_8a_energy_converter":"8§e安§r§6HV§r能量轉換器", - "block.gtceu.hv_air_scrubber":"§6進階空氣淨化器 II§r", - "block.gtceu.hv_alloy_smelter":"§6進階合金爐 II§r", - "block.gtceu.hv_arc_furnace":"§6進階電弧爐 II§r", - "block.gtceu.hv_assembler":"§6進階組裝機 II§r", - "block.gtceu.hv_autoclave":"§6進階高壓釜 II§r", - "block.gtceu.hv_battery_buffer_16x":"16x§6高壓§r電池箱(§6HV§r)", - "block.gtceu.hv_battery_buffer_4x":"4x§6高壓§r電池箱(§6HV§r)", - "block.gtceu.hv_battery_buffer_8x":"8x§6高壓§r電池箱(§6HV§r)", - "block.gtceu.hv_bedrock_ore_miner":"§6進階基岩採礦機 II§r", - "block.gtceu.hv_bender":"§6進階卷板機 II§r", - "block.gtceu.hv_block_breaker":"§6進階方塊破壞機 II§r", - "block.gtceu.hv_brewery":"§6進階釀造室 II§r", - "block.gtceu.hv_buffer":"§6進階緩衝器 II§r", - "block.gtceu.hv_canner":"§6進階裝罐機 II§r", - "block.gtceu.hv_centrifuge":"§6進階離心機 II§r", - "block.gtceu.hv_charger_4x":"4x§6高壓§r充電機(§6HV§r)", - "block.gtceu.hv_chemical_bath":"§6進階化學水浴機 II§r", - "block.gtceu.hv_chemical_reactor":"§6進階化學反應器 II§r", - "block.gtceu.hv_circuit_assembler":"§6進階電路組裝機 II§r", - "block.gtceu.hv_combustion":"§6進階內燃發電機 II§r", - "block.gtceu.hv_compressor":"§6進階壓縮機 II§r", - "block.gtceu.hv_cutter":"§6進階切割機 II§r", - "block.gtceu.hv_diode":"§6HV§r二極體", - "block.gtceu.hv_distillery":"§6進階蒸餾室 II§r", - "block.gtceu.hv_electric_furnace":"§6進階電爐 II§r", - "block.gtceu.hv_electrolyzer":"§6進階電解機 II§r", - "block.gtceu.hv_electromagnetic_separator":"§6進階電磁分離機 II§r", - "block.gtceu.hv_energy_input_hatch":"§6HV§r能量輸入倉", - "block.gtceu.hv_energy_output_hatch":"§6HV§r能量輸出倉", - "block.gtceu.hv_extractor":"§6進階提取機 II§r", - "block.gtceu.hv_extruder":"§6進階壓模器 II§r", - "block.gtceu.hv_fermenter":"§6進階發酵槽 II§r", - "block.gtceu.hv_fisher":"§6進階捕魚機 II§r", - "block.gtceu.hv_fluid_drilling_rig":"§6進階流體鑽機 II§r", - "block.gtceu.hv_fluid_heater":"§6進階流體加熱器 II§r", - "block.gtceu.hv_fluid_passthrough_hatch":"§6HV§r流體通行倉", - "block.gtceu.hv_fluid_solidifier":"§6進階流體固化器 II§r", - "block.gtceu.hv_forge_hammer":"§6進階鍛造錘 II§r", - "block.gtceu.hv_forming_press":"§6進階衝壓機床 II§r", - "block.gtceu.hv_gas_collector":"§6進階集氣室 II§r", - "block.gtceu.hv_gas_turbine":"§6進階燃氣輪機 II§r", - "block.gtceu.hv_hermetic_casing":"密封機械方塊 III", - "block.gtceu.hv_input_bus":"§6HV§r輸入匯流排", - "block.gtceu.hv_input_hatch":"§6HV§r輸入倉", - "block.gtceu.hv_item_collector":"§6進階物品收集器 II§r", - "block.gtceu.hv_item_passthrough_hatch":"§6HV§r物品通行倉", - "block.gtceu.hv_laser_engraver":"§6進階雷射蝕刻機 II§r", - "block.gtceu.hv_lathe":"§6進階車床 II§r", - "block.gtceu.hv_macerator":"§6進階研磨機 II§r", - "block.gtceu.hv_machine_casing":"§6HV§r機械方塊", - "block.gtceu.hv_machine_hull":"§6HV§r機器外殼", - "block.gtceu.hv_miner":"§6進階採礦機 II§r", - "block.gtceu.hv_mixer":"§6進階攪拌機 II§r", - "block.gtceu.hv_muffler_hatch":"§6HV§r消音倉", - "block.gtceu.hv_ore_washer":"§6進階洗礦廠 II§r", - "block.gtceu.hv_output_bus":"§6HV§r輸出匯流排", - "block.gtceu.hv_output_hatch":"§6HV§r輸出倉", - "block.gtceu.hv_packer":"§6進階打包機 II§r", - "block.gtceu.hv_polarizer":"§6進階兩極磁化機 II§r", - "block.gtceu.hv_pump":"§6進階泵 II§r", - "block.gtceu.hv_rock_crusher":"§6進階碎岩機 II§r", - "block.gtceu.hv_rotor_holder":"§6HV§r轉子支架", - "block.gtceu.hv_scanner":"§6進階掃描器 II§r", - "block.gtceu.hv_sifter":"§6進階篩選機 II§r", - "block.gtceu.hv_steam_turbine":"§6進階蒸汽輪機 II§r", - "block.gtceu.hv_super_chest":"超級箱 III", - "block.gtceu.hv_super_tank":"超級缸 III", - "block.gtceu.hv_thermal_centrifuge":"§6進階熱力離心機 II§r", - "block.gtceu.hv_transformer_16a":"§6高壓§r高能變壓器(§6HV§r)", - "block.gtceu.hv_transformer_1a":"§6高壓§r變壓器(§6HV§r)", - "block.gtceu.hv_transformer_2a":"§6高壓§r進階變壓器(§6HV§r)", - "block.gtceu.hv_transformer_4a":"§6高壓§r高流變壓器(§6HV§r)", - "block.gtceu.hv_wiremill":"§6進階線材軋機 II§r", - "block.gtceu.hv_world_accelerator":"§6進階世界加速器 II§r", - "block.gtceu.implosion_compressor":"聚爆壓縮機", - "block.gtceu.industrial_steam_casing":"工業蒸汽機械方塊", - "block.gtceu.industrial_tnt":"工業TNT", - "block.gtceu.inert_machine_casing":"聚四氟乙烯化學惰性機械方塊", - "block.gtceu.itnt.drops_tooltip":"爆炸範圍比TNT大得多,所有被摧毀的方塊都會掉落", - "block.gtceu.iv_1024a_laser_source_hatch":"1024§e安§r§9IV§r雷射源倉", - "block.gtceu.iv_1024a_laser_target_hatch":"1024§e安§r§9IV§r雷射靶倉", - "block.gtceu.iv_16a_energy_converter":"16§e安§r§9IV§r能量轉換器", - "block.gtceu.iv_1a_energy_converter":"1§e安§r§9IV§r能量轉換器", - "block.gtceu.iv_256a_laser_source_hatch":"256§e安§r§9IV§r雷射源倉", - "block.gtceu.iv_256a_laser_target_hatch":"256§e安§r§9IV§r雷射靶倉", - "block.gtceu.iv_4096a_laser_source_hatch":"4096§e安§r§9IV§r雷射源倉", - "block.gtceu.iv_4096a_laser_target_hatch":"4096§e安§r§9IV§r雷射靶倉", - "block.gtceu.iv_4a_energy_converter":"4§e安§r§9IV§r能量轉換器", - "block.gtceu.iv_8a_energy_converter":"8§e安§r§9IV§r能量轉換器", - "block.gtceu.iv_alloy_smelter":"§9精英合金爐§r", - "block.gtceu.iv_arc_furnace":"§9精英電弧爐§r", - "block.gtceu.iv_assembler":"§9精英組裝機§r", - "block.gtceu.iv_autoclave":"§9精英高壓釜§r", - "block.gtceu.iv_battery_buffer_16x":"16x§9強導壓§r電池箱(§9IV§r)", - "block.gtceu.iv_battery_buffer_4x":"4x§9強導壓§r電池箱(§9IV§r)", - "block.gtceu.iv_battery_buffer_8x":"8x§9強導壓§r電池箱(§9IV§r)", - "block.gtceu.iv_bender":"§9精英卷板機§r", - "block.gtceu.iv_brewery":"§9精英釀造室§r", - "block.gtceu.iv_canner":"§9精英裝罐機§r", - "block.gtceu.iv_centrifuge":"§9精英離心機§r", - "block.gtceu.iv_charger_4x":"4x§9強導壓§r充電機(§9IV§r)", - "block.gtceu.iv_chemical_bath":"§9精英化學水浴機§r", - "block.gtceu.iv_chemical_reactor":"§9精英化學反應器§r", - "block.gtceu.iv_circuit_assembler":"§9精英電路組裝機§r", - "block.gtceu.iv_compressor":"§9精英壓縮機§r", - "block.gtceu.iv_cutter":"§9精英切割機§r", - "block.gtceu.iv_diode":"§9IV§r二極體", - "block.gtceu.iv_distillery":"§9精英蒸餾室§r", - "block.gtceu.iv_electric_furnace":"§9精英電爐§r", - "block.gtceu.iv_electrolyzer":"§9精英電解機§r", - "block.gtceu.iv_electromagnetic_separator":"§9精英電磁分離機§r", - "block.gtceu.iv_energy_input_hatch":"§9IV§r能量輸入倉", - "block.gtceu.iv_energy_input_hatch_16a":"16安§9IV§r能量輸入倉", - "block.gtceu.iv_energy_input_hatch_4a":"4安§9IV§r能量輸入倉", - "block.gtceu.iv_energy_output_hatch":"§9IV§r能量輸出倉", - "block.gtceu.iv_energy_output_hatch_16a":"16安§9IV§r能量輸出倉", - "block.gtceu.iv_energy_output_hatch_4a":"4安§9IV§r能量輸出倉", - "block.gtceu.iv_extractor":"§9精英提取機§r", - "block.gtceu.iv_extruder":"§9精英壓模器§r", - "block.gtceu.iv_fermenter":"§9精英發酵槽§r", - "block.gtceu.iv_fisher":"§9精英捕魚機§r", - "block.gtceu.iv_fluid_heater":"§9精英流體加熱器§r", - "block.gtceu.iv_fluid_passthrough_hatch":"§9IV§r流體通行倉", - "block.gtceu.iv_fluid_solidifier":"§9精英流體固化器§r", - "block.gtceu.iv_forge_hammer":"§9精英鍛造錘§r", - "block.gtceu.iv_forming_press":"§9精英衝壓機床§r", - "block.gtceu.iv_gas_collector":"§9精英集氣室§r", - "block.gtceu.iv_hermetic_casing":"密封機械方塊 V", - "block.gtceu.iv_input_bus":"§9IV§r輸入匯流排", - "block.gtceu.iv_input_hatch":"§9IV§r輸入倉", - "block.gtceu.iv_input_hatch_4x":"§9IV§r四重輸入倉", - "block.gtceu.iv_input_hatch_9x":"§9IV§r九重輸入倉", - "block.gtceu.iv_item_passthrough_hatch":"§9IV§r物品通行倉", - "block.gtceu.iv_lapotronic_battery":"§9IV§r蘭波頓電池", - "block.gtceu.iv_large_miner":"§9精英大型採礦機§r", - "block.gtceu.iv_laser_engraver":"§9精英雷射蝕刻機§r", - "block.gtceu.iv_lathe":"§9精英車床§r", - "block.gtceu.iv_macerator":"§9精英研磨機§r", - "block.gtceu.iv_machine_casing":"§9IV§r機械方塊", - "block.gtceu.iv_machine_hull":"§9IV§r機器外殼", - "block.gtceu.iv_mixer":"§9精英攪拌機§r", - "block.gtceu.iv_muffler_hatch":"§9IV§r消音倉", - "block.gtceu.iv_ore_washer":"§9精英洗礦廠§r", - "block.gtceu.iv_output_bus":"§9IV§r輸出匯流排", - "block.gtceu.iv_output_hatch":"§9IV§r輸出倉", - "block.gtceu.iv_output_hatch_4x":"§9IV§r四重輸出倉", - "block.gtceu.iv_output_hatch_9x":"§9IV§r九重輸出倉", - "block.gtceu.iv_packer":"§9精英打包機§r", - "block.gtceu.iv_parallel_hatch":"§9IV§r平行控制倉", - "block.gtceu.iv_polarizer":"§9精英兩極磁化機§r", - "block.gtceu.iv_quantum_chest":"量子箱 V", - "block.gtceu.iv_quantum_tank":"量子缸 V", - "block.gtceu.iv_rock_crusher":"§9精英碎岩機§r", - "block.gtceu.iv_rotor_holder":"§9IV§r轉子支架", - "block.gtceu.iv_scanner":"§9精英掃描器§r", - "block.gtceu.iv_sifter":"§9精英篩選機§r", - "block.gtceu.iv_substation_input_hatch_64a":"64安§9IV§r變電能量輸入倉", - "block.gtceu.iv_substation_output_hatch_64a":"64安§9IV§r變電能量輸出倉", - "block.gtceu.iv_thermal_centrifuge":"§9精英熱力離心機§r", - "block.gtceu.iv_transformer_16a":"§9強導壓§r高能變壓器(§9IV§r)", - "block.gtceu.iv_transformer_1a":"§9強導壓§r變壓器(§9IV§r)", - "block.gtceu.iv_transformer_2a":"§9強導壓§r進階變壓器(§9IV§r)", - "block.gtceu.iv_transformer_4a":"§9強導壓§r高流變壓器(§9IV§r)", - "block.gtceu.iv_wiremill":"§9精英線材軋機§r", - "block.gtceu.iv_world_accelerator":"§9精英世界加速器§r", - "block.gtceu.kanthal_coil_block":"坎塔爾合金線圈方塊", - "block.gtceu.laminated_glass":"夾層玻璃", - "block.gtceu.lamp.tooltip.inverted":"反相", - "block.gtceu.lamp.tooltip.no_bloom":"無泛光", - "block.gtceu.lamp.tooltip.no_light":"無光照", - "block.gtceu.large_arc_smelter":"大型電弧爐", - "block.gtceu.large_assembler":"大型組裝廠", - "block.gtceu.large_autoclave":"大型高壓結晶室", - "block.gtceu.large_brewer":"大型釀造廠", - "block.gtceu.large_centrifuge":"大型離心機組", - "block.gtceu.large_chemical_bath":"大型化學水浴機", - "block.gtceu.large_chemical_reactor":"大型化學反應器", - "block.gtceu.large_circuit_assembler":"大型電路組裝設施", - "block.gtceu.large_combustion_engine":"大型內燃引擎", - "block.gtceu.large_cutter":"大型切割機", - "block.gtceu.large_distillery":"大型分餾蒸餾廠", - "block.gtceu.large_duct_pipe":"大型風管", - "block.gtceu.large_electrolyzer":"大型電解槽", - "block.gtceu.large_electromagnet":"大型電磁工廠", - "block.gtceu.large_engraving_laser":"大型雷射蝕刻機", - "block.gtceu.large_extractor":"大型提取機", - "block.gtceu.large_extruder":"大型壓模機", - "block.gtceu.large_maceration_tower":"大型研磨塔", - "block.gtceu.large_material_press":"大型擠壓機", - "block.gtceu.large_mixer":"大型攪拌罐", - "block.gtceu.large_packer":"大型打包機", - "block.gtceu.large_scale_assembler_casing":"大型組裝機機械方塊", - "block.gtceu.large_sifting_funnel":"大型篩選漏斗", - "block.gtceu.large_solidifier":"大型固化陣列", - "block.gtceu.large_wiremill":"大型線材工廠", - "block.gtceu.laser_hazard_sign_block":"雷射危害警示方塊", - "block.gtceu.laser_safe_engraving_casing":"雷射安全機械方塊", - "block.gtceu.light_blue_borderless_lamp":"淺藍色無框燈", - "block.gtceu.light_blue_lamp":"淺藍色燈", - "block.gtceu.light_blue_large_metal_sheet":"淺藍色粗紋金屬板方塊", - "block.gtceu.light_blue_metal_sheet":"淺藍色金屬板方塊", - "block.gtceu.light_blue_studs":"淺藍色橡膠混凝土", - "block.gtceu.light_concrete":"淺色混凝土", - "block.gtceu.light_concrete_bricks":"淺色混凝土磚", - "block.gtceu.light_concrete_cobblestone":"淺色混凝土鵝卵石", - "block.gtceu.light_concrete_small_tile":"淺色混凝土小片磚瓦", - "block.gtceu.light_concrete_tile":"淺色混凝土磚瓦", - "block.gtceu.light_concrete_windmill_a":"淺色混凝土風車形磚瓦 A", - "block.gtceu.light_concrete_windmill_b":"淺色混凝土風車形磚瓦 B", - "block.gtceu.light_gray_borderless_lamp":"淺灰色無框燈", - "block.gtceu.light_gray_lamp":"淺灰色燈", - "block.gtceu.light_gray_large_metal_sheet":"淺灰色粗紋金屬板方塊", - "block.gtceu.light_gray_metal_sheet":"淺灰色金屬板方塊", - "block.gtceu.light_gray_studs":"淺灰色橡膠混凝土", - "block.gtceu.lime_borderless_lamp":"淺綠色無框燈", - "block.gtceu.lime_lamp":"淺綠色燈", - "block.gtceu.lime_large_metal_sheet":"淺綠色粗紋金屬板方塊", - "block.gtceu.lime_metal_sheet":"淺綠色金屬板方塊", - "block.gtceu.lime_studs":"淺綠色橡膠混凝土", - "block.gtceu.long_distance_fluid_pipeline":"長距離流體管道", - "block.gtceu.long_distance_fluid_pipeline_endpoint":"長距離流體管道介面", - "block.gtceu.long_distance_item_pipeline":"長距離物品管道", - "block.gtceu.long_distance_item_pipeline_endpoint":"長距離物品管道介面", - "block.gtceu.long_distance_item_pipeline_input_endpoint":"輸入介面", - "block.gtceu.long_distance_item_pipeline_input_pos":" - 輸入:%s", - "block.gtceu.long_distance_item_pipeline_network_header":"網路:", - "block.gtceu.long_distance_item_pipeline_no_network":"找不到網路", - "block.gtceu.long_distance_item_pipeline_output_endpoint":"輸出介面", - "block.gtceu.long_distance_item_pipeline_output_pos":" - 輸出:%s", - "block.gtceu.long_distance_item_pipeline_pipe_count":" - 管道:%s", - "block.gtceu.lp_steam_alloy_smelter":"低壓蒸汽合金爐", - "block.gtceu.lp_steam_compressor":"低壓蒸汽壓縮機", - "block.gtceu.lp_steam_extractor":"低壓蒸汽提取機", - "block.gtceu.lp_steam_forge_hammer":"低壓蒸汽鍛造錘", - "block.gtceu.lp_steam_furnace":"低壓蒸汽熔爐", - "block.gtceu.lp_steam_liquid_boiler":"低壓蒸汽液體燃料鍋爐", - "block.gtceu.lp_steam_macerator":"低壓蒸汽研磨機", - "block.gtceu.lp_steam_miner":"低壓蒸汽採礦機", - "block.gtceu.lp_steam_rock_crusher":"低壓蒸汽碎岩機", - "block.gtceu.lp_steam_solar_boiler":"低壓蒸汽太陽能鍋爐", - "block.gtceu.lp_steam_solid_boiler":"低壓蒸汽固體燃料鍋爐", - "block.gtceu.luv_1024a_laser_source_hatch":"1024§e安§r§dLuV§r雷射源倉", - "block.gtceu.luv_1024a_laser_target_hatch":"1024§e安§r§dLuV§r雷射靶倉", - "block.gtceu.luv_16a_energy_converter":"16§e安§r§dLuV§r能量轉換器", - "block.gtceu.luv_1a_energy_converter":"1§e安§r§dLuV§r能量轉換器", - "block.gtceu.luv_256a_laser_source_hatch":"256§e安§r§dLuV§r雷射源倉", - "block.gtceu.luv_256a_laser_target_hatch":"256§e安§r§dLuV§r雷射靶倉", - "block.gtceu.luv_4096a_laser_source_hatch":"4096§e安§r§dLuV§r雷射源倉", - "block.gtceu.luv_4096a_laser_target_hatch":"4096§e安§r§dLuV§r雷射靶倉", - "block.gtceu.luv_4a_energy_converter":"4§e安§r§dLuV§r能量轉換器", - "block.gtceu.luv_8a_energy_converter":"8§e安§r§dLuV§r能量轉換器", - "block.gtceu.luv_alloy_smelter":"§d精英合金爐 II§r", - "block.gtceu.luv_arc_furnace":"§d精英電弧爐 II§r", - "block.gtceu.luv_assembler":"§d精英組裝機 II§r", - "block.gtceu.luv_autoclave":"§d精英高壓釜 II§r", - "block.gtceu.luv_battery_buffer_16x":"16x§d劇差壓§r電池箱(§dLuV§r)", - "block.gtceu.luv_battery_buffer_4x":"4x§d劇差壓§r電池箱(§dLuV§r)", - "block.gtceu.luv_battery_buffer_8x":"8x§d劇差壓§r電池箱(§dLuV§r)", - "block.gtceu.luv_bender":"§d精英卷板機 II§r", - "block.gtceu.luv_brewery":"§d精英釀造室 II§r", - "block.gtceu.luv_canner":"§d精英裝罐機 II§r", - "block.gtceu.luv_centrifuge":"§d精英離心機 II§r", - "block.gtceu.luv_charger_4x":"4x§d劇差壓§r充電機(§dLuV§r)", - "block.gtceu.luv_chemical_bath":"§d精英化學水浴機 II§r", - "block.gtceu.luv_chemical_reactor":"§d精英化學反應器 II§r", - "block.gtceu.luv_circuit_assembler":"§d精英電路組裝機 II§r", - "block.gtceu.luv_compressor":"§d精英壓縮機 II§r", - "block.gtceu.luv_cutter":"§d精英切割機 II§r", - "block.gtceu.luv_diode":"§dLuV§r二極體", - "block.gtceu.luv_distillery":"§d精英蒸餾室 II§r", - "block.gtceu.luv_dual_input_hatch":"§dLuV§r兩用輸入倉", - "block.gtceu.luv_dual_output_hatch":"§dLuV§r兩用輸出倉", - "block.gtceu.luv_electric_furnace":"§d精英電爐 II§r", - "block.gtceu.luv_electrolyzer":"§d精英電解機 II§r", - "block.gtceu.luv_electromagnetic_separator":"§d精英電磁分離機 II§r", - "block.gtceu.luv_energy_input_hatch":"§dLuV§r能量輸入倉", - "block.gtceu.luv_energy_input_hatch_16a":"16安§dLuV§r能量輸入倉", - "block.gtceu.luv_energy_input_hatch_4a":"4安§dLuV§r能量輸入倉", - "block.gtceu.luv_energy_output_hatch":"§dLuV§r能量輸出倉", - "block.gtceu.luv_energy_output_hatch_16a":"16安§dLuV§r能量輸出倉", - "block.gtceu.luv_energy_output_hatch_4a":"4安§dLuV§r能量輸出倉", - "block.gtceu.luv_extractor":"§d精英提取機 II§r", - "block.gtceu.luv_extruder":"§d精英壓模器 II§r", - "block.gtceu.luv_fermenter":"§d精英發酵槽 II§r", - "block.gtceu.luv_fisher":"§d精英捕魚機 II§r", - "block.gtceu.luv_fluid_heater":"§d精英流體加熱器 II§r", - "block.gtceu.luv_fluid_passthrough_hatch":"§dLuV§r流體通行倉", - "block.gtceu.luv_fluid_solidifier":"§d精英流體固化器 II§r", - "block.gtceu.luv_forge_hammer":"§d精英鍛造錘 II§r", - "block.gtceu.luv_forming_press":"§d精英衝壓機床 II§r", - "block.gtceu.luv_fusion_reactor":"核融合反應爐控制電腦 MK I", - "block.gtceu.luv_gas_collector":"§d精英集氣室 II§r", - "block.gtceu.luv_hermetic_casing":"密封機械方塊 VI", - "block.gtceu.luv_input_bus":"§dLuV§r輸入匯流排", - "block.gtceu.luv_input_hatch":"§dLuV§r輸入倉", - "block.gtceu.luv_input_hatch_4x":"§dLuV§r四重輸入倉", - "block.gtceu.luv_input_hatch_9x":"§dLuV§r九重輸入倉", - "block.gtceu.luv_item_passthrough_hatch":"§dLuV§r物品通行倉", - "block.gtceu.luv_lapotronic_battery":"§dLuV§r蘭波頓電池", - "block.gtceu.luv_large_miner":"§d精英大型採礦機 II§r", - "block.gtceu.luv_laser_engraver":"§d精英雷射蝕刻機 II§r", - "block.gtceu.luv_lathe":"§d精英車床 II§r", - "block.gtceu.luv_macerator":"§d精英研磨機 II§r", - "block.gtceu.luv_machine_casing":"§dLuV§r機械方塊", - "block.gtceu.luv_machine_hull":"§dLuV§r機器外殼", - "block.gtceu.luv_mixer":"§d精英攪拌機 II§r", - "block.gtceu.luv_muffler_hatch":"§dLuV§r消音倉", - "block.gtceu.luv_ore_washer":"§d精英洗礦廠 II§r", - "block.gtceu.luv_output_bus":"§dLuV§r輸出匯流排", - "block.gtceu.luv_output_hatch":"§dLuV§r輸出倉", - "block.gtceu.luv_output_hatch_4x":"§dLuV§r四重輸出倉", - "block.gtceu.luv_output_hatch_9x":"§dLuV§r九重輸出倉", - "block.gtceu.luv_packer":"§d精英打包機 II§r", - "block.gtceu.luv_parallel_hatch":"§dLuV§r平行控制倉", - "block.gtceu.luv_polarizer":"§d精英兩極磁化機 II§r", - "block.gtceu.luv_quantum_chest":"量子箱 VI", - "block.gtceu.luv_quantum_tank":"量子缸 VI", - "block.gtceu.luv_rock_crusher":"§d精英碎岩機 II§r", - "block.gtceu.luv_rotor_holder":"§dLuV§r轉子支架", - "block.gtceu.luv_scanner":"§d精英掃描器 II§r", - "block.gtceu.luv_sifter":"§d精英篩選機 II§r", - "block.gtceu.luv_substation_input_hatch_64a":"64安§dLuV§r變電能量輸入倉", - "block.gtceu.luv_substation_output_hatch_64a":"64安§dLuV§r變電能量輸出倉", - "block.gtceu.luv_thermal_centrifuge":"§d精英熱力離心機 II§r", - "block.gtceu.luv_transformer_16a":"§d劇差壓§r高能變壓器(§dLuV§r)", - "block.gtceu.luv_transformer_1a":"§d劇差壓§r變壓器(§dLuV§r)", - "block.gtceu.luv_transformer_2a":"§d劇差壓§r進階變壓器(§dLuV§r)", - "block.gtceu.luv_transformer_4a":"§d劇差壓§r高流變壓器(§dLuV§r)", - "block.gtceu.luv_wiremill":"§d精英線材軋機 II§r", - "block.gtceu.luv_world_accelerator":"§d精英世界加速器 II§r", - "block.gtceu.lv_16a_energy_converter":"16§e安§r§7LV§r能量轉換器", - "block.gtceu.lv_1a_energy_converter":"1§e安§r§7LV§r能量轉換器", - "block.gtceu.lv_4a_energy_converter":"4§e安§r§7LV§r能量轉換器", - "block.gtceu.lv_8a_energy_converter":"8§e安§r§7LV§r能量轉換器", - "block.gtceu.lv_air_scrubber":"基礎空氣淨化器§r", - "block.gtceu.lv_alloy_smelter":"基礎合金爐§r", - "block.gtceu.lv_arc_furnace":"基礎電弧爐§r", - "block.gtceu.lv_assembler":"基礎組裝機§r", - "block.gtceu.lv_autoclave":"基礎高壓釜§r", - "block.gtceu.lv_battery_buffer_16x":"16x§7低壓§r電池箱(§7LV§r)", - "block.gtceu.lv_battery_buffer_4x":"4x§7低壓§r電池箱(§7LV§r)", - "block.gtceu.lv_battery_buffer_8x":"8x§7低壓§r電池箱(§7LV§r)", - "block.gtceu.lv_bender":"基礎卷板機§r", - "block.gtceu.lv_block_breaker":"基礎方塊破壞器§r", - "block.gtceu.lv_brewery":"基礎釀造室§r", - "block.gtceu.lv_buffer":"基礎緩衝器§r", - "block.gtceu.lv_canner":"基礎裝罐機§r", - "block.gtceu.lv_centrifuge":"基礎離心機§r", - "block.gtceu.lv_charger_4x":"4x§7低壓§r充電機(§7LV§r)", - "block.gtceu.lv_chemical_bath":"基礎化學水浴機§r", - "block.gtceu.lv_chemical_reactor":"基礎化學反應器§r", - "block.gtceu.lv_circuit_assembler":"基礎電路組裝機§r", - "block.gtceu.lv_combustion":"基礎內燃發電機§r", - "block.gtceu.lv_compressor":"基礎壓縮機§r", - "block.gtceu.lv_cutter":"基礎切割機§r", - "block.gtceu.lv_diode":"§7LV§r二極體", - "block.gtceu.lv_distillery":"基礎蒸餾室§r", - "block.gtceu.lv_electric_furnace":"基礎電爐§r", - "block.gtceu.lv_electrolyzer":"基礎電解機§r", - "block.gtceu.lv_electromagnetic_separator":"基礎電磁分離機§r", - "block.gtceu.lv_energy_input_hatch":"§7LV§r能量輸入倉", - "block.gtceu.lv_energy_output_hatch":"§7LV§r能量輸出倉", - "block.gtceu.lv_extractor":"基礎提取機§r", - "block.gtceu.lv_extruder":"基礎壓模器§r", - "block.gtceu.lv_fermenter":"基礎發酵槽§r", - "block.gtceu.lv_fisher":"基礎捕魚機§r", - "block.gtceu.lv_fluid_heater":"基礎流體加熱器§r", - "block.gtceu.lv_fluid_passthrough_hatch":"§7LV§r流體通行倉", - "block.gtceu.lv_fluid_solidifier":"基礎流體固化器§r", - "block.gtceu.lv_forge_hammer":"基礎鍛造錘§r", - "block.gtceu.lv_forming_press":"基礎衝壓機床§r", - "block.gtceu.lv_gas_collector":"基礎集氣室§r", - "block.gtceu.lv_gas_turbine":"基礎燃氣輪機§r", - "block.gtceu.lv_hermetic_casing":"密封機械方塊 I", - "block.gtceu.lv_input_bus":"§7LV§r輸入匯流排", - "block.gtceu.lv_input_hatch":"§7LV§r輸入倉", - "block.gtceu.lv_item_collector":"基礎物品收集器§r", - "block.gtceu.lv_item_passthrough_hatch":"§7LV§r物品通行倉", - "block.gtceu.lv_laser_engraver":"基礎雷射蝕刻機§r", - "block.gtceu.lv_lathe":"基礎車床§r", - "block.gtceu.lv_macerator":"基礎研磨機§r", - "block.gtceu.lv_machine_casing":"§7LV§r機械方塊", - "block.gtceu.lv_machine_hull":"§7LV§r機器外殼", - "block.gtceu.lv_miner":"基礎採礦機§r", - "block.gtceu.lv_mixer":"基礎攪拌機§r", - "block.gtceu.lv_muffler_hatch":"§7LV§r消音倉", - "block.gtceu.lv_ore_washer":"基礎洗礦廠§r", - "block.gtceu.lv_output_bus":"§7LV§r輸出匯流排", - "block.gtceu.lv_output_hatch":"§7LV§r輸出倉", - "block.gtceu.lv_packer":"基礎打包機§r", - "block.gtceu.lv_polarizer":"基礎兩極磁化機§r", - "block.gtceu.lv_pump":"基礎泵§r", - "block.gtceu.lv_rock_crusher":"基礎碎岩機§r", - "block.gtceu.lv_scanner":"基礎掃描器§r", - "block.gtceu.lv_sifter":"基礎篩選機§r", - "block.gtceu.lv_steam_turbine":"基礎蒸汽輪機§r", - "block.gtceu.lv_super_chest":"超級箱 I", - "block.gtceu.lv_super_tank":"超級缸 I", - "block.gtceu.lv_thermal_centrifuge":"基礎熱力離心機§r", - "block.gtceu.lv_transformer_16a":"§7低壓§r高能變壓器(§7LV§r)", - "block.gtceu.lv_transformer_1a":"§7低壓§r變壓器(§7LV§r)", - "block.gtceu.lv_transformer_2a":"§7低壓§r進階變壓器(§7LV§r)", - "block.gtceu.lv_transformer_4a":"§7低壓§r高流變壓器(§7LV§r)", - "block.gtceu.lv_wiremill":"基礎線材軋機§r", - "block.gtceu.lv_world_accelerator":"基礎世界加速器§r", - "block.gtceu.magenta_borderless_lamp":"洋紅色無框燈", - "block.gtceu.magenta_lamp":"洋紅色燈", - "block.gtceu.magenta_large_metal_sheet":"洋紅色粗紋金屬板方塊", - "block.gtceu.magenta_metal_sheet":"洋紅色金屬板方塊", - "block.gtceu.magenta_studs":"洋紅色橡膠混凝土", - "block.gtceu.magic_hazard_sign_block":"魔力危害警示方塊", - "block.gtceu.magnetic_hazard_sign_block":"強磁危害警示方塊", - "block.gtceu.maintenance_hatch":"維護倉", - "block.gtceu.marble":"大理岩", - "block.gtceu.marble_bricks":"大理岩磚", - "block.gtceu.marble_cobblestone":"大理岩鵝卵石", - "block.gtceu.marble_small_tile":"大理岩小片磚瓦", - "block.gtceu.marble_tile":"大理岩磚瓦", - "block.gtceu.marble_windmill_a":"大理岩風車形磚瓦 A", - "block.gtceu.marble_windmill_b":"大理岩風車形磚瓦 B", - "block.gtceu.max_16a_energy_converter":"16§e安§r§c§lMAX§r能量轉換器", - "block.gtceu.max_1a_energy_converter":"1§e安§r§c§lMAX§r能量轉換器", - "block.gtceu.max_4a_energy_converter":"4§e安§r§c§lMAX§r能量轉換器", - "block.gtceu.max_8a_energy_converter":"8§e安§r§c§lMAX§r能量轉換器", - "block.gtceu.max_battery_buffer_16x":"16x上限壓電池箱(§c§lMAX§r)", - "block.gtceu.max_battery_buffer_4x":"4x上限壓電池箱(§c§lMAX§r)", - "block.gtceu.max_battery_buffer_8x":"8x上限壓電池箱(§c§lMAX§r)", - "block.gtceu.max_charger_4x":"4x上限壓充電機(§c§lMAX§r)", - "block.gtceu.max_dual_input_hatch":"§c§lMAX§r兩用輸入倉", - "block.gtceu.max_dual_output_hatch":"§c§lMAX§r兩用輸出倉", - "block.gtceu.max_energy_input_hatch":"§c§lMAX§r能量輸入倉", - "block.gtceu.max_energy_input_hatch_16a":"16安§c§lMAX§r能量輸入倉", - "block.gtceu.max_energy_input_hatch_4a":"4安§c§lMAX§r能量輸入倉", - "block.gtceu.max_energy_output_hatch":"§c§lMAX§r能量輸出倉", - "block.gtceu.max_energy_output_hatch_16a":"16安§c§lMAX§r能量輸出倉", - "block.gtceu.max_energy_output_hatch_4a":"4安§c§lMAX§r能量輸出倉", - "block.gtceu.max_input_bus":"§c§lMAX§r輸入匯流排", - "block.gtceu.max_input_hatch":"§c§lMAX§r輸入倉", - "block.gtceu.max_input_hatch_4x":"§c§lMAX§r四重輸入倉", - "block.gtceu.max_input_hatch_9x":"§c§lMAX§r九重輸入倉", - "block.gtceu.max_machine_casing":"§c§lMAX§r機械方塊", - "block.gtceu.max_machine_hull":"§c§lMAX§r機器外殼", - "block.gtceu.max_output_bus":"§c§lMAX§r輸出匯流排", - "block.gtceu.max_output_hatch":"§c§lMAX§r輸出倉", - "block.gtceu.max_output_hatch_4x":"§c§lMAX§r四重輸出倉", - "block.gtceu.max_output_hatch_9x":"§c§lMAX§r九重輸出倉", - "block.gtceu.max_substation_input_hatch_64a":"64安§c§lMAX§r變電能量輸入倉", - "block.gtceu.max_substation_output_hatch_64a":"64安§c§lMAX§r變電能量輸出倉", - "block.gtceu.me_input_bus":"ME輸入匯流排", - "block.gtceu.me_input_hatch":"ME輸入倉", - "block.gtceu.me_output_bus":"ME輸出匯流排", - "block.gtceu.me_output_hatch":"ME輸出倉", - "block.gtceu.me_pattern_buffer":"ME樣板供應倉", - "block.gtceu.me_pattern_buffer_proxy":"ME遠端樣板供應倉", - "block.gtceu.me_stocking_input_bus":"ME庫存輸入匯流排", - "block.gtceu.me_stocking_input_hatch":"ME庫存輸入倉", - "block.gtceu.mega_blast_furnace":"轉底爐", - "block.gtceu.mega_vacuum_freezer":"巨型真空冷凍機", - "block.gtceu.miner_pipe":"採礦管道", - "block.gtceu.mob_infestation_hazard_sign_block":"怪物侵襲危害警示方塊", - "block.gtceu.mob_spawner_hazard_sign_block":"生怪磚危害警示方塊", - "block.gtceu.molybdenum_disilicide_coil_block":"二矽化鉬線圈方塊", - "block.gtceu.mossy_dark_concrete_bricks":"青苔深色混凝土磚", - "block.gtceu.mossy_dark_concrete_cobblestone":"青苔深色混凝土鵝卵石", - "block.gtceu.mossy_light_concrete_bricks":"青苔淺色混凝土磚", - "block.gtceu.mossy_light_concrete_cobblestone":"青苔淺色混凝土鵝卵石", - "block.gtceu.mossy_marble_bricks":"青苔大理岩磚", - "block.gtceu.mossy_marble_cobblestone":"青苔大理岩鵝卵石", - "block.gtceu.mossy_red_granite_bricks":"青苔紅花崗岩磚", - "block.gtceu.mossy_red_granite_cobblestone":"青苔紅花崗岩鵝卵石", - "block.gtceu.multi_smelter":"工業熔爐", - "block.gtceu.mv_16a_energy_converter":"16§e安§r§bMV§r能量轉換器", - "block.gtceu.mv_1a_energy_converter":"1§e安§r§bMV§r能量轉換器", - "block.gtceu.mv_4a_energy_converter":"4§e安§r§bMV§r能量轉換器", - "block.gtceu.mv_8a_energy_converter":"8§e安§r§bMV§r能量轉換器", - "block.gtceu.mv_air_scrubber":"§b進階空氣淨化器§r", - "block.gtceu.mv_alloy_smelter":"§b進階合金爐§r", - "block.gtceu.mv_arc_furnace":"§b進階電弧爐§r", - "block.gtceu.mv_assembler":"§b進階組裝機§r", - "block.gtceu.mv_autoclave":"§b進階高壓釜§r", - "block.gtceu.mv_battery_buffer_16x":"16x§b中壓§r電池箱(§bMV§r)", - "block.gtceu.mv_battery_buffer_4x":"4x§b中壓§r電池箱(§bMV§r)", - "block.gtceu.mv_battery_buffer_8x":"8x§b中壓§r電池箱(§bMV§r)", - "block.gtceu.mv_bedrock_ore_miner":"§b進階基岩採礦機§r", - "block.gtceu.mv_bender":"§b進階卷板機§r", - "block.gtceu.mv_block_breaker":"§b進階方塊破壞器§r", - "block.gtceu.mv_brewery":"§b進階釀造室§r", - "block.gtceu.mv_buffer":"§b進階緩衝器§r", - "block.gtceu.mv_canner":"§b進階裝罐機§r", - "block.gtceu.mv_centrifuge":"§b進階離心機§r", - "block.gtceu.mv_charger_4x":"4x§b中壓§r充電機(§bMV§r)", - "block.gtceu.mv_chemical_bath":"§b進階化學水浴機§r", - "block.gtceu.mv_chemical_reactor":"§b進階化學反應器§r", - "block.gtceu.mv_circuit_assembler":"§b進階電路組裝機§r", - "block.gtceu.mv_combustion":"§b進階內燃發電機§r", - "block.gtceu.mv_compressor":"§b進階壓縮機§r", - "block.gtceu.mv_cutter":"§b進階切割機§r", - "block.gtceu.mv_diode":"§bMV§r二極體", - "block.gtceu.mv_distillery":"§b進階蒸餾室§r", - "block.gtceu.mv_electric_furnace":"§b進階電爐§r", - "block.gtceu.mv_electrolyzer":"§b進階電解機§r", - "block.gtceu.mv_electromagnetic_separator":"§b進階電磁分離機§r", - "block.gtceu.mv_energy_input_hatch":"§bMV§r能量輸入倉", - "block.gtceu.mv_energy_output_hatch":"§bMV§r能量輸出倉", - "block.gtceu.mv_extractor":"§b進階提取機§r", - "block.gtceu.mv_extruder":"§b進階壓模器§r", - "block.gtceu.mv_fermenter":"§b進階發酵槽§r", - "block.gtceu.mv_fisher":"§b進階捕魚機§r", - "block.gtceu.mv_fluid_drilling_rig":"§b進階流體鑽機 §r", - "block.gtceu.mv_fluid_heater":"§b進階流體加熱器§r", - "block.gtceu.mv_fluid_passthrough_hatch":"§bMV§r流體通行倉", - "block.gtceu.mv_fluid_solidifier":"§b進階流體固化器§r", - "block.gtceu.mv_forge_hammer":"§b進階鍛造錘§r", - "block.gtceu.mv_forming_press":"§b進階衝壓機床§r", - "block.gtceu.mv_gas_collector":"§b進階集氣室§r", - "block.gtceu.mv_gas_turbine":"§b進階燃氣輪機§r", - "block.gtceu.mv_hermetic_casing":"密封機械方塊 II", - "block.gtceu.mv_input_bus":"§bMV§r輸入匯流排", - "block.gtceu.mv_input_hatch":"§bMV§r輸入倉", - "block.gtceu.mv_item_collector":"§b進階物品收集器§r", - "block.gtceu.mv_item_passthrough_hatch":"§bMV§r物品通行倉", - "block.gtceu.mv_laser_engraver":"§b進階雷射蝕刻機§r", - "block.gtceu.mv_lathe":"§b進階車床§r", - "block.gtceu.mv_macerator":"§b進階研磨機§r", - "block.gtceu.mv_machine_casing":"§bMV§r機械方塊", - "block.gtceu.mv_machine_hull":"§bMV§r機器外殼", - "block.gtceu.mv_miner":"§b進階採礦機§r", - "block.gtceu.mv_mixer":"§b進階攪拌機§r", - "block.gtceu.mv_muffler_hatch":"§bMV§r消音倉", - "block.gtceu.mv_ore_washer":"§b進階洗礦廠§r", - "block.gtceu.mv_output_bus":"§bMV§r輸出匯流排", - "block.gtceu.mv_output_hatch":"§bMV§r輸出倉", - "block.gtceu.mv_packer":"§b進階打包機§r", - "block.gtceu.mv_polarizer":"§b進階兩極磁化機§r", - "block.gtceu.mv_pump":"§b進階泵§r", - "block.gtceu.mv_rock_crusher":"§b進階碎岩機§r", - "block.gtceu.mv_scanner":"§b進階掃描器§r", - "block.gtceu.mv_sifter":"§b進階篩選機§r", - "block.gtceu.mv_steam_turbine":"§b進階蒸汽輪機§r", - "block.gtceu.mv_super_chest":"超級箱 II", - "block.gtceu.mv_super_tank":"超級缸 II", - "block.gtceu.mv_thermal_centrifuge":"§b進階熱力離心機§r", - "block.gtceu.mv_transformer_16a":"§b中壓§r高能變壓器(§bMV§r)", - "block.gtceu.mv_transformer_1a":"§b中壓§r變壓器(§bMV§r)", - "block.gtceu.mv_transformer_2a":"§b中壓§r進階變壓器(§bMV§r)", - "block.gtceu.mv_transformer_4a":"§b中壓§r高流變壓器(§bMV§r)", - "block.gtceu.mv_wiremill":"§b進階線材軋機§r", - "block.gtceu.mv_world_accelerator":"§b進階世界加速器§r", - "block.gtceu.naquadah_coil_block":"矽岩線圈方塊", - "block.gtceu.network_switch":"網路交換機", - "block.gtceu.nichrome_coil_block":"鎳鉻合金線圈方塊", - "block.gtceu.noise_hazard_sign_block":"噪音危害警示方塊", - "block.gtceu.nonconducting_casing":"絕緣機械方塊", - "block.gtceu.normal_duct_pipe":"普通風管", - "block.gtceu.normal_laser_pipe":"普通雷射管道", - "block.gtceu.normal_laser_pipe.tooltip":"§f無損§7傳遞能量,僅限直線擺放", - "block.gtceu.normal_optical_pipe":"光纜", - "block.gtceu.normal_optical_pipe.tooltip":"§7傳遞§f算力§7或§f研究資料§7", - "block.gtceu.object_holder":"物品支架", - "block.gtceu.oil_heavy":"重油", - "block.gtceu.oil_light":"輕油", - "block.gtceu.oil_medium":"原油", - "block.gtceu.opv_1024a_laser_source_hatch":"1024§e安§r§9§lOpV§r雷射源倉", - "block.gtceu.opv_1024a_laser_target_hatch":"1024§e安§r§9§lOpV§r雷射靶倉", - "block.gtceu.opv_16a_energy_converter":"16§e安§r§9§lOpV§r能量轉換器", - "block.gtceu.opv_1a_energy_converter":"1§e安§r§9§lOpV§r能量轉換器", - "block.gtceu.opv_256a_laser_source_hatch":"256§e安§r§9§lOpV§r雷射源倉", - "block.gtceu.opv_256a_laser_target_hatch":"256§e安§r§9§lOpV§r雷射靶倉", - "block.gtceu.opv_4096a_laser_source_hatch":"4096§e安§r§9§lOpV§r雷射源倉", - "block.gtceu.opv_4096a_laser_target_hatch":"4096§e安§r§9§lOpV§r雷射靶倉", - "block.gtceu.opv_4a_energy_converter":"4§e安§r§9§lOpV§r能量轉換器", - "block.gtceu.opv_8a_energy_converter":"8§e安§r§9§lOpV§r能量轉換器", - "block.gtceu.opv_alloy_smelter":"§9§l傳奇合金爐§r", - "block.gtceu.opv_arc_furnace":"§9§l傳奇電弧爐§r", - "block.gtceu.opv_assembler":"§9§l傳奇組裝機§r", - "block.gtceu.opv_autoclave":"§9§l傳奇高壓釜§r", - "block.gtceu.opv_battery_buffer_16x":"16x§9過載壓§r電池箱(§9§lOpV§r)", - "block.gtceu.opv_battery_buffer_4x":"4x§9過載壓§r電池箱(§9§lOpV§r)", - "block.gtceu.opv_battery_buffer_8x":"8x§9過載壓§r電池箱(§9§lOpV§r)", - "block.gtceu.opv_bender":"§9§l傳奇卷板機§r", - "block.gtceu.opv_brewery":"§9§l傳奇釀造室§r", - "block.gtceu.opv_canner":"§9§l傳奇裝罐機§r", - "block.gtceu.opv_centrifuge":"§9§l傳奇離心機§r", - "block.gtceu.opv_charger_4x":"4x§9過載壓§r充電機(§9§lOpV§r)", - "block.gtceu.opv_chemical_bath":"§9§l傳奇化學水浴機§r", - "block.gtceu.opv_chemical_reactor":"§9§l傳奇化學反應器§r", - "block.gtceu.opv_circuit_assembler":"§9§l傳奇電路組裝機§r", - "block.gtceu.opv_compressor":"§9§l傳奇壓縮機§r", - "block.gtceu.opv_cutter":"§9§l傳奇切割機§r", - "block.gtceu.opv_diode":"§9§lOpV§r二極體", - "block.gtceu.opv_distillery":"§9§l傳奇蒸餾室§r", - "block.gtceu.opv_dual_input_hatch":"§9§lOpV§r兩用輸入倉", - "block.gtceu.opv_dual_output_hatch":"§9§lOpV§r兩用輸出倉", - "block.gtceu.opv_electric_furnace":"§9§l傳奇電爐§r", - "block.gtceu.opv_electrolyzer":"§9§l傳奇電解機§r", - "block.gtceu.opv_electromagnetic_separator":"§9§l傳奇電磁分離機§r", - "block.gtceu.opv_energy_input_hatch":"§9§lOpV§r能量輸入倉", - "block.gtceu.opv_energy_input_hatch_16a":"16安§9§lOpV§r能量輸入倉", - "block.gtceu.opv_energy_input_hatch_4a":"4安§9§lOpV§r能量輸入倉", - "block.gtceu.opv_energy_output_hatch":"§9§lOpV§r能量輸出倉", - "block.gtceu.opv_energy_output_hatch_16a":"16安§9§lOpV§r能量輸出倉", - "block.gtceu.opv_energy_output_hatch_4a":"4安§9§lOpV§r能量輸出倉", - "block.gtceu.opv_extractor":"§9§l傳奇提取機§r", - "block.gtceu.opv_extruder":"§9§l傳奇壓模器§r", - "block.gtceu.opv_fermenter":"§9§l傳奇發酵槽§r", - "block.gtceu.opv_fluid_heater":"§9§l傳奇流體加熱器§r", - "block.gtceu.opv_fluid_passthrough_hatch":"§9§lOpV§r流體通行倉", - "block.gtceu.opv_fluid_solidifier":"§9§l傳奇流體固化器§r", - "block.gtceu.opv_forge_hammer":"§9§l傳奇鍛造錘§r", - "block.gtceu.opv_forming_press":"§9§l傳奇衝壓機床§r", - "block.gtceu.opv_gas_collector":"§9§l傳奇集氣室§r", - "block.gtceu.opv_input_bus":"§9§lOpV§r輸入匯流排", - "block.gtceu.opv_input_hatch":"§9§lOpV§r輸入倉", - "block.gtceu.opv_input_hatch_4x":"§9§lOpV§r四重輸入倉", - "block.gtceu.opv_input_hatch_9x":"§9§lOpV§r九重輸入倉", - "block.gtceu.opv_item_passthrough_hatch":"§9§lOpV§r物品通行倉", - "block.gtceu.opv_laser_engraver":"§9§l傳奇雷射蝕刻機§r", - "block.gtceu.opv_lathe":"§9§l傳奇車床§r", - "block.gtceu.opv_macerator":"§9§l傳奇研磨機§r", - "block.gtceu.opv_machine_casing":"§9§lOpV§r機械方塊", - "block.gtceu.opv_machine_hull":"§9§lOpV§r機器外殼", - "block.gtceu.opv_mixer":"§9§l傳奇攪拌機§r", - "block.gtceu.opv_muffler_hatch":"§9§lOpV§r消音倉", - "block.gtceu.opv_ore_washer":"§9§l傳奇洗礦廠§r", - "block.gtceu.opv_output_bus":"§9§lOpV§r輸出匯流排", - "block.gtceu.opv_output_hatch":"§9§lOpV§r輸出倉", - "block.gtceu.opv_output_hatch_4x":"§9§lOpV§r四重輸出倉", - "block.gtceu.opv_output_hatch_9x":"§9§lOpV§r九重輸出倉", - "block.gtceu.opv_packer":"§9§l傳奇打包機§r", - "block.gtceu.opv_polarizer":"§9§l傳奇兩極磁化機§r", - "block.gtceu.opv_quantum_chest":"量子箱 XIII", - "block.gtceu.opv_quantum_tank":"量子缸 XIII", - "block.gtceu.opv_rock_crusher":"§9§l傳奇碎岩機§r", - "block.gtceu.opv_rotor_holder":"§9§lOpV§r轉子支架", - "block.gtceu.opv_scanner":"§9§l傳奇掃描器§r", - "block.gtceu.opv_sifter":"§9§l傳奇篩選機§r", - "block.gtceu.opv_substation_input_hatch_64a":"64安§9§lOpV§r變電能量輸入倉", - "block.gtceu.opv_substation_output_hatch_64a":"64安§9§lOpV§r變電能量輸出倉", - "block.gtceu.opv_thermal_centrifuge":"§9§l傳奇熱力離心機§r", - "block.gtceu.opv_transformer_16a":"§9過載壓§r高能變壓器(§9OpV§r)", - "block.gtceu.opv_transformer_1a":"§9過載壓§r變壓器(§9OpV§r)", - "block.gtceu.opv_transformer_2a":"§9過載壓§r進階變壓器(§9OpV§r)", - "block.gtceu.opv_transformer_4a":"§9過載壓§r高流變壓器(§9OpV§r)", - "block.gtceu.opv_wiremill":"§9§l傳奇線材軋機§r", - "block.gtceu.orange_borderless_lamp":"橙色無框燈", - "block.gtceu.orange_lamp":"橙色燈", - "block.gtceu.orange_large_metal_sheet":"橙色粗紋金屬板方塊", - "block.gtceu.orange_metal_sheet":"橙色金屬板方塊", - "block.gtceu.orange_studs":"橙色橡膠混凝土", - "block.gtceu.overworld_marker":"主世界", - "block.gtceu.palladium_substation":"鍍鈀變電站", - "block.gtceu.pattern_buffer.desc.0":"§f多方塊結構的整合式§6AE2樣板供應器§f。", - "block.gtceu.pattern_buffer.desc.1":"§fAE2樣板可以利用§6共享庫存§f中的一切。", - "block.gtceu.pattern_buffer.desc.2":"§f使用§b快閃記憶體§f綁定§6ME遠端樣板供應倉§f,以使機器相互連線!", - "block.gtceu.pattern_buffer_proxy.desc.0":"§f可以將單單一個§6ME樣板供應倉§f連線到眾多機器。", - "block.gtceu.pattern_buffer_proxy.desc.1":"§f所有綁定的遠端樣板供應倉將共享§6原樣板供應倉§f中的樣板。", - "block.gtceu.pattern_buffer_proxy.desc.2":"§f讓工廠蓬勃發展!", - "block.gtceu.petrified_foam":"石化建築泡沫", - "block.gtceu.pink_borderless_lamp":"粉紅色無框燈", - "block.gtceu.pink_lamp":"粉紅色燈", - "block.gtceu.pink_large_metal_sheet":"粉紅色粗紋金屬板方塊", - "block.gtceu.pink_metal_sheet":"粉紅色金屬板方塊", - "block.gtceu.pink_studs":"粉紅色橡膠混凝土", - "block.gtceu.plascrete":"塑膠混凝土", - "block.gtceu.plasma_large_turbine":"大型電漿渦輪", - "block.gtceu.polished_dark_concrete":"拋光深色混凝土", - "block.gtceu.polished_light_concrete":"拋光淺色混凝土", - "block.gtceu.polished_marble":"拋光大理岩", - "block.gtceu.polished_red_granite":"拋光紅花崗岩", - "block.gtceu.powderbarrel":"火藥桶", - "block.gtceu.powderbarrel.drops_tooltip":"爆炸範圍略大於TNT,所有被摧毀的方塊都會掉落", - "block.gtceu.power_substation":"蓄能變電站", - "block.gtceu.primitive_blast_furnace":"土高爐", - "block.gtceu.primitive_pump":"原始水泵", - "block.gtceu.ptfe_pipe_casing":"聚四氟乙烯管道方塊", - "block.gtceu.pump_deck":"水泵蓋板", - "block.gtceu.pump_hatch":"水泵倉", - "block.gtceu.purple_borderless_lamp":"紫色無框燈", - "block.gtceu.purple_lamp":"紫色燈", - "block.gtceu.purple_large_metal_sheet":"紫色粗紋金屬板方塊", - "block.gtceu.purple_metal_sheet":"紫色金屬板方塊", - "block.gtceu.purple_studs":"紫色橡膠混凝土", - "block.gtceu.pyrolyse_oven":"熱解爐", - "block.gtceu.radioactive_hazard_sign_block":"輻射危害警示方塊", - "block.gtceu.reaction_safe_mixing_casing":"惰性攪拌機械方塊", - "block.gtceu.red_borderless_lamp":"紅色無框燈", - "block.gtceu.red_granite":"紅花崗岩", - "block.gtceu.red_granite_bricks":"紅花崗岩磚", - "block.gtceu.red_granite_cobblestone":"紅花崗岩鵝卵石", - "block.gtceu.red_granite_small_tile":"紅花崗岩小片磚瓦", - "block.gtceu.red_granite_tile":"紅花崗岩磚磚瓦", - "block.gtceu.red_granite_windmill_a":"紅花崗岩風車形磚磚瓦 A", - "block.gtceu.red_granite_windmill_b":"紅花崗岩風車形磚磚瓦 B", - "block.gtceu.red_lamp":"紅色燈", - "block.gtceu.red_large_metal_sheet":"紅色粗紋金屬板方塊", - "block.gtceu.red_metal_sheet":"紅色金屬板方塊", - "block.gtceu.red_studs":"紅色橡膠混凝土", - "block.gtceu.reinforced_foam":"強化建築泡沫", - "block.gtceu.reinforced_stone":"防爆石", - "block.gtceu.research_station":"研究站", - "block.gtceu.reservoir_hatch":"蓄水倉", - "block.gtceu.robust_machine_casing":"強化鎢鋼機械方塊", - "block.gtceu.rtm_alloy_coil_block":"釕鎢鉬合金線圈方塊", - "block.gtceu.rubber_button":"橡膠木按鈕", - "block.gtceu.rubber_door":"橡膠木門", - "block.gtceu.rubber_fence":"橡膠木柵欄", - "block.gtceu.rubber_fence_gate":"橡膠木柵欄門", - "block.gtceu.rubber_hanging_sign":"懸掛式橡膠木告示牌", - "block.gtceu.rubber_leaves":"橡膠木樹葉", - "block.gtceu.rubber_log":"橡膠木原木", - "block.gtceu.rubber_planks":"橡膠木材", - "block.gtceu.rubber_pressure_plate":"橡膠木壓力板", - "block.gtceu.rubber_sapling":"橡膠木樹苗", - "block.gtceu.rubber_sign":"橡膠木告示牌", - "block.gtceu.rubber_slab":"橡膠木半磚", - "block.gtceu.rubber_stairs":"橡膠木階梯", - "block.gtceu.rubber_trapdoor":"橡膠木地板門", - "block.gtceu.rubber_wood":"橡膠木", - "block.gtceu.secure_maceration_casing":"安全研磨機械方塊", - "block.gtceu.shock_proof_cutting_casing":"防震切割機械方塊", - "block.gtceu.slicing_blades":"切片刀", - "block.gtceu.small_dark_concrete_bricks":"深色混凝土小塊磚", - "block.gtceu.small_duct_pipe":"小型風管", - "block.gtceu.small_light_concrete_bricks":"淺色混凝土小塊磚", - "block.gtceu.small_marble_bricks":"大理岩小塊磚", - "block.gtceu.small_red_granite_bricks":"紅花崗岩小塊磚", - "block.gtceu.solid_machine_casing":"脫氧機械方塊", - "block.gtceu.spatial_storage_hazard_sign_block":"空間儲存危害警示方塊", - "block.gtceu.square_dark_concrete_bricks":"深色混凝土方形磚", - "block.gtceu.square_light_concrete_bricks":"淺色混凝土方形磚", - "block.gtceu.square_marble_bricks":"大理岩方形磚", - "block.gtceu.square_red_granite_bricks":"紅花崗岩方形磚", - "block.gtceu.stable_machine_casing":"加強鈦機械方塊", - "block.gtceu.stainless_evaporation_casing":"不鏽鋼蒸發機械方塊", - "block.gtceu.stainless_steel_crate":"不鏽鋼板條箱", - "block.gtceu.stainless_steel_drum":"不鏽鋼桶", - "block.gtceu.stainless_steel_gearbox":"不鏽鋼齒輪箱機械方塊", - "block.gtceu.stainless_steel_turbine_casing":"不鏽鋼渦輪機械方塊", - "block.gtceu.steam_casing_bricked_bronze":"磚砌青銅外殼", - "block.gtceu.steam_casing_bricked_bronze.tooltip":"§7用來製作你的第一批蒸汽機器", - "block.gtceu.steam_casing_bricked_steel":"磚砌鍛鐵外殼", - "block.gtceu.steam_casing_bricked_steel.tooltip":"§7用來製作更高等級的蒸汽機器", - "block.gtceu.steam_casing_bronze":"青銅外殼", - "block.gtceu.steam_casing_bronze.tooltip":"§7用來製作你的第一批蒸汽機器", - "block.gtceu.steam_casing_steel":"鋼製外殼", - "block.gtceu.steam_casing_steel.tooltip":"§7用來製作更高等級的蒸汽機器", - "block.gtceu.steam_grinder":"蒸汽碾磨機", - "block.gtceu.steam_input_bus":"輸入匯流排(蒸汽)", - "block.gtceu.steam_input_hatch":"蒸汽輸入倉", - "block.gtceu.steam_large_turbine":"大型蒸汽渦輪", - "block.gtceu.steam_liquid_boiler.bronze":"小型蒸汽液體燃料鍋爐", - "block.gtceu.steam_machine_casing":"蒸汽機械方塊", - "block.gtceu.steam_output_bus":"輸出匯流排(蒸汽)", - "block.gtceu.steam_oven":"蒸汽熔煉爐", - "block.gtceu.steam_solid_boiler.bronze":"小型蒸汽固體燃料鍋爐", - "block.gtceu.steel_brick_casing":"磚砌鍛鐵外殼", - "block.gtceu.steel_crate":"鋼板條箱", - "block.gtceu.steel_drum":"鋼桶", - "block.gtceu.steel_firebox_casing":"鋼製燃燒室", - "block.gtceu.steel_gearbox":"鋼齒輪箱機械方塊", - "block.gtceu.steel_large_boiler":"大型鋼鍋爐", - "block.gtceu.steel_machine_casing":"脫氧鋼機械方塊", - "block.gtceu.steel_multiblock_tank":"鋼製多方塊儲罐", - "block.gtceu.steel_pipe_casing":"鋼管道方塊", - "block.gtceu.steel_tank_valve":"鋼製儲罐閥門", - "block.gtceu.steel_turbine_casing":"鋼渦輪機械方塊", - "block.gtceu.sterilizing_filter_casing":"除菌過濾器機械方塊", - "block.gtceu.stress_proof_casing":"耐壓機械方塊", - "block.gtceu.stripped_rubber_log":"剝皮橡膠木原木", - "block.gtceu.stripped_rubber_wood":"剝皮橡膠木塊", - "block.gtceu.sturdy_machine_casing":"堅固高速鋼-E機械方塊", - "block.gtceu.substation_capacitor.tooltip_empty":"§7用於填補蓄能變電站的結構空隙", - "block.gtceu.substation_capacitor.tooltip_filled":"§c電池容量:§f%d EU", - "block.gtceu.superconducting_coil":"超導線圈方塊", - "block.gtceu.tempered_glass":"鋼化玻璃", - "block.gtceu.the_end_marker":"終界", - "block.gtceu.the_nether_marker":"地獄", - "block.gtceu.titanium_crate":"鈦板條箱", - "block.gtceu.titanium_drum":"鈦桶", - "block.gtceu.titanium_firebox_casing":"鈦燃燒室", - "block.gtceu.titanium_gearbox":"鈦齒輪箱機械方塊", - "block.gtceu.titanium_large_boiler":"大型鈦鍋爐", - "block.gtceu.titanium_pipe_casing":"鈦管道方塊", - "block.gtceu.titanium_turbine_casing":"鈦渦輪機械方塊", - "block.gtceu.treated_wood_button":"防腐木按鈕", - "block.gtceu.treated_wood_door":"防腐木門", - "block.gtceu.treated_wood_fence":"防腐木柵欄", - "block.gtceu.treated_wood_fence_gate":"防腐木柵欄門", - "block.gtceu.treated_wood_hanging_sign":"懸掛式防腐木告示牌", - "block.gtceu.treated_wood_planks":"防腐木材", - "block.gtceu.treated_wood_pressure_plate":"防腐木壓力板", - "block.gtceu.treated_wood_sign":"防腐木告示牌", - "block.gtceu.treated_wood_slab":"防腐木半磚", - "block.gtceu.treated_wood_stairs":"防腐木階梯", - "block.gtceu.treated_wood_trapdoor":"防腐木地板門", - "block.gtceu.trinium_coil_block":"凱金線圈方塊", - "block.gtceu.tritanium_coil_block":"三鈦線圈方塊", - "block.gtceu.tungsten_steel_crate":"鎢鋼板條箱", - "block.gtceu.tungsten_steel_drum":"鎢鋼桶", - "block.gtceu.tungstensteel_firebox_casing":"鎢鋼燃燒室", - "block.gtceu.tungstensteel_gearbox":"鎢鋼齒輪箱機械方塊", - "block.gtceu.tungstensteel_large_boiler":"大型鎢鋼鍋爐", - "block.gtceu.tungstensteel_pipe_casing":"鎢鋼管道方塊", - "block.gtceu.tungstensteel_turbine_casing":"鎢鋼渦輪機械方塊", - "block.gtceu.turret_hazard_sign_block":"炮塔危害警示方塊", - "block.gtceu.uev_1024a_laser_source_hatch":"1024§e安§r§aUEV§r雷射源倉", - "block.gtceu.uev_1024a_laser_target_hatch":"1024§e安§r§aUEV§r雷射靶倉", - "block.gtceu.uev_16a_energy_converter":"16§e安§r§aUEV§r能量轉換器", - "block.gtceu.uev_1a_energy_converter":"1§e安§r§aUEV§r能量轉換器", - "block.gtceu.uev_256a_laser_source_hatch":"256§e安§r§aUEV§r雷射源倉", - "block.gtceu.uev_256a_laser_target_hatch":"256§e安§r§aUEV§r雷射靶倉", - "block.gtceu.uev_4096a_laser_source_hatch":"4096§e安§r§aUEV§r雷射源倉", - "block.gtceu.uev_4096a_laser_target_hatch":"4096§e安§r§aUEV§r雷射靶倉", - "block.gtceu.uev_4a_energy_converter":"4§e安§r§aUEV§r能量轉換器", - "block.gtceu.uev_8a_energy_converter":"8§e安§r§aUEV§r能量轉換器", - "block.gtceu.uev_alloy_smelter":"§a史詩合金爐 II§r", - "block.gtceu.uev_arc_furnace":"§a史詩電弧爐 II§r", - "block.gtceu.uev_assembler":"§a史詩組裝機 II§r", - "block.gtceu.uev_autoclave":"§a史詩高壓釜 II§r", - "block.gtceu.uev_battery_buffer_16x":"16x§a極超壓§r電池箱(§aUEV§r)", - "block.gtceu.uev_battery_buffer_4x":"4x§a極超壓§r電池箱(§aUEV§r)", - "block.gtceu.uev_battery_buffer_8x":"8x§a極超壓§r電池箱(§aUEV§r)", - "block.gtceu.uev_bender":"§a史詩卷板機 II§r", - "block.gtceu.uev_brewery":"§a史詩釀造室 II§r", - "block.gtceu.uev_canner":"§a史詩裝罐機 II§r", - "block.gtceu.uev_centrifuge":"§a史詩離心機 II§r", - "block.gtceu.uev_charger_4x":"4x§a極超壓§r充電機(§aUEV§r)", - "block.gtceu.uev_chemical_bath":"§a史詩化學水浴機 II§r", - "block.gtceu.uev_chemical_reactor":"§a史詩化學反應器 II§r", - "block.gtceu.uev_circuit_assembler":"§a史詩電路組裝機 II§r", - "block.gtceu.uev_compressor":"§a史詩壓縮機 II§r", - "block.gtceu.uev_cutter":"§a史詩切割機 II§r", - "block.gtceu.uev_diode":"§aUEV§r二極體", - "block.gtceu.uev_distillery":"§a史詩蒸餾室 II§r", - "block.gtceu.uev_dual_input_hatch":"§aUEV§r兩用輸入倉", - "block.gtceu.uev_dual_output_hatch":"§aUEV§r兩用輸出倉", - "block.gtceu.uev_electric_furnace":"§a史詩電爐 II§r", - "block.gtceu.uev_electrolyzer":"§a史詩電解機 II§r", - "block.gtceu.uev_electromagnetic_separator":"§a史詩電磁分離機 II§r", - "block.gtceu.uev_energy_input_hatch":"§aUEV§r能量輸入倉", - "block.gtceu.uev_energy_input_hatch_16a":"16安§aUEV§r能量輸入倉", - "block.gtceu.uev_energy_input_hatch_4a":"4安§aUEV§r能量輸入倉", - "block.gtceu.uev_energy_output_hatch":"§aUEV§r能量輸出倉", - "block.gtceu.uev_energy_output_hatch_16a":"16安§aUEV§r能量輸出倉", - "block.gtceu.uev_energy_output_hatch_4a":"4安§aUEV§r能量輸出倉", - "block.gtceu.uev_extractor":"§a史詩提取機 II§r", - "block.gtceu.uev_extruder":"§a史詩壓模器 II§r", - "block.gtceu.uev_fermenter":"§a史詩發酵槽 II§r", - "block.gtceu.uev_fluid_heater":"§a史詩流體加熱器 II§r", - "block.gtceu.uev_fluid_passthrough_hatch":"§aUEV§r流體通行倉", - "block.gtceu.uev_fluid_solidifier":"§a史詩流體固化器 II§r", - "block.gtceu.uev_forge_hammer":"§a史詩鍛造錘 II§r", - "block.gtceu.uev_forming_press":"§a史詩衝壓機床 II§r", - "block.gtceu.uev_gas_collector":"§a史詩集氣室 II§r", - "block.gtceu.uev_input_bus":"§aUEV§r輸入匯流排", - "block.gtceu.uev_input_hatch":"§aUEV§r輸入倉", - "block.gtceu.uev_input_hatch_4x":"§aUEV§r四重輸入倉", - "block.gtceu.uev_input_hatch_9x":"§aUEV§r九重輸入倉", - "block.gtceu.uev_item_passthrough_hatch":"§aUEV§r物品通行倉", - "block.gtceu.uev_laser_engraver":"§a史詩雷射蝕刻機 II§r", - "block.gtceu.uev_lathe":"§a史詩車床 II§r", - "block.gtceu.uev_macerator":"§a史詩研磨機 II§r", - "block.gtceu.uev_machine_casing":"§aUEV§r機械方塊", - "block.gtceu.uev_machine_hull":"§aUEV§r機器外殼", - "block.gtceu.uev_mixer":"§a史詩攪拌機 II§r", - "block.gtceu.uev_muffler_hatch":"§aUEV§r消音倉", - "block.gtceu.uev_ore_washer":"§a史詩洗礦廠 II§r", - "block.gtceu.uev_output_bus":"§aUEV§r輸出匯流排", - "block.gtceu.uev_output_hatch":"§aUEV§r輸出倉", - "block.gtceu.uev_output_hatch_4x":"§aUEV§r四重輸出倉", - "block.gtceu.uev_output_hatch_9x":"§aUEV§r九重輸出倉", - "block.gtceu.uev_packer":"§a史詩打包機 II§r", - "block.gtceu.uev_polarizer":"§a史詩兩極磁化機 II§r", - "block.gtceu.uev_quantum_chest":"量子箱 X", - "block.gtceu.uev_quantum_tank":"量子缸 X", - "block.gtceu.uev_rock_crusher":"§a史詩碎岩機 II§r", - "block.gtceu.uev_rotor_holder":"§aUEV§r轉子支架", - "block.gtceu.uev_scanner":"§a史詩掃描器 II§r", - "block.gtceu.uev_sifter":"§a史詩篩選機 II§r", - "block.gtceu.uev_substation_input_hatch_64a":"64安§aUEV§r變電能量輸入倉", - "block.gtceu.uev_substation_output_hatch_64a":"64安§aUEV§r變電能量輸出倉", - "block.gtceu.uev_thermal_centrifuge":"§a史詩熱力離心機 II§r", - "block.gtceu.uev_transformer_16a":"§a極超壓§r高能變壓器(§aUEV§r)", - "block.gtceu.uev_transformer_1a":"§a極超壓§r變壓器(§aUEV§r)", - "block.gtceu.uev_transformer_2a":"§a極超壓§r進階變壓器(§aUEV§r)", - "block.gtceu.uev_transformer_4a":"§a極超壓§r高流變壓器(§aUEV§r)", - "block.gtceu.uev_wiremill":"§a史詩線材軋機 II§r", - "block.gtceu.uhv_1024a_laser_source_hatch":"1024§e安§r§4UHV§r雷射源倉", - "block.gtceu.uhv_1024a_laser_target_hatch":"1024§e安§r§4UHV§r雷射靶倉", - "block.gtceu.uhv_16a_energy_converter":"16§e安§r§4UHV§r能量轉換器", - "block.gtceu.uhv_1a_energy_converter":"1§e安§r§4UHV§r能量轉換器", - "block.gtceu.uhv_256a_laser_source_hatch":"256§e安§r§4UHV§r雷射源倉", - "block.gtceu.uhv_256a_laser_target_hatch":"256§e安§r§4UHV§r雷射靶倉", - "block.gtceu.uhv_4096a_laser_source_hatch":"4096§e安§r§4UHV§r雷射源倉", - "block.gtceu.uhv_4096a_laser_target_hatch":"4096§e安§r§4UHV§r雷射靶倉", - "block.gtceu.uhv_4a_energy_converter":"4§e安§r§4UHV§r能量轉換器", - "block.gtceu.uhv_8a_energy_converter":"8§e安§r§4UHV§r能量轉換器", - "block.gtceu.uhv_alloy_smelter":"§4史詩合金爐§r", - "block.gtceu.uhv_arc_furnace":"§4史詩電弧爐§r", - "block.gtceu.uhv_assembler":"§4史詩組裝機§r", - "block.gtceu.uhv_autoclave":"§4史詩高壓釜§r", - "block.gtceu.uhv_battery_buffer_16x":"16x§4極高壓§r電池箱(§4UHV§r)", - "block.gtceu.uhv_battery_buffer_4x":"4x§4極高壓§r電池箱(§4UHV§r)", - "block.gtceu.uhv_battery_buffer_8x":"8x§4極高壓§r電池箱(§4UHV§r)", - "block.gtceu.uhv_bender":"§4史詩卷板機§r", - "block.gtceu.uhv_brewery":"§4史詩釀造室§r", - "block.gtceu.uhv_canner":"§4史詩裝罐機§r", - "block.gtceu.uhv_centrifuge":"§4史詩離心機§r", - "block.gtceu.uhv_charger_4x":"4x§4極高壓§r充電機(§4UHV§r)", - "block.gtceu.uhv_chemical_bath":"§4史詩化學水浴機§r", - "block.gtceu.uhv_chemical_reactor":"§4史詩化學反應器§r", - "block.gtceu.uhv_circuit_assembler":"§4史詩電路組裝機§r", - "block.gtceu.uhv_compressor":"§4史詩壓縮機§r", - "block.gtceu.uhv_cutter":"§4史詩切割機§r", - "block.gtceu.uhv_diode":"§4UHV§r二極體", - "block.gtceu.uhv_distillery":"§4史詩蒸餾室§r", - "block.gtceu.uhv_dual_input_hatch":"§4UHV§r兩用輸入倉", - "block.gtceu.uhv_dual_output_hatch":"§4UHV§r兩用輸出倉", - "block.gtceu.uhv_electric_furnace":"§4史詩電爐§r", - "block.gtceu.uhv_electrolyzer":"§4史詩電解機§r", - "block.gtceu.uhv_electromagnetic_separator":"§4史詩電磁分離機§r", - "block.gtceu.uhv_energy_input_hatch":"§4UHV§r能量輸入倉", - "block.gtceu.uhv_energy_input_hatch_16a":"16安§4UHV§r能量輸入倉", - "block.gtceu.uhv_energy_input_hatch_4a":"4安§4UHV§r能量輸入倉", - "block.gtceu.uhv_energy_output_hatch":"§4UHV§r能量輸出倉", - "block.gtceu.uhv_energy_output_hatch_16a":"16安§4UHV§r能量輸出倉", - "block.gtceu.uhv_energy_output_hatch_4a":"4安§4UHV§r能量輸出倉", - "block.gtceu.uhv_extractor":"§4史詩提取機§r", - "block.gtceu.uhv_extruder":"§4史詩壓模器§r", - "block.gtceu.uhv_fermenter":"§4史詩發酵槽§r", - "block.gtceu.uhv_fluid_heater":"§4史詩流體加熱器§r", - "block.gtceu.uhv_fluid_passthrough_hatch":"§4UHV§r流體通行倉", - "block.gtceu.uhv_fluid_solidifier":"§4史詩流體固化器§r", - "block.gtceu.uhv_forge_hammer":"§4史詩鍛造錘§r", - "block.gtceu.uhv_forming_press":"§4史詩衝壓機床§r", - "block.gtceu.uhv_gas_collector":"§4史詩集氣室§r", - "block.gtceu.uhv_hermetic_casing":"密封機械方塊 IX", - "block.gtceu.uhv_input_bus":"§4UHV§r輸入匯流排", - "block.gtceu.uhv_input_hatch":"§4UHV§r輸入倉", - "block.gtceu.uhv_input_hatch_4x":"§4UHV§r四重輸入倉", - "block.gtceu.uhv_input_hatch_9x":"§4UHV§r九重輸入倉", - "block.gtceu.uhv_item_passthrough_hatch":"§4UHV§r物品通行倉", - "block.gtceu.uhv_laser_engraver":"§4史詩雷射蝕刻機§r", - "block.gtceu.uhv_lathe":"§4史詩車床§r", - "block.gtceu.uhv_macerator":"§4史詩研磨機§r", - "block.gtceu.uhv_machine_casing":"§4UHV§r機械方塊", - "block.gtceu.uhv_machine_hull":"§4UHV§r機器外殼", - "block.gtceu.uhv_mixer":"§4史詩攪拌機§r", - "block.gtceu.uhv_muffler_hatch":"§4UHV§r消音倉", - "block.gtceu.uhv_ore_washer":"§4史詩洗礦廠§r", - "block.gtceu.uhv_output_bus":"§4UHV§r輸出匯流排", - "block.gtceu.uhv_output_hatch":"§4UHV§r輸出倉", - "block.gtceu.uhv_output_hatch_4x":"§4UHV§r四重輸出倉", - "block.gtceu.uhv_output_hatch_9x":"§4UHV§r九重輸出倉", - "block.gtceu.uhv_packer":"§4史詩打包機§r", - "block.gtceu.uhv_polarizer":"§4史詩兩極磁化機§r", - "block.gtceu.uhv_quantum_chest":"量子箱 IX", - "block.gtceu.uhv_quantum_tank":"量子缸 IX", - "block.gtceu.uhv_rock_crusher":"§4史詩碎岩機§r", - "block.gtceu.uhv_rotor_holder":"§4UHV§r轉子支架", - "block.gtceu.uhv_scanner":"§4史詩掃描器 §r", - "block.gtceu.uhv_sifter":"§4史詩篩選機§r", - "block.gtceu.uhv_substation_input_hatch_64a":"64安§4UHV§r變電能量輸入倉", - "block.gtceu.uhv_substation_output_hatch_64a":"64安§4UHV§r變電能量輸出倉", - "block.gtceu.uhv_thermal_centrifuge":"§4史詩熱力離心機§r", - "block.gtceu.uhv_transformer_16a":"§4極高壓§r高能變壓器(§4UHV§r)", - "block.gtceu.uhv_transformer_1a":"§4極高壓§r變壓器(§4UHV§r)", - "block.gtceu.uhv_transformer_2a":"§4極高壓§r進階變壓器(§4UHV§r) ", - "block.gtceu.uhv_transformer_4a":"§4極高壓§r高流變壓器(§4UHV§r)", - "block.gtceu.uhv_ultimate_battery":"§4UHV§r終極電池", - "block.gtceu.uhv_wiremill":"§4史詩線材軋機§r", - "block.gtceu.uiv_1024a_laser_source_hatch":"1024§e安§r§2UIV§r雷射源倉", - "block.gtceu.uiv_1024a_laser_target_hatch":"1024§e安§r§2UIV§r雷射靶倉", - "block.gtceu.uiv_16a_energy_converter":"16§e安§r§2UIV§r能量轉換器", - "block.gtceu.uiv_1a_energy_converter":"1§e安§r§2UIV§r能量轉換器", - "block.gtceu.uiv_256a_laser_source_hatch":"256§e安§r§2UIV§r雷射源倉", - "block.gtceu.uiv_256a_laser_target_hatch":"256§e安§r§2UIV§r雷射靶倉", - "block.gtceu.uiv_4096a_laser_source_hatch":"4096§e安§r§2UIV§r雷射源倉", - "block.gtceu.uiv_4096a_laser_target_hatch":"4096§e安§r§2UIV§r雷射靶倉", - "block.gtceu.uiv_4a_energy_converter":"4§e安§r§2UIV§r能量轉換器", - "block.gtceu.uiv_8a_energy_converter":"8§e安§r§2UIV§r能量轉換器", - "block.gtceu.uiv_alloy_smelter":"§2史詩合金爐 III§r", - "block.gtceu.uiv_arc_furnace":"§2史詩電弧爐 III§r", - "block.gtceu.uiv_assembler":"§2史詩組裝機 III§r", - "block.gtceu.uiv_autoclave":"§2史詩高壓釜 III§r", - "block.gtceu.uiv_battery_buffer_16x":"16x§2極巨壓§r電池箱(§2UIV§r)", - "block.gtceu.uiv_battery_buffer_4x":"4x§2極巨壓§r電池箱(§2UIV§r)", - "block.gtceu.uiv_battery_buffer_8x":"8x§2極巨壓§r電池箱(§2UIV§r)", - "block.gtceu.uiv_bender":"§2史詩卷板機 III§r", - "block.gtceu.uiv_brewery":"§2史詩釀造室 III§r", - "block.gtceu.uiv_canner":"§2史詩裝罐機 III§r", - "block.gtceu.uiv_centrifuge":"§2史詩離心機 III§r", - "block.gtceu.uiv_charger_4x":"4x§2極巨壓§r充電機(§2UIV§r)", - "block.gtceu.uiv_chemical_bath":"§2史詩化學水浴機 III§r", - "block.gtceu.uiv_chemical_reactor":"§2史詩化學反應器 III§r", - "block.gtceu.uiv_circuit_assembler":"§2史詩電路組裝機 III§r", - "block.gtceu.uiv_compressor":"§2史詩壓縮機 III§r", - "block.gtceu.uiv_cutter":"§2史詩切割機 III§r", - "block.gtceu.uiv_diode":"§2UIV§r二極體", - "block.gtceu.uiv_distillery":"§2史詩蒸餾室 III§r", - "block.gtceu.uiv_dual_input_hatch":"§2UIV§r兩用輸入倉", - "block.gtceu.uiv_dual_output_hatch":"§2UIV§r兩用輸出倉", - "block.gtceu.uiv_electric_furnace":"§2史詩電爐 III§r", - "block.gtceu.uiv_electrolyzer":"§2史詩電解機 III§r", - "block.gtceu.uiv_electromagnetic_separator":"§2史詩電磁分離機 III§r", - "block.gtceu.uiv_energy_input_hatch":"§2UIV§r能量輸入倉", - "block.gtceu.uiv_energy_input_hatch_16a":"16安§2UIV§r能量輸入倉", - "block.gtceu.uiv_energy_input_hatch_4a":"4安§2UIV§r能量輸入倉", - "block.gtceu.uiv_energy_output_hatch":"§2UIV§r能量輸出倉", - "block.gtceu.uiv_energy_output_hatch_16a":"16安§2UIV§r能量輸出倉", - "block.gtceu.uiv_energy_output_hatch_4a":"4安§2UIV§r能量輸出倉", - "block.gtceu.uiv_extractor":"§2史詩提取機 III§r", - "block.gtceu.uiv_extruder":"§2史詩壓模器 III§r", - "block.gtceu.uiv_fermenter":"§2史詩發酵槽 III§r", - "block.gtceu.uiv_fluid_heater":"§2史詩流體加熱器 III§r", - "block.gtceu.uiv_fluid_passthrough_hatch":"§2UIV§r流體通行倉", - "block.gtceu.uiv_fluid_solidifier":"§2史詩流體固化器 III§r", - "block.gtceu.uiv_forge_hammer":"§2史詩鍛造錘 III§r", - "block.gtceu.uiv_forming_press":"§2史詩衝壓機床 III§r", - "block.gtceu.uiv_gas_collector":"§2史詩集氣室 III§r", - "block.gtceu.uiv_input_bus":"§2UIV§r輸入匯流排", - "block.gtceu.uiv_input_hatch":"§2UIV§r輸入倉", - "block.gtceu.uiv_input_hatch_4x":"§2UIV§r四重輸入倉", - "block.gtceu.uiv_input_hatch_9x":"§2UIV§r九重輸入倉", - "block.gtceu.uiv_item_passthrough_hatch":"§2UIV§r物品通行倉", - "block.gtceu.uiv_laser_engraver":"§2史詩雷射蝕刻機 III§r", - "block.gtceu.uiv_lathe":"§2史詩車床 III§r", - "block.gtceu.uiv_macerator":"§2史詩研磨機 III§r", - "block.gtceu.uiv_machine_casing":"§2UIV§r機械方塊", - "block.gtceu.uiv_machine_hull":"§2UIV§r機器外殼", - "block.gtceu.uiv_mixer":"§2史詩攪拌機 III§r", - "block.gtceu.uiv_muffler_hatch":"§2UIV§r消音倉", - "block.gtceu.uiv_ore_washer":"§2史詩洗礦廠 III§r", - "block.gtceu.uiv_output_bus":"§2UIV§r輸出匯流排", - "block.gtceu.uiv_output_hatch":"§2UIV§r輸出倉", - "block.gtceu.uiv_output_hatch_4x":"§2UIV§r四重輸出倉", - "block.gtceu.uiv_output_hatch_9x":"§2UIV§r九重輸出倉", - "block.gtceu.uiv_packer":"§2史詩打包機 III§r", - "block.gtceu.uiv_polarizer":"§2史詩兩極磁化機 III§r", - "block.gtceu.uiv_quantum_chest":"量子箱 XI", - "block.gtceu.uiv_quantum_tank":"量子缸 XI", - "block.gtceu.uiv_rock_crusher":"§2史詩碎岩機 III§r", - "block.gtceu.uiv_rotor_holder":"§2UIV§r轉子支架", - "block.gtceu.uiv_scanner":"§2史詩掃描器 III§r", - "block.gtceu.uiv_sifter":"§2史詩篩選機 III§r", - "block.gtceu.uiv_substation_input_hatch_64a":"64安§2UIV§r變電能量輸入倉", - "block.gtceu.uiv_substation_output_hatch_64a":"64安§2UIV§r變電能量輸出倉", - "block.gtceu.uiv_thermal_centrifuge":"§2史詩熱力離心機 III§r", - "block.gtceu.uiv_transformer_16a":"§2極巨壓§r高能變壓器(§2UIV§r)", - "block.gtceu.uiv_transformer_1a":"§2極巨壓§r變壓器(§2UIV§r)", - "block.gtceu.uiv_transformer_2a":"§2極巨壓§r進階變壓器(§2UIV§r)", - "block.gtceu.uiv_transformer_4a":"§2極巨壓§r高流變壓器(§2UIV§r)", - "block.gtceu.uiv_wiremill":"§2史詩線材軋機 III§r", - "block.gtceu.ulv_16a_energy_converter":"16§e安§r§8ULV§r能量轉換器", - "block.gtceu.ulv_1a_energy_converter":"1§e安§r§8ULV§r能量轉換器", - "block.gtceu.ulv_4a_energy_converter":"4§e安§r§8ULV§r能量轉換器", - "block.gtceu.ulv_8a_energy_converter":"8§e安§r§8ULV§r能量轉換器", - "block.gtceu.ulv_battery_buffer_16x":"16x§8超低壓§r電池箱(§8ULV§r)", - "block.gtceu.ulv_battery_buffer_4x":"4x§8超低壓§r電池箱(§8ULV§r)", - "block.gtceu.ulv_battery_buffer_8x":"8x§8超低壓§r電池箱(§8ULV§r)", - "block.gtceu.ulv_charger_4x":"4x§8超低壓§r充電機(§8ULV§r)", - "block.gtceu.ulv_energy_input_hatch":"§8ULV§r能量輸入倉", - "block.gtceu.ulv_energy_output_hatch":"§8ULV§r能量輸出倉", - "block.gtceu.ulv_input_bus":"§8ULV§r輸入匯流排", - "block.gtceu.ulv_input_hatch":"§8ULV§r輸入倉", - "block.gtceu.ulv_machine_casing":"§8ULV§r機械方塊", - "block.gtceu.ulv_machine_hull":"§8ULV§r機器外殼", - "block.gtceu.ulv_output_bus":"§8ULV§r輸出匯流排", - "block.gtceu.ulv_output_hatch":"§8ULV§r輸出倉", - "block.gtceu.ulv_transformer_16a":"§8超低壓§r高能變壓器(§8ULV§r)", - "block.gtceu.ulv_transformer_1a":"§8超低壓§r變壓器(§8ULV§r)", - "block.gtceu.ulv_transformer_2a":"§8超低壓§r進階變壓器(§8ULV§r)", - "block.gtceu.ulv_transformer_4a":"§8超低壓§r高流變壓器(§8ULV§r)", - "block.gtceu.uv_1024a_laser_source_hatch":"1024§e安§r§3UV§r雷射源倉", - "block.gtceu.uv_1024a_laser_target_hatch":"1024§e安§r§3UV§r雷射靶倉", - "block.gtceu.uv_16a_energy_converter":"16§e安§r§3UV§r能量轉換器", - "block.gtceu.uv_1a_energy_converter":"1§e安§r§3UV§r能量轉換器", - "block.gtceu.uv_256a_laser_source_hatch":"256§e安§r§3UV§r雷射源倉", - "block.gtceu.uv_256a_laser_target_hatch":"256§e安§r§3UV§r雷射靶倉", - "block.gtceu.uv_4096a_laser_source_hatch":"4096§e安§r§3UV§r雷射源倉", - "block.gtceu.uv_4096a_laser_target_hatch":"4096§e安§r§3UV§r雷射靶倉", - "block.gtceu.uv_4a_energy_converter":"4§e安§r§3UV§r能量轉換器", - "block.gtceu.uv_8a_energy_converter":"8§e安§r§3UV§r能量轉換器", - "block.gtceu.uv_alloy_smelter":"§3終極合金爐§r", - "block.gtceu.uv_arc_furnace":"§3終極電弧爐§r", - "block.gtceu.uv_assembler":"§3終極組裝機§r", - "block.gtceu.uv_autoclave":"§3終極高壓釜§r", - "block.gtceu.uv_battery_buffer_16x":"16x§3極限壓§r電池箱(§3UV§r)", - "block.gtceu.uv_battery_buffer_4x":"4x§3極限壓§r電池箱(§3UV§r)", - "block.gtceu.uv_battery_buffer_8x":"8x§3極限壓§r電池箱(§3UV§r)", - "block.gtceu.uv_bender":"§3終極卷板機§r", - "block.gtceu.uv_brewery":"§3終極釀造室§r", - "block.gtceu.uv_canner":"§3終極裝罐機§r", - "block.gtceu.uv_centrifuge":"§3終極離心機§r", - "block.gtceu.uv_charger_4x":"4x§3極限壓§r充電機(§3UV§r)", - "block.gtceu.uv_chemical_bath":"§3終極化學水浴機§r", - "block.gtceu.uv_chemical_reactor":"§3終極化學反應器§r", - "block.gtceu.uv_circuit_assembler":"§3終極電路組裝機§r", - "block.gtceu.uv_compressor":"§3終極壓縮機§r", - "block.gtceu.uv_cutter":"§3終極切割機§r", - "block.gtceu.uv_diode":"§3UV§r二極體", - "block.gtceu.uv_distillery":"§3終極蒸餾室§r", - "block.gtceu.uv_dual_input_hatch":"§3UV§r兩用輸入倉", - "block.gtceu.uv_dual_output_hatch":"§3UV§r兩用輸出倉", - "block.gtceu.uv_electric_furnace":"§3終極電爐§r", - "block.gtceu.uv_electrolyzer":"§3終極電解機§r", - "block.gtceu.uv_electromagnetic_separator":"§3終極電磁分離機§r", - "block.gtceu.uv_energy_input_hatch":"§3UV§r能量輸入倉", - "block.gtceu.uv_energy_input_hatch_16a":"16安§3UV§r能量輸入倉", - "block.gtceu.uv_energy_input_hatch_4a":"4安§3UV§r能量輸入倉", - "block.gtceu.uv_energy_output_hatch":"§3UV§r能量輸出倉", - "block.gtceu.uv_energy_output_hatch_16a":"16安§3UV§r能量輸出倉", - "block.gtceu.uv_energy_output_hatch_4a":"4安§3UV§r能量輸出倉", - "block.gtceu.uv_extractor":"§3終極提取機§r", - "block.gtceu.uv_extruder":"§3終極壓模器§r", - "block.gtceu.uv_fermenter":"§3終極發酵槽§r", - "block.gtceu.uv_fluid_heater":"§3終極流體加熱器§r", - "block.gtceu.uv_fluid_passthrough_hatch":"§3UV§r流體通行倉", - "block.gtceu.uv_fluid_solidifier":"§3終極流體固化器§r", - "block.gtceu.uv_forge_hammer":"§3終極鍛造錘§r", - "block.gtceu.uv_forming_press":"§3終極衝壓機床§r", - "block.gtceu.uv_fusion_reactor":"核融合反應爐控制電腦 MK-III", - "block.gtceu.uv_gas_collector":"§3終極集氣室§r", - "block.gtceu.uv_hermetic_casing":"密封機械方塊 VIII", - "block.gtceu.uv_input_bus":"§3UV§r輸入匯流排", - "block.gtceu.uv_input_hatch":"§3UV§r輸入倉", - "block.gtceu.uv_input_hatch_4x":"§3UV§r四重輸入倉", - "block.gtceu.uv_input_hatch_9x":"§3UV§r九重輸入倉", - "block.gtceu.uv_item_passthrough_hatch":"§3UV§r物品通行倉", - "block.gtceu.uv_lapotronic_battery":"§3UV§r蘭波頓電池", - "block.gtceu.uv_laser_engraver":"§3終極雷射蝕刻機§r", - "block.gtceu.uv_lathe":"§3終極車床§r", - "block.gtceu.uv_macerator":"§3終極研磨機§r", - "block.gtceu.uv_machine_casing":"§3UV§r機械方塊", - "block.gtceu.uv_machine_hull":"§3UV§r機器外殼", - "block.gtceu.uv_mixer":"§3終極攪拌機§r", - "block.gtceu.uv_muffler_hatch":"§3UV§r消音倉", - "block.gtceu.uv_ore_washer":"§3終極洗礦廠§r", - "block.gtceu.uv_output_bus":"§3UV§r輸出匯流排", - "block.gtceu.uv_output_hatch":"§3UV§r輸出倉", - "block.gtceu.uv_output_hatch_4x":"§3UV§r四重輸出倉", - "block.gtceu.uv_output_hatch_9x":"§3UV§r九重輸出倉", - "block.gtceu.uv_packer":"§3終極打包機§r", - "block.gtceu.uv_parallel_hatch":"§3UV§r平行控制倉", - "block.gtceu.uv_polarizer":"§3終極兩極磁化機§r", - "block.gtceu.uv_quantum_chest":"量子箱 VIII", - "block.gtceu.uv_quantum_tank":"量子缸 VIII", - "block.gtceu.uv_rock_crusher":"§3終極碎岩機§r", - "block.gtceu.uv_rotor_holder":"§3UV§r轉子支架", - "block.gtceu.uv_scanner":"§3終極掃描器§r", - "block.gtceu.uv_sifter":"§3終極篩選機§r", - "block.gtceu.uv_substation_input_hatch_64a":"64安§3UV§r變電能量輸入倉", - "block.gtceu.uv_substation_output_hatch_64a":"64安§3UV§r變電能量輸出倉", - "block.gtceu.uv_thermal_centrifuge":"§3終極熱力離心機§r", - "block.gtceu.uv_transformer_16a":"§3極限壓§r高能變壓器(§3UV§r)", - "block.gtceu.uv_transformer_1a":"§3極限壓§r變壓器(§3UV§r)", - "block.gtceu.uv_transformer_2a":"§3極限壓§r進階變壓器(§3UV§r)", - "block.gtceu.uv_transformer_4a":"§3極限壓§r高流變壓器(§3UV§r)", - "block.gtceu.uv_wiremill":"§3終極線材軋機§r", - "block.gtceu.uv_world_accelerator":"§3終極世界加速器§r", - "block.gtceu.uxv_1024a_laser_source_hatch":"1024§e安§r§eUXV§r雷射源倉", - "block.gtceu.uxv_1024a_laser_target_hatch":"1024§e安§r§eUXV§r雷射靶倉", - "block.gtceu.uxv_16a_energy_converter":"16§e安§r§eUXV§r能量轉換器", - "block.gtceu.uxv_1a_energy_converter":"1§e安§r§eUXV§r能量轉換器", - "block.gtceu.uxv_256a_laser_source_hatch":"256§e安§r§eUXV§r雷射源倉", - "block.gtceu.uxv_256a_laser_target_hatch":"256§e安§r§eUXV§r雷射靶倉", - "block.gtceu.uxv_4096a_laser_source_hatch":"4096§e安§r§eUXV§r雷射源倉", - "block.gtceu.uxv_4096a_laser_target_hatch":"4096§e安§r§eUXV§r雷射靶倉", - "block.gtceu.uxv_4a_energy_converter":"4§e安§r§eUXV§r能量轉換器", - "block.gtceu.uxv_8a_energy_converter":"8§e安§r§eUXV§r能量轉換器", - "block.gtceu.uxv_alloy_smelter":"§e史詩合金爐 IV§r", - "block.gtceu.uxv_arc_furnace":"§e史詩電弧爐 IV§r", - "block.gtceu.uxv_assembler":"§e史詩組裝機 IV§r", - "block.gtceu.uxv_autoclave":"§e史詩高壓釜 IV§r", - "block.gtceu.uxv_battery_buffer_16x":"16x§e極頂壓§r電池箱(§eUXV§r)", - "block.gtceu.uxv_battery_buffer_4x":"4x§e極頂壓§r電池箱(§eUXV§r)", - "block.gtceu.uxv_battery_buffer_8x":"8x§e極頂壓§r電池箱(§eUXV§r)", - "block.gtceu.uxv_bender":"§e史詩卷板機 IV§r", - "block.gtceu.uxv_brewery":"§e史詩釀造室 IV§r", - "block.gtceu.uxv_canner":"§e史詩裝罐機 IV§r", - "block.gtceu.uxv_centrifuge":"§e史詩離心機 IV§r", - "block.gtceu.uxv_charger_4x":"4x§e極頂壓§r充電機(§eUXV§r)", - "block.gtceu.uxv_chemical_bath":"§e史詩化學水浴機 IV§r", - "block.gtceu.uxv_chemical_reactor":"§e史詩化學反應器 IV§r", - "block.gtceu.uxv_circuit_assembler":"§e史詩電路組裝機 IV§r", - "block.gtceu.uxv_compressor":"§e史詩壓縮機 IV§r", - "block.gtceu.uxv_cutter":"§e史詩切割機 IV§r", - "block.gtceu.uxv_diode":"§eUXV§r二極體", - "block.gtceu.uxv_distillery":"§e史詩蒸餾室 IV§r", - "block.gtceu.uxv_dual_input_hatch":"§eUXV§r兩用輸入倉", - "block.gtceu.uxv_dual_output_hatch":"§eUXV§r兩用輸出倉", - "block.gtceu.uxv_electric_furnace":"§e史詩電爐 IV§r", - "block.gtceu.uxv_electrolyzer":"§e史詩電解機 IV§r", - "block.gtceu.uxv_electromagnetic_separator":"§e史詩電磁分離機 IV§r", - "block.gtceu.uxv_energy_input_hatch":"§eUXV§r能量輸入倉", - "block.gtceu.uxv_energy_input_hatch_16a":"16安§eUXV§r能量輸入倉", - "block.gtceu.uxv_energy_input_hatch_4a":"4安§eUXV§r能量輸入倉", - "block.gtceu.uxv_energy_output_hatch":"§eUXV§r能量輸出倉", - "block.gtceu.uxv_energy_output_hatch_16a":"16安§eUXV§r能量輸出倉", - "block.gtceu.uxv_energy_output_hatch_4a":"4安§eUXV§r能量輸出倉", - "block.gtceu.uxv_extractor":"§e史詩提取機 IV§r", - "block.gtceu.uxv_extruder":"§e史詩壓模器 IV§r", - "block.gtceu.uxv_fermenter":"§e史詩發酵槽 IV§r", - "block.gtceu.uxv_fluid_heater":"§e史詩流體加熱器 IV§r", - "block.gtceu.uxv_fluid_passthrough_hatch":"§eUXV§r流體通行倉", - "block.gtceu.uxv_fluid_solidifier":"§e史詩流體固化器 IV§r", - "block.gtceu.uxv_forge_hammer":"§e史詩鍛造錘 IV§r", - "block.gtceu.uxv_forming_press":"§e史詩衝壓機床 IV§r", - "block.gtceu.uxv_gas_collector":"§e史詩集氣室 IV§r", - "block.gtceu.uxv_input_bus":"§eUXV§r輸入匯流排", - "block.gtceu.uxv_input_hatch":"§eUXV§r輸入倉", - "block.gtceu.uxv_input_hatch_4x":"§eUXV§r四重輸入倉", - "block.gtceu.uxv_input_hatch_9x":"§eUXV§r九重輸入倉", - "block.gtceu.uxv_item_passthrough_hatch":"§eUXV§r物品通行倉", - "block.gtceu.uxv_laser_engraver":"§e史詩雷射蝕刻機 IV§r", - "block.gtceu.uxv_lathe":"§e史詩車床 IV§r", - "block.gtceu.uxv_macerator":"§e史詩研磨機 IV§r", - "block.gtceu.uxv_machine_casing":"§eUXV§r機械方塊", - "block.gtceu.uxv_machine_hull":"§eUXV§r機器外殼", - "block.gtceu.uxv_mixer":"§e史詩攪拌機 IV§r", - "block.gtceu.uxv_muffler_hatch":"§eUXV§r消音倉", - "block.gtceu.uxv_ore_washer":"§e史詩洗礦廠 IV§r", - "block.gtceu.uxv_output_bus":"§eUXV§r輸出匯流排", - "block.gtceu.uxv_output_hatch":"§eUXV§r輸出倉", - "block.gtceu.uxv_output_hatch_4x":"§eUXV§r四重輸出倉", - "block.gtceu.uxv_output_hatch_9x":"§eUXV§r九重輸出倉", - "block.gtceu.uxv_packer":"§e史詩打包機 IV§r", - "block.gtceu.uxv_polarizer":"§e史詩兩極磁化機 IV§r", - "block.gtceu.uxv_quantum_chest":"量子箱 XII", - "block.gtceu.uxv_quantum_tank":"量子缸 XII", - "block.gtceu.uxv_rock_crusher":"§e史詩碎岩機 IV§r", - "block.gtceu.uxv_rotor_holder":"§eUXV§r轉子支架", - "block.gtceu.uxv_scanner":"§e史詩掃描器 IV§r", - "block.gtceu.uxv_sifter":"§e史詩篩選機 IV§r", - "block.gtceu.uxv_substation_input_hatch_64a":"64安§eUXV§r變電能量輸入倉", - "block.gtceu.uxv_substation_output_hatch_64a":"64安§eUXV§r變電能量輸出倉", - "block.gtceu.uxv_thermal_centrifuge":"§e史詩熱力離心機 IV§r", - "block.gtceu.uxv_transformer_16a":"§e極頂壓§r高能變壓器(§eUXV§r)", - "block.gtceu.uxv_transformer_1a":"§e極頂壓§r變壓器(§eUXV§r)", - "block.gtceu.uxv_transformer_2a":"§e極頂壓§r進階變壓器(§eUXV§r)", - "block.gtceu.uxv_transformer_4a":"§e極頂壓§r高流變壓器(§eUXV§r)", - "block.gtceu.uxv_wiremill":"§e史詩線材軋機 IV§r", - "block.gtceu.vacuum_freezer":"真空冷凍機", - "block.gtceu.vibration_safe_casing":"防震機械方塊", - "block.gtceu.void_hazard_sign_block":"虛空危害警示方塊", - "block.gtceu.watertight_casing":"防水機械方塊", - "block.gtceu.white_borderless_lamp":"白色無框燈", - "block.gtceu.white_lamp":"白色燈", - "block.gtceu.white_large_metal_sheet":"白色粗紋金屬板方塊", - "block.gtceu.white_metal_sheet":"白色金屬板方塊", - "block.gtceu.white_studs":"白色橡膠混凝土", - "block.gtceu.wire_coil.tooltip_cracking":"§8裂解機:", - "block.gtceu.wire_coil.tooltip_energy_cracking":"§a耗能:§f%s%%", - "block.gtceu.wire_coil.tooltip_energy_smelter":"§a耗能:§8每配方§f%s EU/t", - "block.gtceu.wire_coil.tooltip_extended_info":"§7按住§6SHIFT§7獲得更多線圈資訊", - "block.gtceu.wire_coil.tooltip_heat":"§c基礎熱容:§f%d K", - "block.gtceu.wire_coil.tooltip_parallel_smelter":"§5最大平行:§f%s", - "block.gtceu.wire_coil.tooltip_pyro":"§8熱解爐:", - "block.gtceu.wire_coil.tooltip_smelter":"§8工業熔爐:", - "block.gtceu.wire_coil.tooltip_speed_pyro":"§b處理速度:§f%s%%", - "block.gtceu.wood_crate":"木板條箱", - "block.gtceu.wood_drum":"木桶", - "block.gtceu.wood_wall":"木牆", - "block.gtceu.wooden_multiblock_tank":"木製多方塊儲罐", - "block.gtceu.wooden_tank_valve":"木製儲罐閥門", - "block.gtceu.yellow_borderless_lamp":"黃色無框燈", - "block.gtceu.yellow_lamp":"黃色燈", - "block.gtceu.yellow_large_metal_sheet":"黃色粗紋金屬板方塊", - "block.gtceu.yellow_metal_sheet":"黃色金屬板方塊", - "block.gtceu.yellow_stripes_block.a":"黃色路障方塊", - "block.gtceu.yellow_stripes_block.b":"黃色路障方塊", - "block.gtceu.yellow_stripes_block.c":"黃色路障方塊", - "block.gtceu.yellow_stripes_block.d":"黃色路障方塊", - "block.gtceu.yellow_stripes_block_a":"黃色路障方塊A", - "block.gtceu.yellow_stripes_block_b":"黃色路障方塊B", - "block.gtceu.yellow_studs":"黃色橡膠混凝土", - "block.gtceu.zpm_1024a_laser_source_hatch":"1024§e安§r§cZPM§r雷射源倉", - "block.gtceu.zpm_1024a_laser_target_hatch":"1024§e安§r§cZPM§r雷射靶倉", - "block.gtceu.zpm_16a_energy_converter":"16§e安§r§cZPM§r能量轉換器", - "block.gtceu.zpm_1a_energy_converter":"1§e安§r§cZPM§r能量轉換器", - "block.gtceu.zpm_256a_laser_source_hatch":"256§e安§r§cZPM§r雷射源倉", - "block.gtceu.zpm_256a_laser_target_hatch":"256§e安§r§cZPM§r雷射靶倉", - "block.gtceu.zpm_4096a_laser_source_hatch":"4096§e安§r§cZPM§r雷射源倉", - "block.gtceu.zpm_4096a_laser_target_hatch":"4096§e安§r§cZPM§r雷射靶倉", - "block.gtceu.zpm_4a_energy_converter":"4§e安§r§cZPM§r能量轉換器", - "block.gtceu.zpm_8a_energy_converter":"8§e安§r§cZPM§r能量轉換器", - "block.gtceu.zpm_alloy_smelter":"§c精英合金爐 III§r", - "block.gtceu.zpm_arc_furnace":"§c精英電弧爐 III§r", - "block.gtceu.zpm_assembler":"§c精英組裝機 III§r", - "block.gtceu.zpm_autoclave":"§c精英高壓釜 III§r", - "block.gtceu.zpm_battery_buffer_16x":"16x§c零點壓§r電池箱(§cZPM§r)", - "block.gtceu.zpm_battery_buffer_4x":"4x§c零點壓§r電池箱(§cZPM§r)", - "block.gtceu.zpm_battery_buffer_8x":"8x§c零點壓§r電池箱(§cZPM§r)", - "block.gtceu.zpm_bender":"§c精英卷板機 III§r", - "block.gtceu.zpm_brewery":"§c精英釀造室 III§r", - "block.gtceu.zpm_canner":"§c精英裝罐機 III§r", - "block.gtceu.zpm_centrifuge":"§c精英離心機 III§r", - "block.gtceu.zpm_charger_4x":"4x§c零點壓§r充電機(§cZPM§r)", - "block.gtceu.zpm_chemical_bath":"§c精英化學水浴機 III§r", - "block.gtceu.zpm_chemical_reactor":"§c精英化學反應器 III§r", - "block.gtceu.zpm_circuit_assembler":"§c精英電路組裝機 III§r", - "block.gtceu.zpm_compressor":"§c精英壓縮機 III§r", - "block.gtceu.zpm_cutter":"§c精英切割機 III§r", - "block.gtceu.zpm_diode":"§cZPM§r二極體", - "block.gtceu.zpm_distillery":"§c精英蒸餾室 III§r", - "block.gtceu.zpm_dual_input_hatch":"§cZPM§r兩用輸入倉", - "block.gtceu.zpm_dual_output_hatch":"§cZPM§r兩用輸出倉", - "block.gtceu.zpm_electric_furnace":"§c精英電爐 III§r", - "block.gtceu.zpm_electrolyzer":"§c精英電解機 III§r", - "block.gtceu.zpm_electromagnetic_separator":"§c精英電磁分離機 III§r", - "block.gtceu.zpm_energy_input_hatch":"§cZPM§r能量輸入倉", - "block.gtceu.zpm_energy_input_hatch_16a":"16安§cZPM§r能量輸入倉", - "block.gtceu.zpm_energy_input_hatch_4a":"4安§cZPM§r能量輸入倉", - "block.gtceu.zpm_energy_output_hatch":"§cZPM§r能量輸出倉", - "block.gtceu.zpm_energy_output_hatch_16a":"16安§cZPM§r能量輸出倉", - "block.gtceu.zpm_energy_output_hatch_4a":"4安§cZPM§r能量輸出倉", - "block.gtceu.zpm_extractor":"§c精英提取機 III§r", - "block.gtceu.zpm_extruder":"§c精英壓模器 III§r", - "block.gtceu.zpm_fermenter":"§c精英發酵槽 III§r", - "block.gtceu.zpm_fluid_heater":"§c精英流體加熱器 III§r", - "block.gtceu.zpm_fluid_passthrough_hatch":"§cZPM§r流體通行倉", - "block.gtceu.zpm_fluid_solidifier":"§c精英流體固化器 III§r", - "block.gtceu.zpm_forge_hammer":"§c精英鍛造錘 III§r", - "block.gtceu.zpm_forming_press":"§c精英衝壓機床 III§r", - "block.gtceu.zpm_fusion_reactor":"核融合反應爐控制電腦 MK-II", - "block.gtceu.zpm_gas_collector":"§c精英集氣室 III§r", - "block.gtceu.zpm_hermetic_casing":"密封機械方塊 VII", - "block.gtceu.zpm_input_bus":"§cZPM§r輸入匯流排", - "block.gtceu.zpm_input_hatch":"§cZPM§r輸入倉", - "block.gtceu.zpm_input_hatch_4x":"§cZPM§r四重輸入倉", - "block.gtceu.zpm_input_hatch_9x":"§cZPM§r九重輸入倉", - "block.gtceu.zpm_item_passthrough_hatch":"§cZPM§r物品通行倉", - "block.gtceu.zpm_lapotronic_battery":"§cZPM§r蘭波頓電池", - "block.gtceu.zpm_laser_engraver":"§c精英雷射蝕刻機 III§r", - "block.gtceu.zpm_lathe":"§c精英車床 III§r", - "block.gtceu.zpm_macerator":"§c精英研磨機 III§r", - "block.gtceu.zpm_machine_casing":"§cZPM§r機械方塊", - "block.gtceu.zpm_machine_hull":"§cZPM§r機器外殼", - "block.gtceu.zpm_mixer":"§c精英攪拌機 III§r", - "block.gtceu.zpm_muffler_hatch":"§cZPM§r消音倉", - "block.gtceu.zpm_ore_washer":"§c精英洗礦廠 III§r", - "block.gtceu.zpm_output_bus":"§cZPM§r輸出匯流排", - "block.gtceu.zpm_output_hatch":"§cZPM§r輸出倉", - "block.gtceu.zpm_output_hatch_4x":"§cZPM§r四重輸出倉", - "block.gtceu.zpm_output_hatch_9x":"§cZPM§r九重輸出倉", - "block.gtceu.zpm_packer":"§c精英打包機 III§r", - "block.gtceu.zpm_parallel_hatch":"§cZPM§r平行控制倉", - "block.gtceu.zpm_polarizer":"§c精英兩極磁化機 III§r", - "block.gtceu.zpm_quantum_chest":"量子箱 VII", - "block.gtceu.zpm_quantum_tank":"量子缸 VII", - "block.gtceu.zpm_rock_crusher":"§c精英碎岩機 III§r", - "block.gtceu.zpm_rotor_holder":"§cZPM§r轉子支架", - "block.gtceu.zpm_scanner":"§c精英掃描器III§r", - "block.gtceu.zpm_sifter":"§c精英篩選機 III§r", - "block.gtceu.zpm_substation_input_hatch_64a":"64安§cZPM§r變電能量輸入倉", - "block.gtceu.zpm_substation_output_hatch_64a":"64安§cZPM§r變電能量輸出倉", - "block.gtceu.zpm_thermal_centrifuge":"§c精英熱力離心機 III§r", - "block.gtceu.zpm_transformer_16a":"§c零點壓§r高能變壓器(§cZPM§r)", - "block.gtceu.zpm_transformer_1a":"§c零點壓§r變壓器(§cZPM§r)", - "block.gtceu.zpm_transformer_2a":"§c零點壓§r進階變壓器(§cZPM§r)", - "block.gtceu.zpm_transformer_4a":"§c零點壓§r高流變壓器(§cZPM§r)", - "block.gtceu.zpm_wiremill":"§c精英線材軋機 III§r", - "block.gtceu.zpm_world_accelerator":"§c精英世界加速器 III§r", - "block.sterilizing_filter_casing.tooltip":"創造一個§a無菌§r環境", - "block.surface_rock":"地表岩石(%s)", - "button.gtceu.mark_as_depleted.name":"標記為枯竭", - "button.gtceu.toggle_waypoint.name":"切換路徑點", - "command.gtceu.dump_data.success":"已將登錄檔%2$s中的%1$s個資源轉儲到%3$s", - "command.gtceu.medical_condition.get":"玩家%s有以下疾病:", - "command.gtceu.medical_condition.get.element":"症狀【%s】§r:%s分%s秒", - "command.gtceu.medical_condition.get.element.permanent":"症狀【%s】§r:%s分%s秒(永久)", - "command.gtceu.medical_condition.get.empty":"玩家%s沒有疾病。", - "command.gtceu.place_vein.failure":"無法放置%s礦脈於%s", - "command.gtceu.place_vein.success":"成功放置%s礦脈於%s", - "command.gtceu.share_prospection_data.notification":"%s與你分享了礦脈資料!", - "config.gtceu.option.addLoot":"新增戰利品", - "config.gtceu.option.ae2":"ae2", - "config.gtceu.option.allUniqueStoneTypes":"所有獨特石頭型別", - "config.gtceu.option.animationTime":"動畫時間", - "config.gtceu.option.armorHud":"盔甲HUD", - "config.gtceu.option.bedrockOreDistance":"基岩礦距離", - "config.gtceu.option.bedrockOreDropTagPrefix":"基岩礦掉落Tag", - "config.gtceu.option.borderColor":"邊框顏色", - "config.gtceu.option.bronzeBoilerHeatSpeed":"青銅鍋爐-加熱速度", - "config.gtceu.option.bronzeBoilerMaxTemperature":"青銅鍋爐-最高溫度", - "config.gtceu.option.buttonAnchor":"按鈕位置", - "config.gtceu.option.casingsPerCraft":"每次合成機械方塊數量", - "config.gtceu.option.cleanMultiblocks":"多方塊結構是否潔淨", - "config.gtceu.option.client":"客戶端", - "config.gtceu.option.compat":"相容", - "config.gtceu.option.debug":"除錯", - "config.gtceu.option.debugWorldgen":"礦位置Debug模式", - "config.gtceu.option.defaultPaintingColor":"機器預設噴漆顏色", - "config.gtceu.option.defaultUIColor":"預設UI顏色", - "config.gtceu.option.dev":"開發", - "config.gtceu.option.direction":"方向", - "config.gtceu.option.disableManualCompression":"關閉手工壓縮", - "config.gtceu.option.doBedrockOres":"新增基岩礦", - "config.gtceu.option.doSuperflatOres":"超平坦世界生成礦", - "config.gtceu.option.doesExplosionDamagesTerrain":"機器爆炸是否破壞地形", - "config.gtceu.option.dumpAssets":"匯出資源", - "config.gtceu.option.dumpRecipes":"匯出配方", - "config.gtceu.option.enableCleanroom":"啟用無塵室", - "config.gtceu.option.enableFEConverters":"啟用FE轉換器", - "config.gtceu.option.enableMaintenance":"啟用維護倉", - "config.gtceu.option.enableResearch":"啟用研究", - "config.gtceu.option.enableTieredCasings":"啟用分級機械方塊", - "config.gtceu.option.enableWorldAccelerators":"啟用世界加速器", - "config.gtceu.option.enchantedTools":"附魔工具", - "config.gtceu.option.energy":"能量", - "config.gtceu.option.energyConsumption":"能耗", - "config.gtceu.option.energyUsageMultiplier":"能源消耗倍率", - "config.gtceu.option.environmentalHazardDecayRate":"環境污染衰減速率", - "config.gtceu.option.environmentalHazards":"環境污染", - "config.gtceu.option.euToFeRatio":"GTEU到FE的轉換比例", - "config.gtceu.option.feToEuRatio":"FE到GTEU的轉換比例", - "config.gtceu.option.flintAndSteelRequireSteel":"打火石配方是否需要鋼", - "config.gtceu.option.ftbChunksIntegration":"FTB區塊-整合", - "config.gtceu.option.gameplay":"遊戲玩法", - "config.gtceu.option.generateLowQualityGems":"生成劣質寶石", - "config.gtceu.option.ghostCircuit":"虛擬電路", - "config.gtceu.option.gt6StylePipesCables":"類GT6管道/線纜", - "config.gtceu.option.hardAdvancedIronRecipes":"更難的高階鐵製品配方", - "config.gtceu.option.hardDyeRecipes":"更難的染料配方", - "config.gtceu.option.hardGlassRecipes":"更難的玻璃配方", - "config.gtceu.option.hardIronRecipes":"更難的鐵製品配方", - "config.gtceu.option.hardMiscRecipes":"更難的雜項配方", - "config.gtceu.option.hardMultiRecipes":"更難的多方塊控制器配方", - "config.gtceu.option.hardRedstoneRecipes":"更難的紅石配方", - "config.gtceu.option.hardToolArmorRecipes":"更難的工具盔甲配方", - "config.gtceu.option.hardWoodRecipes":"更難的木頭配方", - "config.gtceu.option.harderBrickRecipes":"更難的磚塊配方", - "config.gtceu.option.harderCharcoalRecipe":"更難的木炭配方", - "config.gtceu.option.harderCircuitRecipes":"更難的電路板配方", - "config.gtceu.option.harderRods":"更難的桿配方", - "config.gtceu.option.harmlessActiveTransformers":"無害的有源變壓器", - "config.gtceu.option.hazardsEnabled":"啟用危險物質", - "config.gtceu.option.hideFacadesInRecipeViewer":"配方瀏覽器中隱藏偽裝板", - "config.gtceu.option.hideFilledCellsInRecipeViewer":"配方瀏覽器中隱藏裝滿的單元", - "config.gtceu.option.hideOreProcessingDiagrams":"隱藏礦物處理流程圖", - "config.gtceu.option.highTierContent":"極高電壓內容", - "config.gtceu.option.hpLiquidBoilerBaseOutput":"高壓液體鍋爐-基礎輸出", - "config.gtceu.option.hpSolarBoilerBaseOutput":"高壓太陽能鍋爐-基礎輸出", - "config.gtceu.option.hpSolidBoilerBaseOutput":"高壓固體鍋爐-基礎輸出", - "config.gtceu.option.hudLocation":"HUD位置", - "config.gtceu.option.hudOffsetX":"HUD偏移X", - "config.gtceu.option.hudOffsetY":"HUD偏移Y", - "config.gtceu.option.inWorldPreviewDuration":"世界中預覽時長", - "config.gtceu.option.increaseDungeonLoot":"更多的地牢戰利品", - "config.gtceu.option.infiniteBedrockOresFluids":"無限基岩礦流體", - "config.gtceu.option.journeyMapIntegration":"旅行地圖-整合", - "config.gtceu.option.largeBoilers":"大型鍋爐", - "config.gtceu.option.ldFluidPipeMinDistance":"長距流體管道最小距離", - "config.gtceu.option.ldItemPipeMinDistance":"長距物品管道最小距離", - "config.gtceu.option.liquidBoilerBaseOutput":"液體鍋爐-基礎輸出", - "config.gtceu.option.machineSounds":"機器音效", - "config.gtceu.option.machines":"機器", - "config.gtceu.option.machinesEmissiveTextures":"啟用機器泛光紋理", - "config.gtceu.option.meHatchEnergyUsage":"ME倉能耗", - "config.gtceu.option.minerSpeed":"採礦機速度", - "config.gtceu.option.minimap":"小地圖", - "config.gtceu.option.nanoSaber":"奈米劍", - "config.gtceu.option.nanoSaberBaseDamage":"奈米劍基礎傷害", - "config.gtceu.option.nanoSaberDamageBoost":"奈米劍傷害增幅", - "config.gtceu.option.nativeEUToFE":"線纜直接給FE機器供能", - "config.gtceu.option.nerfPaperCrafting":"削弱紙配方", - "config.gtceu.option.nerfWoodCrafting":"削弱木材木棒合成", - "config.gtceu.option.onlyOwnerBreak":"僅所有者可破壞", - "config.gtceu.option.onlyOwnerGUI":"僅所有者可開啟GUI", - "config.gtceu.option.orderedAssemblyLineFluids":"有序的裝配線-流體", - "config.gtceu.option.orderedAssemblyLineItems":"有序的裝配線-物品", - "config.gtceu.option.oreBlockProspectRange":"礦物探測半徑", - "config.gtceu.option.oreGenerationChunkCacheSize":"礦物生成區塊快取大小", - "config.gtceu.option.oreIconSize":"礦物圖示大小", - "config.gtceu.option.oreIndicatorChunkCacheSize":"礦脈指示物區塊快取大小", - "config.gtceu.option.oreIndicators":"礦脈指示物", - "config.gtceu.option.oreNamePrefix":"礦物名稱字首", - "config.gtceu.option.oreScaleStop":"最大圖示縮放比例", - "config.gtceu.option.oreVeinGridSize":"礦脈網格大小", - "config.gtceu.option.oreVeinRandomOffset":"礦脈隨機偏移", - "config.gtceu.option.oreVeins":"礦脈", - "config.gtceu.option.ownerOPBypass":"跳過所有權檢查的最低許可權等級", - "config.gtceu.option.prospectorEnergyUseMultiplier":"探礦儀能源消耗倍率", - "config.gtceu.option.recipeProgressLowEnergy":"跳電時,機器進度將", - "config.gtceu.option.recipes":"配方", - "config.gtceu.option.removeSmeltingForEBFMetals":"移除需要電力高爐冶煉的金屬的熔爐配方", - "config.gtceu.option.removeVanillaBlockRecipes":"移除原版方塊配方", - "config.gtceu.option.removeVanillaLargeOreVeins":"移除原版大型礦脈", - "config.gtceu.option.removeVanillaOreGen":"移除原版礦物", - "config.gtceu.option.removeVanillaTNTRecipe":"移除原版TNT配方", - "config.gtceu.option.renderFluids":"渲染流體", - "config.gtceu.option.renderer":"渲染器", - "config.gtceu.option.replaceMinedBlocksWith":"用...替換採礦機採過的方塊", - "config.gtceu.option.requireGTToolsForBlocks":"方塊需要格雷工具", - "config.gtceu.option.rngDamageElectricTools":"電動工具耐久度消耗機率", - "config.gtceu.option.rubberTreeSpawnChance":"橡膠樹生成權重", - "config.gtceu.option.sandOresFall":"沙子礦受重力嗎", - "config.gtceu.option.shouldWeatherOrTerrainExplosion":"機器是否因天氣或地形爆炸", - "config.gtceu.option.showDimensionTier":"顯示維度等級", - "config.gtceu.option.smallBoilers":"小型鍋爐", - "config.gtceu.option.solarBoilerBaseOutput":"太陽能鍋爐-基礎輸出", - "config.gtceu.option.solidBoilerBaseOutput":"固體鍋爐-基礎輸出", - "config.gtceu.option.sprayCanChainLength":"噴霧罐單次可噴塗長度", - "config.gtceu.option.steamMultiParallelAmount":"蒸汽多方塊機器平行數", - "config.gtceu.option.steamPerWater":"蒸汽-水轉化率", - "config.gtceu.option.steelBoilerHeatSpeed":"鋼鍋爐-加熱速度", - "config.gtceu.option.steelBoilerMaxTemperature":"鋼鍋爐-最高溫度", - "config.gtceu.option.steelSteamMultiblocks":"用鋼的蒸汽多方塊結構", - "config.gtceu.option.surfaceRockProspectRange":"地表岩石探測半徑", - "config.gtceu.option.titaniumBoilerHeatSpeed":"鈦鍋爐-加熱速度", - "config.gtceu.option.titaniumBoilerMaxTemperature":"鈦鍋爐-最高溫度", - "config.gtceu.option.toggle":"切換", - "config.gtceu.option.toolCraftingSounds":"使用工具合成時播放聲音", - "config.gtceu.option.toolUseSounds":"使用工具時播放聲音", - "config.gtceu.option.tools":"工具", - "config.gtceu.option.treeFellingDelay":"砍樹延遲", - "config.gtceu.option.tungstensteelBoilerHeatSpeed":"鎢鋼鍋爐-加熱速度", - "config.gtceu.option.tungstensteelBoilerMaxTemperature":"鎢鋼鍋爐-最高溫度", - "config.gtceu.option.universalHazards":"普遍化的危險物質", - "config.gtceu.option.updateIntervals":"更新間隔", - "config.gtceu.option.useVBO":"使用VBO", - "config.gtceu.option.voltageTierAdvImpeller":"進階噴射背包電壓等級", - "config.gtceu.option.voltageTierAdvNanoSuit":"進階奈米胸甲電壓等級", - "config.gtceu.option.voltageTierAdvQuarkTech":"進階夸克胸甲電壓等級", - "config.gtceu.option.voltageTierImpeller":"噴射背包電壓等級", - "config.gtceu.option.voltageTierNanoSuit":"奈米套裝電壓等級", - "config.gtceu.option.voltageTierNightVision":"夜視儀電壓等級", - "config.gtceu.option.voltageTierQuarkTech":"夸克套裝電壓等級", - "config.gtceu.option.worldAcceleratorBlacklist":"世界加速器黑名單", - "config.gtceu.option.worldgen":"世界生成", - "config.gtceu.option.xOffset":"x偏移", - "config.gtceu.option.xaerosMapIntegration":"Xaero地圖-整合", - "config.gtceu.option.yOffset":"y偏移", - "config.gtceu.option.zombieSpawnWithSabers":"帶奈米劍的殭屍生成", - "config.jade.plugin_gtceu.auto_output_info":"[GTCEu] 自動輸出資訊", - "config.jade.plugin_gtceu.cable_info":"[GTCEu] 線纜資訊", - "config.jade.plugin_gtceu.controllable_provider":"[GTCEu] 是否停工", - "config.jade.plugin_gtceu.electric_container_provider":"[GTCEu] 電力槽", - "config.jade.plugin_gtceu.exhaust_vent_info":"[GTCEu] 排氣口資訊", - "config.jade.plugin_gtceu.hazard_cleaner_provider":"[GTCEu] 污染清理", - "config.jade.plugin_gtceu.machine_mode":"[GTCEu] 機器模式", - "config.jade.plugin_gtceu.maintenance_info":"[GTCEu] 維護資訊", - "config.jade.plugin_gtceu.me_pattern_buffer":"[GTCEu] 樣板供應倉資訊", - "config.jade.plugin_gtceu.me_pattern_buffer_proxy":"[GTCEu] 遠端樣板供應倉資訊", - "config.jade.plugin_gtceu.multiblock_structure":"[GTCEu] 多方塊結構", - "config.jade.plugin_gtceu.parallel_info":"[GTCEu] 平行資訊", - "config.jade.plugin_gtceu.primitive_pump":"[GTCEu] 原始水泵資訊", - "config.jade.plugin_gtceu.recipe_logic_provider":"[GTCEu] 配方資訊", - "config.jade.plugin_gtceu.recipe_output_info":"[GTCEu] 配方輸出資訊", - "config.jade.plugin_gtceu.stained_color":"[GTCEu] 染色方塊資訊", - "config.jade.plugin_gtceu.steam_boiler_info":"[GTCEu] 蒸汽鍋爐資訊", - "config.jade.plugin_gtceu.transformer":"[GTCEu] 變壓器資訊", - "config.jade.plugin_gtceu.workable_provider":"[GTCEu] 工作資訊", - "cover.advanced_detector.latch.disabled.0":"行為:線性", - "cover.advanced_detector.latch.disabled.1":"", - "cover.advanced_detector.latch.disabled.2":"更改此覆蓋板的紅石行為。", - "cover.advanced_detector.latch.disabled.3":"§e線性§7 - 預設模式;物品數量小於最小值時不發出紅石訊號,大於最大值時發出訊號強度15的紅石訊號,數量介於二者之間發出訊號強度在0 - 15之間的紅石訊號", - "cover.advanced_detector.latch.disabled.4":"§e鎖存§7 - 發出滿級紅石訊號,直到物品數量大於最大值;然後停止發出紅石訊號,直到數量低於最小值", - "cover.advanced_detector.latch.enabled.0":"行為:鎖存", - "cover.advanced_detector.latch.enabled.1":"", - "cover.advanced_detector.latch.enabled.2":"更改此覆蓋板的紅石行為。", - "cover.advanced_detector.latch.enabled.3":"§e線性§7 - 預設模式;物品數量小於最小值時不發出紅石訊號,大於最大值時發出訊號強度15的紅石訊號,數量介於二者之間發出訊號強度在0 - 15之間的紅石訊號", - "cover.advanced_detector.latch.enabled.4":"§e鎖存§7 - 發出滿級紅石訊號,直到物品數量大於最大值;然後停止發出紅石訊號,直到數量低於最小值", - "cover.advanced_energy_detector.invert.disabled.0":"輸出:普通", - "cover.advanced_energy_detector.invert.disabled.1":"", - "cover.advanced_energy_detector.invert.disabled.2":"切換以反轉紅石邏輯", - "cover.advanced_energy_detector.invert.disabled.3":"預設情況下,能量小於所設定的最小 EU 時覆蓋板將發出紅石訊號,大於最大 EU 時則停止發出紅石訊號", - "cover.advanced_energy_detector.invert.enabled.0":"輸出:反轉", - "cover.advanced_energy_detector.invert.enabled.1":"", - "cover.advanced_energy_detector.invert.enabled.2":"切換以反轉紅石邏輯", - "cover.advanced_energy_detector.invert.enabled.3":"預設情況下,能量小於所設定的最小 EU 時覆蓋板將發出紅石訊號,大於最大 EU 時則停止發出紅石訊號", - "cover.advanced_energy_detector.label":"進階能量探測覆蓋板", - "cover.advanced_energy_detector.max":"最大值", - "cover.advanced_energy_detector.min":"最小值", - "cover.advanced_energy_detector.use_percent.disabled.0":"模式:EU設定值", - "cover.advanced_energy_detector.use_percent.disabled.1":"", - "cover.advanced_energy_detector.use_percent.disabled.2":"使用給定的EU數值或百分比來比較所附著的能量儲存中能量的最大/最小值。", - "cover.advanced_energy_detector.use_percent.enabled.0":"模式: 百分比", - "cover.advanced_energy_detector.use_percent.enabled.1":"", - "cover.advanced_energy_detector.use_percent.enabled.2":"使用給定的EU數值或百分比來比較所附著的能量儲存中能量的最大/最小值。", - "cover.advanced_fluid_detector.invert.disabled.0":"輸出:普通", - "cover.advanced_fluid_detector.invert.disabled.1":"", - "cover.advanced_fluid_detector.invert.disabled.2":"切換以反轉紅石邏輯", - "cover.advanced_fluid_detector.invert.disabled.3":"預設情況下,流體量介於所設定的最小值和最大值之間時覆蓋板將發出紅石訊號,小於最小值時則停止發出紅石訊號", - "cover.advanced_fluid_detector.invert.enabled.0":"輸出:反轉", - "cover.advanced_fluid_detector.invert.enabled.1":"", - "cover.advanced_fluid_detector.invert.enabled.2":"切換以反轉紅石邏輯", - "cover.advanced_fluid_detector.invert.enabled.3":"預設情況下,流體量介於所設定的最小值和最大值之間時覆蓋板將發出紅石訊號,小於最小值時則停止發出紅石訊號", - "cover.advanced_fluid_detector.label":"進階流體探測器", - "cover.advanced_fluid_detector.max":"最大流體量(mB)", - "cover.advanced_fluid_detector.min":"最小流體量(mB)", - "cover.advanced_item_detector.invert.disabled.0":"輸出:普通", - "cover.advanced_item_detector.invert.disabled.1":"", - "cover.advanced_item_detector.invert.disabled.2":"切換以反轉紅石邏輯", - "cover.advanced_item_detector.invert.disabled.3":"預設情況下,物品數量介於所設定的最小值和最大值之間時覆蓋板將發出紅石訊號,小於最小值時則停止發出紅石訊號", - "cover.advanced_item_detector.invert.enabled.0":"輸出:反轉", - "cover.advanced_item_detector.invert.enabled.1":"", - "cover.advanced_item_detector.invert.enabled.2":"切換以反轉紅石邏輯", - "cover.advanced_item_detector.invert.enabled.3":"預設情況下,物品數量介於所設定的最小值和最大值之間時覆蓋板將發出紅石訊號,小於最小值時則停止發出紅石訊號", - "cover.advanced_item_detector.label":"進階物品探測器", - "cover.advanced_item_detector.max":"最大物品數量", - "cover.advanced_item_detector.min":"最小物品數量", - "cover.bucket.mode.bucket":"B", - "cover.bucket.mode.milli_bucket":"mB", - "cover.conveyor.blocks_input.disabled.0":"若啟用,覆蓋板設定為將物品從儲存空間輸出至管道時將阻止物品從所在面輸入。", - "cover.conveyor.blocks_input.disabled.1":"§c已禁用", - "cover.conveyor.blocks_input.enabled.0":"若啟用,覆蓋板設定為將物品從儲存空間輸出至管道時將阻止物品從所在面輸入。", - "cover.conveyor.blocks_input.enabled.1":"§a已啟用", - "cover.conveyor.distribution.insert_first.0":"分配模式:§b優先順序", - "cover.conveyor.distribution.insert_first.1":"§7將物品輸入至所搜尋到的優先順序最高的物品儲存空間", - "cover.conveyor.distribution.insert_first.2":"§7加固物品管道會降低管道路徑的優先順序。", - "cover.conveyor.distribution.round_robin_global.0":"分配模式:§b輪詢排程", - "cover.conveyor.distribution.round_robin_global.1":"§7將物品平分至相連的物品儲存空間。", - "cover.conveyor.distribution.round_robin_prio.0":"分配模式:§b輪詢排程(次序式)", - "cover.conveyor.distribution.round_robin_prio.1":"§7嘗試將物品平分至相連的物品儲存空間,並優先考慮優先順序更高的。", - "cover.conveyor.distribution.round_robin_prio.2":"§7加固物品管道會降低管道路徑的優先順序。", - "cover.conveyor.item_filter.title":"物品過濾", - "cover.conveyor.mode":"模式:%s", - "cover.conveyor.mode.export":"模式:輸出", - "cover.conveyor.mode.import":"模式:輸入", - "cover.conveyor.tag.title.0":"標籤名稱", - "cover.conveyor.tag.title.1":"(*可作萬用字元)", - "cover.conveyor.title":"傳送帶覆蓋板設定(%s)", - "cover.conveyor.transfer_rate":"§7物品/秒", - "cover.detector_base.message_inverted_state":"監控狀態: 反轉", - "cover.detector_base.message_normal_state":"監控狀態:普通", - "cover.ender_fluid_link.incomplete_hex.0":"輸入的顏色不正確!", - "cover.ender_fluid_link.incomplete_hex.1":"輸入正確的八位十六進位制顏色碼方可應用", - "cover.ender_fluid_link.incomplete_hex.2":"此時關閉介面將導致丟失編輯內容!", - "cover.ender_fluid_link.iomode.disabled":"已禁用I/O", - "cover.ender_fluid_link.iomode.enabled":"已啟用I/O", - "cover.ender_fluid_link.private.tooltip.disabled.0":"切換至私有儲罐模式", - "cover.ender_fluid_link.private.tooltip.disabled.1":"私有權歸最初加裝該覆蓋板的玩家所有", - "cover.ender_fluid_link.private.tooltip.enabled":"切換至公共儲罐模式", - "cover.ender_fluid_link.title":"終界流體連線", - "cover.filter.blacklist.disabled":"白名單", - "cover.filter.blacklist.enabled":"黑名單", - "cover.filter.mode.filter_both":"過濾兩者", - "cover.filter.mode.filter_extract":"過濾輸出", - "cover.filter.mode.filter_insert":"過濾輸入", - "cover.fluid.voiding.advanced.title":"高階流體銷毀設定", - "cover.fluid.voiding.title":"流體銷毀設定", - "cover.fluid_filter.config_amount.0":"向上或向下滾動滑鼠滾輪以增加或減少流體量。", - "cover.fluid_filter.config_amount.1":"Shift[§6x10§r],Ctrl[§ex100§r],Shift+Ctrl[§ax1000§r]", - "cover.fluid_filter.config_amount.2":"亦可透過右擊或左擊來增減流體量。", - "cover.fluid_filter.config_amount.3":"按住Shift時點選滑鼠則將使流體量翻倍或減半。", - "cover.fluid_filter.config_amount.4":"點選中鍵以清除", - "cover.fluid_filter.mode.filter_both":"過濾兩者", - "cover.fluid_filter.mode.filter_drain":"過濾輸出", - "cover.fluid_filter.mode.filter_fill":"過濾輸入", - "cover.fluid_filter.title":"流體過濾卡", - "cover.fluid_regulator.keep_exact":"保持供應:%s", - "cover.fluid_regulator.supply_exact":"精確供應:%s", - "cover.fluid_regulator.title":"流體調節器設定(%s)", - "cover.fluid_regulator.transfer_mode.description.0":"§e任意傳輸§r-在此模式下,覆蓋板將傳輸任何與過濾卡匹配的流體。", - "cover.fluid_regulator.transfer_mode.description.1":"§e精確供應-在此模式下,覆蓋板會將此按鈕下方視窗中指定的流體按指定量打包傳輸。若流體量小於指定量,流體不會被傳輸。", - "cover.fluid_regulator.transfer_mode.description.2":"§e保持供應-在此模式下,覆蓋板將在目標容器中保持指定數量的液體,低於保持量時傳輸相應量的流體。", - "cover.fluid_regulator.transfer_mode.description.3":"§7小提示:按住Shift/Crtl把增加或減少的數量乘以10/100。", - "cover.item.voiding.advanced.title":"高階物品銷毀設定", - "cover.item.voiding.title":"物品銷毀設定", - "cover.item_filter.ignore_damage.disabled":"匹配耐久度", - "cover.item_filter.ignore_damage.enabled":"無視耐久度", - "cover.item_filter.ignore_nbt.disabled":"匹配NBT", - "cover.item_filter.ignore_nbt.enabled":"忽略NBT", - "cover.item_filter.title":"物品過濾卡", - "cover.item_smart_filter.filtering_mode.centrifuge":"離心機", - "cover.item_smart_filter.filtering_mode.description.0":"為該智慧覆蓋板選擇目標機器。", - "cover.item_smart_filter.filtering_mode.description.1":"它能夠自動挑選符合機器配方的物品。", - "cover.item_smart_filter.filtering_mode.electrolyzer":"電解機", - "cover.item_smart_filter.filtering_mode.sifter":"篩選機", - "cover.item_smart_filter.title":"智慧物品過濾", - "cover.machine_controller.invert.disabled.0":"§e普通§r - 該模式下的覆蓋板需要比設定強度小的紅石訊號來觸發", - "cover.machine_controller.invert.enabled.0":"§e反相§r - 該模式下的覆蓋板需要比設定強度大的紅石訊號來觸發", - "cover.machine_controller.inverted":"反相", - "cover.machine_controller.mode.cover_down":"控制目標:覆蓋板(底面)", - "cover.machine_controller.mode.cover_east":"控制目標:覆蓋板(東面)", - "cover.machine_controller.mode.cover_north":"控制目標:覆蓋板(北面)", - "cover.machine_controller.mode.cover_south":"控制目標:覆蓋板(南面)", - "cover.machine_controller.mode.cover_up":"控制目標:覆蓋板(頂面)", - "cover.machine_controller.mode.cover_west":"控制目標:覆蓋板(西面)", - "cover.machine_controller.mode.machine":"控制目標:機器", - "cover.machine_controller.mode.null":"控制目標:無", - "cover.machine_controller.normal":"普通", - "cover.machine_controller.redstone":"最小紅石訊號強度:%,d", - "cover.machine_controller.title":"機器控制設定", - "cover.pump.fluid_filter.title":"流體過濾", - "cover.pump.mode.export":"模式:輸出", - "cover.pump.mode.import":"模式:輸入", - "cover.pump.title":"泵覆蓋板設定(%s)", - "cover.pump.transfer_rate":"%s", - "cover.robotic_arm.title":"機械臂設定(%s)", - "cover.robotic_arm.transfer_mode.description.0":"§e任意傳輸§r-在此模式下,覆蓋板將儘可能傳輸一切符合過濾設定的物品。", - "cover.robotic_arm.transfer_mode.description.1":"§e精確補給§r-在此模式下,覆蓋板每次都會輸入在物品過濾卡的過濾槽中指定(或者在標籤過濾卡的按鈕裡指定)數量的物品。若物品的數量小於指定數量,物品將不會被輸入。", - "cover.robotic_arm.transfer_mode.description.2":"§e保持補給§r-在此模式下,覆蓋板將保持目標容器中指定物品的數量,需要物品時則供應相應量的物品。", - "cover.robotic_arm.transfer_mode.description.3":"§7小提示:左/右擊過濾槽可以調整物品數量,同時按住Shift可以更快地調整。", - "cover.robotic_arm.transfer_mode.keep_exact":"保持補給", - "cover.robotic_arm.transfer_mode.transfer_any":"任意傳輸", - "cover.robotic_arm.transfer_mode.transfer_exact":"精確補給", - "cover.shutter.message.disabled":"扇板已開啟", - "cover.shutter.message.enabled":"扇板已關閉", - "cover.storage.title":"儲存覆蓋板", - "cover.tag_filter.info.0":"§b接受複雜表示式", - "cover.tag_filter.info.1":"& = 且(AND)", - "cover.tag_filter.info.10":"§b使用範例:§6*dusts/gold | (gtceu:circuits & !*lv)", - "cover.tag_filter.info.11":"這將匹配所有種類的金粉或LV以外的電路", - "cover.tag_filter.info.2":"丨= 或(OR)", - "cover.tag_filter.info.3":"^ = 異或(XOR)", - "cover.tag_filter.info.4":"! = 非(NOT)", - "cover.tag_filter.info.5":"( )表示優先順序", - "cover.tag_filter.info.6":"* 表示萬用字元", - "cover.tag_filter.info.7":"§b例:", - "cover.tag_filter.info.8":"§6dust*Gold | (plate* &! *Double*)", - "cover.tag_filter.info.9":"將匹配所有大小的金粉或所有非雙重板的板", - "cover.tag_filter.matches":"物品匹配", - "cover.tag_filter.matches_not":"物品不匹配", - "cover.tag_filter.test_slot.info":"放入一件物品以測試是否匹配過濾表示式", - "cover.tag_filter.title":"礦物詞典過濾卡", - "cover.universal.manual_import_export.mode.description.0":"§e禁用§r-僅依照覆蓋板與內部過濾卡的指定規則傳輸。", - "cover.universal.manual_import_export.mode.description.1":"§e過濾§r-外部I/O將只根據過濾卡的指定規則傳輸,不受覆蓋板的限制。", - "cover.universal.manual_import_export.mode.description.2":"§e無過濾§r-外部I/O無視所有傳輸規則,過濾卡將僅控制覆蓋板進行的I/O。", - "cover.universal.manual_import_export.mode.disabled":"特殊I/O模式:§b禁用\\n§7僅依照覆蓋板與內部過濾卡的指定規則傳輸。", - "cover.universal.manual_import_export.mode.filtered":"特殊I/O模式:§b過濾\\n§7外部I/O將只根據過濾卡的指定規則傳輸,不受覆蓋板的限制。", - "cover.universal.manual_import_export.mode.unfiltered":"特殊I/O模式:§b無過濾\\n§7外部I/O無視所有傳輸規則,過濾卡將僅控制覆蓋板進行的I/O。", - "cover.voiding.label.disabled":"禁用", - "cover.voiding.label.enabled":"啟用", - "cover.voiding.message.disabled":"已禁用銷毀覆蓋板", - "cover.voiding.message.enabled":"已啟用銷毀覆蓋板", - "cover.voiding.tooltip":"§c警告!§7“啟用”時所有流體和物品全部都會被銷毀。", - "cover.voiding.voiding_mode.description.0":"§e匹配銷毀§r:匹配過濾規則即銷毀。", - "cover.voiding.voiding_mode.description.1":"§e溢位銷毀§r:匹配過濾規則即銷毀超出設定數量的部分物品/流體。", - "cover.voiding.voiding_mode.void_any":"匹配銷毀", - "cover.voiding.voiding_mode.void_overflow":"溢位銷毀", - "curios.identifier.gtceu_magnet":"GTCEu磁鐵", - "death.attack.gtceu.axe":"%s被%s用斧子砍死了", - "death.attack.gtceu.butchery_knife":"%s死在了%s的屠刀之下", - "death.attack.gtceu.buzzsaw":"%2$手中圓鋸的嗞嗞聲成為了%1$s生命中最後聽到的聲音", - "death.attack.gtceu.chainsaw_lv":"%2$s的鏈鋸切碎了%1$s", - "death.attack.gtceu.chemical":"%s歷經了一場化學事故", - "death.attack.gtceu.crowbar":"%s被%s用撬棍撬走了半條命", - "death.attack.gtceu.drill_ev":"%2$s的超高壓電鑽洞穿了%1$s", - "death.attack.gtceu.drill_hv":"%2$s的高壓電鑽洞穿了%1$s", - "death.attack.gtceu.drill_iv":"%2$s的強導壓電鑽洞穿了%1$s", - "death.attack.gtceu.drill_lv":"%2$s的低壓電鑽洞穿了%1$s", - "death.attack.gtceu.drill_mv":"%2$s的中壓電鑽洞穿了%1$s", - "death.attack.gtceu.electric":"%s觸電身亡", - "death.attack.gtceu.explosion":"%s爆炸了", - "death.attack.gtceu.explosion.player":"拜%2$s所賜,%1$s爆炸了", - "death.attack.gtceu.file":"%s歷盡了%s的“銼”折", - "death.attack.gtceu.frost":"%s探索到了低溫的奧秘", - "death.attack.gtceu.hammer":"%s被%s錘死了", - "death.attack.gtceu.heat":"%s被活活煮熟了", - "death.attack.gtceu.heat.player":"%s被%s活活煮熟了", - "death.attack.gtceu.hoe":"%s被%s鋤死了", - "death.attack.gtceu.knife":"%2$s紳士地捅了%1$s幾刀", - "death.attack.gtceu.mallet":"%s被%s用錘頭活活敲死了", - "death.attack.gtceu.medical_condition/arsenicosis":"%s死於砷中毒", - "death.attack.gtceu.medical_condition/asbestosis":"%s得了間皮瘤", - "death.attack.gtceu.medical_condition/berylliosis":"%s貪婪地挖掘綠寶石,結果有點過火了", - "death.attack.gtceu.medical_condition/carbon_monoxide_poisoning":"%s離開時爐子還開着", - "death.attack.gtceu.medical_condition/carcinogen":"%s身患白血病", - "death.attack.gtceu.medical_condition/chemical_burns":"%s歷經了一場化學事故", - "death.attack.gtceu.medical_condition/irritant":"%s身上長了§n§l極其嚴重§r的皮疹", - "death.attack.gtceu.medical_condition/methanol_poisoning":"%s在禁酒令下嘗試飲用私釀烈酒", - "death.attack.gtceu.medical_condition/nausea":"%s死於噁心", - "death.attack.gtceu.medical_condition/none":"%s死於...什麼都沒有?", - "death.attack.gtceu.medical_condition/poison":"%s忘了毒物的確有毒", - "death.attack.gtceu.medical_condition/silicosis":"%s不是死於肺結核,而是矽肺病", - "death.attack.gtceu.medical_condition/weak_poison":"%s吞下了鉛(或水銀!)", - "death.attack.gtceu.mining_hammer":"%s被%s當成礦砸死了", - "death.attack.gtceu.mortar":"%s被%s用研缽磨成了粉", - "death.attack.gtceu.pickaxe":"%s被%s用鎬子鑿死了", - "death.attack.gtceu.radiation":"%s放射出了喜悅的光芒", - "death.attack.gtceu.screwdriver":"%s被%s用螺絲起子鑽死了", - "death.attack.gtceu.screwdriver_lv":"%s的螺絲被%s扭掉了", - "death.attack.gtceu.scythe":"%s一鐮刀下去,%s的靈魂灰飛煙滅", - "death.attack.gtceu.shovel":"%s被%s用鍬掏死了", - "death.attack.gtceu.spade":"%s被%s用鏟子挖死了", - "death.attack.gtceu.turbine":"%s一頭扎進了渦輪裡", - "death.attack.gtceu.wire_cutter":"%s用剪線鉗剪斷了%s的血管", - "death.attack.gtceu.wrench":"%s被%s用扳手夯死了!", - "death.attack.gtceu.wrench_hv":"%s的血管被%s狠狠擰鬆了", - "death.attack.gtceu.wrench_iv":"%2$s一扳手下去,扳倒了%1$s的美好人生", - "death.attack.gtceu.wrench_lv":"%s的血管被%s狠狠擰鬆了", - "effect.gtceu.weak_poison":"輕度中毒", - "enchantment.damage.disjunction":"終界離析", - "enchantment.disjunction":"終界離析", - "enchantment.gtceu.disjunction.description":"對終界生物施加虛弱和緩慢效果。", - "enchantment.gtceu.hard_hammer.description":"像格雷科技的錘一樣粉碎所採掘的方塊。", - "enchantment.hard_hammer":"錘碎", - "entity.gtceu.boat":"船", - "entity.gtceu.chest_boat":"儲物箱船", - "entity.gtceu.dynamite":"炸藥", - "entity.gtceu.industrial_tnt":"工業TNT", - "entity.gtceu.powderbarrel":"火藥桶", - "fluid.empty":"空", - "fluid.gtceu.potion":"藥水", - "fluid.spawnlocation.name":"流體礦脈資訊", - "fluid.tile.lava":"熔岩", - "fluid.tile.water":"水", - "fluid_cell.empty":"空", - "gtceu.air_scrubber":"空氣淨化器", - "gtceu.alloy_blast_smelter":"合金冶煉爐", - "gtceu.alloy_smelter":"合金冶煉", - "gtceu.arc_furnace":"電弧爐", - "gtceu.assembler":"組裝機", - "gtceu.assembly_line":"裝配線", - "gtceu.auto_decomp.rotor":"渦輪轉子", - "gtceu.auto_decomp.tool":"非電動工具", - "gtceu.autoclave":"高壓釜", - "gtceu.battery_buffer.average_input":"平均輸入:%s EU/t", - "gtceu.battery_buffer.average_output":"平均輸出:%s EU/t", - "gtceu.bender":"卷板機", - "gtceu.brewery":"釀造室", - "gtceu.bus.collapse.error":"匯流排位於已成型的多方塊結構後方可進行該操作", - "gtceu.bus.collapse_false":"已禁用物品堆疊自動合併", - "gtceu.bus.collapse_true":"已啟用物品堆疊自動合併", - "gtceu.button.bedrock_fluids":"顯示基岩流體礦脈", - "gtceu.button.hide_depleted":"隱藏枯竭的礦脈", - "gtceu.button.ore_veins":"顯示GT礦脈", - "gtceu.button.show_depleted":"顯示枯竭的礦脈", - "gtceu.cable.amperage":"§e最大電流:§r§e%d", - "gtceu.cable.loss_per_block":"§c線損/公尺/安:§r§c%d§7 伏", - "gtceu.cable.superconductor":"%s§d超導體", - "gtceu.cable.voltage":"§a最大電壓:§r§a%d§a(%s§a)", - "gtceu.canner":"裝罐機", - "gtceu.centrifuge":"離心機", - "gtceu.chance_logic.and":"AND", - "gtceu.chance_logic.none":"NONE", - "gtceu.chance_logic.or":"OR", - "gtceu.chance_logic.xor":"XOR", - "gtceu.chat.cape":"§5恭喜你:你剛剛解鎖了一件新披風!檢視終端應用程式“披風選擇器”來使用它。§r", - "gtceu.chemical_bath":"化學水浴機", - "gtceu.chemical_reactor":"化學反應器", - "gtceu.circuit_assembler":"電路組裝機", - "gtceu.coke_oven":"焦爐", - "gtceu.combustion_generator":"內燃發電機", - "gtceu.command.copy.click_to_copy":"點選複製", - "gtceu.command.copy.copied_and_click":"已複製到剪貼簿,點選再次複製", - "gtceu.command.copy.copied_end":"]到剪貼簿", - "gtceu.command.copy.copied_start":"已複製[", - "gtceu.command.hand.electric":"電量資訊:%d / %d EU - 等級:%d; 是否為電池:%s", - "gtceu.command.hand.fluid":"流體資訊:%d / %d mB;是否可輸入:%s; 是否可輸出:%s", - "gtceu.command.hand.fluid2":"流體 ID:", - "gtceu.command.hand.groovy":"考慮使用§6/gs hand", - "gtceu.command.hand.item_id":"物品:%s(後設資料:%d)", - "gtceu.command.hand.material":"材料 ID:", - "gtceu.command.hand.meta_item":"元物品 ID:", - "gtceu.command.hand.no_item":"在執行此命令之前,您的主手或副手必須拿著物品。", - "gtceu.command.hand.not_a_player":"這個命令只有玩家可以使用。", - "gtceu.command.hand.ore_prefix":"礦物字首:", - "gtceu.command.hand.tag_entries":"§3標籤條目:", - "gtceu.command.hand.tool_stats":"工具狀態類:%s", - "gtceu.command.hand.usage":"用法:/gtceu hand", - "gtceu.command.recipecheck.begin":"開始配方衝突檢查...", - "gtceu.command.recipecheck.end":"配方衝突檢查詢到%d可能存在的衝突,檢視伺服器日誌以瞭解更多資訊", - "gtceu.command.recipecheck.end_no_conflicts":"未發現配方衝突!", - "gtceu.command.recipecheck.usage":"用法:/gtceu recipecheck", - "gtceu.command.usage":"用法:/gtceu ", - "gtceu.command.worldgen.reload.failed":"Worldgen重新載入失敗。檢查控制台是否有錯誤。", - "gtceu.command.worldgen.reload.success":"Worldgen已成功從設定重新載入。", - "gtceu.command.worldgen.reload.usage":"用法:/gtceu worldgen reload", - "gtceu.command.worldgen.usage":"用法:/gtceu worldgen ", - "gtceu.compressor":"壓縮機", - "gtceu.cover.activity_detector.message_activity_inverted":"正在以反相模式監控活動狀態", - "gtceu.cover.activity_detector.message_activity_normal":"正在以普通模式監控活動狀態", - "gtceu.cover.activity_detector_advanced.message_activity_inverted":"正在以反相模式監控處理狀態", - "gtceu.cover.activity_detector_advanced.message_activity_normal":"正在以普通模式監控處理狀態", - "gtceu.cover.energy_detector.message_electricity_storage_inverted":"正在以反相模式監控電力儲存", - "gtceu.cover.energy_detector.message_electricity_storage_normal":"正在以普通模式監控電力儲存", - "gtceu.cover.fluid_detector.message_fluid_storage_inverted":"正在以反相模式監控流體儲存", - "gtceu.cover.fluid_detector.message_fluid_storage_normal":"正在以普通模式監控流體儲存", - "gtceu.cover.item_detector.message_item_storage_inverted":"正在以反相模式監控物品儲存", - "gtceu.cover.item_detector.message_item_storage_normal":"正在以普通模式監控物品儲存", - "gtceu.cracker":"裂解機", - "gtceu.creative.activity.off":"未啟用", - "gtceu.creative.activity.on":"已啟用", - "gtceu.creative.chest.ipc":"每次輸出流體量", - "gtceu.creative.chest.item":"物品", - "gtceu.creative.chest.tpc":"每次輸出間隔Tick", - "gtceu.creative.computation.average":"平均CWU/t需求", - "gtceu.creative.energy.amperage":"電流", - "gtceu.creative.energy.sink":"歸零", - "gtceu.creative.energy.source":"最大值", - "gtceu.creative.energy.voltage":"電壓", - "gtceu.creative.tank.fluid":"流體", - "gtceu.creative.tank.mbpc":"每次輸出流體量", - "gtceu.creative.tank.tpc":"每次輸出間隔Tick", - "gtceu.creative_tooltip.1":"§7你需要", - "gtceu.creative_tooltip.2":"§b創造模式", - "gtceu.creative_tooltip.3":"§7來使用它", - "gtceu.cutter":"切割機", - "gtceu.debug.f3_h.enabled":"格雷科技修改了除錯資訊!對於開發人員:在GregTech設定檔案中啟用misc:debug以檢視更多資訊", - "gtceu.direction.tooltip.back":"背面", - "gtceu.direction.tooltip.down":"底面", - "gtceu.direction.tooltip.front":"正面", - "gtceu.direction.tooltip.left":"左面", - "gtceu.direction.tooltip.right":"右面", - "gtceu.direction.tooltip.up":"頂面", - "gtceu.distillation_tower":"蒸餾塔", - "gtceu.distillery":"蒸餾室", - "gtceu.duct_pipe.transfer_rate":"§b空氣傳輸速率:%s", - "gtceu.dummy":"假人", - "gtceu.electric_blast_furnace":"電力高爐", - "gtceu.electric_furnace":"電爐", - "gtceu.electrolyzer":"電解機", - "gtceu.electromagnetic_separator":"電磁分離機", - "gtceu.evaporation":"蒸發", - "gtceu.extractor":"提取機", - "gtceu.extruder":"壓模器", - "gtceu.fermenter":"發酵槽", - "gtceu.fluid.amount":"§9總量:%d/%d mB", - "gtceu.fluid.click_combined":"§7手持流體容器點選流體槽以§c倒出§7或§b填入§7流體(Shift+點擊以用整組容器倒出流體或用整組容器中的流體填入)", - "gtceu.fluid.click_to_empty":"§7手持流體容器點選流體槽以§c倒出§7流體(Shift+點擊以用整組容器倒出流體)", - "gtceu.fluid.click_to_fill":"§7手持流體容器點選流體槽以§b填入§7流體(Shift+點擊以用整組容器中的流體填入)", - "gtceu.fluid.empty":"空", - "gtceu.fluid.gas_generic":"氣態%s", - "gtceu.fluid.gas_vapor":"%s蒸氣", - "gtceu.fluid.generic":"%s", - "gtceu.fluid.liquid_generic":"液態%s", - "gtceu.fluid.molten":"熔融%s", - "gtceu.fluid.plasma":"%s電漿", - "gtceu.fluid.state_gas":"§a狀態:氣態", - "gtceu.fluid.state_liquid":"§a狀態:液態", - "gtceu.fluid.state_plasma":"§a狀態:電漿態", - "gtceu.fluid.temperature":"§c溫度:%d K", - "gtceu.fluid.temperature.cryogenic":"§b低溫流體!輕拿輕放!", - "gtceu.fluid.type_acid.tooltip":"§6酸性流體!輕拿輕放!", - "gtceu.fluid_heater":"流體加熱器", - "gtceu.fluid_pipe.acid_proof":"§6可傳輸酸性物質", - "gtceu.fluid_pipe.capacity":"§9容積:§f%d mB", - "gtceu.fluid_pipe.channels":"§e平行管道:§f%d", - "gtceu.fluid_pipe.cryo_proof":"§6可傳輸低溫物質", - "gtceu.fluid_pipe.gas_proof":"§6可以傳輸氣體", - "gtceu.fluid_pipe.max_temperature":"§c溫度上限:§f%d K", - "gtceu.fluid_pipe.not_gas_proof":"§4氣體可能洩漏!", - "gtceu.fluid_pipe.plasma_proof":"§6可傳輸所有電漿", - "gtceu.fluid_solidifier":"流體固化器", - "gtceu.forge_hammer":"鍛造錘", - "gtceu.forming_press":"衝壓機床", - "gtceu.forming_press.naming.named":"§o已命名物品", - "gtceu.forming_press.naming.press":"§o名稱模板", - "gtceu.forming_press.naming.to_name":"§o待命名物品", - "gtceu.fusion_reactor":"核融合反應爐", - "gtceu.gas_collector":"集氣室", - "gtceu.gas_turbine":"燃氣輪機", - "gtceu.gui.auto_output.name":"自動", - "gtceu.gui.charger_slot.tooltip.0":"§f充電槽§r", - "gtceu.gui.charger_slot.tooltip.1":"§7從%s電池中取電§7", - "gtceu.gui.charger_slot.tooltip.2":"§7也可為%s工具或電池充電", - "gtceu.gui.chunkmode.disabled.0":"區塊模式§c禁用§r:點擊啟用。", - "gtceu.gui.chunkmode.disabled.1":"§7切換需要機器待機。", - "gtceu.gui.chunkmode.enabled.0":"區塊模式§a啟用§r:點擊禁用。", - "gtceu.gui.chunkmode.enabled.1":"§7切換需要機器待機。", - "gtceu.gui.circuit.title":"電路設定", - "gtceu.gui.config_slot":"§f設定槽位§r", - "gtceu.gui.config_slot.auto_pull_managed":"§4停用:§7由ME自動拉取管理", - "gtceu.gui.config_slot.remove":"§7右擊§4清除§7設定槽位。§r", - "gtceu.gui.config_slot.scroll":"§7使用滾輪§a切換§7設定數。§r", - "gtceu.gui.config_slot.set":"§7點選§b設定/選擇§7設定槽位。§r", - "gtceu.gui.config_slot.set_only":"§7點選§b設定§7設定槽位。§r", - "gtceu.gui.configurator_slot.tooltip.0":"§f設定器槽§r", - "gtceu.gui.configurator_slot.tooltip.1":"§7在此插槽放置一個§6程式設計電路§7以", - "gtceu.gui.configurator_slot.tooltip.2":"§7更改其設定值。", - "gtceu.gui.configurator_slot.tooltip.3":"§7按住§6Shift§7時點選按鈕,一次加減§6§75個編號", - "gtceu.gui.configurator_slot.tooltip.4":"§a此插槽中的程式設計電路也視為一個配方輸入。§r", - "gtceu.gui.content.chance_base":"產出機率:%s%%", - "gtceu.gui.content.chance_base_logic":"產出機率:%s%% (%s)", - "gtceu.gui.content.chance_boosted":"當前等級機率:%s%%", - "gtceu.gui.content.chance_boosted_logic":"當前等級機率:%s%%(%s)", - "gtceu.gui.content.chance_nc":"§c不會被消耗§r", - "gtceu.gui.content.chance_nc_short":"§c不消耗§r", - "gtceu.gui.content.chance_tier_boost_minus":"電壓加成:-%s%%/每級", - "gtceu.gui.content.chance_tier_boost_plus":"電壓加成:+%s%%/每級", - "gtceu.gui.content.count_range":"%s-%sx", - "gtceu.gui.content.per_tick":"§a每刻(tick)消耗/產生§r", - "gtceu.gui.content.tips.per_second_short":"§a/秒§r", - "gtceu.gui.content.tips.per_tick_short":"§a/刻(tick)§r", - "gtceu.gui.content.units.per_second":"/s", - "gtceu.gui.content.units.per_tick":"/t", - "gtceu.gui.cover_setting.title":"覆蓋板設定", - "gtceu.gui.editor.group.recipe_type":"封頂", - "gtceu.gui.editor.tips.citation":"引用次數", - "gtceu.gui.fisher_mode.tooltip.0":"捕捉垃圾物品", - "gtceu.gui.fisher_mode.tooltip.1":"關閉時,每次執行消耗兩根線。", - "gtceu.gui.fluid_amount":"流體總量:", - "gtceu.gui.fluid_auto_input.tooltip.disabled":"流體自動輸入已禁用", - "gtceu.gui.fluid_auto_input.tooltip.enabled":"流體自動輸入已啟用", - "gtceu.gui.fluid_auto_output.allow_input.disabled":"禁止從輸出面輸入流體", - "gtceu.gui.fluid_auto_output.allow_input.enabled":"允許從輸出面輸入流體", - "gtceu.gui.fluid_auto_output.tooltip.disabled":"流體自動輸出已禁用", - "gtceu.gui.fluid_auto_output.tooltip.enabled":"流體自動輸出已啟用", - "gtceu.gui.fluid_lock.tooltip.disabled":"流體鎖定已禁用", - "gtceu.gui.fluid_lock.tooltip.enabled":"流體鎖定已啟用", - "gtceu.gui.fluid_voiding_partial.tooltip.disabled":"過量流體銷毀已禁用", - "gtceu.gui.fluid_voiding_partial.tooltip.enabled":"過量流體銷毀已啟用", - "gtceu.gui.fuel_amount":"燃料總量:", - "gtceu.gui.item_auto_input.tooltip.disabled":"物品自動輸入已禁用", - "gtceu.gui.item_auto_input.tooltip.enabled":"物品自動輸入已啟用", - "gtceu.gui.item_auto_output.allow_input.disabled":"禁止從輸出面輸入物品", - "gtceu.gui.item_auto_output.allow_input.enabled":"允許從輸出面輸入物品", - "gtceu.gui.item_auto_output.tooltip.disabled":"物品自動輸出已禁用", - "gtceu.gui.item_auto_output.tooltip.enabled":"物品自動輸出已啟用", - "gtceu.gui.item_lock.tooltip.disabled":"物品鎖定已禁用", - "gtceu.gui.item_lock.tooltip.enabled":"物品鎖定已啟用", - "gtceu.gui.item_voiding_partial.tooltip.disabled":"物品過量銷毀已禁用", - "gtceu.gui.item_voiding_partial.tooltip.enabled":"物品過量銷毀已開啟", - "gtceu.gui.machinemode":"當前機器模式:%s", - "gtceu.gui.machinemode.title":"當前機器模式", - "gtceu.gui.me_bus.auto_pull_button":"點擊以切換ME自動拉取模式", - "gtceu.gui.me_network.offline":"網路狀態:§4離線§r", - "gtceu.gui.me_network.online":"網路狀態:§2線上§r", - "gtceu.gui.multiblock_fluid_voiding.0":"銷毀模式", - "gtceu.gui.multiblock_fluid_voiding.1":"§7銷毀§9流體", - "gtceu.gui.multiblock_item_fluid_voiding.0":"銷毀模式", - "gtceu.gui.multiblock_item_fluid_voiding.1":"§7銷毀§6物品§7和§9流體", - "gtceu.gui.multiblock_item_voiding.0":"銷毀模式", - "gtceu.gui.multiblock_item_voiding.1":"§7銷毀§6物品", - "gtceu.gui.multiblock_no_voiding.0":"銷毀模式", - "gtceu.gui.multiblock_no_voiding.1":"§7不進行銷毀", - "gtceu.gui.output_setting.title":"輸出設定", - "gtceu.gui.output_setting.tooltips.0":"左擊以自動輸出物品", - "gtceu.gui.output_setting.tooltips.1":"右擊以自動輸出流體", - "gtceu.gui.overclock.description.0":"超頻按鈕", - "gtceu.gui.overclock.description.1":"§7配方可以超頻到設定的電壓等級", - "gtceu.gui.overclock.disabled.0":"超頻已禁用", - "gtceu.gui.overclock.disabled.1":"點擊啟用", - "gtceu.gui.overclock.enabled.0":"超頻已啟用", - "gtceu.gui.overclock.enabled.1":"點擊禁用", - "gtceu.gui.overclock.off":"X", - "gtceu.gui.overclock.range":"可用電壓級 [%s,%s]", - "gtceu.gui.overclock.title":"超頻電壓級", - "gtceu.gui.silktouch.disabled.0":"絲綢之觸已禁用:點擊啟用。", - "gtceu.gui.silktouch.disabled.1":"§7切換需要機器待機。", - "gtceu.gui.silktouch.enabled.0":"絲綢之觸已啟用:點擊禁用。", - "gtceu.gui.silktouch.enabled.1":"§7切換需要機器待機。", - "gtceu.gui.sort":"分類", - "gtceu.gui.title_bar.back":"返回", - "gtceu.gui.title_bar.page_switcher":"頁面", - "gtceu.gui.toggle_view.disabled":"切換檢視(流體)", - "gtceu.gui.toggle_view.enabled":"切換檢視(物品)", - "gtceu.gui.waiting_list":"傳送佇列:", - "gtceu.hazard_trigger.any":"任何方式", - "gtceu.hazard_trigger.description":"肇因:", - "gtceu.hazard_trigger.inhalation":"吸入", - "gtceu.hazard_trigger.none":"無", - "gtceu.hazard_trigger.protection.description":"免受:", - "gtceu.hazard_trigger.skin_contact":"皮膚接觸", - "gtceu.implosion_compressor":"聚爆壓縮機", - "gtceu.io.both":"同時", - "gtceu.io.export":"輸出", - "gtceu.io.import":"輸入", - "gtceu.io.none":"無", - "gtceu.item_filter.empty_item":"空(無物品)", - "gtceu.item_filter.footer":"§e手持物品右鍵取代設定", - "gtceu.item_list.item_stored":"§7儲量:%d", - "gtceu.item_pipe.priority":"§9優先順序:§f%d", - "gtceu.jade.cleaned_this_second":"污染清理速率:%s/s", - "gtceu.jade.energy_stored":"%d / %d EU", - "gtceu.jade.progress_computation":"計算進度:%s / %s", - "gtceu.jade.progress_sec":"%s / %s s", - "gtceu.jade.progress_tick":"%s / %s t", - "gtceu.jei.bedrock_fluid.heavy_oil_deposit":"重油礦藏", - "gtceu.jei.bedrock_fluid.lava_deposit":"熔岩礦藏", - "gtceu.jei.bedrock_fluid.light_oil_deposit":"輕油礦藏", - "gtceu.jei.bedrock_fluid.natural_gas_deposit":"天然氣礦藏", - "gtceu.jei.bedrock_fluid.nether_natural_gas_deposit":"地獄天然氣礦藏", - "gtceu.jei.bedrock_fluid.oil_deposit":"石油礦藏", - "gtceu.jei.bedrock_fluid.raw_oil_deposit":"原油礦藏", - "gtceu.jei.bedrock_fluid.salt_water_deposit":"鹽水礦藏", - "gtceu.jei.bedrock_fluid_diagram":"基岩流體生成資訊", - "gtceu.jei.bedrock_ore_diagram":"基岩礦脈生成資訊", - "gtceu.jei.fluid.dep_amount_hover":"消耗後消耗的量", - "gtceu.jei.fluid.dep_chance_hover":"開採流體礦脈時消耗的機率", - "gtceu.jei.fluid.dep_yield_hover":"流體礦脈耗盡後能開採的最大流體量", - "gtceu.jei.fluid.depleted_rate":"耗盡後產量:%d", - "gtceu.jei.fluid.depletion_amount":"消耗量:%d", - "gtceu.jei.fluid.depletion_chance":"消耗機率:%d%%", - "gtceu.jei.fluid.dimension":"維度:", - "gtceu.jei.fluid.max_hover":"流體礦脈所能具有的的最大產量", - "gtceu.jei.fluid.max_yield":"最大產量:%d", - "gtceu.jei.fluid.min_hover":"流體礦脈所能具有的的最小產量", - "gtceu.jei.fluid.min_yield":"最小產量:%d", - "gtceu.jei.fluid.vein_weight":"礦脈權重:%d", - "gtceu.jei.fluid.weight_hover":"流體礦脈的生成權重。滑鼠懸於圖示可檢視該流體在特定生態域中特殊的生成權重", - "gtceu.jei.materials.average_mass":"平均質量:%d", - "gtceu.jei.materials.average_neutrons":"平均中子數:%d", - "gtceu.jei.materials.average_protons":"平均質子數:%d", - "gtceu.jei.multiblock_info":"多方塊結構資訊", - "gtceu.jei.ore.between.0":"中層礦", - "gtceu.jei.ore.between.1":"和其他礦一起生成在礦脈的中間%d層", - "gtceu.jei.ore.biome_weighting":"§d%s的生成權重:§3%d", - "gtceu.jei.ore.biome_weighting_no_spawn":"§d%s的生成權重:§c無法生成", - "gtceu.jei.ore.biome_weighting_title":"§d特定生態域中的例外權重:", - "gtceu.jei.ore.ore_weight":"礦脈內生成權重:%d%%", - "gtceu.jei.ore.primary.0":"頂層礦", - "gtceu.jei.ore.primary.1":"在礦脈的頂部%d層生成", - "gtceu.jei.ore.secondary.0":"底層礦", - "gtceu.jei.ore.secondary.1":"在礦脈的底部%d層生成", - "gtceu.jei.ore.sporadic.0":"散佈礦", - "gtceu.jei.ore.sporadic.1":"生成在礦脈的任何地方", - "gtceu.jei.ore.surface_rock.0":"這種地表岩石標誌著礦脈的生成位置。", - "gtceu.jei.ore.surface_rock.1":"挖掘掉落3小撮粉,受幸運加成", - "gtceu.jei.ore_processing_diagram":"礦物處理流程圖", - "gtceu.jei.ore_vein.apatite_vein":"磷灰石礦脈", - "gtceu.jei.ore_vein.banded_iron_vein":"帶狀鐵礦脈", - "gtceu.jei.ore_vein.bauxite_vein_end":"終界鋁土礦脈", - "gtceu.jei.ore_vein.beryllium_vein":"鈹礦脈", - "gtceu.jei.ore_vein.cassiterite_vein":"錫石礦脈", - "gtceu.jei.ore_vein.certus_quartz":"賽特斯石英", - "gtceu.jei.ore_vein.coal_vein":"煤炭礦脈", - "gtceu.jei.ore_vein.copper_tin_vein":"銅錫礦脈", - "gtceu.jei.ore_vein.copper_vein":"銅礦脈", - "gtceu.jei.ore_vein.diamond_vein":"鑽石礦脈", - "gtceu.jei.ore_vein.galena_vein":"方鉛礦脈", - "gtceu.jei.ore_vein.garnet_tin_vein":"錫石榴石礦脈", - "gtceu.jei.ore_vein.garnet_vein":"石榴石礦脈", - "gtceu.jei.ore_vein.iron_vein":"鐵礦脈", - "gtceu.jei.ore_vein.lapis_vein":"青金石礦脈", - "gtceu.jei.ore_vein.lubricant_vein":"皂滑礦脈", - "gtceu.jei.ore_vein.magnetite_vein_end":"終界磁鐵礦脈", - "gtceu.jei.ore_vein.magnetite_vein_ow":"主世界磁鐵礦脈", - "gtceu.jei.ore_vein.manganese_vein":"錳礦脈", - "gtceu.jei.ore_vein.manganese_vein_ow":"主世界錳礦脈", - "gtceu.jei.ore_vein.mica_vein":"雲母礦脈", - "gtceu.jei.ore_vein.mineral_sand_vein":"礦砂礦脈", - "gtceu.jei.ore_vein.molybdenum_vein":"鉬礦脈", - "gtceu.jei.ore_vein.monazite_vein":"獨居石礦脈", - "gtceu.jei.ore_vein.naquadah_vein":"矽岩礦脈", - "gtceu.jei.ore_vein.nether_quartz_vein":"地獄石英礦脈", - "gtceu.jei.ore_vein.nickel_vein":"鎳礦脈", - "gtceu.jei.ore_vein.oilsands_vein":"油砂礦脈", - "gtceu.jei.ore_vein.olivine_vein":"橄欖石礦脈", - "gtceu.jei.ore_vein.pitchblende_vein_end":"終界瀝青鈾礦脈", - "gtceu.jei.ore_vein.redstone_vein":"紅石礦脈", - "gtceu.jei.ore_vein.redstone_vein_ow":"主世界紅石礦脈", - "gtceu.jei.ore_vein.saltpeter_vein":"硝石礦脈", - "gtceu.jei.ore_vein.salts_vein":"鹽礦脈", - "gtceu.jei.ore_vein.sapphire_vein":"藍寶石礦脈", - "gtceu.jei.ore_vein.scheelite_vein":"白鎢礦脈", - "gtceu.jei.ore_vein.sheldonite_vein":"謝爾頓礦脈", - "gtceu.jei.ore_vein.sulfur_vein":"硫礦脈", - "gtceu.jei.ore_vein.tetrahedrite_vein":"黝銅礦脈", - "gtceu.jei.ore_vein.topaz_vein":"黃玉礦脈", - "gtceu.jei.ore_vein_diagram":"礦脈生成資訊", - "gtceu.jei.ore_vein_diagram.chance":"§e機率:%s§r", - "gtceu.jei.ore_vein_diagram.dimensions":"維度:", - "gtceu.jei.ore_vein_diagram.spawn_range":"生成範圍:", - "gtceu.jei.ore_vein_diagram.weight":"權重:%s", - "gtceu.jei.programmed_circuit":"程式設計電路頁", - "gtceu.journeymap.options.layers":"勘探層", - "gtceu.journeymap.options.layers.bedrock_fluids":"顯示基岩流體礦脈", - "gtceu.journeymap.options.layers.hide_depleted":"隱藏枯竭的礦脈", - "gtceu.journeymap.options.layers.ore_veins":"顯示礦脈", - "gtceu.key.armor_charging":"啟用/禁用盔甲向物品欄充能", - "gtceu.key.armor_hover":"切換盔甲懸浮模式", - "gtceu.key.armor_mode_switch":"切換盔甲模式", - "gtceu.key.enable_boots":"啟用跳躍提升", - "gtceu.key.enable_jetpack":"啟用噴射背包", - "gtceu.key.tool_aoe_change":"切換工具範圍模式", - "gtceu.large_boiler":"大型鍋爐", - "gtceu.large_chemical_reactor":"大型化學反應器", - "gtceu.laser_engraver":"雷射蝕刻機", - "gtceu.lathe":"車床", - "gtceu.macerator":"研磨機", - "gtceu.machine.active_transformer.tooltip.0":"變形金剛:偽裝的雷射", - "gtceu.machine.active_transformer.tooltip.1":"可以將任意數量的能量§f輸入§7整合為任意數量的能量§f輸出§7。", - "gtceu.machine.active_transformer.tooltip.2":"當你使用§d雷射§7進行能量傳輸時,擁有驚人的傳輸距離。", - "gtceu.machine.active_transformer.tooltip.3":"Lasers§7.", - "gtceu.machine.advanced_processing_array.tooltip":"這個世界需要更多平行", - "gtceu.machine.assembly_line.tooltip":"真不是什麼多方塊組裝機!", - "gtceu.machine.available_recipe_map_1.tooltip":"可用配方型別:%s", - "gtceu.machine.available_recipe_map_2.tooltip":"可用配方型別:%s,%s", - "gtceu.machine.available_recipe_map_3.tooltip":"可用配方型別:%s,%s,%s", - "gtceu.machine.available_recipe_map_4.tooltip":"可用配方型別:%s,%s,%s,%s", - "gtceu.machine.basic.input_from_output_side.allow":"允許從輸出面輸入:", - "gtceu.machine.basic.input_from_output_side.disallow":"禁止從輸出面輸入:", - "gtceu.machine.bedrock_ore_miner.depletion":"§b損耗率:§f%s%%", - "gtceu.machine.bedrock_ore_miner.description":"§7從基岩之下的礦脈鑽掘礦", - "gtceu.machine.bedrock_ore_miner.production":"§e產量倍率:§f%dx,超頻後%fx", - "gtceu.machine.block_breaker.speed_bonus":"§e速度獎勵:§f%d%%", - "gtceu.machine.block_breaker.tooltip":"§7採掘正面的方塊並收集掉落物", - "gtceu.machine.boiler.info.cooling.down":"§9冷卻中§r%s", - "gtceu.machine.boiler.info.heating.up":"§c加熱中§r%s", - "gtceu.machine.boiler.info.producing.steam":" §a(沸騰)", - "gtceu.machine.buffer.tooltip":"用於儲存物品和流體的小小緩衝器", - "gtceu.machine.canner.jei_description":"填入或倒空流體容器,例如桶和流體單元", - "gtceu.machine.central_monitor.tooltip":"但它能執行《毀滅戰士》嗎?", - "gtceu.machine.charcoal_pile.tooltip":"不烤麵包烤燃料的地下麵包房", - "gtceu.machine.charcoal_pile.tooltip.0":"§c點火後§7將原木燒製成§a木炭§7。", - "gtceu.machine.charcoal_pile.tooltip.1":"使用可點火的物品右擊即可啟動。", - "gtceu.machine.charcoal_pile.tooltip.2":"熱解發生在下方至多§b9x4x9§7的空間內。", - "gtceu.machine.charcoal_pile.tooltip.3":"原木不可暴露在§e空氣§7中!", - "gtceu.machine.cleanroom.tooltip":"將那些討厭的灰塵拒之門外", - "gtceu.machine.cleanroom.tooltip.0":"將機器放在內部執行無塵室配方。", - "gtceu.machine.cleanroom.tooltip.1":"清理汙染時耗能為§f30EU/t§7,潔淨狀態耗能為§f4EU/t§7。", - "gtceu.machine.cleanroom.tooltip.2":"超頻增加每個週期的清潔度。", - "gtceu.machine.cleanroom.tooltip.3":"§b大小:§f5x5x5到15x15x15", - "gtceu.machine.cleanroom.tooltip.4":"天花板需要§f過濾器機械方塊§7,不包含天花板的邊緣。", - "gtceu.machine.cleanroom.tooltip.5":"接受最多§f四扇門§7!門處於開啟狀態時不會影響潔淨度。", - "gtceu.machine.cleanroom.tooltip.6":"發電機、消音倉、採礦機和原始機器對於無塵室來說太髒了!", - "gtceu.machine.cleanroom.tooltip.7":"透過牆壁上的§f機器外殼§7或§f二極體§7向內部輸入能量。", - "gtceu.machine.cleanroom.tooltip.ae2.channels":"透過牆壁上的§f機器外殼§7傳送最多§f8個AE2頻道§7。", - "gtceu.machine.cleanroom.tooltip.ae2.no_channels":"透過牆壁上的§f機器外殼§7連通§aAE2網路§7。", - "gtceu.machine.cleanroom.tooltip.hold_ctrl":"按住CTRL以顯示完整的結構資訊", - "gtceu.machine.coke_oven.tooltip":"為鍊鋼和發電提供更優質的燃料", - "gtceu.machine.coke_oven_hatch.tooltip":"§7允許焦爐的自動化輸入輸出", - "gtceu.machine.combustion_generator.tooltip":"§7需要液體燃料", - "gtceu.machine.computation_receiver_hatch.tooltip":"為多方塊結構輸入算力資料", - "gtceu.machine.computation_transmitter_hatch.tooltip":"從多方塊結構輸出算力資料", - "gtceu.machine.cracker.tooltip":"有它,石油才有用", - "gtceu.machine.cracker.tooltip.1":"使用§6白銅§7後的每個線圈等級可以減少§f10%%§7的能源消耗。", - "gtceu.machine.data_access_hatch.tooltip.0":"令多方塊結構得以訪問資料", - "gtceu.machine.data_access_hatch.tooltip.1":"新增了§a%s§7個資料容器(快閃記憶體等)插槽", - "gtceu.machine.data_bank.tooltip.0":"你的個人網路儲存器", - "gtceu.machine.data_bank.tooltip.1":"大容量資料儲存,使用光纜傳輸。", - "gtceu.machine.data_bank.tooltip.2":"資料庫間可以相互連線。", - "gtceu.machine.data_bank.tooltip.3":"每個資料/光學倉耗能為§f%s EU/t§7。", - "gtceu.machine.data_bank.tooltip.4":"每個已連線的資料/光學倉耗能為§f%s EU/t§7。", - "gtceu.machine.data_receiver_hatch.tooltip":"為多方塊結構輸入研究資料", - "gtceu.machine.data_transmitter_hatch.tooltip":"從多方塊結構輸出研究資料", - "gtceu.machine.diode.message":"最大電流:%s", - "gtceu.machine.diode.tooltip_general":"將只允許能量向一個方向流動,並限制電流。", - "gtceu.machine.diode.tooltip_starts_at":"預設允許§f1A§r電流通行,使用軟錘切換。", - "gtceu.machine.diode.tooltip_tool_usage":"用軟錘右擊以改變電流。", - "gtceu.machine.distillation_tower.tooltip":"流體精煉廠", - "gtceu.machine.drum.disable_output":"不排出液體", - "gtceu.machine.drum.enable_output":"將液體排到底面相鄰的容器中", - "gtceu.machine.dual_hatch.export.tooltip":"為多方塊結構輸出物品和流體", - "gtceu.machine.dual_hatch.import.tooltip":"為多方塊結構輸入物品和流體", - "gtceu.machine.electric_blast_furnace.tooltip":"電力高爐有了,那電力煙燻爐呢?", - "gtceu.machine.electric_blast_furnace.tooltip.0":"每超過配方溫度§f900K§7,耗能均將乘以§f95%%§7(不計超頻)。", - "gtceu.machine.electric_blast_furnace.tooltip.1":"每超過配方溫度§f1800K§7,將一次超頻的效率變為§f100%%§7(無損超頻)。", - "gtceu.machine.electric_blast_furnace.tooltip.2":"超過§fMV§7後的每一級電壓,都會將溫度提高§f100K§7。", - "gtceu.machine.endpoint.tooltip.0":"使用§f長距離管道§7方塊連線管道介面以建立管路。", - "gtceu.machine.endpoint.tooltip.1":"管路必須有且僅有一個§f1輸入§7介面和一個§f1輸出§7介面。", - "gtceu.machine.endpoint.tooltip.2":"只有管道介面需要被§f區塊載入§7。", - "gtceu.machine.endpoint.tooltip.min_length":"§b最低介面間距:§f%d格方塊", - "gtceu.machine.energy_converter.description":"在EU和FE之間轉換能量形式。", - "gtceu.machine.energy_converter.message_conversion_eu":"EU轉為FE,,輸入:%dA %d EU,輸出:%d FE", - "gtceu.machine.energy_converter.message_conversion_native":"FE轉為EU,輸入:%dFE,輸出:%dA %d EU", - "gtceu.machine.energy_converter.tooltip_conversion_eu":"§aEU轉換:§f%dA %d EU(%s§f)§7 -> %d FE", - "gtceu.machine.energy_converter.tooltip_conversion_native":"§cFE轉換:§f%d FE -> %dA %d EU (%s§f)", - "gtceu.machine.energy_converter.tooltip_tool_usage":"預設§f轉換為FE§r,使用軟錘切換。", - "gtceu.machine.energy_hatch.input.tooltip":"為多方塊結構輸入能量", - "gtceu.machine.energy_hatch.input_hi_amp.tooltip":"為多方塊結構輸入更多電流", - "gtceu.machine.energy_hatch.output.tooltip":"為多方塊結構輸出能量", - "gtceu.machine.energy_hatch.output_hi_amp.tooltip":"為多方塊結構輸出更多電流", - "gtceu.machine.ev_alloy_smelter.tooltip":"§7高科技融合冶煉爐", - "gtceu.machine.ev_arc_furnace.tooltip":"§7誰需要高爐?", - "gtceu.machine.ev_assembler.tooltip":"§7復仇者,集結!", - "gtceu.machine.ev_autoclave.tooltip":"§7使粉末結晶", - "gtceu.machine.ev_bender.tooltip":"§7吁,他不行!我們要的是BENDER!!!", - "gtceu.machine.ev_brewery.tooltip":"§7緊湊高效的藥劑釀造", - "gtceu.machine.ev_canner.tooltip":"§7為容器填入或從中倒出物品及流體", - "gtceu.machine.ev_centrifuge.tooltip":"§7分子分離機", - "gtceu.machine.ev_chemical_bath.tooltip":"§7用化學品浸漬以分離礦物", - "gtceu.machine.ev_chemical_reactor.tooltip":"§7讓化學品相互反應", - "gtceu.machine.ev_circuit_assembler.tooltip":"§7一拿一放,東揀西裝", - "gtceu.machine.ev_compressor.tooltip":"§7全自動壓縮機 C77", - "gtceu.machine.ev_cutter.tooltip":"§7切片,切塊", - "gtceu.machine.ev_distillery.tooltip":"§7提取流體精華", - "gtceu.machine.ev_electric_furnace.tooltip":"§7別把它當成 Commodore 64 了", - "gtceu.machine.ev_electrolyzer.tooltip":"§7電離分子", - "gtceu.machine.ev_electromagnetic_separator.tooltip":"§7分離出磁性礦物", - "gtceu.machine.ev_extractor.tooltip":"§7毀滅級榨汁機 - D123", - "gtceu.machine.ev_extruder.tooltip":"§7通用型金屬加工器", - "gtceu.machine.ev_fermenter.tooltip":"§7發酵流體", - "gtceu.machine.ev_fluid_drilling_rig.tooltip":"甚至可以抽空整個油田", - "gtceu.machine.ev_fluid_heater.tooltip":"§7加熱你的流體", - "gtceu.machine.ev_fluid_solidifier.tooltip":"§7冷卻液體形成固體", - "gtceu.machine.ev_forge_hammer.tooltip":"§7停,掄錘時間到!", - "gtceu.machine.ev_forming_press.tooltip":"§7影象拓印者", - "gtceu.machine.ev_gas_collector.tooltip":"§7依照維度從空氣中收集種類各異的氣體", - "gtceu.machine.ev_laser_engraver.tooltip":"§7請勿直視雷射", - "gtceu.machine.ev_lathe.tooltip":"§7以更高的效率生產桿", - "gtceu.machine.ev_macerator.tooltip":"§7粉碎礦並獲得副產物", - "gtceu.machine.ev_mass_fabricator.tooltip":"§7UU物質 = “質量” * “發生”的平方", - "gtceu.machine.ev_mixer.tooltip":"§7它能被攪碎嗎?", - "gtceu.machine.ev_ore_washer.tooltip":"§7清洗礦以獲得更多副產物", - "gtceu.machine.ev_packer.tooltip":"§7取出盒外,放入盒中", - "gtceu.machine.ev_polarizer.tooltip":"§7將你的磁體極化", - "gtceu.machine.ev_replicator.tooltip":"§7生產最純淨的元素", - "gtceu.machine.ev_rock_crusher.tooltip":"§7在水平相鄰處放置熔岩和水", - "gtceu.machine.ev_scanner.tooltip":"§7掃描材料及其它物質", - "gtceu.machine.ev_sifter.tooltip":"§7保持冷靜,繼續篩選", - "gtceu.machine.ev_thermal_centrifuge.tooltip":"§7更精確地分離礦", - "gtceu.machine.ev_wiremill.tooltip":"§7更高效地生產導線", - "gtceu.machine.extreme_combustion_engine.tooltip":"極限化學能釋放者", - "gtceu.machine.fisher.requirement":"需要以機器正下方為中心的%dx%d正方形水源。", - "gtceu.machine.fisher.speed":"每%d刻抓到一些東西", - "gtceu.machine.fisher.tooltip":"每次消耗一根線捕魚", - "gtceu.machine.fluid_drilling_rig.depletion":"§b損耗率:§f%s%%", - "gtceu.machine.fluid_drilling_rig.description":"§7從基岩下的礦脈中鑽取流體。", - "gtceu.machine.fluid_drilling_rig.production":"§e產量倍率:§f%dx,超頻後%fx", - "gtceu.machine.fluid_hatch.export.tooltip":"為多方塊結構輸出流體", - "gtceu.machine.fluid_hatch.import.tooltip":"為多方塊結構輸入流體", - "gtceu.machine.fluid_tank.fluid":"含有%smB%s", - "gtceu.machine.fluid_tank.max_multiblock":"多方塊結構最大尺寸:%dx%dx%d", - "gtceu.machine.fusion_reactor.capacity":"§7儲能上限:§e%sM EU", - "gtceu.machine.fusion_reactor.luv.tooltip":"我發動魔法卡,融合!", - "gtceu.machine.fusion_reactor.overclocking":"超頻時消耗兩倍能量,工作時間減半", - "gtceu.machine.fusion_reactor.uv.tooltip":"化 作 白 矮 星 砸 向 你", - "gtceu.machine.fusion_reactor.zpm.tooltip":"一 輪 紅 日 落 大 地", - "gtceu.machine.gas_turbine.tooltip":"§7需要氣體燃料", - "gtceu.machine.high_performance_computation_array.tooltip.0":"只是普通的超級電腦", - "gtceu.machine.high_performance_computation_array.tooltip.1":"用於生產§f算力§7(同時會產生熱量)。", - "gtceu.machine.high_performance_computation_array.tooltip.2":"需要HPCA元件來生產§fCWU/t§7(計算工作單元)。", - "gtceu.machine.hp_steam_alloy_smelter.tooltip":"§7融合冶煉爐", - "gtceu.machine.hp_steam_compressor.tooltip":"§7壓縮物品", - "gtceu.machine.hp_steam_extractor.tooltip":"§7提取你的第一塊橡膠", - "gtceu.machine.hp_steam_forge_hammer.tooltip":"§7鍛造錘", - "gtceu.machine.hp_steam_furnace.tooltip":"§7利用蒸汽冶煉物品", - "gtceu.machine.hp_steam_liquid_boiler.tooltip":"§7比小型液體燃料鍋爐更快", - "gtceu.machine.hp_steam_macerator.tooltip":"§7粉碎你的礦", - "gtceu.machine.hp_steam_rock_crusher.tooltip":"§7在水平相鄰處放置熔岩和水", - "gtceu.machine.hp_steam_solar_boiler.tooltip":"§7來自太陽的蒸汽能源", - "gtceu.machine.hp_steam_solid_boiler.tooltip":"§7比小型固體燃料鍋爐更快", - "gtceu.machine.hpca.active_cooler_component.tooltip":"不再免費,但效果更好", - "gtceu.machine.hpca.advanced_computation_component.damaged.name":"損壞的HPCA高階計算元件", - "gtceu.machine.hpca.advanced_computation_component.damaged.tooltip":"只花了一隻胳膊和一條腿", - "gtceu.machine.hpca.advanced_computation_component.tooltip":"計算大聯盟", - "gtceu.machine.hpca.bridge_component.tooltip":"這就是高效能運算陣列中“陣列”一詞的來源", - "gtceu.machine.hpca.component_general.max_eut":"§6最大能量:§f%d EU/t", - "gtceu.machine.hpca.component_general.upkeep_eut":"§e維持耗能:§f%d EU/t", - "gtceu.machine.hpca.component_type.bridge":"允許§fHPCA§7與§f網路交換機§7連線", - "gtceu.machine.hpca.component_type.computation_cooling":"§c最多需要:§f%d 冷卻", - "gtceu.machine.hpca.component_type.computation_cwut":"§9算力:§f%d CWU/t", - "gtceu.machine.hpca.component_type.cooler_active":"§b冷卻型別:§f主動", - "gtceu.machine.hpca.component_type.cooler_active_coolant":"§c最多需要:§f%d mB/t %s", - "gtceu.machine.hpca.component_type.cooler_cooling":"§a提供:§f%d 冷卻", - "gtceu.machine.hpca.component_type.cooler_passive":"§b冷卻型別:§f被動", - "gtceu.machine.hpca.component_type.damaged":"HPCA過熱可能會損壞!", - "gtceu.machine.hpca.computation_component.damaged.name":"損壞的HPCA計算元件", - "gtceu.machine.hpca.computation_component.damaged.tooltip":"免費的可回收材料", - "gtceu.machine.hpca.computation_component.tooltip":"寶寶的第一次計算", - "gtceu.machine.hpca.empty_component.tooltip":"只是為了填充空間", - "gtceu.machine.hpca.heat_sink_component.tooltip":"免費冷卻!有免費的嗎?", - "gtceu.machine.hull.tooltip":"§7你需要§5絕§d對§4天§c馬§e行§a空§b的§3想§9象§1能§5力§7來使用它", - "gtceu.machine.hv_alloy_smelter.tooltip":"§7高科技融合冶煉爐", - "gtceu.machine.hv_arc_furnace.tooltip":"§7誰需要高爐?", - "gtceu.machine.hv_assembler.tooltip":"§7復仇者,集結!", - "gtceu.machine.hv_autoclave.tooltip":"§7使粉末結晶", - "gtceu.machine.hv_bender.tooltip":"§7吁,他不行!我們要的是BENDER!!!", - "gtceu.machine.hv_brewery.tooltip":"§7緊湊高效的藥劑釀造", - "gtceu.machine.hv_canner.tooltip":"§7為容器填入或從中倒出物品及流體", - "gtceu.machine.hv_centrifuge.tooltip":"§7分離分子", - "gtceu.machine.hv_chemical_bath.tooltip":"§7用化學品浸漬以分離礦物", - "gtceu.machine.hv_chemical_reactor.tooltip":"§7讓化學品相互反應", - "gtceu.machine.hv_circuit_assembler.tooltip":"§7一拿一放,東揀西裝", - "gtceu.machine.hv_compressor.tooltip":"§7全自動壓縮機 C77", - "gtceu.machine.hv_cutter.tooltip":"§7切片,切塊", - "gtceu.machine.hv_distillery.tooltip":"§7提取流體精華", - "gtceu.machine.hv_electric_furnace.tooltip":"§7別把它當成 Commodore 64 了", - "gtceu.machine.hv_electrolyzer.tooltip":"§7電離分子", - "gtceu.machine.hv_electromagnetic_separator.tooltip":"§7分離出磁性礦物", - "gtceu.machine.hv_extractor.tooltip":"§7毀滅級榨汁機 - D123", - "gtceu.machine.hv_extruder.tooltip":"§7通用型金屬加工器", - "gtceu.machine.hv_fermenter.tooltip":"§7發酵流體", - "gtceu.machine.hv_fluid_drilling_rig.tooltip":"並不能用來液壓破碎", - "gtceu.machine.hv_fluid_heater.tooltip":"§7加熱你的流體", - "gtceu.machine.hv_fluid_solidifier.tooltip":"§7冷卻液體形成固體", - "gtceu.machine.hv_forge_hammer.tooltip":"§7停,掄錘時間到!", - "gtceu.machine.hv_forming_press.tooltip":"§7影象拓印者", - "gtceu.machine.hv_gas_collector.tooltip":"§7依照維度從空氣中收集種類各異的氣體", - "gtceu.machine.hv_laser_engraver.tooltip":"§7請勿直視雷射", - "gtceu.machine.hv_lathe.tooltip":"§7以更高的效率生產桿", - "gtceu.machine.hv_macerator.tooltip":"§7粉碎礦並獲得副產物", - "gtceu.machine.hv_mass_fabricator.tooltip":"§7UU物質 = “質量” * “發生”的平方", - "gtceu.machine.hv_mixer.tooltip":"§7它能被攪碎嗎?", - "gtceu.machine.hv_ore_washer.tooltip":"§7清洗礦以獲得更多副產物", - "gtceu.machine.hv_packer.tooltip":"§7取出盒外,放入盒中", - "gtceu.machine.hv_polarizer.tooltip":"§7將你的磁體極化", - "gtceu.machine.hv_replicator.tooltip":"§7生產最純淨的元素", - "gtceu.machine.hv_rock_crusher.tooltip":"§7在水平相鄰處放置熔岩和水", - "gtceu.machine.hv_scanner.tooltip":"§7掃描材料及其它物質", - "gtceu.machine.hv_sifter.tooltip":"§7保持冷靜,繼續篩選", - "gtceu.machine.hv_thermal_centrifuge.tooltip":"§7更精確地分離礦", - "gtceu.machine.hv_wiremill.tooltip":"§7更高效地生產導線", - "gtceu.machine.implosion_compressor.tooltip":"唯一一臺你想要爆一爆的機器", - "gtceu.machine.item_bus.export.tooltip":"為多方塊結構輸出物品", - "gtceu.machine.item_bus.import.tooltip":"為多方塊結構輸入物品", - "gtceu.machine.item_collector.gui.collect_range":"作用區域:%sx%s格", - "gtceu.machine.item_collector.tooltip":"吸取它周圍的掉落物", - "gtceu.machine.iv_alloy_smelter.tooltip":"§7合金集聚器", - "gtceu.machine.iv_arc_furnace.tooltip":"§7放電加熱器", - "gtceu.machine.iv_assembler.tooltip":"§l不是§7工作台", - "gtceu.machine.iv_autoclave.tooltip":"§7高壓鍋", - "gtceu.machine.iv_bender.tooltip":"§7形態扭曲器", - "gtceu.machine.iv_brewery.tooltip":"§7釀酒好手", - "gtceu.machine.iv_canner.tooltip":"§7罐作機", - "gtceu.machine.iv_centrifuge.tooltip":"§7分子旋風", - "gtceu.machine.iv_chemical_bath.tooltip":"§7化學品浸潤器", - "gtceu.machine.iv_chemical_reactor.tooltip":"§7化學表演藝術家", - "gtceu.machine.iv_circuit_assembler.tooltip":"§7電子廠", - "gtceu.machine.iv_compressor.tooltip":"§7奇點凝縮機", - "gtceu.machine.iv_cutter.tooltip":"§7物質切削器", - "gtceu.machine.iv_distillery.tooltip":"§7凝結物質分離器", - "gtceu.machine.iv_electric_furnace.tooltip":"§7電子激發處理器", - "gtceu.machine.iv_electrolyzer.tooltip":"§7分子崩解機 E-4906", - "gtceu.machine.iv_electromagnetic_separator.tooltip":"§7電磁分類器", - "gtceu.machine.iv_extractor.tooltip":"§7真空提取機", - "gtceu.machine.iv_extruder.tooltip":"§7材料壓出器", - "gtceu.machine.iv_fermenter.tooltip":"§7發酵加速器", - "gtceu.machine.iv_fluid_heater.tooltip":"§7熱量灌注器", - "gtceu.machine.iv_fluid_solidifier.tooltip":"§7並不是製冰機", - "gtceu.machine.iv_forge_hammer.tooltip":"§7鍛板機", - "gtceu.machine.iv_forming_press.tooltip":"§7物件層化機", - "gtceu.machine.iv_gas_collector.tooltip":"§7依照維度從大氣層中收集種類各異的氣體", - "gtceu.machine.iv_laser_engraver.tooltip":"§7功率高達兩百零四萬瓦", - "gtceu.machine.iv_lathe.tooltip":"§7全自動旋轉車削機 L-5906", - "gtceu.machine.iv_macerator.tooltip":"§7全自動破壁機 9001", - "gtceu.machine.iv_mass_fabricator.tooltip":"§7創世紀工廠", - "gtceu.machine.iv_mixer.tooltip":"§7物質組織器", - "gtceu.machine.iv_ore_washer.tooltip":"§7全新用途滾筒洗衣機 I-360", - "gtceu.machine.iv_packer.tooltip":"§7裝箱者", - "gtceu.machine.iv_polarizer.tooltip":"§7磁性引入機", - "gtceu.machine.iv_replicator.tooltip":"§7物質黏貼機", - "gtceu.machine.iv_rock_crusher.tooltip":"§7岩漿冷卻固化器 R-8200", - "gtceu.machine.iv_scanner.tooltip":"§7異常探測儀", - "gtceu.machine.iv_sifter.tooltip":"§7由群巒傳說贊助提供", - "gtceu.machine.iv_thermal_centrifuge.tooltip":"§7烈焰血汗工廠 T-6350", - "gtceu.machine.iv_wiremill.tooltip":"§7錠材拉伸機", - "gtceu.machine.large_boiler.bronze.tooltip":"再多來點蒸汽!", - "gtceu.machine.large_boiler.steel.tooltip":"木炭吞噬者", - "gtceu.machine.large_boiler.titanium.tooltip":"我超級魔法燃料呢?", - "gtceu.machine.large_boiler.tungstensteel.tooltip":"你手上有幾座煤礦也不夠它吃的吧?", - "gtceu.machine.large_chemical_reactor.tooltip":"黑盒反應器", - "gtceu.machine.large_combustion_engine.tooltip":"燃料點火室", - "gtceu.machine.large_combustion_engine.tooltip.boost_extreme":"提供§f80 mB/s§7的液態氧,並消耗§f雙倍§7燃料以產生高達§f%s§7EU/t的功率。", - "gtceu.machine.large_combustion_engine.tooltip.boost_regular":"提供§f20 mB/s§7的氧氣,並消耗§f雙倍§7燃料以產生高達§f%s§7EU/t的功率。", - "gtceu.machine.large_miner.ev.tooltip":"替你挖礦", - "gtceu.machine.large_miner.iv.tooltip":"挖掉整個生態域", - "gtceu.machine.large_miner.luv.tooltip":"掀翻整片大陸", - "gtceu.machine.large_turbine.gas.tooltip":"並不是噴射發動機", - "gtceu.machine.large_turbine.plasma.tooltip":"電漿能量虹吸器", - "gtceu.machine.large_turbine.steam.tooltip":"別把頭伸進去", - "gtceu.machine.laser_hatch.both.tooltip":"§c雷射傳導線纜必須直線擺放!§7", - "gtceu.machine.laser_hatch.source.tooltip":"§7遠距離發射能量", - "gtceu.machine.laser_hatch.target.tooltip":"§7遠距離接收能量", - "gtceu.machine.laser_source_hatch.tooltip.0":"遠距離發射能量", - "gtceu.machine.laser_source_hatch.tooltip.1":"§c雷射傳導線纜必須直線擺放!§7", - "gtceu.machine.laser_target_hatch.tooltip.0":"遠距離接收能量", - "gtceu.machine.laser_target_hatch.tooltip.1":"§c雷射傳導線纜必須直線擺放!§7", - "gtceu.machine.locked_safe.malfunctioning":"§c故障中!", - "gtceu.machine.locked_safe.requirements":"§7需要更換以下部件:", - "gtceu.machine.lp_steam_alloy_smelter.tooltip":"§7融合冶煉爐", - "gtceu.machine.lp_steam_compressor.tooltip":"§7壓縮物品", - "gtceu.machine.lp_steam_extractor.tooltip":"§7提取你的第一塊橡膠", - "gtceu.machine.lp_steam_forge_hammer.tooltip":"§7鍛造錘", - "gtceu.machine.lp_steam_furnace.tooltip":"§7利用蒸汽冶煉物品", - "gtceu.machine.lp_steam_liquid_boiler.tooltip":"§7消耗液體的鍋爐", - "gtceu.machine.lp_steam_macerator.tooltip":"§7粉碎你的礦", - "gtceu.machine.lp_steam_rock_crusher.tooltip":"§7在水平相鄰處放置熔岩和水", - "gtceu.machine.lp_steam_solar_boiler.tooltip":"§7來自太陽的蒸汽能源", - "gtceu.machine.lp_steam_solid_boiler.tooltip":"§7獲取蒸汽能源的早期手段", - "gtceu.machine.luv_alloy_smelter.tooltip":"§7合金集聚器", - "gtceu.machine.luv_arc_furnace.tooltip":"§7放電加熱器", - "gtceu.machine.luv_assembler.tooltip":"§l不是§7工作台", - "gtceu.machine.luv_autoclave.tooltip":"§7高壓鍋", - "gtceu.machine.luv_bender.tooltip":"§7形態扭曲器", - "gtceu.machine.luv_brewery.tooltip":"§7釀酒好手", - "gtceu.machine.luv_canner.tooltip":"§7罐作機", - "gtceu.machine.luv_centrifuge.tooltip":"§7分子旋風", - "gtceu.machine.luv_chemical_bath.tooltip":"§7化學品浸潤器", - "gtceu.machine.luv_chemical_reactor.tooltip":"§7化學表演藝術家", - "gtceu.machine.luv_circuit_assembler.tooltip":"§7電子廠", - "gtceu.machine.luv_compressor.tooltip":"§7奇點凝縮機", - "gtceu.machine.luv_cutter.tooltip":"§7物質切削器", - "gtceu.machine.luv_distillery.tooltip":"§7凝結物質分離器", - "gtceu.machine.luv_electric_furnace.tooltip":"§7電子激發處理器", - "gtceu.machine.luv_electrolyzer.tooltip":"§7分子崩解機 E-4907", - "gtceu.machine.luv_electromagnetic_separator.tooltip":"§7電磁分類器", - "gtceu.machine.luv_extractor.tooltip":"§7真空提取機", - "gtceu.machine.luv_extruder.tooltip":"§7材料壓出器", - "gtceu.machine.luv_fermenter.tooltip":"§7發酵加速器", - "gtceu.machine.luv_fluid_heater.tooltip":"§7熱量灌注器", - "gtceu.machine.luv_fluid_solidifier.tooltip":"§7並不是製冰機", - "gtceu.machine.luv_forge_hammer.tooltip":"§7鍛板機", - "gtceu.machine.luv_forming_press.tooltip":"§7物件層化機", - "gtceu.machine.luv_gas_collector.tooltip":"§7依照維度從大氣層中收集種類各異的氣體", - "gtceu.machine.luv_laser_engraver.tooltip":"§7功率高達八百一十六萬瓦", - "gtceu.machine.luv_lathe.tooltip":"§7全自動旋轉車削機 L-5907", - "gtceu.machine.luv_macerator.tooltip":"§7全自動破壁機 9002", - "gtceu.machine.luv_mass_fabricator.tooltip":"§7創世紀工廠", - "gtceu.machine.luv_mixer.tooltip":"§7物質組織器", - "gtceu.machine.luv_ore_washer.tooltip":"§7全新用途滾筒洗衣機 I-361", - "gtceu.machine.luv_packer.tooltip":"§7裝箱者", - "gtceu.machine.luv_polarizer.tooltip":"§7磁性引入機", - "gtceu.machine.luv_replicator.tooltip":"§7物質黏貼機", - "gtceu.machine.luv_rock_crusher.tooltip":"§7岩漿冷卻固化器 R-9200", - "gtceu.machine.luv_scanner.tooltip":"§7異常探測儀", - "gtceu.machine.luv_sifter.tooltip":"§7由群巒傳說贊助提供", - "gtceu.machine.luv_thermal_centrifuge.tooltip":"§7烈焰血汗工廠 T-6351", - "gtceu.machine.luv_wiremill.tooltip":"§7錠材拉伸機", - "gtceu.machine.lv_alloy_smelter.tooltip":"§7高科技融合冶煉爐", - "gtceu.machine.lv_arc_furnace.tooltip":"§7誰需要高爐?", - "gtceu.machine.lv_assembler.tooltip":"§7復仇者,集結!", - "gtceu.machine.lv_autoclave.tooltip":"§7使粉末結晶", - "gtceu.machine.lv_bender.tooltip":"§7吁,他不行!我們要的是BENDER!!!", - "gtceu.machine.lv_brewery.tooltip":"§7緊湊高效的藥劑釀造", - "gtceu.machine.lv_canner.tooltip":"§7為容器填入或從中倒出物品及流體", - "gtceu.machine.lv_centrifuge.tooltip":"§7分離分子", - "gtceu.machine.lv_chemical_bath.tooltip":"§7用化學品浸漬以分離礦物", - "gtceu.machine.lv_chemical_reactor.tooltip":"§7讓化學品相互反應", - "gtceu.machine.lv_circuit_assembler.tooltip":"§7一拿一放,東揀西裝", - "gtceu.machine.lv_compressor.tooltip":"§7全自動壓縮機 C77", - "gtceu.machine.lv_cutter.tooltip":"§7切片,切塊", - "gtceu.machine.lv_distillery.tooltip":"§7提取流體精華", - "gtceu.machine.lv_electric_furnace.tooltip":"§7別把它當成 Commodore 64 了", - "gtceu.machine.lv_electrolyzer.tooltip":"§7電離分子", - "gtceu.machine.lv_electromagnetic_separator.tooltip":"§7分離出磁性礦物", - "gtceu.machine.lv_extractor.tooltip":"§7毀滅級榨汁機 - D123", - "gtceu.machine.lv_extruder.tooltip":"§7通用型金屬加工器", - "gtceu.machine.lv_fermenter.tooltip":"§7發酵流體", - "gtceu.machine.lv_fluid_heater.tooltip":"§7加熱你的流體", - "gtceu.machine.lv_fluid_solidifier.tooltip":"§7冷卻液體形成固體", - "gtceu.machine.lv_forge_hammer.tooltip":"§7停,掄錘時間到!", - "gtceu.machine.lv_forming_press.tooltip":"§7影象拓印者", - "gtceu.machine.lv_gas_collector.tooltip":"§7依照維度從空氣中收集種類各異的氣體", - "gtceu.machine.lv_laser_engraver.tooltip":"§7請勿直視雷射", - "gtceu.machine.lv_lathe.tooltip":"§7以更高的效率生產桿", - "gtceu.machine.lv_macerator.tooltip":"§7粉碎礦", - "gtceu.machine.lv_mass_fabricator.tooltip":"§7UU物質 = “質量” * “發生”的平方", - "gtceu.machine.lv_mixer.tooltip":"§7它能被攪碎嗎?", - "gtceu.machine.lv_ore_washer.tooltip":"§7清洗礦以獲得更多副產物", - "gtceu.machine.lv_packer.tooltip":"§7取出盒外,放入盒中", - "gtceu.machine.lv_polarizer.tooltip":"§7將你的磁體極化", - "gtceu.machine.lv_replicator.tooltip":"§7生產最純淨的元素", - "gtceu.machine.lv_rock_crusher.tooltip":"§7在水平相鄰處放置熔岩和水", - "gtceu.machine.lv_scanner.tooltip":"§7掃描材料及其它物質", - "gtceu.machine.lv_sifter.tooltip":"§7保持冷靜,繼續篩選", - "gtceu.machine.lv_thermal_centrifuge.tooltip":"§7更精確地分離礦", - "gtceu.machine.lv_wiremill.tooltip":"§7更高效地生產導線", - "gtceu.machine.machine_hatch.locked":"機器介面已鎖定", - "gtceu.machine.machine_hatch.processing_array":"當在§e處理陣列§7中時,僅可搭載適用於§e處理陣列§7的機器", - "gtceu.machine.machine_hatch.tooltip":"僅可容納有效物品的特型訪問匯流排", - "gtceu.machine.maintenance_hatch.tooltip":"用於給多方塊結構提供維護", - "gtceu.machine.maintenance_hatch_cleanroom_auto.tooltip.0":"可以自動維修多方塊結構,附帶清潔功能!", - "gtceu.machine.maintenance_hatch_cleanroom_auto.tooltip.1":"清潔方式:", - "gtceu.machine.maintenance_hatch_configurable.tooltip.0":"更精細的維修多方塊結構", - "gtceu.machine.maintenance_hatch_configurable.tooltip.1":"起手無需維護!", - "gtceu.machine.maintenance_hatch_full_auto.tooltip":"可以自動維修多方塊結構", - "gtceu.machine.maintenance_hatch_tape_slot.tooltip":"放入膠帶以防止出現故障", - "gtceu.machine.maintenance_hatch_tool_slot.tooltip":"所需工具處於物品欄時空手點選該槽位來進行維修", - "gtceu.machine.me.copy_paste.tooltip":"手持快閃記憶體,左擊複製設定,右擊貼上設定", - "gtceu.machine.me.export.tooltip":"在連線到ME網路之前,它具有無限容量。", - "gtceu.machine.me.fluid_export.tooltip":"將流體直接儲存到ME網路中。", - "gtceu.machine.me.fluid_import.data_stick.name":"§oME輸入倉設定資料", - "gtceu.machine.me.fluid_import.tooltip":"自動從ME網路獲取流體。", - "gtceu.machine.me.import_copy_settings":"已將設定儲存到快閃記憶體", - "gtceu.machine.me.import_paste_settings":"已從快閃記憶體應用設定", - "gtceu.machine.me.item_export.tooltip":"將物品直接儲存到ME網路中。", - "gtceu.machine.me.item_import.data_stick.name":"§oME輸入匯流排設定資料", - "gtceu.machine.me.item_import.tooltip":"自動從ME網路獲取物品。", - "gtceu.machine.me.stocking_auto_pull_disabled":"ME自動拉取已停用", - "gtceu.machine.me.stocking_auto_pull_enabled":"ME自動拉取已啟用", - "gtceu.machine.me.stocking_fluid.tooltip.0":"直接從ME網路抽取流體", - "gtceu.machine.me.stocking_fluid.tooltip.1":"ME自動拉取模式將自動標記ME網路中的前16種流體,每5秒更新一次。", - "gtceu.machine.me.stocking_item.tooltip.0":"直接從ME網路抽取物品", - "gtceu.machine.me.stocking_item.tooltip.1":"ME自動拉取模式將自動標記ME網路中的前16種物品,每5秒更新一次。", - "gtceu.machine.me_import_fluid_hatch.configs.tooltip":"可標記16種流體", - "gtceu.machine.me_import_item_hatch.configs.tooltip":"可標記16種物品", - "gtceu.machine.miner.chunkradius":"區塊半徑:%d", - "gtceu.machine.miner.fluid_usage":"消耗§f%d mB/t§7的§f%s§7,每次超頻都會使消耗量加倍。", - "gtceu.machine.miner.minex":"mX:%d", - "gtceu.machine.miner.miney":"mY:%d", - "gtceu.machine.miner.minez":"mZ:%d", - "gtceu.machine.miner.multi.description":"一種佔地面積大、產礦量大的多方塊採礦機。", - "gtceu.machine.miner.multi.modes":"具有絲綢之觸和區塊對齊模式。", - "gtceu.machine.miner.multi.production":"產出§f研磨機§7§f3x§7倍的粉碎礦。", - "gtceu.machine.miner.per_block":"§7每個方塊需要§f%d§7秒。", - "gtceu.machine.miner.radius":"半徑:%d", - "gtceu.machine.miner.startx":"sX:%d", - "gtceu.machine.miner.starty":"sY:%d", - "gtceu.machine.miner.startz":"sZ:%d", - "gtceu.machine.miner.tooltip":"§7只採掘機器下方的礦!工作範圍預設為§f%sx%s§7。", - "gtceu.machine.muffle.off":"靜音:已禁用", - "gtceu.machine.muffle.on":"靜音:已啟用", - "gtceu.machine.muffler_hatch.tooltip.0":"從機器中回收廢料", - "gtceu.machine.muffler_hatch.tooltip.1":"§l切 勿 阻 隔 輸 出 口!", - "gtceu.machine.multi_furnace.tooltip":"就像家裡的烤箱一樣", - "gtceu.machine.multiblock.tank.tooltip":"透過控制器或儲罐閥門進行吞吐。", - "gtceu.machine.mv_alloy_smelter.tooltip":"§7高科技融合冶煉爐", - "gtceu.machine.mv_arc_furnace.tooltip":"§7誰需要高爐?", - "gtceu.machine.mv_assembler.tooltip":"§7復仇者,集結!", - "gtceu.machine.mv_autoclave.tooltip":"§7使粉末結晶", - "gtceu.machine.mv_bender.tooltip":"§7吁,他不行!我們要的是BENDER!!!", - "gtceu.machine.mv_brewery.tooltip":"§7緊湊高效的藥劑釀造", - "gtceu.machine.mv_canner.tooltip":"§7為容器填入或從中倒出物品及流體", - "gtceu.machine.mv_centrifuge.tooltip":"§7分離分子", - "gtceu.machine.mv_chemical_bath.tooltip":"§7用化學品浸漬以分離礦物", - "gtceu.machine.mv_chemical_reactor.tooltip":"§7讓化學品相互反應", - "gtceu.machine.mv_circuit_assembler.tooltip":"§7一拿一放,東揀西裝", - "gtceu.machine.mv_compressor.tooltip":"§7全自動壓縮機 C77", - "gtceu.machine.mv_cutter.tooltip":"§7切片,切塊", - "gtceu.machine.mv_distillery.tooltip":"§7提取流體精華", - "gtceu.machine.mv_electric_furnace.tooltip":"§7別把它當成 Commodore 64 了", - "gtceu.machine.mv_electrolyzer.tooltip":"§7電離分子", - "gtceu.machine.mv_electromagnetic_separator.tooltip":"§7分離出磁性礦物", - "gtceu.machine.mv_extractor.tooltip":"§7毀滅級榨汁機 - D123", - "gtceu.machine.mv_extruder.tooltip":"§7通用型金屬加工器", - "gtceu.machine.mv_fermenter.tooltip":"§7發酵流體", - "gtceu.machine.mv_fluid_drilling_rig.tooltip":"我猜你做這個是為了採油", - "gtceu.machine.mv_fluid_heater.tooltip":"§7加熱你的流體", - "gtceu.machine.mv_fluid_solidifier.tooltip":"§7冷卻液體形成固體", - "gtceu.machine.mv_forge_hammer.tooltip":"§7停,掄錘時間到!", - "gtceu.machine.mv_forming_press.tooltip":"§7影象拓印者", - "gtceu.machine.mv_gas_collector.tooltip":"§7依照維度從空氣中收集種類各異的氣體", - "gtceu.machine.mv_laser_engraver.tooltip":"§7請勿直視雷射", - "gtceu.machine.mv_lathe.tooltip":"§7以更高的效率生產桿", - "gtceu.machine.mv_macerator.tooltip":"§7粉碎礦", - "gtceu.machine.mv_mass_fabricator.tooltip":"§7UU物質 = “質量” * “發生”的平方", - "gtceu.machine.mv_mixer.tooltip":"§7它能被攪碎嗎?", - "gtceu.machine.mv_ore_washer.tooltip":"§7清洗礦以獲得更多副產物", - "gtceu.machine.mv_packer.tooltip":"§7取出盒外,放入盒中", - "gtceu.machine.mv_polarizer.tooltip":"§7將你的磁體極化", - "gtceu.machine.mv_replicator.tooltip":"§7生產最純淨的元素", - "gtceu.machine.mv_rock_crusher.tooltip":"§7在水平相鄰處放置熔岩和水", - "gtceu.machine.mv_scanner.tooltip":"§7掃描材料及其它物質", - "gtceu.machine.mv_sifter.tooltip":"§7保持冷靜,繼續篩選", - "gtceu.machine.mv_thermal_centrifuge.tooltip":"§7更精確地分離礦", - "gtceu.machine.mv_wiremill.tooltip":"§7更高效地生產導線", - "gtceu.machine.network_switch.tooltip.0":"乙太網路集線器", - "gtceu.machine.network_switch.tooltip.1":"用於路由與分發§f算力§7。", - "gtceu.machine.network_switch.tooltip.2":"可以將任意數量的算力§f輸入§7整合為為任意數量的算力§f輸出§7。", - "gtceu.machine.network_switch.tooltip.3":"每個算力資料倉使用§f%s EU/t§7。", - "gtceu.machine.object_holder.tooltip":"研究站的先進支撐機構", - "gtceu.machine.opv_gas_collector.tooltip":"§7依照維度從宇宙中收集種類各異的氣體", - "gtceu.machine.opv_rock_crusher.tooltip":"§7火山成型室", - "gtceu.machine.parallel_hatch.display":"調整多方塊的最多平行處理數。", - "gtceu.machine.parallel_hatch_mk5.tooltip":"允許同時處理至多4個配方。", - "gtceu.machine.parallel_hatch_mk6.tooltip":"允許同時處理至多16個配方。", - "gtceu.machine.parallel_hatch_mk7.tooltip":"允許同時處理至多64個配方。", - "gtceu.machine.parallel_hatch_mk8.tooltip":"允許同時處理至多256個配方。", - "gtceu.machine.parallel_limit":"可同時處理至多§b%d§r§7個配方。", - "gtceu.machine.passthrough_hatch_fluid.tooltip":"將流體從一側輸送到另一側", - "gtceu.machine.passthrough_hatch_item.tooltip":"將物品從一側傳送到另一側", - "gtceu.machine.perfect_oc":"超頻不會損失能效。", - "gtceu.machine.power_substation.tooltip.0":"集中電網的核心", - "gtceu.machine.power_substation.tooltip.1":"所有§f電容§r不需要保持同一電壓等級。", - "gtceu.machine.power_substation.tooltip.2":"最多容許§f%d層電容§r。", - "gtceu.machine.power_substation.tooltip.3":"每§f24小時§7損失相當於總容量的§f1%%§r的能量。", - "gtceu.machine.power_substation.tooltip.4":"每個電容的損失上限為§f%d kEU/t§r。", - "gtceu.machine.power_substation.tooltip.5":"可以使用", - "gtceu.machine.power_substation.tooltip.6":"雷射倉§r。", - "gtceu.machine.primitive_blast_furnace.bronze.tooltip":"為你帶來第一塊鋼", - "gtceu.machine.primitive_water_pump.tooltip":"終界介面蓄水庫-家用款", - "gtceu.machine.processing_array.tooltip":"當幾臺機器無法解決問題時", - "gtceu.machine.pump.tooltip":"§7抽乾大海的最佳手段!", - "gtceu.machine.pump.tooltip_buckets":"每桶§f%d§7tick", - "gtceu.machine.pump_hatch.tooltip":"原始水泵專用流體輸出口", - "gtceu.machine.pyrolyse_oven.tooltip":"電力焦爐", - "gtceu.machine.pyrolyse_oven.tooltip.1":"§a白銅§7線圈會使效率降低§f25%%§7,§a坎塔爾合金§7後的每個線圈都會增加§f50%%§7的速度。", - "gtceu.machine.quantum_chest.items_stored":"物品數量:", - "gtceu.machine.quantum_chest.tooltip":"§7比儲物抽屜好", - "gtceu.machine.quantum_tank.tooltip":"§7小小身體,大大肚量", - "gtceu.machine.research_station.researching":"研究中。", - "gtceu.machine.research_station.tooltip.0":"不僅僅是一個多方塊掃描器", - "gtceu.machine.research_station.tooltip.1":"用於掃描§f資料球§7和§f資料模組§7。", - "gtceu.machine.research_station.tooltip.2":"需要§f算力§7來進行工作。", - "gtceu.machine.research_station.tooltip.3":"提供更多的算力可以使研究進展的更快。", - "gtceu.machine.rotor_holder.tooltip.0":"為多方塊結構的轉子", - "gtceu.machine.rotor_holder.tooltip.1":"提供支撐,固定轉子使其不能飛走", - "gtceu.machine.steam.steam_hatch.tooltip":"§e接受流體:§f蒸汽", - "gtceu.machine.steam_boiler.heat_amount":"熱容:%s %%", - "gtceu.machine.steam_bus.tooltip":"無法作用於非蒸汽驅動的多方塊結構", - "gtceu.machine.steam_grinder.tooltip":"多方塊研磨機,但是沒有副產物", - "gtceu.machine.steam_miner.tooltip":"§7只採掘機器下方的礦!", - "gtceu.machine.steam_oven.tooltip":"不要與工業熔爐混淆", - "gtceu.machine.steam_turbine.tooltip":"§7將蒸汽轉化為 EU", - "gtceu.machine.substation_hatch.input.tooltip":"為蓄能變電站輸入能量", - "gtceu.machine.substation_hatch.output.tooltip":"為蓄能變電站輸出能量", - "gtceu.machine.tank_valve.tooltip":"用以吞吐多方塊儲罐中的流體。正面向下時可自動輸出。", - "gtceu.machine.transformer.description":"§7轉換能量的電壓等級", - "gtceu.machine.transformer.message_transform_down":"降壓 輸出:%d EU %dA 輸出:%d EU %dA", - "gtceu.machine.transformer.message_transform_up":"升壓 輸入:%d EU %dA 輸出:% dEU %dA", - "gtceu.machine.transformer.tooltip_tool_usage":"預設§f降壓§r,使用螺絲起子切換。", - "gtceu.machine.transformer.tooltip_transform_down":"§a降壓:§f%dA %d EU(%s§f)-> %dA %d EU(%s§f)", - "gtceu.machine.transformer.tooltip_transform_up":"§c升壓:§f%dA %d EU(%s§f)-> %dA %d EU(%s§f)", - "gtceu.machine.uev_gas_collector.tooltip":"§7依照維度從太陽系中收集種類各異的氣體", - "gtceu.machine.uev_rock_crusher.tooltip":"§7火山成型室", - "gtceu.machine.uhv_gas_collector.tooltip":"§7根據維度從太陽系中收集氣體", - "gtceu.machine.uhv_rock_crusher.tooltip":"§7火山成型室", - "gtceu.machine.uiv_gas_collector.tooltip":"§7根據維度從太陽系中收集氣體", - "gtceu.machine.uiv_rock_crusher.tooltip":"§7火山成型室", - "gtceu.machine.uv_alloy_smelter.tooltip":"§7金屬混合調製裝置", - "gtceu.machine.uv_arc_furnace.tooltip":"§7短路加熱器", - "gtceu.machine.uv_assembler.tooltip":"§7裝配構建者", - "gtceu.machine.uv_autoclave.tooltip":"§7重壓單元", - "gtceu.machine.uv_bender.tooltip":"§7物質畸變者", - "gtceu.machine.uv_brewery.tooltip":"§7強勁釀製者", - "gtceu.machine.uv_canner.tooltip":"§7罐子致動器", - "gtceu.machine.uv_centrifuge.tooltip":"§7分子龍捲風", - "gtceu.machine.uv_chemical_bath.tooltip":"§7化學沉浸洗滌者", - "gtceu.machine.uv_chemical_reactor.tooltip":"§7反應催化器", - "gtceu.machine.uv_circuit_assembler.tooltip":"§7電腦工廠", - "gtceu.machine.uv_compressor.tooltip":"§7物質約束器", - "gtceu.machine.uv_cutter.tooltip":"§7物件分割者", - "gtceu.machine.uv_distillery.tooltip":"§7餾分分離器", - "gtceu.machine.uv_electric_furnace.tooltip":"§7原子激發器", - "gtceu.machine.uv_electrolyzer.tooltip":"§7原子離子化裝置", - "gtceu.machine.uv_electromagnetic_separator.tooltip":"§7電磁場驅離裝置", - "gtceu.machine.uv_extractor.tooltip":"§7液化吸取者", - "gtceu.machine.uv_extruder.tooltip":"§7形制驅動者", - "gtceu.machine.uv_fermenter.tooltip":"§7呼吸控制器", - "gtceu.machine.uv_fluid_heater.tooltip":"§7熱量灌輸器", - "gtceu.machine.uv_fluid_solidifier.tooltip":"§7流體硬化器", - "gtceu.machine.uv_forge_hammer.tooltip":"§7衝擊調製器", - "gtceu.machine.uv_forming_press.tooltip":"§7表面移相器", - "gtceu.machine.uv_gas_collector.tooltip":"§7根據維度從太陽系中收集氣體", - "gtceu.machine.uv_laser_engraver.tooltip":"§7高精度光子加農炮", - "gtceu.machine.uv_lathe.tooltip":"§7飛旋磨輪", - "gtceu.machine.uv_macerator.tooltip":"§7形態毀滅者", - "gtceu.machine.uv_mass_fabricator.tooltip":"§7存在之源", - "gtceu.machine.uv_mixer.tooltip":"§7材料均質機", - "gtceu.machine.uv_ore_washer.tooltip":"§7微型洗車房", - "gtceu.machine.uv_packer.tooltip":"§7亞馬遜倉庫", - "gtceu.machine.uv_polarizer.tooltip":"§7磁場重置裝置", - "gtceu.machine.uv_replicator.tooltip":"§7元素創制者", - "gtceu.machine.uv_rock_crusher.tooltip":"§7火山成型室", - "gtceu.machine.uv_scanner.tooltip":"§7電子顯微鏡", - "gtceu.machine.uv_sifter.tooltip":"§7脈衝過濾器", - "gtceu.machine.uv_thermal_centrifuge.tooltip":"§7騰焰旋風", - "gtceu.machine.uv_wiremill.tooltip":"§7導線易形者", - "gtceu.machine.uxv_gas_collector.tooltip":"§7根據維度從太陽系中收集氣體", - "gtceu.machine.uxv_rock_crusher.tooltip":"§7火山成型室", - "gtceu.machine.vacuum_freezer.tooltip":"啊哈我的大冰箱!", - "gtceu.machine.workbench.storage_note.0":"(相鄰的物品容器中", - "gtceu.machine.workbench.storage_note.1":"可參與合成的物品)", - "gtceu.machine.workbench.tab.container":"儲存", - "gtceu.machine.workbench.tab.crafting":"合成", - "gtceu.machine.workbench.tab.item_list":"儲存空間", - "gtceu.machine.workbench.tab.workbench":"合成", - "gtceu.machine.workbench.tooltip.0":"比林業的好", - "gtceu.machine.workbench.tooltip.1":"具有物品儲存、工具儲存、從相鄰的儲存容器中讀取物品和儲存配方功能。", - "gtceu.machine.world_accelerator.description":"以兩種模式之一加速周圍方塊的更新刻:§f方塊實體§r或§f隨機刻§7。使用螺絲起子切換模式。", - "gtceu.machine.world_accelerator.mode_entity":"隨機刻模式", - "gtceu.machine.world_accelerator.mode_tile":"方塊實體模式", - "gtceu.machine.world_accelerator.working_area":"§b作用範圍:", - "gtceu.machine.world_accelerator.working_area_random":" 隨機刻模式:§f%dx%d", - "gtceu.machine.world_accelerator.working_area_tile":" 方塊實體模式:§f相鄰方塊", - "gtceu.machine.zpm_alloy_smelter.tooltip":"§7合金集聚器", - "gtceu.machine.zpm_arc_furnace.tooltip":"§7放電加熱器", - "gtceu.machine.zpm_assembler.tooltip":"§l不是§7工作台", - "gtceu.machine.zpm_autoclave.tooltip":"§7高壓鍋", - "gtceu.machine.zpm_bender.tooltip":"§7形態扭曲器", - "gtceu.machine.zpm_brewery.tooltip":"§7釀酒好手", - "gtceu.machine.zpm_canner.tooltip":"§7罐作機", - "gtceu.machine.zpm_centrifuge.tooltip":"§7分子旋風", - "gtceu.machine.zpm_chemical_bath.tooltip":"§7化學品浸潤器", - "gtceu.machine.zpm_chemical_reactor.tooltip":"§7化學表演藝術家", - "gtceu.machine.zpm_circuit_assembler.tooltip":"§7電子廠", - "gtceu.machine.zpm_compressor.tooltip":"§7奇點凝縮機", - "gtceu.machine.zpm_cutter.tooltip":"§7物質切削器", - "gtceu.machine.zpm_distillery.tooltip":"§7凝結物質分離器", - "gtceu.machine.zpm_electric_furnace.tooltip":"§7電子激發處理器", - "gtceu.machine.zpm_electrolyzer.tooltip":"§7分子崩解機 E-4908", - "gtceu.machine.zpm_electromagnetic_separator.tooltip":"§7電磁分類器", - "gtceu.machine.zpm_extractor.tooltip":"§7真空提取機", - "gtceu.machine.zpm_extruder.tooltip":"§7材料壓出器", - "gtceu.machine.zpm_fermenter.tooltip":"§7發酵加速器", - "gtceu.machine.zpm_fluid_heater.tooltip":"§7熱量灌注器", - "gtceu.machine.zpm_fluid_solidifier.tooltip":"§7並不是製冰機", - "gtceu.machine.zpm_forge_hammer.tooltip":"§7鍛板機", - "gtceu.machine.zpm_forming_press.tooltip":"§7物件層化機", - "gtceu.machine.zpm_gas_collector.tooltip":"§7收集不同維度的大氣中種類各異的氣體", - "gtceu.machine.zpm_laser_engraver.tooltip":"§7功率高達三千兩百六十四萬瓦", - "gtceu.machine.zpm_lathe.tooltip":"§7全自動旋轉車削機 L-5908", - "gtceu.machine.zpm_macerator.tooltip":"§7全自動破壁機 9003", - "gtceu.machine.zpm_mass_fabricator.tooltip":"§7創世紀工廠", - "gtceu.machine.zpm_mixer.tooltip":"§7物質組織器", - "gtceu.machine.zpm_ore_washer.tooltip":"§7全新用途滾筒洗衣機 I-362", - "gtceu.machine.zpm_packer.tooltip":"§7裝箱者", - "gtceu.machine.zpm_polarizer.tooltip":"§7磁性引入機", - "gtceu.machine.zpm_replicator.tooltip":"§7物質黏貼機", - "gtceu.machine.zpm_rock_crusher.tooltip":"§7岩漿冷卻固化器 R-10200", - "gtceu.machine.zpm_scanner.tooltip":"§7異常探測儀", - "gtceu.machine.zpm_sifter.tooltip":"§7由群巒傳說贊助提供", - "gtceu.machine.zpm_thermal_centrifuge.tooltip":"§7烈焰血汗工廠 T-6352", - "gtceu.machine.zpm_wiremill.tooltip":"§7錠材拉伸機", - "gtceu.maintenance.configurable_duration":"處理耗時:%fx", - "gtceu.maintenance.configurable_duration.changed_description":"配方處理速度現為正常速度(不計超頻)的%f倍。", - "gtceu.maintenance.configurable_duration.modify":"修改耗時:", - "gtceu.maintenance.configurable_duration.unchanged_description":"配方以正常速度執行。更改設定以更新。", - "gtceu.maintenance.configurable_time":"故障機率:%fx", - "gtceu.maintenance.configurable_time.changed_description":"故障的發生機率現為正常值的%f倍。", - "gtceu.maintenance.configurable_time.unchanged_description":"故障的發生機率為正常值。更改設定以更新。", - "gtceu.medical_condition.antidote.description":"§a解毒劑 §7按住Shift以顯示詳情", - "gtceu.medical_condition.antidote.description.effect_removed":"疾病效果持續時間降低%s%%", - "gtceu.medical_condition.antidote.description.effect_removed.all":"消除所有疾病效果", - "gtceu.medical_condition.antidote.description_shift":"§a治癒以下疾病:", - "gtceu.medical_condition.arsenicosis":"§b砷中毒", - "gtceu.medical_condition.asbestosis":"§d石棉肺", - "gtceu.medical_condition.berylliosis":"§5鈹中毒", - "gtceu.medical_condition.carbon_monoxide_poisoning":"§7一氧化碳汙染", - "gtceu.medical_condition.carcinogen":"§e致癌", - "gtceu.medical_condition.chemical_burns":"§5化學燒傷", - "gtceu.medical_condition.description":"§c§l危險物質 §7按住Shift以顯示詳情", - "gtceu.medical_condition.description_shift":"§c§l危險物質:", - "gtceu.medical_condition.irritant":"§6刺激性", - "gtceu.medical_condition.methanol_poisoning":"§6甲醇中毒", - "gtceu.medical_condition.nausea":"§3噁心", - "gtceu.medical_condition.none":"§2無害", - "gtceu.medical_condition.poison":"§2中毒", - "gtceu.medical_condition.silicosis":"§1矽肺病", - "gtceu.medical_condition.weak_poison":"§a輕度中毒", - "gtceu.minimap.ore_vein.depleted":"已枯竭", - "gtceu.mixer":"攪拌機", - "gtceu.mode.both":"§d全部(流體和物品)§r", - "gtceu.mode.fluid":"§9流體§r", - "gtceu.mode.item":"§6物品§r", - "gtceu.muffler.recovery_tooltip":"§b回收機率:§f%d%%", - "gtceu.multiblock.active_transformer.average_in":"§b平均輸入:§f%s EU/t", - "gtceu.multiblock.active_transformer.average_out":"§b平均輸出:§f%s EU/t", - "gtceu.multiblock.active_transformer.danger_enabled":"§c§b危險:易爆", - "gtceu.multiblock.active_transformer.max_input":"§a最大輸入:§f%s EU/t", - "gtceu.multiblock.active_transformer.max_output":"§c最大輸出:§f%s EU/t", - "gtceu.multiblock.assembly_line.description":"裝配線是由5到16“片”組成的大型多方塊結構。理論上,它是一個大型組裝機,用於生產高階元件。", - "gtceu.multiblock.blast_furnace.max_temperature":"熱容:%s", - "gtceu.multiblock.central_monitor.height":"螢幕高度:%d", - "gtceu.multiblock.central_monitor.height_modify":"調整高度:%d", - "gtceu.multiblock.central_monitor.low_power":"供能不足", - "gtceu.multiblock.central_monitor.tooltip.0":"這臺機器可以監控由數位介面覆蓋板代理的機器。您可以方便地監視能源網路中代理的機器的流體、物品、能量和狀態。", - "gtceu.multiblock.central_monitor.tooltip.1":"監控器螢幕的搭建尺寸為3x2到%dx%d (寬x高)。", - "gtceu.multiblock.central_monitor.tooltip.2":"預設高度為3,在結構形成之前,您可以在GUI中調整螢幕高度。", - "gtceu.multiblock.central_monitor.tooltip.3":"能源消耗:每塊螢幕%d EU/s。", - "gtceu.multiblock.central_monitor.width":"螢幕寬度:%d", - "gtceu.multiblock.charcoal_pile.description.0":"將下方最大9x4x9區域內的原木燒製成脆木炭塊。", - "gtceu.multiblock.charcoal_pile.description.1":"", - "gtceu.multiblock.charcoal_pile.description.2":"木炭堆底部必須由磚塊構成,壁面和頂面則可選用泥土、沙子等任何土地類方塊。堆內必須填滿,不可存在空氣。", - "gtceu.multiblock.charcoal_pile.description.3":"", - "gtceu.multiblock.charcoal_pile.description.4":"木炭堆的尺寸越大,所需的處理時間就越長,但效率更高。", - "gtceu.multiblock.cleanroom.clean_amount":"潔淨度:§a%s%%", - "gtceu.multiblock.cleanroom.clean_state":"狀態:§a潔淨", - "gtceu.multiblock.cleanroom.dirty_state":"狀態:§4汙染", - "gtceu.multiblock.coke_oven.description":"焦爐是一種多方塊結構,用於在早期生產焦煤和雜酚油,無需燃料即可工作,內部至多可容納 32 桶雜酚油。其儲存可透過焦爐倉進行訪問。", - "gtceu.multiblock.computation.max":"最大算力:%s", - "gtceu.multiblock.computation.non_bridging":"發現非橋接連線", - "gtceu.multiblock.computation.non_bridging.detailed":"算力資料倉與一臺無法橋接的機器連線", - "gtceu.multiblock.computation.not_enough_computation":"機器需要更多算力!", - "gtceu.multiblock.computation.usage":"使用:%s", - "gtceu.multiblock.cracker.description":"裂解機是一種用於將輕燃油和重燃油裂解為相應裂解物的多方塊結構。", - "gtceu.multiblock.cracking_unit.energy":"耗能:%s%%", - "gtceu.multiblock.data_bank.description":"資料庫是一個用於在多個裝配線間分享研究資料的多方塊結構。此外,它也能讓裝配線讀取資料模組裡更復雜的研究資料。", - "gtceu.multiblock.data_bank.providing":"提供資料。", - "gtceu.multiblock.distillation_tower.description":"蒸餾塔是一種用於蒸餾不同石油及其副產品的多方塊結構。", - "gtceu.multiblock.distillation_tower.distilling_fluid":"正在蒸餾%s", - "gtceu.multiblock.electric_blast_furnace.description":"電力高爐是一種用來熔鍊合金、熔化金屬或冶煉礦的多方塊結構。也可用於獲取高階的合金和金屬,例如鋁、不鏽鋼、鈦或矽岩合金。", - "gtceu.multiblock.energy_consumption":"能量消耗:%s EU/t(%s)", - "gtceu.multiblock.exact_hatch_1.tooltip":"§f只允許有且僅有§6一個§f能量輸入倉。", - "gtceu.multiblock.extreme_combustion_engine.description":"極限內燃引擎是一種產出§9IV§r能量的多方塊結構,工作方式與內燃發電機類似。", - "gtceu.multiblock.fluid_rig.drilled_fluid":"流體:%s", - "gtceu.multiblock.fluid_rig.fluid_amount":"抽取速率:%s", - "gtceu.multiblock.fluid_rig.no_fluid_in_area":"區域內沒有。", - "gtceu.multiblock.fluid_rig.vein_depleted":"礦脈已耗盡", - "gtceu.multiblock.fluid_rig.vein_depletion":"礦脈大小:%s", - "gtceu.multiblock.fusion_reactor.energy":"EU:%d / %d", - "gtceu.multiblock.fusion_reactor.heat":"熱量:%d", - "gtceu.multiblock.generation_eu":"輸出功率:§a%s EU/t", - "gtceu.multiblock.hpca.computation":"提供:%s", - "gtceu.multiblock.hpca.description":"高效能運算陣列(HPCA)是個多方塊結構,用於為更復雜的裝配線研究資料提供計算工作單元(CWU/t)。該結構中有3×3的區域可以以任意方式填充HPCA元件,不同的元件提供不同數量的算力,冷卻與能源成本,並且影響熱量的產出與冷卻液的消耗。當存在橋接元件時,HPCA可以連線入網路交換機,讓不同來源的算力整合並輸出到一個或多個目的地。", - "gtceu.multiblock.hpca.energy":"使用:%s / %s EU/t (%s)", - "gtceu.multiblock.hpca.error_damaged":"計算元件損壞!", - "gtceu.multiblock.hpca.error_temperature":"溫度超過100℃,可能導致計算元件損壞!", - "gtceu.multiblock.hpca.hover_for_info":"懸停以顯示細節", - "gtceu.multiblock.hpca.info_bridging_disabled":"橋接已關閉", - "gtceu.multiblock.hpca.info_bridging_enabled":"橋接已啟動", - "gtceu.multiblock.hpca.info_coolant_name":"多氯聯苯冷卻液", - "gtceu.multiblock.hpca.info_max_computation":"最大算力:%s", - "gtceu.multiblock.hpca.info_max_coolant_required":"冷卻液還需:%s", - "gtceu.multiblock.hpca.info_max_cooling_available":"冷卻液可用:%s", - "gtceu.multiblock.hpca.info_max_cooling_demand":"冷卻液需求:%s", - "gtceu.multiblock.hpca.temperature":"溫度:%s", - "gtceu.multiblock.hpca.warning_low_cooling":"- 冷卻不足", - "gtceu.multiblock.hpca.warning_multiple_bridges":"- 多個橋接元件(沒有額外好處)", - "gtceu.multiblock.hpca.warning_no_computation":"- 沒有計算元件", - "gtceu.multiblock.hpca.warning_structure_header":"結構警告:", - "gtceu.multiblock.hpca.warning_temperature":"溫度超過50℃,超過100℃時可能導致計算元件損壞!", - "gtceu.multiblock.hpca.warning_temperature_active_cool":"充分利用主動冷卻元件", - "gtceu.multiblock.idling":"待機。", - "gtceu.multiblock.implosion_compressor.description":"聚爆壓縮機是一種多方塊結構,能夠藉助炸藥將寶石粉轉化為相應的寶石。", - "gtceu.multiblock.invalid_structure":"結構無效。", - "gtceu.multiblock.invalid_structure.tooltip":"該方塊是多方塊結構的控制器,請檢視該方塊的JEI介面以獲取搭建圖示。", - "gtceu.multiblock.large_boiler.description":"大型鍋爐是一種使用水和能量源產生蒸汽的多方塊結構。這裡說的“能量源”通常是指固體燃料和高密度流體。不同等級的鍋爐僅在蒸汽產量上有所差別。", - "gtceu.multiblock.large_boiler.efficiency":"效率:%s", - "gtceu.multiblock.large_boiler.explosion_tooltip":"無水時提供燃料將爆炸", - "gtceu.multiblock.large_boiler.heat_time_tooltip":"§7需要§f%d秒§7預熱", - "gtceu.multiblock.large_boiler.max_temperature":"最高溫度:%dK,蒸汽產量:%dmB/t", - "gtceu.multiblock.large_boiler.rate_tooltip":"§7每塊§1煤炭§7可以生產§f%dmB§7的蒸汽", - "gtceu.multiblock.large_boiler.steam_output":"蒸汽輸出:%s mB/t", - "gtceu.multiblock.large_boiler.temperature":"溫度::%sK / %sK", - "gtceu.multiblock.large_boiler.throttle":"節流:%d", - "gtceu.multiblock.large_boiler.throttle.tooltip":"鍋爐可以節流,以減少燃料消耗與蒸汽產出,並且不損失效率,不影響加熱時間。", - "gtceu.multiblock.large_boiler.throttle_modify":"修改節流:", - "gtceu.multiblock.large_chemical_reactor.description":"大型化學反應器能夠以 100% 的能效進行化學反應。超頻將使得處理速度與耗能提升 4 倍。該多方塊結構需要在中心位置的聚四氟乙烯管道方塊旁放置 1 個白銅線圈方塊。", - "gtceu.multiblock.large_combustion_engine.boost_disallowed":"§b升級你的能量輸出倉以啟用氧氣促燃", - "gtceu.multiblock.large_combustion_engine.description":"大型內燃引擎是一種產出§5EV§r能量的多方塊結構,工作方式與內燃發電機類似。", - "gtceu.multiblock.large_combustion_engine.liquid_oxygen_amount":"液氧存量:%smB", - "gtceu.multiblock.large_combustion_engine.liquid_oxygen_boosted":"§b液氧促燃中", - "gtceu.multiblock.large_combustion_engine.lubricant_amount":"潤滑油存量:%smB", - "gtceu.multiblock.large_combustion_engine.obstructed":"引擎進氣口受阻。", - "gtceu.multiblock.large_combustion_engine.oxygen_amount":"氧氣存量:%smB", - "gtceu.multiblock.large_combustion_engine.oxygen_boosted":"§b氧氣促燃中", - "gtceu.multiblock.large_combustion_engine.supply_liquid_oxygen_to_boost":"提供液氧來促燃", - "gtceu.multiblock.large_combustion_engine.supply_oxygen_to_boost":"提供氧氣來促燃", - "gtceu.multiblock.large_miner.done":"完成!", - "gtceu.multiblock.large_miner.errorradius":"§c工作中不能調整半徑!", - "gtceu.multiblock.large_miner.invfull":"儲存空間已滿!", - "gtceu.multiblock.large_miner.needsfluid":"需要鑽井液", - "gtceu.multiblock.large_miner.needspower":"需要能量!", - "gtceu.multiblock.large_miner.radius":"半徑:§a%d§r格", - "gtceu.multiblock.large_miner.steam":"需要蒸汽!", - "gtceu.multiblock.large_miner.vent":"排氣口受阻!", - "gtceu.multiblock.large_miner.working":"工作中……", - "gtceu.multiblock.large_turbine.description":"大型渦輪是一種使用蒸汽、燃氣或電漿轉動渦輪轉子來發電的多方塊結構。轉子效率和轉子轉速影響能量的輸出。", - "gtceu.multiblock.luv_fusion_reactor.description":"核融合反應爐MK-I是臺大型多方塊結構,用於融合元素形成更重的元素。它僅可使用LuV,ZPM或UV等級的能量輸入倉。每個能量輸入倉可增加10MEU的能量暫存,最大能量暫存為160MEU。", - "gtceu.multiblock.max_energy_per_tick":"最大功率:§a%s EU/t(%s§r)", - "gtceu.multiblock.max_energy_per_tick_amps":"最大功率:%s(%sA %s)", - "gtceu.multiblock.max_energy_per_tick_hover":"可用於執行配方或超頻的最大EU/t", - "gtceu.multiblock.max_recipe_tier":"最大配方等級:%s", - "gtceu.multiblock.max_recipe_tier_hover":"可執行配方的最大等級", - "gtceu.multiblock.monitor_screen.tooltip.0":"用螺絲起子右擊即可開啟GUI。", - "gtceu.multiblock.monitor_screen.tooltip.1":"數位介面覆蓋板的代理模式可託管機器的功能與介面(是的,你可以在螢幕上直接連線管道)。", - "gtceu.multiblock.monitor_screen.tooltip.2":"該螢幕也支援外掛。", - "gtceu.multiblock.multi_furnace.description":"工業熔爐是一種用於一次性燒製大量物品的多方塊結構。不同級別的線圈會提供速度增幅和能量效率增幅。每次運作的基礎燒製數量為32,且可以使用高等級的線圈增加燒製數量。", - "gtceu.multiblock.multi_furnace.heating_coil_discount":"加熱線圈增幅:%sx", - "gtceu.multiblock.multi_furnace.heating_coil_level":"加熱線圈等級:%s", - "gtceu.multiblock.multiple_recipemaps.header":"機器模式:", - "gtceu.multiblock.multiple_recipemaps.switch_message":"機器必須關閉才能切換模式!", - "gtceu.multiblock.multiple_recipemaps.tooltip":"使用螺絲起子右鍵控制器以更改機器模式。", - "gtceu.multiblock.multiple_recipemaps_recipes.tooltip":"機器模式:§e%s§r", - "gtceu.multiblock.network_switch.description":"網路交換機是個多方塊結構,可以接受任意數量的算力資料靶倉輸入,並從任意數量的算力資料來源倉輸出。對於需要更高算力的研究資料配方,網路交換機的存在是必要的,這是因為研究站只接受一個算力資料靶倉。當與HPCA連線時,HPCA必須具有橋接元件才可以令網路交換機接收其算力。", - "gtceu.multiblock.not_enough_energy":"警告:能量不足。", - "gtceu.multiblock.not_enough_energy_output":"警告:能量輸入/輸出倉等級過低!", - "gtceu.multiblock.ore_rig.drilled_ore_entry":" - %s", - "gtceu.multiblock.ore_rig.drilled_ores_list":"礦:", - "gtceu.multiblock.ore_rig.ore_amount":"鑽進速率:%s", - "gtceu.multiblock.output_line.0":"%s x §e%s§r(%ss/ea)", - "gtceu.multiblock.output_line.1":"%s x §e%s§r(%s/s)", - "gtceu.multiblock.output_line.2":"%s ≈ §e%s§r(%ss/ea)", - "gtceu.multiblock.output_line.3":"%s ≈ §e%s§r (%s/s)", - "gtceu.multiblock.page_switcher.io.both":"§5兼顧輸入/輸出", - "gtceu.multiblock.page_switcher.io.export":"§4輸出", - "gtceu.multiblock.page_switcher.io.import":"§2輸入", - "gtceu.multiblock.parallel":"同時處理至多%d個配方", - "gtceu.multiblock.parallel.exact":"同時處理%d個配方", - "gtceu.multiblock.parallelizable.tooltip":"透過平行控制倉讓機器同時處理多個相同配方。", - "gtceu.multiblock.pattern.clear_amount_1":"§6前方必須有1x1x1大小的空間§r", - "gtceu.multiblock.pattern.clear_amount_3":"§6前方必須有3x3x1大小的空間§r", - "gtceu.multiblock.pattern.error":"在%2$s處需要%1$s。", - "gtceu.multiblock.pattern.error.batteries":"§c必須使用同種電池§r", - "gtceu.multiblock.pattern.error.coils":"§c必須使用同種線圈方塊§r", - "gtceu.multiblock.pattern.error.filters":"§c必須使用同種過濾器§r", - "gtceu.multiblock.pattern.error.limited.0":"§c最多:%d個§r", - "gtceu.multiblock.pattern.error.limited.1":"§c最少:%d個§r", - "gtceu.multiblock.pattern.error.limited.2":"§c最多:每層%d個§r", - "gtceu.multiblock.pattern.error.limited.3":"§c最少:每層%d個§r", - "gtceu.multiblock.pattern.error.limited_exact":"§c精確:%d§r", - "gtceu.multiblock.pattern.error.limited_within":"§c最少%d個,最多%d個§r", - "gtceu.multiblock.pattern.location_end":"§c最末端§r", - "gtceu.multiblock.pattern.replaceable_air":"可為空氣", - "gtceu.multiblock.pattern.single":"§6僅可使用該種方塊§r", - "gtceu.multiblock.power_substation.average_in":"§7平均輸入:%s §7EU/t", - "gtceu.multiblock.power_substation.average_in_hover":"蓄能變電站內部的平均功率輸入", - "gtceu.multiblock.power_substation.average_out":"§7平均輸出:%s §7EU/t", - "gtceu.multiblock.power_substation.average_out_hover":"蓄能變電站內部的平均功率輸出", - "gtceu.multiblock.power_substation.capacity":"§7容量:%s §7EU", - "gtceu.multiblock.power_substation.passive_drain":"§7被動損失:%s §7EU/t", - "gtceu.multiblock.power_substation.stored":"§7儲存:%s §7EU", - "gtceu.multiblock.power_substation.time_days":"%s天", - "gtceu.multiblock.power_substation.time_forever":"永遠", - "gtceu.multiblock.power_substation.time_hours":"%s時", - "gtceu.multiblock.power_substation.time_minutes":"%s分", - "gtceu.multiblock.power_substation.time_seconds":"%s秒", - "gtceu.multiblock.power_substation.time_to_drain":"§7預計耗空時間:%s", - "gtceu.multiblock.power_substation.time_to_fill":"§7預計充滿時間:%s", - "gtceu.multiblock.power_substation.time_years":"%s年", - "gtceu.multiblock.power_substation.under_one_hour_left":"不到一小時就會完全耗光!", - "gtceu.multiblock.preview.rotate":"左鍵拖拽以旋轉", - "gtceu.multiblock.preview.select":"右擊方塊以檢視其他可選方塊", - "gtceu.multiblock.preview.zoom":"使用滑鼠滾輪或右鍵拖拽以縮放", - "gtceu.multiblock.primitive_blast_furnace.bronze.description":"土高爐是一種在遊戲前期用來生產鋼的多方塊結構。儘管它不是很快,卻能為你的發展提供鋼材。", - "gtceu.multiblock.primitive_water_pump.description":"原始水泵是一臺前蒸汽時代的多方塊設施,每秒進行一次水資源收集,每秒的收集量取決於其所處的生態域。水泵輸出倉以及 §8ULV§r 和 §7LV§r 的輸出倉均可用於該設施,輸出倉的等級越高,水資源的產出量也越高。產出量遵循的公式為:生態域係數 * 輸出倉倍數。", - "gtceu.multiblock.primitive_water_pump.extra1.0":"生態域係數:", - "gtceu.multiblock.primitive_water_pump.extra1.1":" 海洋,河流:1000 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.2":" 沼澤:800 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.3":" 叢林:350 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.4":" 覆雪生態域:300 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.5":" 平原,森林:250 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.6":" 針葉林:175 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.7":" 沙灘:170 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.8":" 其他:100 mB/s", - "gtceu.multiblock.primitive_water_pump.extra2.0":"輸出倍率:", - "gtceu.multiblock.primitive_water_pump.extra2.1":" 水泵倉:1x", - "gtceu.multiblock.primitive_water_pump.extra2.2":"§8ULV§r輸出倉:2x", - "gtceu.multiblock.primitive_water_pump.extra2.3":"§7LV§r輸出倉:4x", - "gtceu.multiblock.primitive_water_pump.extra2.4":"", - "gtceu.multiblock.primitive_water_pump.extra2.5":"當水泵所處的生態域下雨時,總產水量將增加50%%。", - "gtceu.multiblock.progress":"進度:%ss / %ss(%s%%)", - "gtceu.multiblock.progress_percent":"進度:%s%%", - "gtceu.multiblock.pyrolyse_oven.description":"熱解爐是一種用於將原木處理為木炭、雜酚油、灰燼或重油的多方塊結構。", - "gtceu.multiblock.pyrolyse_oven.speed":"處理速度:%s%%", - "gtceu.multiblock.require_steam_parts":"需要蒸汽倉與輸入/輸出匯流排(蒸汽)!", - "gtceu.multiblock.research_station.description":"研究站是個多方塊結構,用於研究更復雜的裝配線研究資料。任何需要資料球或資料模組的研究必須使用研究站而非掃描器來掃描。研究站需要計算工作單位(CWU/t)來進行工作,這由高效能運算陣列(HPCA)提供。", - "gtceu.multiblock.research_station.researching":"&6研究中…", - "gtceu.multiblock.running":"執行正常。", - "gtceu.multiblock.steam.duration_modifier":"處理耗時為基礎的§f1.5§7倍,不受物品數量影響。", - "gtceu.multiblock.steam.low_steam":"蒸汽不足,無法執行!", - "gtceu.multiblock.steam.steam_stored":"蒸汽:%s / %s mB", - "gtceu.multiblock.steam_grinder.description":"蒸汽時代的多方塊研磨機。需要至少14塊青銅機械方塊成型。僅可使用輸入/輸出匯流排(蒸汽),並且只能用蒸汽倉供給蒸汽。", - "gtceu.multiblock.steam_oven.description":"蒸汽時代的多方塊熔爐。需要至少6塊青銅機械方塊成型。僅可使用輸入/輸出匯流排(蒸汽),並且只能用蒸汽倉供給蒸汽。蒸汽倉必須放置於結構底層,數量至多為一個。", - "gtceu.multiblock.title":"多方塊結構", - "gtceu.multiblock.turbine.efficiency":"渦輪效率:%s%%", - "gtceu.multiblock.turbine.efficiency_tooltip":"轉子支架等級超過%s§r時,每級§7增加§f10%%效率,並翻倍輸出功率§7。", - "gtceu.multiblock.turbine.energy_per_tick":"能量輸出:%s/%s EU/t", - "gtceu.multiblock.turbine.energy_per_tick_maxed":"能量輸出:%s EU/t", - "gtceu.multiblock.turbine.fuel_amount":"燃料量:%smB(%s)", - "gtceu.multiblock.turbine.fuel_needed":"消耗量:%s / %s ticks", - "gtceu.multiblock.turbine.obstructed":"渦輪受阻", - "gtceu.multiblock.turbine.rotor_durability":"轉子耐久度:%s%%", - "gtceu.multiblock.turbine.rotor_speed":"轉子轉速:%s/%sRPM", - "gtceu.multiblock.universal.distinct":"匯流排隔離:", - "gtceu.multiblock.universal.distinct.info":"啟用時,每個物品匯流排將在配方識別中被視為完全獨立。對於消耗材料相同,使用的非消耗材料(模具、透鏡等)不同則產物也不同的配方來說作用顯著。", - "gtceu.multiblock.universal.distinct.no":"否", - "gtceu.multiblock.universal.distinct.yes":"是", - "gtceu.multiblock.universal.has_problems":"存在故障!", - "gtceu.multiblock.universal.has_problems_header":"在維修倉中修復以下問題:", - "gtceu.multiblock.universal.muffler_obstructed":"消音倉受阻!", - "gtceu.multiblock.universal.muffler_obstructed.tooltip":"消音倉口前方必須有一格空氣。", - "gtceu.multiblock.universal.no_problems":"無故障!", - "gtceu.multiblock.universal.problem.crowbar":"§7這東西不屬於這裡。(§a撬棍§7)", - "gtceu.multiblock.universal.problem.hard_hammer":"§7外殼有些凹痕。(§a鍛造錘§7)", - "gtceu.multiblock.universal.problem.screwdriver":"§7螺絲沒擰緊。(§a螺絲起子§7)", - "gtceu.multiblock.universal.problem.soft_mallet":"§7有什麼東西卡住了。(§a軟錘§7)", - "gtceu.multiblock.universal.problem.wire_cutter":"§7有幾根線燒焦了(§a剪線鉗§7)", - "gtceu.multiblock.universal.problem.wrench":"§7管道鬆動了。(§a扳手§7)", - "gtceu.multiblock.universal.rotor_obstructed":"轉子進氣口受阻!", - "gtceu.multiblock.uv_fusion_reactor.description":"核融合反應爐MK-III是臺大型多方塊結構,用於融合元素形成更重的元素。它僅可使用UV等級的能量輸入倉。每個能量輸入倉可增加40MEU的能量暫存,最大能量暫存為640MEU。", - "gtceu.multiblock.vacuum_freezer.description":"真空冷凍機是一種多方塊結構,主要用於將熱錠冷卻為成品錠。此外,它還可以凍結水等其他物質。", - "gtceu.multiblock.validation_failed":"輸入倉/輸出倉數量無效。", - "gtceu.multiblock.waiting":"警告:機器待機", - "gtceu.multiblock.work_paused":"暫停。", - "gtceu.multiblock.zpm_fusion_reactor.description":"核融合反應爐MK-II是臺大型多方塊結構,用於融合元素形成更重的元素。它僅可使用ZPM或UV等級的能量輸入倉。每個能量輸入倉可增加20MEU的能量暫存,最大能量暫存為320MEU。", - "gtceu.oc.tooltip.0":"最低:%s", - "gtceu.oc.tooltip.1":"左鍵增加超頻等級", - "gtceu.oc.tooltip.2":"右鍵降低超頻等級", - "gtceu.oc.tooltip.3":"中鍵重設超頻等級", - "gtceu.oc.tooltip.4":"按住Shift以無損超頻顯示", - "gtceu.ore_washer":"洗礦廠", - "gtceu.packer":"打包機", - "gtceu.plasma_generator":"電漿燃料", - "gtceu.polarizer":"兩極磁化機", - "gtceu.primitive_blast_furnace":"土高爐", - "gtceu.pyrolyse_oven":"熱解爐", - "gtceu.recipe.amperage":"電流:%s", - "gtceu.recipe.category.arc_furnace_recycling":"電弧爐:電漿回收", - "gtceu.recipe.category.chem_dyes":"化學水浴機:化學染色", - "gtceu.recipe.category.extractor_recycling":"流體提取機:重熔回收", - "gtceu.recipe.category.ingot_molding":"合金爐:金屬成型", - "gtceu.recipe.category.macerator_recycling":"研磨機:粉碎回收", - "gtceu.recipe.category.ore_bathing":"化學水浴機:礦物處理", - "gtceu.recipe.category.ore_crushing":"研磨機:礦物處理", - "gtceu.recipe.category.ore_forging":"鍛造錘:礦物處理", - "gtceu.recipe.chance":"產出機率:%s + %s/電壓等級", - "gtceu.recipe.cleanroom":"需要%s", - "gtceu.recipe.cleanroom.display_name":"無塵室", - "gtceu.recipe.cleanroom_sterile.display_name":"無菌無塵室", - "gtceu.recipe.coil.tier":"線圈:%s", - "gtceu.recipe.computation_per_tick":"最小算力:%s CWU/t", - "gtceu.recipe.dimensions":"維度:%s", - "gtceu.recipe.duration":"耗時:%s 秒", - "gtceu.recipe.environmental_hazard":"§c區域內必須有%s", - "gtceu.recipe.environmental_hazard.reverse":"§c區域內必須沒有%s", - "gtceu.recipe.eu":"耗能功率:%s EU/t", - "gtceu.recipe.eu_inverted":"產能功率:%s EU/t", - "gtceu.recipe.eu_to_start":"啟動耗能:%sEU%s", - "gtceu.recipe.explosive":"爆炸物:%s", - "gtceu.recipe.max_eu":"最大功率:%s EU", - "gtceu.recipe.not_consumed":"不在加工中消耗", - "gtceu.recipe.research":"需要研究", - "gtceu.recipe.scan_for_research":"裝配線配方掃描", - "gtceu.recipe.temperature":"溫度:%sK", - "gtceu.recipe.total":"總計:%s EU", - "gtceu.recipe.total_computation":"算力:%s CWU", - "gtceu.recipe_logic.condition_fails":"條件不足", - "gtceu.recipe_logic.insufficient_fuel":"燃料不足", - "gtceu.recipe_logic.insufficient_in":"需要輸入", - "gtceu.recipe_logic.insufficient_out":"輸出堵塞", - "gtceu.recipe_memory_widget.tooltip.0":"§7左鍵點選自動輸入該配方至合成格", - "gtceu.recipe_memory_widget.tooltip.1":"§7按住Shift並點選以鎖定或解鎖該配方", - "gtceu.recipe_type.show_recipes":"檢視配方", - "gtceu.rei.group.potion_fluids":"藥水流體", - "gtceu.research_station":"研究站", - "gtceu.rock_breaker":"碎岩機", - "gtceu.scanner":"掃描器", - "gtceu.scanner.copy_stick_empty":"§o空快閃記憶體", - "gtceu.scanner.copy_stick_from":"§o要複製的快閃記憶體", - "gtceu.scanner.copy_stick_to":"§o快閃記憶體(已複製)", - "gtceu.sifter":"篩選機", - "gtceu.steam_boiler":"蒸汽鍋爐", - "gtceu.steam_turbine":"蒸汽渦輪", - "gtceu.subtitle.arc":"電弧爐:嗡——", - "gtceu.subtitle.assembler":"組裝機:運行中", - "gtceu.subtitle.bath":"化學水浴機:嘶嘶", - "gtceu.subtitle.boiler":"鍋爐:液體沸騰", - "gtceu.subtitle.centrifuge":"離心機:旋轉", - "gtceu.subtitle.chainsaw":"鏈鋸:拉動油門", - "gtceu.subtitle.chemical":"化學反應器:運行中", - "gtceu.subtitle.combustion":"內燃發電機:燃料燃燒", - "gtceu.subtitle.compressor":"壓縮機:擠壓", - "gtceu.subtitle.computation":"計算機:嗶嗶", - "gtceu.subtitle.cooling":"真空冷凍機:嗡——", - "gtceu.subtitle.cut":"切割機:嘶嘶叫", - "gtceu.subtitle.drill":"電鑽:嗡嗡", - "gtceu.subtitle.electrolyzer":"電解機:爆出火花", - "gtceu.subtitle.file":"銼:磨削", - "gtceu.subtitle.fire":"火:爆裂", - "gtceu.subtitle.forge_hammer":"鍛造錘:DUANG", - "gtceu.subtitle.furnace":"電爐:冶煉", - "gtceu.subtitle.jet_engine":"噴射背包:轟轟", - "gtceu.subtitle.macerator":"研磨機:破碎", - "gtceu.subtitle.metal_pipe":"流體管道:Destruction_Metal_Pole_L_Wave_2_0_0.wav", - "gtceu.subtitle.miner":"採礦機:開採", - "gtceu.subtitle.mixer":"攪拌機:攪動", - "gtceu.subtitle.mortar":"研缽:研磨", - "gtceu.subtitle.motor":"馬達:轉啊轉", - "gtceu.subtitle.plunger":"搋子:清理流體", - "gtceu.subtitle.portable_scanner":"便攜式掃描儀:掃描", - "gtceu.subtitle.portal_closing":"傳送門:關閉", - "gtceu.subtitle.portal_opening":"傳送門:開啟", - "gtceu.subtitle.replicator":"複製機:運行", - "gtceu.subtitle.saw":"鋸:切割", - "gtceu.subtitle.science":"化學反應器:科!學!", - "gtceu.subtitle.screwdriver":"螺絲刀:擰螺絲", - "gtceu.subtitle.soft_hammer":"軟錘:輕敲", - "gtceu.subtitle.spray_can":"噴漆罐:噴塗", - "gtceu.subtitle.sus":"唱片:你有嫌疑", - "gtceu.subtitle.turbine":"渦輪:呼嘯", - "gtceu.subtitle.wirecutter":"剪線鉗:剪斷", - "gtceu.subtitle.wrench":"扳手:嘎啦", - "gtceu.thermal_centrifuge":"熱力離心機", - "gtceu.tool.class.axe":"斧", - "gtceu.tool.class.butchery_knife":"屠刀", - "gtceu.tool.class.crowbar":"撬棍", - "gtceu.tool.class.drill":"電鑽", - "gtceu.tool.class.file":"銼", - "gtceu.tool.class.hammer":"錘", - "gtceu.tool.class.hoe":"鋤", - "gtceu.tool.class.knife":"刀", - "gtceu.tool.class.mallet":"軟錘", - "gtceu.tool.class.mining_hammer":"採礦錘", - "gtceu.tool.class.mortar":"研缽", - "gtceu.tool.class.pickaxe":"鎬", - "gtceu.tool.class.plunger":"搋子", - "gtceu.tool.class.rolling_pin":"擀麵棍", - "gtceu.tool.class.saw":"鋸", - "gtceu.tool.class.screwdriver":"螺絲起子", - "gtceu.tool.class.scythe":"鐮刀", - "gtceu.tool.class.shears":"剪刀", - "gtceu.tool.class.shovel":"鍬", - "gtceu.tool.class.spade":"鏟", - "gtceu.tool.class.sword":"劍", - "gtceu.tool.class.wire_cutter":"剪線鉗", - "gtceu.tool.class.wrench":"扳手", - "gtceu.tool_action.crowbar":"§8使用撬棍卸下覆蓋板", - "gtceu.tool_action.hammer":"§8使用鍛造錘消除聲響", - "gtceu.tool_action.screwdriver.access_covers":"§8使用螺絲起子訪問覆蓋板", - "gtceu.tool_action.screwdriver.auto_collapse":"§8使用螺絲起子開關物品堆疊自動合併", - "gtceu.tool_action.screwdriver.auto_output":"§8使用螺絲起子切換自動輸出", - "gtceu.tool_action.screwdriver.auto_output_covers":"§8使用螺絲起子設定允許從輸出端輸入或訪問覆蓋板", - "gtceu.tool_action.screwdriver.toggle_mode":"§8使用螺絲起子切換模式", - "gtceu.tool_action.screwdriver.toggle_mode_covers":"§8使用螺絲起子切換模式或訪問覆蓋板", - "gtceu.tool_action.show_tooltips":"§7按住§6SHIFT§7顯示工具資訊", - "gtceu.tool_action.soft_mallet.reset":"§8使用軟錘開關機器", - "gtceu.tool_action.soft_mallet.toggle_mode":"§8使用軟錘切換模式", - "gtceu.tool_action.tape":"§8使用膠帶維護機器", - "gtceu.tool_action.wire_cutter.connect":"§8使用剪線鉗連線/斷開電線", - "gtceu.tool_action.wrench.connect":"§8使用扳手連線/斷開管道,潛行可以阻止輸入", - "gtceu.tool_action.wrench.set_facing":"§8使用扳手設定朝向", - "gtceu.tooltip.fluid_pipe_hold_shift":"§7按住§6SHIFT§7以檢視流體容器詳情", - "gtceu.tooltip.hold_ctrl":"§7按住CTRL獲得更多資訊", - "gtceu.tooltip.hold_shift":"§7按住§6SHIFT§7獲得更多資訊", - "gtceu.tooltip.potion.each":"§r%4$s%%§7機率獲得§r%1$s %2$s§7(§r%3$s§7tick)", - "gtceu.tooltip.potion.header":"§6包含效果:", - "gtceu.tooltip.proxy_bind":"§f綁定到%s %s %s處的樣板供應倉", - "gtceu.tooltip.tool_fluid_hold_shift":"§7按住§6SHIFT§7以檢視流體容器及工具詳情", - "gtceu.top.allow_output_input":"允許輸入", - "gtceu.top.auto_output":"自動輸出", - "gtceu.top.buffer_bound_pos":"已綁定至 - X:%s;Y:%s;Z:%s", - "gtceu.top.cable_amperage":"電流:", - "gtceu.top.cable_voltage":"電壓:", - "gtceu.top.convert_eu":"轉換模式:§eEU§r ->§cFE§r", - "gtceu.top.convert_fe":"轉換模式:§cFE§r ->§eEU§r", - "gtceu.top.energy_consumption":"耗能", - "gtceu.top.energy_production":"產能", - "gtceu.top.energy_stored":" / %d EU", - "gtceu.top.exhaust_vent_blocked":"受阻", - "gtceu.top.exhaust_vent_direction":"排氣口:%s", - "gtceu.top.filter.label":"過濾:", - "gtceu.top.fluid_auto_output":"流體輸出:%s", - "gtceu.top.fuel_min_consume":"需要", - "gtceu.top.fuel_none":"無燃料", - "gtceu.top.invalid_structure":"結構不完整", - "gtceu.top.item_auto_output":"物品輸出:%s", - "gtceu.top.link_cover.color":"顏色:", - "gtceu.top.machine_mode":"機器模式:", - "gtceu.top.maintenance.crowbar":"這東西不屬於這兒", - "gtceu.top.maintenance.hard_hammer":"外殼有些凹痕", - "gtceu.top.maintenance.screwdriver":"螺絲沒擰緊", - "gtceu.top.maintenance.soft_mallet":"有什麼東西卡住了", - "gtceu.top.maintenance.wire_cutter":"有幾根線燒焦了", - "gtceu.top.maintenance.wrench":"管道鬆動了", - "gtceu.top.maintenance_broken":"需要維護", - "gtceu.top.maintenance_fixed":"無需維修", - "gtceu.top.mode.export":"輸出", - "gtceu.top.mode.import":"輸入", - "gtceu.top.obstructed_structure":"結構受阻", - "gtceu.top.primitive_pump_production":"產出:%s mB/s", - "gtceu.top.progress_computation":" / %s CWU", - "gtceu.top.progress_sec":" / %s s", - "gtceu.top.progress_tick":" / %s t", - "gtceu.top.proxies_bound":"遠端樣板供應倉綁定數量:%s", - "gtceu.top.recipe_output":"配方輸出:", - "gtceu.top.stained":"顏色:%s", - "gtceu.top.transform_down":"§a降壓§r %s", - "gtceu.top.transform_input":"§6輸入:§r %s", - "gtceu.top.transform_output":"§9輸出:§r %s", - "gtceu.top.transform_up":"§c升壓§r %s", - "gtceu.top.unit.fluid_buckets":"B", - "gtceu.top.unit.fluid_milibuckets":"mB", - "gtceu.top.unit.items":"物品", - "gtceu.top.valid_structure":"結構已成型", - "gtceu.top.working_disabled":"已暫停工作", - "gtceu.universal.clear_nbt_recipe.tooltip":"§c這將清除所有內容物!", - "gtceu.universal.disabled":"多方塊結構共享:§4禁止", - "gtceu.universal.enabled":"多方塊結構共享:§a允許", - "gtceu.universal.kiloliters":"%s B", - "gtceu.universal.liters":"%s mB", - "gtceu.universal.tooltip.amperage_in":"§e輸入電流:§f%dA", - "gtceu.universal.tooltip.amperage_in_out":"§e輸入/輸出電流:§f%dA", - "gtceu.universal.tooltip.amperage_in_out_till":"§e輸入/輸出電流上限:§f%dA", - "gtceu.universal.tooltip.amperage_in_till":"§e輸入電流上限:§f%dA", - "gtceu.universal.tooltip.amperage_out":"§e輸出電流:§f%dA", - "gtceu.universal.tooltip.amperage_out_till":"§e輸出電流上限:§f%dA", - "gtceu.universal.tooltip.base_production_eut":"§e基礎產能功率:§f%d EU/t", - "gtceu.universal.tooltip.base_production_fluid":"§e基礎產出速率:§f%d mB/t", - "gtceu.universal.tooltip.chunk_mode":"區塊模式:", - "gtceu.universal.tooltip.deprecated":"§4§l警告:§r§4已棄用。將在未來版本中移除。§r", - "gtceu.universal.tooltip.energy_storage_capacity":"§c能量暫存:§r%d EU", - "gtceu.universal.tooltip.energy_tier_range":"§a適配電壓等級:§f%s§f-%s", - "gtceu.universal.tooltip.fluid_storage_capacity":"§9流體容量:§f%d mB", - "gtceu.universal.tooltip.fluid_storage_capacity_mult":"§9流體容量:§r共§f%d§7個流體槽,每個§f%dmB§7", - "gtceu.universal.tooltip.fluid_stored":"§2內部流體:%2$d mB §f%1$s", - "gtceu.universal.tooltip.fluid_transfer_rate":"§b傳輸速率:§f%d mB/t", - "gtceu.universal.tooltip.item_storage_capacity":"§6物品槽位數量:§f%d", - "gtceu.universal.tooltip.item_storage_total":"§6物品容量:§f%d物品", - "gtceu.universal.tooltip.item_stored":"§d內部物品:§f%2$d個%1$s", - "gtceu.universal.tooltip.item_transfer_rate":"§b傳輸速率:§f%d物品/s", - "gtceu.universal.tooltip.item_transfer_rate_stacks":"§b傳輸速率:§f%d組/s", - "gtceu.universal.tooltip.max_voltage_in":"§a最大輸入電壓:§f%d(%s§f)", - "gtceu.universal.tooltip.max_voltage_in_out":"§a最大輸入/輸出電壓:§f%d EU/t(%s§f)", - "gtceu.universal.tooltip.max_voltage_out":"§a最大輸出電壓:§f%d(%s§f)", - "gtceu.universal.tooltip.parallel":"§d最大平行:§f%d", - "gtceu.universal.tooltip.produces_fluid":"§e產出速率:§f%d mB/t", - "gtceu.universal.tooltip.requires_redstone":"§4需要紅石訊號", - "gtceu.universal.tooltip.silk_touch":"絲綢之觸:", - "gtceu.universal.tooltip.terrain_resist":"該機器不會在暴露於惡劣天氣時爆炸", - "gtceu.universal.tooltip.uses_per_hour_lubricant":"工作時消耗§f%d mB/hr§7§6潤滑油§7", - "gtceu.universal.tooltip.uses_per_op":"每次工作時消耗§f%d EU§7", - "gtceu.universal.tooltip.uses_per_second":"工作時消耗§f%d EU/s§7", - "gtceu.universal.tooltip.uses_per_tick":"工作時消耗§f%d EU/t§7", - "gtceu.universal.tooltip.uses_per_tick_steam":"工作時消耗§f%dmB/t§7蒸汽", - "gtceu.universal.tooltip.voltage_in":"§a輸入電壓:§f%d EU/t(%s§f)", - "gtceu.universal.tooltip.voltage_in_out":"§a輸入/輸出電壓:§f%d EU/t(%s§f)", - "gtceu.universal.tooltip.voltage_out":"§a輸出電壓:§f%d EU/t(%s§f)", - "gtceu.universal.tooltip.working_area":"§b工作範圍:§f%dx%d", - "gtceu.universal.tooltip.working_area_chunks":"§b工作範圍:§f%dx%d 區塊", - "gtceu.universal.tooltip.working_area_chunks_max":"§b最大工作範圍:§f%dx%d 區塊", - "gtceu.universal.tooltip.working_area_max":"§b最大工作範圍:§f%dx%d", - "gtceu.vacuum_freezer":"真空冷凍機", - "gtceu.wiremill":"線材軋機", - "gui.gtceu.refund_all.desc":"將原料送回ME網路", - "gui.gtceu.rename.desc":"重新命名樣板供應倉", - "gui.gtceu.share_inventory.desc.0":"與樣板供應倉的所有樣板共享物品!", - "gui.gtceu.share_inventory.desc.1":"儲存不消耗的催化劑,實現更高效的自動化", - "gui.gtceu.share_inventory.title":"共享物品庫存", - "gui.gtceu.share_tank.desc.0":"與樣板供應倉的所有樣板共享流體!", - "gui.gtceu.share_tank.title":"共享流體庫存", - "gui.widget.incrementButton.default_tooltip":"按住Shift,Ctrl鍵或同時按住這兩個鍵來改變數量", - "gui.widget.recipeProgressWidget.default_tooltip":"檢視配方", - "item.glass_lens":"玻璃透鏡(白色)", - "item.gtceu.activity_detector_cover":"活躍探測覆蓋板", - "item.gtceu.activity_detector_cover.tooltip":"§7作§f覆蓋板§7時依照§f機器活躍狀態§7發出紅石訊號。", - "item.gtceu.advanced_activity_detector_cover":"進階活躍狀態探測器", - "item.gtceu.advanced_activity_detector_cover.tooltip":"§7作§f覆蓋板§7時依照§f機器處理進度§7發出紅石訊號。", - "item.gtceu.advanced_electric_jetpack":"進階電力噴射背包", - "item.gtceu.advanced_energy_detector_cover":"進階能量探測覆蓋板", - "item.gtceu.advanced_energy_detector_cover.tooltip":"§7作§f覆蓋板§7時依照由§fRS鎖存器§7控制的§f能量狀態§7發出紅石訊號。", - "item.gtceu.advanced_fluid_detector_cover":"進階流體探測器", - "item.gtceu.advanced_fluid_detector_cover.tooltip":"作§f覆蓋板§7時依照由§fRS鎖存器§7控制的§f流體儲存狀態§7發出紅石訊號。", - "item.gtceu.advanced_fluid_voiding_cover":"進階流體銷毀覆蓋板", - "item.gtceu.advanced_fluid_voiding_cover.tooltip.0":"§7作§f覆蓋板§7時允許按數量銷毀§f流體§7。", - "item.gtceu.advanced_fluid_voiding_cover.tooltip.1":"加裝後使用§f軟錘§7啟用", - "item.gtceu.advanced_integrated_circuit":"進階積體電路", - "item.gtceu.advanced_integrated_circuit.tooltip.0":"§7更小也更強", - "item.gtceu.advanced_integrated_circuit.tooltip.1":"§6HV級電路", - "item.gtceu.advanced_item_detector_cover":"進階物品探測器", - "item.gtceu.advanced_item_detector_cover.tooltip":"作§f覆蓋板§7時依照由§fRS鎖存器§7控制的§f物品儲存狀態§7發出紅石訊號。", - "item.gtceu.advanced_item_voiding_cover":"進階物品銷毀覆蓋板", - "item.gtceu.advanced_item_voiding_cover.tooltip.0":"§7作§f覆蓋板§7時銷毀物品。", - "item.gtceu.advanced_item_voiding_cover.tooltip.1":"加裝後使用§f軟錘§7啟用", - "item.gtceu.advanced_power_thruster":"進階電力推進器", - "item.gtceu.advanced_quarktech_chestplate":"夸克科技™進階套裝胸甲", - "item.gtceu.advanced_smd_capacitor":"高階貼片電容", - "item.gtceu.advanced_smd_capacitor.tooltip":"§7高階電子元件", - "item.gtceu.advanced_smd_diode":"高階貼片二極體", - "item.gtceu.advanced_smd_diode.tooltip":"§7高階電子元件", - "item.gtceu.advanced_smd_inductor":"高階貼片電感", - "item.gtceu.advanced_smd_inductor.tooltip":"§7高階電子元件", - "item.gtceu.advanced_smd_resistor":"高階貼片電阻", - "item.gtceu.advanced_smd_resistor.tooltip":"§7高階電子元件", - "item.gtceu.advanced_smd_transistor":"高階貼片電晶體", - "item.gtceu.advanced_smd_transistor.tooltip":"§7高階電子元件", - "item.gtceu.advanced_soc":"ASoC", - "item.gtceu.advanced_soc.tooltip":"§7先進系統級晶片", - "item.gtceu.advanced_soc_wafer":"ASoC晶圓", - "item.gtceu.advanced_soc_wafer.tooltip":"§7高階電路原料", - "item.gtceu.aluminium_fluid_cell":"鋁單元", - "item.gtceu.anvil_casting_mold":"鑄造模具(砧)", - "item.gtceu.anvil_casting_mold.tooltip":"§7用來製作砧的鑄造模具", - "item.gtceu.ash_dust":"灰燼", - "item.gtceu.advanced_nanomuscle_chestplate":"奈米肌體™進階套裝胸甲", - "item.gtceu.axe_extruder_mold.tooltip":"§7用來製作斧的擠壓模具", - "item.gtceu.ball_casting_mold":"鑄造模具(球)", - "item.gtceu.ball_casting_mold.tooltip":"§7用來製作球的鑄造模具", - "item.gtceu.basaltic_mineral_sand_dust":"玄武岩礦砂", - "item.gtceu.basic_electronic_circuit":"基礎電子電路", - "item.gtceu.basic_electronic_circuit.tooltip.0":"§7你的第一塊電路", - "item.gtceu.basic_electronic_circuit.tooltip.1":"§cLV級電路", - "item.gtceu.basic_integrated_circuit":"基礎積體電路", - "item.gtceu.basic_integrated_circuit.tooltip.0":"§7更小也更強", - "item.gtceu.basic_integrated_circuit.tooltip.1":"§6LV級電路", - "item.gtceu.basic_tape":"膠帶", - "item.gtceu.basic_tape.tooltip":"強度不足,無法解決機械故障\\n可以带走板條箱,且不丟失物品", - "item.gtceu.battery.charge_detailed.0":"§a%s/%sEU-%s級§7(§a剩餘供能時長:%s/%s%s§7)", - "item.gtceu.battery.charge_detailed.1":"§e%s/%sEU-%s級§7(§e剩餘供能時長:%s/%s%s§7)", - "item.gtceu.battery.charge_detailed.2":"§c%s/%sEU-%s級§7(§c剩餘供能時長:%s/%s%s§7)", - "item.gtceu.battery.charge_time":"§a最大供能時長:%s%s(%s)", - "item.gtceu.battery.charge_unit.hour":"時", - "item.gtceu.battery.charge_unit.minute":"分", - "item.gtceu.battery.charge_unit.second":"秒", - "item.gtceu.bentonite_dust":"膨潤土", - "item.gtceu.bio_chaff":"生物糠", - "item.gtceu.black_dye_spray_can":"噴漆罐(黑色)", - "item.gtceu.black_glass_lens":"玻璃透鏡(黑色)", - "item.gtceu.blacklight":"黑光燈", - "item.gtceu.blacklight.tooltip":"§7長波§d紫外線§7光源", - "item.gtceu.block_casting_mold":"鑄造模具(方塊)", - "item.gtceu.block_casting_mold.tooltip":"§7用來製作方塊的鑄造模具", - "item.gtceu.block_extruder_mold":"擠壓模具(方塊)", - "item.gtceu.block_extruder_mold.tooltip":"§7用來製作方塊的擠壓模具", - "item.gtceu.blue_dye_spray_can":"噴漆罐(藍色)", - "item.gtceu.blue_glass_lens":"玻璃透鏡(藍色)", - "item.gtceu.bolt_extruder_mold":"擠壓模具(螺栓)", - "item.gtceu.bolt_extruder_mold.tooltip":"§7用來製作螺栓的擠壓模具", - "item.gtceu.bone_dust":"骨粉", - "item.gtceu.borosilicate_glass_ingot":"硼矽玻璃條", - "item.gtceu.bottle.purple.drink.tooltip":"§7來點檸檬汽水,還是冰紅茶?我手裡這瓶可是紫色飲料!", - "item.gtceu.bottle_casting_mold":"鑄造模具(瓶子)", - "item.gtceu.bottle_casting_mold.tooltip":"§7用來製作瓶的鑄造模具", - "item.gtceu.bottle_extruder_mold":"擠壓模具(瓶子)", - "item.gtceu.bottle_extruder_mold.tooltip":"§7用來製作瓶子的擠壓模具", - "item.gtceu.brick_wooden_form":"木製磚模具", - "item.gtceu.brown_dye_spray_can":"噴漆罐(棕色)", - "item.gtceu.brown_glass_lens":"玻璃透鏡(棕色)", - "item.gtceu.bucket":"%s桶", - "item.gtceu.capacitor":"電容", - "item.gtceu.capacitor.tooltip":"§7基礎電子元件", - "item.gtceu.carbon_fiber_mesh":"碳纖維網", - "item.gtceu.carbon_fiber_plate":"碳板", - "item.gtceu.carbon_fibers":"生碳纖維", - "item.gtceu.casing_casting_mold.tooltip":"§7用來製作外殼的鑄造模具", - "item.gtceu.casing_extruder_mold.tooltip":"§7用來製作外殼的擠壓模具", - "item.gtceu.cassiterite_sand_dust":"錫石礦砂", - "item.gtceu.cell_extruder_mold":"擠壓模具(單元)", - "item.gtceu.cell_extruder_mold.tooltip":"§7用來製作單元的擠壓模具", - "item.gtceu.chemical_black_dye":"黑色化學染料", - "item.gtceu.chemical_blue_dye":"藍色化學染料", - "item.gtceu.chemical_brown_dye":"棕色化學染料", - "item.gtceu.chemical_cyan_dye":"青色化學染料", - "item.gtceu.chemical_gray_dye":"灰色化學染料", - "item.gtceu.chemical_green_dye":"綠色化學染料", - "item.gtceu.chemical_light_blue_dye":"淺藍色化學染料", - "item.gtceu.chemical_light_gray_dye":"淺灰色化學染料", - "item.gtceu.chemical_lime_dye":"淺綠色化學染料", - "item.gtceu.chemical_magenta_dye":"洋紅色化學染料", - "item.gtceu.chemical_orange_dye":"橙色化學染料", - "item.gtceu.chemical_pink_dye":"粉紅色化學染料", - "item.gtceu.chemical_purple_dye":"紫色化學染料", - "item.gtceu.chemical_red_dye":"紅色化學染料", - "item.gtceu.chemical_white_dye":"白色化學染料", - "item.gtceu.chemical_yellow_dye":"黃色化學染料", - "item.gtceu.chipped_glass_gem":"破碎的玻璃晶體", - "item.gtceu.chipped_sugar_gem":"小塊方糖", - "item.gtceu.circuit.integrated.gui":"§7程式設計電路設定", - "item.gtceu.coke_oven_brick":"焦爐磚", - "item.gtceu.compressed_clay":"壓縮黏土", - "item.gtceu.compressed_coke_clay":"壓縮焦黏土", - "item.gtceu.compressed_fireclay":"壓縮耐火黏土", - "item.gtceu.computer_monitor_cover":"電腦螢幕覆蓋板", - "item.gtceu.computer_monitor_cover.tooltip":"§7作§f覆蓋板§7時顯示§f資料§7。", - "item.gtceu.conveyor.module.tooltip":"§7作§f覆蓋板§7時以特定速率傳輸§f物品§7。", - "item.gtceu.cpu_chip":"CPU晶片", - "item.gtceu.cpu_chip.tooltip":"§7中央處理器", - "item.gtceu.cpu_wafer":"CPU晶圓", - "item.gtceu.cpu_wafer.tooltip":"§7中央處理器原料", - "item.gtceu.crushed_bentonite_ore":"精研膨潤土", - "item.gtceu.crushed_cassiterite_sand_ore":"粉碎錫石礦砂", - "item.gtceu.crushed_pitchblende_ore":"精研瀝青鈾礦", - "item.gtceu.crushed_talc_ore_ore":"精研滑石", - "item.gtceu.crystal_cpu":"晶體CPU", - "item.gtceu.crystal_cpu.tooltip":"§7晶體處理器", - "item.gtceu.crystal_processor":"晶體處理器", - "item.gtceu.crystal_processor.tooltip.0":"§7得益於晶體蝕刻技術", - "item.gtceu.crystal_processor.tooltip.1":"§9IV級電路", - "item.gtceu.crystal_processor_assembly":"晶體處理器叢集", - "item.gtceu.crystal_processor_assembly.tooltip.0":"§7得益於晶體蝕刻技術", - "item.gtceu.crystal_processor_assembly.tooltip.1":"§9LuV級電路", - "item.gtceu.crystal_processor_computer":"晶體處理器超級電腦", - "item.gtceu.crystal_processor_computer.tooltip.0":"§7得益於晶體蝕刻技術", - "item.gtceu.crystal_processor_computer.tooltip.1":"§9ZPM級電路", - "item.gtceu.crystal_processor_mainframe":"晶體處理器主機", - "item.gtceu.crystal_processor_mainframe.tooltip.0":"§7得益於晶體蝕刻技術", - "item.gtceu.crystal_processor_mainframe.tooltip.1":"§9UV級電路", - "item.gtceu.crystal_soc":"晶體SoC", - "item.gtceu.crystal_soc.tooltip":"§7晶體系統級晶片", - "item.gtceu.cyan_dye_spray_can":"噴漆罐(青色)", - "item.gtceu.cyan_glass_lens":"玻璃透鏡(青色)", - "item.gtceu.cylinder_casting_mold":"鑄造模具(圓柱)", - "item.gtceu.cylinder_casting_mold.tooltip":"§7用來製作圓柱的鑄造模具", - "item.gtceu.dark_ash_dust":"黑色灰燼", - "item.gtceu.data_module":"資料模組", - "item.gtceu.data_orb":"資料球", - "item.gtceu.data_orb.tooltip":" §7大容量的資料儲存器", - "item.gtceu.data_stick":"快閃記憶體", - "item.gtceu.data_stick.tooltip":"§7小容量的資料儲存器", - "item.gtceu.diamond_grinding_head":"鑽石研磨頭", - "item.gtceu.diode":"二極體", - "item.gtceu.diode.tooltip":"§7基礎電子元件", - "item.gtceu.dough":"麵團", - "item.gtceu.duct_tape":"布萊恩科技航空專用強化膠帶FAL-84型", - "item.gtceu.duct_tape.tooltip":"§7如果一卷修不好,那就再來一卷!", - "item.gtceu.dynamite":"炸藥", - "item.gtceu.electric.pump.tooltip":"§7作§f覆蓋板§7時以特定速率傳輸§f流體§7。", - "item.gtceu.electric_jetpack":"電力噴射背包", - "item.gtceu.empty_mold":"空模板", - "item.gtceu.empty_mold.tooltip":"§7用以製作鑄造模具與擠壓模具", - "item.gtceu.empty_spray_can":"空噴漆罐", - "item.gtceu.empty_spray_can.tooltip":"§7可充入各種顏色的噴劑", - "item.gtceu.empty_wooden_form":"空木製模具", - "item.gtceu.ender_fluid_link_cover":"終界流體連線", - "item.gtceu.ender_fluid_link_cover.tooltip":"§7作§f覆蓋板§7時利用§f無線§7§d終界§f連線§7傳輸§f流體§7。", - "item.gtceu.energium_dust":"能量粉", - "item.gtceu.energy_cluster":"能量簇", - "item.gtceu.energy_cluster.tooltip":"§7可充電電池", - "item.gtceu.energy_crystal":"能量水晶", - "item.gtceu.energy_crystal.tooltip":"§7可充電電池", - "item.gtceu.energy_detector_cover":"能量探測覆蓋板", - "item.gtceu.energy_detector_cover.tooltip":"§7作§f覆蓋板§7時依照§f能量儲量§7發出紅石訊號。", - "item.gtceu.energy_module":"能量模組", - "item.gtceu.energy_module.tooltip":"§7可充電電池", - "item.gtceu.engraved_crystal_chip":"蝕刻水晶晶片", - "item.gtceu.engraved_crystal_chip.tooltip":"§7晶體電路所需", - "item.gtceu.engraved_lapotron_crystal_chip":"蝕刻蘭波頓晶片", - "item.gtceu.epoxy_circuit_board":"環氧樹脂基板", - "item.gtceu.epoxy_circuit_board.tooltip":"§7進階電路基板", - "item.gtceu.epoxy_printed_circuit_board":"環氧樹脂印刷電路基板", - "item.gtceu.epoxy_printed_circuit_board.tooltip":"§7更高階的電路基板", - "item.gtceu.ev_battery_hull":"小型釩電池外殼", - "item.gtceu.ev_battery_hull.tooltip":"§7一個空的§5EV§7電池外殼", - "item.gtceu.ev_conveyor_module":"§5EV§r傳送帶", - "item.gtceu.ev_electric_motor":"§5EV§r電動馬達", - "item.gtceu.ev_electric_piston":"§5EV§r電力活塞", - "item.gtceu.ev_electric_pump":"§5EV§r電動泵", - "item.gtceu.ev_emitter":"§5EV§r發射器", - "item.gtceu.ev_field_generator":"§5EV§r力場發生器", - "item.gtceu.ev_fluid_regulator":"§5EV§r流體調節器", - "item.gtceu.ev_power_unit":"§5EV§r能量單元", - "item.gtceu.ev_robot_arm":"§5EV§r機械臂", - "item.gtceu.ev_sensor":"§5EV§r感測器", - "item.gtceu.ev_solar_panel":"超高壓太陽能板(§5EV§r)", - "item.gtceu.ev_vanadium_battery":"小型釩電池", - "item.gtceu.ev_vanadium_battery.tooltip":"§7可充電電池", - "item.gtceu.ev_voltage_coil":"超高壓線圈(§5EV§r)", - "item.gtceu.ev_voltage_coil.tooltip":"極限線圈", - "item.gtceu.exquisite_glass_gem":"精緻的玻璃晶體", - "item.gtceu.facade_cover":"覆蓋偽裝板", - "item.gtceu.facade_cover.tooltip.0":"§7可作為§f覆蓋板§7加裝的裝飾性外殼。", - "item.gtceu.facade_cover.tooltip.1":"§7使用三個鐵板與任意方塊合成", - "item.gtceu.face_mask":"面罩", - "item.gtceu.fertilizer":"肥料", - "item.gtceu.fiber_reinforced_circuit_board":"纖維強化電路基板", - "item.gtceu.fiber_reinforced_circuit_board.tooltip":"§7超級電路基板", - "item.gtceu.fiber_reinforced_printed_circuit_board":"纖維強化印刷電路基板", - "item.gtceu.fiber_reinforced_printed_circuit_board.tooltip":"§7更高階的電路基板", - "item.gtceu.file_extruder_mold.tooltip":"§7用來製作銼的擠壓模具", - "item.gtceu.fine_borosilicate_glass_wire":"硼矽玻璃纖維", - "item.gtceu.firebrick":"耐火磚", - "item.gtceu.firebrick.tooltip":"§7耐熱", - "item.gtceu.flawed_glass_gem":"有瑕的玻璃晶體", - "item.gtceu.flawed_sugar_gem":"小顆方糖", - "item.gtceu.flawless_glass_gem":"無瑕的玻璃晶體", - "item.gtceu.fluid.regulator.tooltip":"§7作§f覆蓋板§7時§7限制§f§f流體§7的流量。", - "item.gtceu.fluid_cell":"流體單元", - "item.gtceu.fluid_detector_cover":"流體探測覆蓋板", - "item.gtceu.fluid_detector_cover.tooltip":"§7作§f覆蓋板§7時依照§f流體儲量§7發出紅石訊號。", - "item.gtceu.fluid_filter":"流體過濾卡", - "item.gtceu.fluid_filter.tooltip.0":"§7作§f覆蓋板§7時過濾§流體§7的輸入/輸出。", - "item.gtceu.fluid_filter.tooltip.1":"§7亦可用於§f電動泵§7與§f流體調節器§7。", - "item.gtceu.fluid_tag_filter":"流體標籤過濾卡", - "item.gtceu.fluid_tag_filter.tooltip.0":"§7作§f覆蓋板§7時以§f流體標籤§7過濾§f流體§7的輸入/輸出。", - "item.gtceu.fluid_tag_filter.tooltip.1":"§7亦可用於§f電動泵§7與§f流體調節器§7。", - "item.gtceu.fluid_voiding_cover":"流體銷毀覆蓋板", - "item.gtceu.fluid_voiding_cover.tooltip.0":"§7作§f覆蓋板§7時允許銷毀§f流體§7。", - "item.gtceu.fluid_voiding_cover.tooltip.1":"§7加裝後使用§f軟錘§7啟用", - "item.gtceu.foam_sprayer.tooltip.0":"§7噴射建築泡沫", - "item.gtceu.foam_sprayer.tooltip.1":"右擊框架來給框架噴塗泡沫", - "item.gtceu.foam_sprayer.tooltip.2":"泡沫可以染色", - "item.gtceu.foil_extruder_mold":"擠壓模具(箔)", - "item.gtceu.foil_extruder_mold.tooltip":"§7用來製作箔的擠壓模具", - "item.gtceu.fullers_earth_dust":"漂白土", - "item.gtceu.garnet_sand_dust":"石榴石砂", - "item.gtceu.gear_casting_mold":"鑄造模具(齒輪)", - "item.gtceu.gear_casting_mold.small.tooltip":"§7用來製作小型齒輪的鑄造模具", - "item.gtceu.gear_casting_mold.tooltip":"§7用來製作齒輪的鑄造模具", - "item.gtceu.gear_extruder_mold":"擠壓模具(齒輪)", - "item.gtceu.gear_extruder_mold.tooltip":"§7用來製作齒輪的擠壓模具", - "item.gtceu.gear_small_extruder_mold.tooltip":"§7用來製作小型齒輪的擠壓模具", - "item.gtceu.gelled_toluene":"膠凝甲苯", - "item.gtceu.gelled_toluene.tooltip":"§7炸藥原料", - "item.gtceu.glass_gem":"玻璃晶體", - "item.gtceu.glass_plate":"玻璃板", - "item.gtceu.glass_tube":"玻璃管", - "item.gtceu.glass_vial":"玻璃試管", - "item.gtceu.glauconite_sand_dust":"海綠石砂", - "item.gtceu.good_electronic_circuit":"優質電子電路", - "item.gtceu.good_electronic_circuit.tooltip.0":"§7你的第二塊電路", - "item.gtceu.good_electronic_circuit.tooltip.1":"§cMV級電路", - "item.gtceu.good_integrated_circuit":"優質積體電路", - "item.gtceu.good_integrated_circuit.tooltip.0":"§7更小也更強", - "item.gtceu.good_integrated_circuit.tooltip.1":"§6MV級電路", - "item.gtceu.granitic_mineral_sand_dust":"花崗岩礦砂", - "item.gtceu.gravi_star":"重力之星", - "item.gtceu.gravi_star.tooltip":"§7終極地獄之星", - "item.gtceu.gravitation_engine_unit":"重力引擎單元", - "item.gtceu.gray_dye_spray_can":"噴漆罐(灰色)", - "item.gtceu.gray_glass_lens":"玻璃透鏡(灰色)", - "item.gtceu.green_dye_spray_can":"噴漆罐(綠色)", - "item.gtceu.green_glass_lens":"玻璃透鏡(綠色)", - "item.gtceu.hammer_extruder_mold.tooltip":"§7用來製作錘的擠壓模具", - "item.gtceu.hazmat_boots":"防護衣靴子", - "item.gtceu.hazmat_chestpiece":"防護衣胸甲", - "item.gtceu.hazmat_headpiece":"防護衣頭盔", - "item.gtceu.hazmat_leggings":"防護衣護腿", - "item.gtceu.highly_advanced_soc":"HASoC", - "item.gtceu.highly_advanced_soc.tooltip":"§7高度先進的系統級晶片", - "item.gtceu.highly_advanced_soc_wafer":"HASoC晶圓", - "item.gtceu.highly_advanced_soc_wafer.tooltip":"§7高度先進的電路原料", - "item.gtceu.hoe_extruder_mold.tooltip":"§7用來製作鋤的擠壓模具", - "item.gtceu.hpic_chip":"HPIC晶片", - "item.gtceu.hpic_chip.tooltip":"§7高功率積體電路", - "item.gtceu.hpic_wafer":"HPIC晶圓", - "item.gtceu.hpic_wafer.tooltip":"§7高功率積體電路原料", - "item.gtceu.huge_pipe_extruder_mold":"擠壓模具(巨型管道)", - "item.gtceu.hv_battery_hull":"大型電池外殼", - "item.gtceu.hv_battery_hull.tooltip":"§7一個空的§6HV§7電池外殼", - "item.gtceu.hv_cadmium_battery":"大型鎘電池", - "item.gtceu.hv_cadmium_battery.tooltip":"§7可充電電池", - "item.gtceu.hv_conveyor_module":"§6HV§r傳送帶", - "item.gtceu.hv_electric_motor":"§6HV§r電動馬達", - "item.gtceu.hv_electric_piston":"§6HV§r電力活塞", - "item.gtceu.hv_electric_pump":"§6HV§r電動泵", - "item.gtceu.hv_emitter":"§6HV§r發射器", - "item.gtceu.hv_field_generator":"§6HV§r力場發生器", - "item.gtceu.hv_fluid_regulator":"§6HV§r流體調節器", - "item.gtceu.hv_item_magnet":"§6HV§r物品磁鐵", - "item.gtceu.hv_lithium_battery":"大型鋰電池", - "item.gtceu.hv_lithium_battery.tooltip":"§7可充電電池", - "item.gtceu.hv_power_unit":"§6HV§r能量單元", - "item.gtceu.hv_robot_arm":"§6HV§r機械臂", - "item.gtceu.hv_sensor":"§6HV§r感測器", - "item.gtceu.hv_sodium_battery":"大型鈉電池", - "item.gtceu.hv_sodium_battery.tooltip":"§7可充電電池", - "item.gtceu.hv_solar_panel":"高壓太陽能板(§6HV§r)", - "item.gtceu.hv_voltage_coil":"高壓線圈(§6HV§r)", - "item.gtceu.hv_voltage_coil.tooltip":"高階線圈", - "item.gtceu.ice_dust":"碎冰", - "item.gtceu.ilc_chip":"IC晶片", - "item.gtceu.ilc_chip.tooltip":"§7整合邏輯電路", - "item.gtceu.ilc_wafer":"ILC晶圓", - "item.gtceu.ilc_wafer.tooltip":"§7積體電路原料", - "item.gtceu.impure_bentonite_dust":"含雜膨潤土", - "item.gtceu.impure_cassiterite_sand_dust":"含雜錫石礦砂", - "item.gtceu.impure_pitchblende_dust":"含雜瀝青鈾礦", - "item.gtceu.impure_rock_salt_dust":"含雜岩鹽", - "item.gtceu.impure_salt_dust":"含雜鹽", - "item.gtceu.impure_talc_dust":"含雜滑石", - "item.gtceu.inductor":"電感", - "item.gtceu.inductor.tooltip":"§7一個小線圈", - "item.gtceu.inert_metal_mixture_dust":"惰性金屬混合物", - "item.gtceu.infinite_water_cover":"無限水覆蓋板", - "item.gtceu.infinite_water_cover.tooltip":"§7作§f覆蓋板§7時為所附著的容器供§9水§7。", - "item.gtceu.ingot_casting_mold":"鑄造模具(錠)", - "item.gtceu.ingot_casting_mold.tooltip":"§7用來製作錠的鑄造模具", - "item.gtceu.ingot_extruder_mold":"擠壓模具(錠)", - "item.gtceu.ingot_extruder_mold.tooltip":"§7用來……等會,用熔爐不好嗎?", - "item.gtceu.invar_lighter":"殷鋼打火機", - "item.gtceu.iridium_metal_residue_dust":"銥金屬渣", - "item.gtceu.iron_minecart_wheels":"鐵礦車車輪", - "item.gtceu.item_detector_cover":"物品探測覆蓋板", - "item.gtceu.item_detector_cover.tooltip":"§7作§f覆蓋板§7時依照§f物品儲量§7發出紅石訊號。", - "item.gtceu.item_filter":"物品過濾卡", - "item.gtceu.item_filter.tooltip.0":"§7作§f覆蓋板§7時過濾§f物品§7的輸入/輸出。", - "item.gtceu.item_filter.tooltip.1":"§7亦可用於§f傳送帶§7與§f機械臂§7。", - "item.gtceu.item_smart_filter":"智慧物品過濾卡", - "item.gtceu.item_smart_filter.tooltip.0":"§7作§f覆蓋板§7時以§f機器的配方§7過濾§f物品§7的輸入/輸出。", - "item.gtceu.item_smart_filter.tooltip.1":"§7亦可用於§f傳送帶§7與§f機械臂§7。", - "item.gtceu.item_tag_filter":"物品標籤過濾卡", - "item.gtceu.item_tag_filter.tooltip.0":"§7作§f覆蓋板§7時以§f物品標籤§7過濾§f物品§7的輸入/輸出。", - "item.gtceu.item_tag_filter.tooltip.1":"§7亦可用於§f傳送帶§7與§f機械臂§7。", - "item.gtceu.item_voiding_cover":"物品銷毀覆蓋板", - "item.gtceu.item_voiding_cover.tooltip.0":"§7作§f覆蓋板§7時銷毀物品。", - "item.gtceu.item_voiding_cover.tooltip.1":"§7加裝後使用§f軟錘§7啟用", - "item.gtceu.iv_battery_hull":"中型釩電池外殼", - "item.gtceu.iv_battery_hull.tooltip":"§7一個空的§1IV§7電池外殼", - "item.gtceu.iv_conveyor_module":"§9IV§r傳送帶", - "item.gtceu.iv_electric_motor":"§9IV§r電動馬達", - "item.gtceu.iv_electric_piston":"§9IV§r電力活塞", - "item.gtceu.iv_electric_pump":"§9IV§r電動泵", - "item.gtceu.iv_emitter":"§9IV§r發射器", - "item.gtceu.iv_field_generator":"§9IV§r力場發生器", - "item.gtceu.iv_fluid_regulator":"§9IV§r流體調節器", - "item.gtceu.iv_power_unit":"§9IV§r能量單元", - "item.gtceu.iv_robot_arm":"§9IV§r機械臂", - "item.gtceu.iv_sensor":"§9IV§r感測器", - "item.gtceu.iv_solar_panel":"強導壓太陽能板(§9IV§r)", - "item.gtceu.iv_vanadium_battery":"中型釩電池", - "item.gtceu.iv_vanadium_battery.tooltip":"§7可充電電池", - "item.gtceu.iv_voltage_coil":"強導壓線圈(§9IV§r)", - "item.gtceu.iv_voltage_coil.tooltip":"精英線圈", - "item.gtceu.lapotron_crystal":"蘭波頓水晶", - "item.gtceu.lapotron_crystal.tooltip":"§7可充電電池", - "item.gtceu.lapotronic_energy_orb":"蘭波頓能量球", - "item.gtceu.lapotronic_energy_orb.tooltip":"§7可充電電池", - "item.gtceu.lapotronic_energy_orb_cluster":"蘭波頓能量球簇", - "item.gtceu.lapotronic_energy_orb_cluster.tooltip":"§7可充電電池", - "item.gtceu.large_pipe_extruder_mold":"擠壓模具(大型管道)", - "item.gtceu.light_blue_dye_spray_can":"噴漆罐(淺藍色)", - "item.gtceu.light_blue_glass_lens":"玻璃透鏡(淺藍色)", - "item.gtceu.light_gray_dye_spray_can":"噴漆罐(淺灰色)", - "item.gtceu.light_gray_glass_lens":"玻璃透鏡(淺灰色)", - "item.gtceu.lime_dye_spray_can":"噴漆罐(淺綠色)", - "item.gtceu.lime_glass_lens":"玻璃透鏡(淺綠色)", - "item.gtceu.liquid_fuel_jetpack":"液體燃料噴射背包", - "item.gtceu.long_rod_extruder_mold":"擠壓模具(長桿)", - "item.gtceu.long_treated_wood_rod":"長防腐木棍", - "item.gtceu.long_wood_rod":"長木棍", - "item.gtceu.lpic_chip":"LPIC晶片", - "item.gtceu.lpic_chip.tooltip":"§7低功率積體電路", - "item.gtceu.lpic_wafer":"LPIC晶圓", - "item.gtceu.lpic_wafer.tooltip":"§7低功率積體電路原料", - "item.gtceu.luv_battery_hull":"大型釩電池外殼", - "item.gtceu.luv_battery_hull.tooltip":"§7一個空的§dLuV§r電池外殼", - "item.gtceu.luv_conveyor_module":"§dLuV§r傳送帶", - "item.gtceu.luv_electric_motor":"§dLuV§r電動馬達", - "item.gtceu.luv_electric_piston":"§dLuV§r電力活塞", - "item.gtceu.luv_electric_pump":"§dLuV§r電動泵", - "item.gtceu.luv_emitter":"§dLuV§r發射器", - "item.gtceu.luv_field_generator":"§dLuV§r力場發生器", - "item.gtceu.luv_fluid_regulator":"§dLuV§r流體調節器", - "item.gtceu.luv_robot_arm":"§dLuV§r機械臂", - "item.gtceu.luv_sensor":"§dLuV§r感測器", - "item.gtceu.luv_solar_panel":"劇差壓太陽能板(§dLuV§r)", - "item.gtceu.luv_vanadium_battery":"大型釩電池", - "item.gtceu.luv_vanadium_battery.tooltip":"§7可充電電池", - "item.gtceu.luv_voltage_coil":"劇差壓線圈(§dLuV§r)", - "item.gtceu.luv_voltage_coil.tooltip":"大師線圈", - "item.gtceu.lv_battery_hull":"小型電池外殼", - "item.gtceu.lv_battery_hull.tooltip":"§7一個空的§7LV§7電池外殼", - "item.gtceu.lv_cadmium_battery":"小型鎘電池", - "item.gtceu.lv_cadmium_battery.tooltip":"§7可充電電池", - "item.gtceu.lv_conveyor_module":"§7LV§r傳送帶", - "item.gtceu.lv_electric_motor":"§7LV§r電動馬達", - "item.gtceu.lv_electric_piston":"§7LV§r電力活塞", - "item.gtceu.lv_electric_pump":"§7LV§r電動泵", - "item.gtceu.lv_emitter":"§7LV§r發射器", - "item.gtceu.lv_field_generator":"§7LV§r力場發生器", - "item.gtceu.lv_fluid_regulator":"§7LV§r流體調節器", - "item.gtceu.lv_item_magnet":"§7LV§r物品磁鐵", - "item.gtceu.lv_lithium_battery":"小型鋰電池", - "item.gtceu.lv_lithium_battery.tooltip":"§7可充電電池", - "item.gtceu.lv_power_unit":"§7LV§r能量單元", - "item.gtceu.lv_robot_arm":"§7LV§r機械臂", - "item.gtceu.lv_sensor":"§7LV§r感測器", - "item.gtceu.lv_sodium_battery":"小型鈉電池", - "item.gtceu.lv_sodium_battery.tooltip":"§7可充電電池", - "item.gtceu.lv_solar_panel":"低壓太陽能板(§7LV§r)", - "item.gtceu.lv_voltage_coil":"低壓線圈(§7LV§r)", - "item.gtceu.lv_voltage_coil.tooltip":"基礎線圈", - "item.gtceu.machine_controller.tooltip":"§7作§f覆蓋板§7時可以§f開/關§7機器。", - "item.gtceu.machine_controller_cover":"機器控制覆蓋板", - "item.gtceu.machine_memory_card":"機器記憶卡", - "item.gtceu.magenta_dye_spray_can":"噴漆罐(洋紅色)", - "item.gtceu.magenta_glass_lens":"玻璃透鏡(洋紅色)", - "item.gtceu.maintenance_detector_cover":"維護探測覆蓋板", - "item.gtceu.mask_filter":"防毒面具過濾罐", - "item.gtceu.matchbox":"火柴盒", - "item.gtceu.matches":"火柴", - "item.gtceu.max_battery":"終極電池", - "item.gtceu.max_battery.tooltip":"§7填滿就能通關Minecraft", - "item.gtceu.max_voltage_coil.tooltip":"至高線圈", - "item.gtceu.meat_dust":"肉末", - "item.gtceu.micro_processor":"微型處理器", - "item.gtceu.micro_processor.tooltip.0":"§7運算速度驚人!", - "item.gtceu.micro_processor.tooltip.1":"§eMV級電路", - "item.gtceu.micro_processor_assembly":"微型處理器叢集", - "item.gtceu.micro_processor_assembly.tooltip.0":"§7運算速度驚人!", - "item.gtceu.micro_processor_assembly.tooltip.1":"§eHV級電路", - "item.gtceu.micro_processor_computer":"微型處理器超級電腦", - "item.gtceu.micro_processor_computer.tooltip.0":"§7運算速度驚人!", - "item.gtceu.micro_processor_computer.tooltip.1":"§eEV級電路", - "item.gtceu.micro_processor_mainframe":"微型處理器主機", - "item.gtceu.micro_processor_mainframe.tooltip.0":"§7運算速度驚人!", - "item.gtceu.micro_processor_mainframe.tooltip.1":"§eIV級電路", - "item.gtceu.microchip_processor":"微晶片處理器", - "item.gtceu.microchip_processor.tooltip.0":"§7卓越的基礎電路", - "item.gtceu.microchip_processor.tooltip.1":"§eLV級電路", - "item.gtceu.mpic_chip":"MPIC晶片", - "item.gtceu.mpic_chip.tooltip":"§7功率積體電路", - "item.gtceu.mpic_wafer":"MPIC晶圓", - "item.gtceu.mpic_wafer.tooltip":"§7功率積體電路原料", - "item.gtceu.multilayer_fiber_reinforced_circuit_board":"多層纖維強化電路基板", - "item.gtceu.multilayer_fiber_reinforced_circuit_board.tooltip":"§7精英電路基板", - "item.gtceu.multilayer_fiber_reinforced_printed_circuit_board":"多層纖維強化印刷電路基板", - "item.gtceu.multilayer_fiber_reinforced_printed_circuit_board.tooltip":"§7精英級電路基板", - "item.gtceu.mv_battery_hull":"中型電池外殼", - "item.gtceu.mv_battery_hull.tooltip":"§7一個空的§bMV§7電池外殼", - "item.gtceu.mv_cadmium_battery":"中型鎘電池", - "item.gtceu.mv_cadmium_battery.tooltip":"§7可充電電池", - "item.gtceu.mv_conveyor_module":"§bMV§r傳送帶", - "item.gtceu.mv_electric_motor":"§bMV§r電動馬達", - "item.gtceu.mv_electric_piston":"§bMV§r電力活塞", - "item.gtceu.mv_electric_pump":"§bMV§r電動泵", - "item.gtceu.mv_emitter":"§bMV§r發射器", - "item.gtceu.mv_field_generator":"§bMV§r力場發生器", - "item.gtceu.mv_fluid_regulator":"§bMV§r流體調節器", - "item.gtceu.mv_lithium_battery":"中型鋰電池", - "item.gtceu.mv_lithium_battery.tooltip":"§7可充電電池", - "item.gtceu.mv_power_unit":"§bMV§r能量單元", - "item.gtceu.mv_robot_arm":"§bMV§r機械臂", - "item.gtceu.mv_sensor":"§bMV§r感測器", - "item.gtceu.mv_sodium_battery":"中型鈉電池", - "item.gtceu.mv_sodium_battery.tooltip":"§7可充電電池", - "item.gtceu.mv_solar_panel":"中壓太陽能板(§bMV§r)", - "item.gtceu.mv_voltage_coil":"中壓線圈(§bMV§r)", - "item.gtceu.mv_voltage_coil.tooltip":"優質線圈", - "item.gtceu.name_casting_mold":"鑄造模具(命名)", - "item.gtceu.name_casting_mold.tooltip":"§7用來在衝壓機床中為物品命名的鑄造模具(用鐵砧重新命名鑄造模具)", - "item.gtceu.nan_certificate":"不再是菜鳥的證明", - "item.gtceu.nan_certificate.tooltip":"已接受挑戰!", - "item.gtceu.nand_chip":"NAND晶片", - "item.gtceu.nand_chip.tooltip.0":"§7卓越的簡單電路", - "item.gtceu.nand_chip.tooltip.1":"§6ULV級電路", - "item.gtceu.nand_memory_chip":"NAND儲存器晶片", - "item.gtceu.nand_memory_chip.tooltip":"§7與非邏輯閘", - "item.gtceu.nand_memory_wafer":"NAND儲存器晶圓", - "item.gtceu.nand_memory_wafer.tooltip":"§7邏輯閘原料", - "item.gtceu.nano_cpu_chip":"奈米CPU晶片", - "item.gtceu.nano_cpu_chip.tooltip":"§7奈米中央處理器", - "item.gtceu.nano_cpu_wafer":"奈米CPU晶圓", - "item.gtceu.nano_cpu_wafer.tooltip":"§7奈米電路原料", - "item.gtceu.nano_processor":"奈米處理器", - "item.gtceu.nano_processor.tooltip.0":"§7比小更小", - "item.gtceu.nano_processor.tooltip.1":"§bHV級電路", - "item.gtceu.nano_processor_assembly":"奈米處理器叢集", - "item.gtceu.nano_processor_assembly.tooltip.0":"§7比小更小", - "item.gtceu.nano_processor_assembly.tooltip.1":"§bEV級電路", - "item.gtceu.nano_processor_computer":"奈米處理器超級電腦", - "item.gtceu.nano_processor_computer.tooltip.0":"§7比小更小", - "item.gtceu.nano_processor_computer.tooltip.1":"§bIV級電路", - "item.gtceu.nano_processor_mainframe":"奈米處理器主機", - "item.gtceu.nano_processor_mainframe.tooltip.0":"§7比小更小", - "item.gtceu.nano_processor_mainframe.tooltip.1":"§bLuV級電路", - "item.gtceu.nano_saber":"奈米劍", - "item.gtceu.nano_saber.tooltip":"§7嚐嚐龍神之劍!", - "item.gtceu.nanomuscle_boots":"奈米肌體™套裝靴子", - "item.gtceu.nanomuscle_chestplate":"奈米肌體™套裝胸甲", - "item.gtceu.nanomuscle_helmet":"奈米肌體™套裝頭盔", - "item.gtceu.nanomuscle_leggings":"奈米肌體™套裝護腿", - "item.gtceu.naquadah_boule":"矽岩摻雜的單晶矽", - "item.gtceu.naquadah_boule.tooltip":"§7電路原料", - "item.gtceu.naquadah_wafer":"矽岩摻雜的晶圓", - "item.gtceu.naquadah_wafer.tooltip":"§7電路原料", - "item.gtceu.neuro_processing_unit":"神經處理單元", - "item.gtceu.neuro_processing_unit.tooltip":"§7神經CPU", - "item.gtceu.neutron_reflector":"銥中子反射板", - "item.gtceu.neutron_reflector.tooltip":"§7堅不可摧", - "item.gtceu.neutronium_boule":"中子素摻雜的單晶矽", - "item.gtceu.neutronium_boule.tooltip":"§7電路原料", - "item.gtceu.neutronium_wafer":"中子素摻雜的晶圓", - "item.gtceu.neutronium_wafer.tooltip":"§7電路原料", - "item.gtceu.nightvision_goggles":"夜視鏡", - "item.gtceu.nor_memory_chip":"NOR儲存器晶片", - "item.gtceu.nor_memory_chip.tooltip":"§7或非邏輯閘", - "item.gtceu.nor_memory_wafer":"NOR儲存器晶圓", - "item.gtceu.nor_memory_wafer.tooltip":"§7邏輯閘原料", - "item.gtceu.normal_pipe_extruder_mold":"擠壓模具(普通管道)", - "item.gtceu.nugget_casting_mold":"鑄造模具(粒)", - "item.gtceu.nugget_casting_mold.tooltip":"§7用來製作粒的鑄造模具", - "item.gtceu.opv_conveyor_module":"§9§lOpV§r傳送帶", - "item.gtceu.opv_electric_motor":"§9§lOpV§r電動馬達", - "item.gtceu.opv_electric_piston":"§9§lOpV§r電力活塞", - "item.gtceu.opv_electric_pump":"§9§lOpV§r電動泵", - "item.gtceu.opv_emitter":"§9OpV§r發射器", - "item.gtceu.opv_field_generator":"§9§lOpV§r力場發生器", - "item.gtceu.opv_fluid_regulator":"§9§lOpV§r流體調節器", - "item.gtceu.opv_robot_arm":"§9§lOpV§r機械臂", - "item.gtceu.opv_sensor":"§9§lOpV§r感測器", - "item.gtceu.opv_voltage_coil.tooltip":"傳奇線圈", - "item.gtceu.orange_dye_spray_can":"噴漆罐(橙色)", - "item.gtceu.orange_glass_lens":"玻璃透鏡(橙色)", - "item.gtceu.palladium_raw_dust":"粗鈀粉", - "item.gtceu.paper_dust":"紙屑", - "item.gtceu.paracetamol_pill":"對乙醯氨基酚藥片", - "item.gtceu.petri_dish":"培養皿", - "item.gtceu.petri_dish.tooltip":"§7用來培育細胞", - "item.gtceu.phenolic_circuit_board":"酚醛樹脂電路基板", - "item.gtceu.phenolic_circuit_board.tooltip":"§7更好的基板", - "item.gtceu.phenolic_printed_circuit_board":"酚醛樹脂印刷電路基板", - "item.gtceu.phenolic_printed_circuit_board.tooltip":"§7優質電路基板", - "item.gtceu.phosphorus_boule":"磷摻雜的單晶矽", - "item.gtceu.phosphorus_boule.tooltip":"§7電路原料", - "item.gtceu.phosphorus_wafer":"磷摻雜的晶圓", - "item.gtceu.phosphorus_wafer.tooltip":"§7電路原料", - "item.gtceu.pickaxe_extruder_mold.tooltip":"§7用來製作鎬的擠壓模具", - "item.gtceu.pill_casting_mold":"鑄造模具(藥片)", - "item.gtceu.pink_dye_spray_can":"噴漆罐(粉紅色)", - "item.gtceu.pink_glass_lens":"玻璃透鏡(粉紅色)", - "item.gtceu.pipe.huge_extruder_mold.tooltip":"§7用來製作佔據整個方塊的管道的擠壓模具", - "item.gtceu.pipe.large_extruder_mold.tooltip":"§7用來製作大型管道的擠壓模具", - "item.gtceu.pipe.normal_extruder_mold.tooltip":"§7用來製作管道的擠壓模具", - "item.gtceu.pipe.small_extruder_mold.tooltip":"§7用來製作小型管道的擠壓模具", - "item.gtceu.pipe.tiny_extruder_mold.tooltip":"§7用來製作微型管道的擠壓模具", - "item.gtceu.pitchblende_dust":"瀝青鈾礦", - "item.gtceu.plant_ball":"植物球", - "item.gtceu.plastic_circuit_board":"塑膠電路基板", - "item.gtceu.plastic_circuit_board.tooltip":"§7更好的基板", - "item.gtceu.plastic_printed_circuit_board":"塑膠印刷電路基板", - "item.gtceu.plastic_printed_circuit_board.tooltip":"§7優質電路基板", - "item.gtceu.plate_casting_mold":"鑄造模具(板)", - "item.gtceu.plate_casting_mold.tooltip":"§7用來製作板的鑄造模具", - "item.gtceu.plate_extruder_mold":"擠壓模具(板)", - "item.gtceu.plate_extruder_mold.tooltip":"§7用來製作板的擠壓模具", - "item.gtceu.platinum_group_sludge_dust":"鉑系礦泥", - "item.gtceu.platinum_lighter":"鉑打火機", - "item.gtceu.platinum_raw_dust":"粗鉑粉", - "item.gtceu.platinum_sludge_residue_dust":"鉑泥渣", - "item.gtceu.portable_debug_scanner":"行動式掃描器", - "item.gtceu.portable_scanner":"行動式掃描器", - "item.gtceu.power_thruster":"電力推進器", - "item.gtceu.programmed_circuit":"程式設計電路", - "item.gtceu.programmed_circuit.tooltip.0":"右擊開啟設定頁面", - "item.gtceu.programmed_circuit.tooltip.1":"潛行右擊有虛擬電路槽的", - "item.gtceu.programmed_circuit.tooltip.2":"機器,將其設定為本電路", - "item.gtceu.programmed_circuit.tooltip.3":"的值。", - "item.gtceu.prospector.hv":"進階探礦儀(§6HV§r)", - "item.gtceu.prospector.luv":"超級探礦儀(§dLuV§r)", - "item.gtceu.prospector.lv":"探礦儀(§7LV§r)", - "item.gtceu.pure_bentonite_dust":"純淨膨潤土", - "item.gtceu.pure_cassiterite_sand_dust":"純淨錫石礦砂", - "item.gtceu.pure_pitchblende_dust":"純淨瀝青鈾礦", - "item.gtceu.pure_rock_salt_dust":"純淨岩鹽", - "item.gtceu.pure_salt_dust":"純淨鹽", - "item.gtceu.pure_talc_dust":"純淨滑石", - "item.gtceu.purified_bentonite_ore":"純淨膨潤土", - "item.gtceu.purified_cassiterite_sand_ore":"純淨錫石礦砂", - "item.gtceu.purified_pitchblende_ore":"純淨瀝青鈾礦", - "item.gtceu.purified_talc_ore":"純淨滑石", - "item.gtceu.purple_drink":"紫色飲料", - "item.gtceu.purple_dye_spray_can":"噴漆罐(紫色)", - "item.gtceu.purple_glass_lens":"玻璃透鏡(紫色)", - "item.gtceu.qbit_cpu_chip":"量子位CPU晶片", - "item.gtceu.qbit_cpu_chip.tooltip":"§7量子位中央處理器", - "item.gtceu.qbit_cpu_wafer":"量子位CPU晶圓", - "item.gtceu.qbit_cpu_wafer.tooltip":"§7量子位電路原料", - "item.gtceu.quantum_eye":"量子之眼", - "item.gtceu.quantum_eye.tooltip":"§7改良的終界之眼", - "item.gtceu.quantum_processor":"量子處理器", - "item.gtceu.quantum_processor.tooltip.0":"§7量子計算終成現實!", - "item.gtceu.quantum_processor.tooltip.1":"§aEV級電路", - "item.gtceu.quantum_processor_assembly":"量子處理器叢集", - "item.gtceu.quantum_processor_assembly.tooltip.0":"§7量子計算終成現實!", - "item.gtceu.quantum_processor_assembly.tooltip.1":"§aIV級電路", - "item.gtceu.quantum_processor_computer":"量子處理器超級電腦", - "item.gtceu.quantum_processor_computer.tooltip.0":"§7量子計算終成現實!", - "item.gtceu.quantum_processor_computer.tooltip.1":"§aLuV級電路", - "item.gtceu.quantum_processor_mainframe":"量子處理器主機", - "item.gtceu.quantum_processor_mainframe.tooltip.0":"§7量子計算終成現實!", - "item.gtceu.quantum_processor_mainframe.tooltip.1":"§aZPM級電路", - "item.gtceu.quantum_star":"量子之星", - "item.gtceu.quantum_star.tooltip":"§7改良的地獄之星", - "item.gtceu.quarktech_boots":"夸克科技™套裝靴子", - "item.gtceu.quarktech_chestplate":"夸克科技™套裝胸甲", - "item.gtceu.quarktech_helmet":"夸克科技™套裝頭盔", - "item.gtceu.quarktech_leggings":"夸克科技™套裝護腿", - "item.gtceu.quartz_sand_dust":"石英砂", - "item.gtceu.rad_away_pill":"消輻寧™藥片", - "item.gtceu.ram_chip":"RAM晶片", - "item.gtceu.ram_chip.tooltip":"§7隨機存取儲存器", - "item.gtceu.ram_wafer":"RAM晶圓", - "item.gtceu.ram_wafer.tooltip":"§7記憶體原料", - "item.gtceu.rare_earth_dust":"稀土", - "item.gtceu.rarest_metal_mixture_dust":"稀有金屬混合物", - "item.gtceu.raw_crystal_chip":"晶體晶片原料", - "item.gtceu.raw_crystal_chip.tooltip":"§7晶體處理器原料", - "item.gtceu.raw_crystal_chip_parts":"晶體晶片部件原料", - "item.gtceu.raw_crystal_chip_parts.tooltip":"§7晶體處理器部件原料", - "item.gtceu.red_dye_spray_can":"噴漆罐(紅色)", - "item.gtceu.red_glass_lens":"玻璃透鏡(紅色)", - "item.gtceu.refined_bentonite_ore":"精煉膨潤土", - "item.gtceu.refined_cassiterite_sand_ore":"精煉錫石礦砂", - "item.gtceu.refined_pitchblende_ore":"精煉瀝青鈾礦", - "item.gtceu.refined_talc_ore":"精煉滑石", - "item.gtceu.resin_circuit_board":"覆膜電路基板", - "item.gtceu.resin_circuit_board.tooltip":"§7電路的基底", - "item.gtceu.resin_printed_circuit_board":"覆膜印刷電路基板", - "item.gtceu.resin_printed_circuit_board.tooltip":"§7基礎電路基板", - "item.gtceu.resistor":"電阻", - "item.gtceu.resistor.tooltip":"§7基礎電子元件", - "item.gtceu.ring_extruder_mold":"擠壓模具(環)", - "item.gtceu.ring_extruder_mold.tooltip":"§7用來製作環的擠壓模具", - "item.gtceu.robot.arm.tooltip":"作§f覆蓋板§7時限制§f物品§7到特定數量。", - "item.gtceu.rock_salt_dust":"岩鹽", - "item.gtceu.rod_extruder_mold":"擠壓模具(桿)", - "item.gtceu.rod_extruder_mold.tooltip":"§7用來製作桿的擠壓模具", - "item.gtceu.rod_long_extruder_mold.tooltip":"§7用來製作長桿的擠壓模具", - "item.gtceu.rotor_casting_mold":"鑄造模具(轉子)", - "item.gtceu.rotor_casting_mold.tooltip":"§7用來製作轉子的鑄造模具", - "item.gtceu.rotor_extruder_mold":"擠壓模具(轉子)", - "item.gtceu.rotor_extruder_mold.tooltip":"§7用來製作轉子的擠壓模具", - "item.gtceu.rubber_boat":"橡膠木船", - "item.gtceu.rubber_chest_boat":"儲物箱橡膠木船", - "item.gtceu.rubber_gloves":"橡膠手套", - "item.gtceu.salt_dust":"鹽", - "item.gtceu.saw_extruder_mold.tooltip":"§7用來製作鋸的擠壓模具", - "item.gtceu.shovel_extruder_mold.tooltip":"§7用來製作鍬的擠壓模具", - "item.gtceu.shutter_module_cover":"扇板", - "item.gtceu.shutter_module_cover.tooltip":"§7作§f覆蓋板§7時§f阻止§7機器側面的任何§f傳輸§7行為。", - "item.gtceu.silicon_boule":"單晶矽", - "item.gtceu.silicon_boule.tooltip":"§7電路原料", - "item.gtceu.silicon_wafer":"矽晶圓", - "item.gtceu.silicon_wafer.tooltip":"§7電路原料", - "item.gtceu.simple_soc":"簡易SoC", - "item.gtceu.simple_soc.tooltip":"§7簡易系統級晶片", - "item.gtceu.simple_soc_wafer":"簡易SoC晶圓", - "item.gtceu.simple_soc_wafer.tooltip":"§7簡易電路原料", - "item.gtceu.small_ash_dust":"小堆灰燼", - "item.gtceu.small_basaltic_mineral_sand_dust":"小堆玄武岩礦砂", - "item.gtceu.small_bentonite_dust":"小堆膨潤土", - "item.gtceu.small_blaze_dust":"小堆烈焰粉", - "item.gtceu.small_bone_dust":"小堆骨粉", - "item.gtceu.small_cassiterite_sand_dust":"小堆錫石礦砂", - "item.gtceu.small_dark_ash_dust":"小堆黑色灰燼", - "item.gtceu.small_fullers_earth_dust":"小堆漂白土", - "item.gtceu.small_garnet_sand_dust":"小堆石榴石砂", - "item.gtceu.small_gear_casting_mold":"鑄造模具(小型齒輪)", - "item.gtceu.small_gear_extruder_mold":"擠壓模具(小型齒輪)", - "item.gtceu.small_glauconite_sand_dust":"小堆海綠石砂", - "item.gtceu.small_granitic_mineral_sand_dust":"小堆花崗岩礦砂", - "item.gtceu.small_gunpowder_dust":"小堆火藥", - "item.gtceu.small_ice_dust":"小堆碎冰", - "item.gtceu.small_inert_metal_mixture_dust":"小堆惰性金屬混合物", - "item.gtceu.small_iridium_metal_residue_dust":"小堆銥金屬渣", - "item.gtceu.small_meat_dust":"小堆肉末", - "item.gtceu.small_palladium_raw_dust":"小堆粗鈀粉", - "item.gtceu.small_paper_dust":"小堆紙屑", - "item.gtceu.small_pipe_extruder_mold":"擠壓模具(小型管道)", - "item.gtceu.small_pitchblende_dust":"小堆瀝青鈾礦", - "item.gtceu.small_platinum_group_sludge_dust":"小堆鉑系礦泥", - "item.gtceu.small_platinum_raw_dust":"小堆粗鉑粉", - "item.gtceu.small_platinum_sludge_residue_dust":"小堆鉑泥渣", - "item.gtceu.small_quartz_sand_dust":"小堆石英砂", - "item.gtceu.small_rare_earth_dust":"小堆稀土", - "item.gtceu.small_rarest_metal_mixture_dust":"小堆稀有金屬混合物", - "item.gtceu.small_rock_salt_dust":"小堆岩鹽", - "item.gtceu.small_salt_dust":"小堆鹽", - "item.gtceu.small_sugar_dust":"小堆糖", - "item.gtceu.small_talc_dust":"小堆滑石", - "item.gtceu.small_treated_wood_dust":"小堆防腐木漿", - "item.gtceu.small_wheat_dust":"小堆麵粉", - "item.gtceu.small_wood_dust":"小堆木漿", - "item.gtceu.smd_capacitor":"貼片電容", - "item.gtceu.smd_capacitor.tooltip":"§7電子元件", - "item.gtceu.smd_diode":"貼片二極體", - "item.gtceu.smd_diode.tooltip":"§7電子元件", - "item.gtceu.smd_inductor":"貼片電感", - "item.gtceu.smd_inductor.tooltip":"§7電子元件", - "item.gtceu.smd_resistor":"貼片電阻", - "item.gtceu.smd_resistor.tooltip":"§7電子元件", - "item.gtceu.smd_transistor":"貼片電晶體", - "item.gtceu.smd_transistor.tooltip":"§7電子元件", - "item.gtceu.soc":"SoC", - "item.gtceu.soc.tooltip":"§7系統級晶片", - "item.gtceu.soc_wafer":"SoC晶圓", - "item.gtceu.soc_wafer.tooltip":"§7基礎電路原料", - "item.gtceu.solar_panel":"太陽能板", - "item.gtceu.solar_panel.tooltip.0":"§7願太陽與你同在。", - "item.gtceu.solar_panel.tooltip.1":"§7作§f覆蓋板§7時利用§e太陽§7生產§f能量§7。", - "item.gtceu.solvent_spray_can":"噴漆罐(溶劑)", - "item.gtceu.stainless_steel_fluid_cell":"不鏽鋼單元", - "item.gtceu.steel_fluid_cell":"鋼單元", - "item.gtceu.steel_minecart_wheels":"鋼礦車車輪", - "item.gtceu.stem_cells":"幹細胞", - "item.gtceu.stem_cells.tooltip":"§7智慧原料", - "item.gtceu.sticky_resin":"黏性樹脂", - "item.gtceu.storage_cover":"儲存覆蓋板", - "item.gtceu.sugar_gem":"方糖", - "item.gtceu.sus_record":"音樂唱片", - "item.gtceu.sus_record.desc":"可疑!", - "item.gtceu.sword_extruder_mold.tooltip":"§7用來製作劍刃的擠壓模具", - "item.gtceu.tag_filter.tooltip.0":"§7作§f覆蓋板§7時以§f礦物詞典§7過濾§f物品§7的輸入/輸出。", - "item.gtceu.tag_filter.tooltip.1":"§7亦可用於§f傳送帶§7與§f機械臂§7。", - "item.gtceu.talc_dust":"滑石", - "item.gtceu.tantalum_capacitor":"鉭電容", - "item.gtceu.terminal":"終端", - "item.gtceu.terminal.tooltip":"潛行右擊多方塊控制器以自動搭建此多方塊結構", - "item.gtceu.tiny_ash_dust":"小撮灰燼", - "item.gtceu.tiny_basaltic_mineral_sand_dust":"小撮玄武岩礦砂", - "item.gtceu.tiny_bentonite_dust":"小撮膨潤土", - "item.gtceu.tiny_blaze_dust":"小撮烈焰粉", - "item.gtceu.tiny_bone_dust":"小撮骨粉", - "item.gtceu.tiny_cassiterite_sand_dust":"小撮錫石礦砂", - "item.gtceu.tiny_dark_ash_dust":"小撮黑色灰燼", - "item.gtceu.tiny_fullers_earth_dust":"小撮漂白土", - "item.gtceu.tiny_garnet_sand_dust":"小撮石榴石砂", - "item.gtceu.tiny_glauconite_sand_dust":"小撮海綠石砂", - "item.gtceu.tiny_granitic_mineral_sand_dust":"小撮花崗岩礦砂", - "item.gtceu.tiny_gunpowder_dust":"小撮火藥", - "item.gtceu.tiny_ice_dust":"小撮碎冰", - "item.gtceu.tiny_inert_metal_mixture_dust":"小撮惰性金屬混合物", - "item.gtceu.tiny_iridium_metal_residue_dust":"小撮銥金屬渣", - "item.gtceu.tiny_meat_dust":"小撮肉末", - "item.gtceu.tiny_palladium_raw_dust":"小撮粗鈀粉", - "item.gtceu.tiny_paper_dust":"小撮紙屑", - "item.gtceu.tiny_pipe_extruder_mold":"擠壓模具(微型管道)", - "item.gtceu.tiny_pitchblende_dust":"小撮瀝青鈾礦", - "item.gtceu.tiny_platinum_group_sludge_dust":"小撮鉑系礦泥", - "item.gtceu.tiny_platinum_raw_dust":"小撮粗鉑粉", - "item.gtceu.tiny_platinum_sludge_residue_dust":"小撮鉑泥渣", - "item.gtceu.tiny_quartz_sand_dust":"小撮石英砂", - "item.gtceu.tiny_rare_earth_dust":"小撮稀土", - "item.gtceu.tiny_rarest_metal_mixture_dust":"小撮稀有金屬混合物", - "item.gtceu.tiny_rock_salt_dust":"小撮岩鹽", - "item.gtceu.tiny_salt_dust":"小撮鹽", - "item.gtceu.tiny_sugar_dust":"小撮糖", - "item.gtceu.tiny_talc_dust":"小撮滑石", - "item.gtceu.tiny_treated_wood_dust":"小撮防腐木漿", - "item.gtceu.tiny_wheat_dust":"小撮麵粉", - "item.gtceu.tiny_wood_dust":"小撮木漿", - "item.gtceu.titanium_fluid_cell":"鈦單元", - "item.gtceu.tool.aoe.columns":"行", - "item.gtceu.tool.aoe.layers":"層", - "item.gtceu.tool.aoe.rows":"列", - "item.gtceu.tool.axe":"%s斧", - "item.gtceu.tool.behavior.aoe_mining":"§5作用範圍:§f%sx%sx%s", - "item.gtceu.tool.behavior.block_rotation":"§2精械師傅:§f旋轉方塊", - "item.gtceu.tool.behavior.crop_harvesting":"§a莊稼收割:§f收穫成熟的作物", - "item.gtceu.tool.behavior.damage_boost":"§4傷害增益:§f對%s造成額外傷害", - "item.gtceu.tool.behavior.grass_path":"§e園林策劃:§f製造草徑", - "item.gtceu.tool.behavior.ground_tilling":"§e耕地農夫:§f耕耘土地", - "item.gtceu.tool.behavior.plunger":"§9水管工人:§f清除流體", - "item.gtceu.tool.behavior.rail_rotation":"§e鐵路技工:§f旋轉軌道", - "item.gtceu.tool.behavior.relocate_mining":"§2磁力吸引:§f採掘的方塊進入物品欄", - "item.gtceu.tool.behavior.remove_wax":"§6清潔試劑:§f脫蠟", - "item.gtceu.tool.behavior.scrape":"§b拋光工藝:§f除鏽", - "item.gtceu.tool.behavior.shield_disable":"§c野獸蠻攻:§f無視盾牌", - "item.gtceu.tool.behavior.silk_ice":"§b切冰利刃:§f絲綢之觸採集冰塊", - "item.gtceu.tool.behavior.strip_log":"§5林業工匠:§f剝去原木的表皮", - "item.gtceu.tool.behavior.torch_place":"§e洞窟探客:§f右擊放置火把", - "item.gtceu.tool.behavior.tree_felling":"§4伐木好手:§f連鎖砍樹", - "item.gtceu.tool.butchery_knife":"%s屠刀", - "item.gtceu.tool.butchery_knife.tooltip":"§8攻擊速度較慢", - "item.gtceu.tool.buzzsaw":"%s圓鋸(§7LV§r)", - "item.gtceu.tool.buzzsaw.tooltip":"§8並不適合用來採掘方塊", - "item.gtceu.tool.crowbar":"%s撬棍", - "item.gtceu.tool.crowbar.tooltip":"§8卸下覆蓋板", - "item.gtceu.tool.ev_drill":"%s電鑽(§5EV§r)", - "item.gtceu.tool.file":"%s銼", - "item.gtceu.tool.hammer":"%s鍛造錘", - "item.gtceu.tool.hammer.tooltip":"§8錘碎而非採掘方塊", - "item.gtceu.tool.harvest_level.0":"§8木", - "item.gtceu.tool.harvest_level.1":"§7石頭", - "item.gtceu.tool.harvest_level.2":"§a鐵", - "item.gtceu.tool.harvest_level.3":"§b鑽石", - "item.gtceu.tool.harvest_level.4":"§d獄髓", - "item.gtceu.tool.harvest_level.5":"§9鏗鈾", - "item.gtceu.tool.harvest_level.6":"§c中子素", - "item.gtceu.tool.hoe":"%s鋤", - "item.gtceu.tool.hv_chainsaw":"%s鏈鋸(§6HV§r)", - "item.gtceu.tool.hv_drill":"%s電鑽(§6HV§r)", - "item.gtceu.tool.hv_wirecutter":"%s剪線鉗(§6HV§r)", - "item.gtceu.tool.hv_wrench":"%s扳手(§6HV§r)", - "item.gtceu.tool.hv_wrench.tooltip":"§8按住左鍵以拆卸機器", - "item.gtceu.tool.iv_drill":"%s電鑽(§9IV§r)", - "item.gtceu.tool.iv_wirecutter":"%s剪線鉗(§9IV§r)", - "item.gtceu.tool.iv_wrench":"%s扳手(§9IV§r)", - "item.gtceu.tool.iv_wrench.tooltip":"§8按住左鍵以拆卸機器", - "item.gtceu.tool.knife":"%s刀", - "item.gtceu.tool.lighter.platinum.tooltip":"§7上面刻著一位知名的惡作劇大師", - "item.gtceu.tool.lv_chainsaw":"%s鏈鋸(§7LV§r)", - "item.gtceu.tool.lv_drill":"%s電鑽(§7LV§r)", - "item.gtceu.tool.lv_screwdriver":"%s螺絲起子(§7LV§r)", - "item.gtceu.tool.lv_screwdriver.tooltip":"§8調整覆蓋板和機器", - "item.gtceu.tool.lv_wirecutter":"%s剪線鉗(§7LV§r)", - "item.gtceu.tool.lv_wrench":"%s扳手(§7LV§r)", - "item.gtceu.tool.lv_wrench.tooltip":"§8按住左鍵以拆卸機器", - "item.gtceu.tool.mallet":"%s軟錘", - "item.gtceu.tool.mallet.tooltip.0":"§8潛行以在當前配方完成後暫停機器。", - "item.gtceu.tool.mallet.tooltip.1":"§8關/開機", - "item.gtceu.tool.matchbox.tooltip":"§7別把它當成玩具車了", - "item.gtceu.tool.mining_hammer":"%s採礦錘", - "item.gtceu.tool.mining_hammer.tooltip":"§8一次性開採大片區域(除非你蹲下)", - "item.gtceu.tool.mortar":"%s研缽", - "item.gtceu.tool.mv_chainsaw":"%s鏈鋸(§bMV§r)", - "item.gtceu.tool.mv_drill":"%s電鑽(§bMV§r)", - "item.gtceu.tool.pickaxe":"%s鎬", - "item.gtceu.tool.plunger":"%s搋子", - "item.gtceu.tool.plunger.tooltip":"§8從機器中抽除流體", - "item.gtceu.tool.replace_tool_head":"在合成欄用新的工具頭替換", - "item.gtceu.tool.rolling_pin":"%s擀麵棍", - "item.gtceu.tool.saw":"%s鋸", - "item.gtceu.tool.screwdriver":"%s螺絲起子", - "item.gtceu.tool.screwdriver.tooltip":"§8調整覆蓋板和機器", - "item.gtceu.tool.scythe":"%s鐮刀", - "item.gtceu.tool.scythe.tooltip":"§8因為鐮刀(scythe)沒有意義(sense)", - "item.gtceu.tool.shears":"%s剪刀", - "item.gtceu.tool.shovel":"%s鍬", - "item.gtceu.tool.spade":"%s鏟", - "item.gtceu.tool.spade.tooltip":"§8一次性開採大片區域(除非你蹲下)", - "item.gtceu.tool.sword":"%s劍", - "item.gtceu.tool.tooltip.attack_damage":"§c攻擊傷害§r:%s", - "item.gtceu.tool.tooltip.attack_speed":"§9攻擊速度§r:%s", - "item.gtceu.tool.tooltip.crafting_uses":"§a合成耐久度§r:%s", - "item.gtceu.tool.tooltip.general_uses":"§b耐久度§r:%s", - "item.gtceu.tool.tooltip.harvest_level":"§e採掘等級:%s", - "item.gtceu.tool.tooltip.harvest_level_extra":"§e採掘等級:%s§f(%s§f)", - "item.gtceu.tool.tooltip.max_uses":"§e最大耐久度§r:%s", - "item.gtceu.tool.tooltip.mining_speed":"§d採掘速度§r:%s", - "item.gtceu.tool.tooltip.repair_info":"§8按住SHIFT顯示修復詳情", - "item.gtceu.tool.tooltip.repair_material":"§8修復材料§r:§f§a%s", - "item.gtceu.tool.usable_as":"§8可用作§r:§f%s", - "item.gtceu.tool.wire_cutter":"%s剪線鉗", - "item.gtceu.tool.wrench":"%s扳手", - "item.gtceu.tool.wrench.tooltip":"§8按住左鍵以拆卸機器", - "item.gtceu.transistor":"電晶體", - "item.gtceu.transistor.tooltip":"§7基礎電子元件", - "item.gtceu.treated_wood_boat":"防腐木船", - "item.gtceu.treated_wood_bolt":"短防腐木棍", - "item.gtceu.treated_wood_chest_boat":"儲物箱防腐木船", - "item.gtceu.treated_wood_dust":"防腐木漿", - "item.gtceu.treated_wood_plate":"防腐木材", - "item.gtceu.treated_wood_rod":"防腐木棍", - "item.gtceu.tungsten_grinding_head":"鎢研磨頭", - "item.gtceu.tungsten_steel_fluid_cell":"鎢鋼單元", - "item.gtceu.turbine_rotor":"渦輪轉子", - "item.gtceu.turbine_rotor.tooltip":"供渦輪機使用的渦輪轉子", - "item.gtceu.uev_conveyor_module":"§aUEV§r傳送帶", - "item.gtceu.uev_electric_motor":"§aUEV§r電動馬達", - "item.gtceu.uev_electric_piston":"§aUEV§r電力活塞", - "item.gtceu.uev_electric_pump":"§aUEV§r電動泵", - "item.gtceu.uev_emitter":"§aUEV§r發射器", - "item.gtceu.uev_field_generator":"§aUEV§r力場發生器", - "item.gtceu.uev_fluid_regulator":"§aUEV§r流體調節器", - "item.gtceu.uev_robot_arm":"§aUEV§r機械臂", - "item.gtceu.uev_sensor":"§aUEV§r感測器", - "item.gtceu.uev_voltage_coil.tooltip":"超凡線圈", - "item.gtceu.uhpic_chip":"UHPIC晶片", - "item.gtceu.uhpic_chip.tooltip":"§7超高功率積體電路", - "item.gtceu.uhpic_wafer":"UHPIC晶圓", - "item.gtceu.uhpic_wafer.tooltip":"§7超高功率積體電路原料", - "item.gtceu.uhv_conveyor_module":"§4UHV§r傳送帶", - "item.gtceu.uhv_electric_motor":"§4UHV§r電動馬達", - "item.gtceu.uhv_electric_piston":"§4UHV§r電力活塞", - "item.gtceu.uhv_electric_pump":"§4UHV§r電動泵", - "item.gtceu.uhv_emitter":"§4UHV§r發射器", - "item.gtceu.uhv_field_generator":"§4UHV§r力場發生器", - "item.gtceu.uhv_fluid_regulator":"§4UHV§r流體調節器", - "item.gtceu.uhv_robot_arm":"§4UHV§r機械臂", - "item.gtceu.uhv_sensor":"§4UHV§r感測器", - "item.gtceu.uhv_voltage_coil.tooltip":"極致線圈", - "item.gtceu.uiv_conveyor_module":"§2UIV§r傳送帶", - "item.gtceu.uiv_electric_motor":"§2UIV§r電動馬達", - "item.gtceu.uiv_electric_piston":"§2UIV§r電力活塞", - "item.gtceu.uiv_electric_pump":"§2UIV§r電動泵", - "item.gtceu.uiv_emitter":"§2UIV§r發射器", - "item.gtceu.uiv_field_generator":"§2UIV§r力場發生器", - "item.gtceu.uiv_fluid_regulator":"§2UIV§r流體調節器", - "item.gtceu.uiv_robot_arm":"§2UIV§r機械臂", - "item.gtceu.uiv_sensor":"§2UIV§r感測器", - "item.gtceu.uiv_voltage_coil.tooltip":"瘋狂線圈", - "item.gtceu.ulpic_chip":"ULPIC晶片", - "item.gtceu.ulpic_chip.tooltip":"§7超低功率積體電路", - "item.gtceu.ulpic_wafer":"ULPIC晶圓", - "item.gtceu.ulpic_wafer.tooltip":"§7超低功率積體電路原料", - "item.gtceu.ulv_solar_panel":"超低壓太陽能板(§8ULV§r)", - "item.gtceu.ulv_tantalum_battery.tooltip":"§7可充電電池", - "item.gtceu.ulv_voltage_coil":"超低壓線圈(§8ULV§r)", - "item.gtceu.ulv_voltage_coil.tooltip":"初級線圈", - "item.gtceu.universal_fluid_cell":"通用單元", - "item.gtceu.uv_battery_hull":"大型超能矽岩電池外殼", - "item.gtceu.uv_battery_hull.tooltip":"§7一個空的§3UV§7電池外殼", - "item.gtceu.uv_conveyor_module":"§3UV§r傳送帶", - "item.gtceu.uv_electric_motor":"§3UV§r電動馬達", - "item.gtceu.uv_electric_piston":"§3UV§r電力活塞", - "item.gtceu.uv_electric_pump":"§3UV§r電動泵", - "item.gtceu.uv_emitter":"§3UV§r發射器", - "item.gtceu.uv_field_generator":"§3UV§r力場發生器", - "item.gtceu.uv_fluid_regulator":"§3UV§r流體調節器", - "item.gtceu.uv_naquadria_battery":"大型超能矽岩電池", - "item.gtceu.uv_naquadria_battery.tooltip":"§7可充電電池", - "item.gtceu.uv_robot_arm":"§3UV§r機械臂", - "item.gtceu.uv_sensor":"§3UV§r感測器", - "item.gtceu.uv_solar_panel":"極限壓太陽能板(§3UV§r)", - "item.gtceu.uv_voltage_coil":"極限壓線圈(§3UV§r)", - "item.gtceu.uv_voltage_coil.tooltip":"終極線圈", - "item.gtceu.uxv_conveyor_module":"§eUXV§r傳送帶", - "item.gtceu.uxv_electric_motor":"§eUXV§r電動馬達", - "item.gtceu.uxv_electric_piston":"§eUXV§r電力活塞", - "item.gtceu.uxv_electric_pump":"§eUXV§r§r電動泵", - "item.gtceu.uxv_emitter":"§eUXV§r發射器", - "item.gtceu.uxv_field_generator":"§eUXV§r力場發生器", - "item.gtceu.uxv_fluid_regulator":"§eUXV§r流體調節器", - "item.gtceu.uxv_robot_arm":"§eUXV§r機械臂", - "item.gtceu.uxv_sensor":"§eUXV§r感測器", - "item.gtceu.uxv_voltage_coil.tooltip":"史詩線圈", - "item.gtceu.vacuum_tube":"真空管", - "item.gtceu.vacuum_tube.tooltip.0":"§7技術上是二極體", - "item.gtceu.vacuum_tube.tooltip.1":"§cULV等級", - "item.gtceu.wetware_circuit_board":"溼件電路基板", - "item.gtceu.wetware_circuit_board.tooltip":"§7維生之板", - "item.gtceu.wetware_printed_circuit_board":"溼件印刷電路基板", - "item.gtceu.wetware_printed_circuit_board.tooltip":"§7維生之板", - "item.gtceu.wetware_processor":"溼件處理器", - "item.gtceu.wetware_processor.tooltip.0":"§7祂在看我嗎?", - "item.gtceu.wetware_processor.tooltip.1":"§4LuV級電路", - "item.gtceu.wetware_processor_assembly":"溼件處理器叢集", - "item.gtceu.wetware_processor_assembly.tooltip.0":"§7可以玩Minecraft", - "item.gtceu.wetware_processor_assembly.tooltip.1":"§4ZPM級電路", - "item.gtceu.wetware_processor_computer":"溼件處理器超級電腦", - "item.gtceu.wetware_processor_computer.tooltip.0":"§7肉體與機器的終極結合", - "item.gtceu.wetware_processor_computer.tooltip.1":"§4UV級電路", - "item.gtceu.wetware_processor_mainframe":"溼件處理器主機", - "item.gtceu.wetware_processor_mainframe.tooltip.0":"§7千載獨步,惟公一人", - "item.gtceu.wetware_processor_mainframe.tooltip.1":"§4UHV級電路", - "item.gtceu.wheat_dust":"麵粉", - "item.gtceu.white_dye_spray_can":"噴漆罐(白色)", - "item.gtceu.wire_extruder_mold":"擠壓模具(導線)", - "item.gtceu.wire_extruder_mold.tooltip":"§7用來製作導線的擠壓模具", - "item.gtceu.wood_bolt":"短木棍", - "item.gtceu.wood_dust":"木漿", - "item.gtceu.wood_plate":"木板", - "item.gtceu.yellow_dye_spray_can":"噴漆罐(黃色)", - "item.gtceu.yellow_glass_lens":"玻璃透鏡(黃色)", - "item.gtceu.zero_point_module":"零點模組", - "item.gtceu.zpm_battery_hull":"中型超能矽岩電池外殼", - "item.gtceu.zpm_battery_hull.tooltip":"§7一個空的§fZPM§7電池外殼", - "item.gtceu.zpm_conveyor_module":"§cZPM§r傳送帶", - "item.gtceu.zpm_electric_motor":"§cZPM§r電動馬達", - "item.gtceu.zpm_electric_piston":"§cZPM§r電力活塞", - "item.gtceu.zpm_electric_pump":"§cZPM§r電動泵", - "item.gtceu.zpm_emitter":"§cZPM§r發射器", - "item.gtceu.zpm_field_generator":"§cZPM§r力場發生器", - "item.gtceu.zpm_fluid_regulator":"§cZPM§r流體調節器", - "item.gtceu.zpm_naquadria_battery":"中型超能矽岩電池", - "item.gtceu.zpm_naquadria_battery.tooltip":"§7可充電電池", - "item.gtceu.zpm_robot_arm":"§cZPM§r機械臂", - "item.gtceu.zpm_sensor":"§cZPM§r感測器", - "item.gtceu.zpm_solar_panel":"零點壓太陽能板(§cZPM§r)", - "item.gtceu.zpm_voltage_coil":"零點壓線圈(§cZPM§r)", - "item.gtceu.zpm_voltage_coil.tooltip":"超級線圈", - "item.invalid.name":"無效物品", - "item.netherrack_nether_quartz":"地獄石英礦", - "item.toggle.advanced.info.tooltip":"§8<按住Shift查閱已儲存設定資訊>", - "itemGroup.gtceu.decoration":"格雷科技 | 裝飾方塊", - "itemGroup.gtceu.item":"格雷科技 | 物品", - "itemGroup.gtceu.machine":"格雷科技 | 機器", - "itemGroup.gtceu.material_block":"格雷科技 | 材料-方塊", - "itemGroup.gtceu.material_fluid":"格雷科技 | 材料-流體容器", - "itemGroup.gtceu.material_item":"格雷科技 | 材料-物品", - "itemGroup.gtceu.material_pipe":"格雷科技 | 材料-管道", - "itemGroup.gtceu.tool":"格雷科技 | 工具", - "ldlib.gui.editor.register.editor.gtceu.mui":"機器UI專案", - "ldlib.gui.editor.register.editor.gtceu.rtui":"配方型別UI專案", - "ldlib.gui.editor.register.editor.gtceu.template_tab":"模板", - "mataarmor.hud.supply_mode":"供能模式:%s", - "material.gtceu.acetic_acid":"乙酸", - "material.gtceu.acetic_anhydride":"乙酸酐", - "material.gtceu.acetone":"丙酮", - "material.gtceu.acidic_bromine_exhaust":"酸性溴廢氣", - "material.gtceu.acidic_bromine_solution":"酸性溴溶液", - "material.gtceu.acidic_enriched_naquadah_solution":"酸性富集矽岩溶液", - "material.gtceu.acidic_naquadria_solution":"酸性超能矽岩溶液", - "material.gtceu.acidic_osmium_solution":"酸性鋨溶液", - "material.gtceu.actinium":"錒", - "material.gtceu.activated_carbon":"活性炭", - "material.gtceu.agar":"瓊脂", - "material.gtceu.air":"空氣", - "material.gtceu.allyl_chloride":"烯丙基氯", - "material.gtceu.almandine":"鐵鋁榴石", - "material.gtceu.aluminium":"鋁", - "material.gtceu.aluminium_sulfite":"亞硫酸鋁", - "material.gtceu.alunite":"明礬石", - "material.gtceu.americium":"鋂", - "material.gtceu.amethyst":"紫水晶", - "material.gtceu.aminophenol":"氨基苯酚", - "material.gtceu.ammonia":"氨", - "material.gtceu.ammonium_chloride":"氯化銨", - "material.gtceu.ammonium_formate":"甲酸銨", - "material.gtceu.andesite":"安山岩", - "material.gtceu.andradite":"鈣鐵榴石", - "material.gtceu.annealed_copper":"退火銅", - "material.gtceu.antimony":"銻", - "material.gtceu.antimony_trifluoride":"三氟化銻", - "material.gtceu.antimony_trioxide":"三氧化二銻", - "material.gtceu.apatite":"磷灰石", - "material.gtceu.aqua_regia":"王水", - "material.gtceu.argon":"氬", - "material.gtceu.arsenic":"砷", - "material.gtceu.arsenic_trioxide":"三氧化二砷", - "material.gtceu.asbestos":"石棉", - "material.gtceu.ash":"灰燼", - "material.gtceu.astatine":"砈", - "material.gtceu.bacteria":"細菌", - "material.gtceu.bacterial_sludge":"細菌漿液", - "material.gtceu.barite":"重晶石", - "material.gtceu.barium":"鋇", - "material.gtceu.barium_sulfide":"硫化鋇", - "material.gtceu.basalt":"玄武岩", - "material.gtceu.basaltic_mineral_sand":"玄武岩礦砂", - "material.gtceu.bastnasite":"氟碳鑭鈰", - "material.gtceu.battery_alloy":"電池合金", - "material.gtceu.bauxite":"鋁土", - "material.gtceu.bentonite":"膨潤土", - "material.gtceu.benzene":"苯", - "material.gtceu.berkelium":"鉳", - "material.gtceu.beryllium":"鈹", - "material.gtceu.bio_diesel":"生物柴油", - "material.gtceu.biomass":"生物質", - "material.gtceu.biotite":"黑雲母", - "material.gtceu.biphenyl":"聯苯", - "material.gtceu.bismuth":"鉍", - "material.gtceu.bismuth_bronze":"鉍青銅", - "material.gtceu.bisphenol_a":"雙酚A", - "material.gtceu.black_bronze":"黑青銅", - "material.gtceu.black_dye":"黑色染料", - "material.gtceu.black_steel":"黑鋼", - "material.gtceu.blackstone":"黑石", - "material.gtceu.blaze":"烈焰", - "material.gtceu.blue_alloy":"藍色合金", - "material.gtceu.blue_dye":"藍色染料", - "material.gtceu.blue_steel":"藍鋼", - "material.gtceu.blue_topaz":"藍黃玉", - "material.gtceu.bohrium":"釒波", - "material.gtceu.bone":"骨頭", - "material.gtceu.borax":"硼砂", - "material.gtceu.bornite":"斑銅", - "material.gtceu.boron":"硼", - "material.gtceu.borosilicate_glass":"硼矽玻璃", - "material.gtceu.brass":"黃銅", - "material.gtceu.brick":"磚", - "material.gtceu.brominated_chlorine_vapor":"溴化氯蒸氣", - "material.gtceu.bromine":"溴", - "material.gtceu.bronze":"青銅", - "material.gtceu.brown_dye":"棕色染料", - "material.gtceu.butadiene":"丁二烯", - "material.gtceu.butane":"丁烷", - "material.gtceu.butene":"丁烯", - "material.gtceu.butyraldehyde":"丁醛", - "material.gtceu.cadmium":"鎘", - "material.gtceu.caesium":"銫", - "material.gtceu.calcite":"方解石", - "material.gtceu.calcium":"鈣", - "material.gtceu.calcium_carbonate":"碳酸鈣", - "material.gtceu.calcium_chloride":"氯化鈣", - "material.gtceu.calcium_ferrocyanide":"亞鐵氰化鈣", - "material.gtceu.calcium_hydroxide":"氫氧化鈣", - "material.gtceu.calcium_phosphide":"磷化鈣", - "material.gtceu.californium":"鉲", - "material.gtceu.caprolactam":"己內醯胺", - "material.gtceu.carbon":"碳", - "material.gtceu.carbon_dioxide":"二氧化碳", - "material.gtceu.carbon_monoxide":"一氧化碳", - "material.gtceu.cassiterite":"錫石", - "material.gtceu.cassiterite_sand":"錫石礦砂", - "material.gtceu.cerium":"鈰", - "material.gtceu.certus_quartz":"賽特斯石英", - "material.gtceu.cetane_boosted_diesel":"高十六烷值柴油", - "material.gtceu.chalcocite":"輝銅", - "material.gtceu.chalcopyrite":"黃銅", - "material.gtceu.charcoal":"木炭", - "material.gtceu.charcoal_byproducts":"木炭副產物", - "material.gtceu.chlorine":"氯", - "material.gtceu.chlorobenzene":"氯苯", - "material.gtceu.chloroform":"氯仿", - "material.gtceu.chloromethane":"氯甲烷", - "material.gtceu.chromite":"鉻鐵", - "material.gtceu.chromium":"鉻", - "material.gtceu.chromium_trioxide":"三氧化鉻", - "material.gtceu.cinnabar":"硃砂", - "material.gtceu.clay":"黏土", - "material.gtceu.coal":"煤炭", - "material.gtceu.coal_gas":"煤氣", - "material.gtceu.coal_tar":"煤焦油", - "material.gtceu.cobalt":"鈷", - "material.gtceu.cobalt_brass":"鈷黃銅", - "material.gtceu.cobalt_oxide":"氧化鈷", - "material.gtceu.cobaltite":"輝鈷", - "material.gtceu.cocoa":"可可", - "material.gtceu.coke":"焦煤", - "material.gtceu.collagen":"膠原", - "material.gtceu.concentrated_bromine_solution":"濃溴溶液", - "material.gtceu.concrete":"混凝土", - "material.gtceu.construction_foam":"建築泡沫", - "material.gtceu.cooperite":"謝爾頓", - "material.gtceu.copernicium":"鎶", - "material.gtceu.copper":"銅", - "material.gtceu.creosote":"雜酚油", - "material.gtceu.cumene":"異丙苯", - "material.gtceu.cupric_oxide":"氧化銅", - "material.gtceu.cupronickel":"白銅", - "material.gtceu.curium":"鋦", - "material.gtceu.cyan_dye":"青色染料", - "material.gtceu.cyclohexane":"環己烷", - "material.gtceu.cyclohexanone_oxime":"環己酮肟", - "material.gtceu.damascus_steel":"大馬士革鋼", - "material.gtceu.dark_ash":"黑色灰燼", - "material.gtceu.darmstadtium":"鐽", - "material.gtceu.debrominated_brine":"脫溴滷水", - "material.gtceu.deepslate":"深板岩", - "material.gtceu.depleted_uranium_hexafluoride":"枯竭六氟化鈾", - "material.gtceu.deuterium":"氘", - "material.gtceu.diaminobenzidine":"二氨基聯苯胺", - "material.gtceu.diamond":"鑽石", - "material.gtceu.diatomite":"矽藻土", - "material.gtceu.dichlorobenzene":"二氯苯", - "material.gtceu.dichlorobenzidine":"二氯聯苯胺", - "material.gtceu.dichloroethane":"二氯乙烷", - "material.gtceu.diesel":"柴油", - "material.gtceu.diethylenetriamine":"二乙烯三胺", - "material.gtceu.diethylenetriamine_pentaacetonitrile":"二乙烯三胺五乙腈", - "material.gtceu.diethylenetriaminepentaacetic_acid":"二乙烯三胺五乙酸", - "material.gtceu.diluted_hydrochloric_acid":"稀鹽酸", - "material.gtceu.diluted_sulfuric_acid":"稀硫酸", - "material.gtceu.dimethylamine":"二甲胺", - "material.gtceu.dimethylbenzene":"二甲苯", - "material.gtceu.dimethyldichlorosilane":"二甲基二氯矽烷", - "material.gtceu.dimethylhydrazine":"二甲基肼", - "material.gtceu.dinitrogen_tetroxide":"四氧化二氮", - "material.gtceu.diorite":"閃長岩", - "material.gtceu.diphenyl_isophthalate":"間苯二甲酸二苯酯", - "material.gtceu.dissolved_calcium_acetate":"乙酸鈣溶液", - "material.gtceu.distilled_water":"蒸餾水", - "material.gtceu.drilling_fluid":"鑽井液", - "material.gtceu.dubnium":"釒杜", - "material.gtceu.duranium":"鏗鈾", - "material.gtceu.dysprosium":"鏑", - "material.gtceu.echo_shard":"回聲碎片", - "material.gtceu.einsteinium":"鑀", - "material.gtceu.electrotine":"藍石", - "material.gtceu.electrum":"琥珀金", - "material.gtceu.emerald":"綠寶石", - "material.gtceu.ender_air":"終界空氣", - "material.gtceu.ender_eye":"終界之眼", - "material.gtceu.ender_pearl":"終界珍珠", - "material.gtceu.endstone":"終界石", - "material.gtceu.enriched_bacterial_sludge":"富集細菌漿液", - "material.gtceu.enriched_naquadah":"富集矽岩", - "material.gtceu.enriched_naquadah_solution":"富集矽岩溶液", - "material.gtceu.enriched_naquadah_sulfate":"硫酸富集矽岩", - "material.gtceu.enriched_naquadah_trinium_europium_duranide":"富集矽岩凱金銪鏗鈾合金", - "material.gtceu.enriched_naquadah_waste":"富集矽岩廢液", - "material.gtceu.enriched_uranium_hexafluoride":"富集六氟化鈾", - "material.gtceu.epichlorohydrin":"環氧氯丙烷", - "material.gtceu.epoxy":"環氧樹脂", - "material.gtceu.erbium":"鉺", - "material.gtceu.ethane":"乙烷", - "material.gtceu.ethanol":"乙醇", - "material.gtceu.ethenone":"乙烯酮", - "material.gtceu.ethyl_tertbutyl_ether":"乙基叔丁基醚", - "material.gtceu.ethylbenzene":"乙苯", - "material.gtceu.ethylene":"乙烯", - "material.gtceu.europium":"銪", - "material.gtceu.fermented_biomass":"發酵生物質", - "material.gtceu.fermium":"鐨", - "material.gtceu.ferrite_mixture":"鐵氧體混合物", - "material.gtceu.ferrosilite":"鐵輝石", - "material.gtceu.fireclay":"耐火黏土", - "material.gtceu.fish_oil":"魚油", - "material.gtceu.flerovium":"鈇", - "material.gtceu.flint":"燧石", - "material.gtceu.fluorine":"氟", - "material.gtceu.fluoroantimonic_acid":"氟銻酸", - "material.gtceu.formaldehyde":"甲醛", - "material.gtceu.formamide":"甲醯胺", - "material.gtceu.formic_acid":"甲酸", - "material.gtceu.francium":"鍅", - "material.gtceu.fullers_earth":"漂白土", - "material.gtceu.gadolinium":"釓", - "material.gtceu.galena":"方鉛", - "material.gtceu.gallium":"鎵", - "material.gtceu.gallium_arsenide":"砷化鎵", - "material.gtceu.gallium_sulfide":"硫化鎵", - "material.gtceu.garnet_sand":"石榴石砂", - "material.gtceu.garnierite":"矽鎂鎳", - "material.gtceu.gasoline":"汽油", - "material.gtceu.gelatin":"明膠", - "material.gtceu.gelatin_mixture":"明膠混合物", - "material.gtceu.germanium":"鍺", - "material.gtceu.glass":"玻璃", - "material.gtceu.glauconite_sand":"海綠石砂", - "material.gtceu.glowstone":"螢石", - "material.gtceu.glue":"膠水", - "material.gtceu.glycerol":"甘油", - "material.gtceu.glyceryl_trinitrate":"硝酸甘油", - "material.gtceu.glycolonitrile":"乙腈", - "material.gtceu.goethite":"針鐵", - "material.gtceu.gold":"金", - "material.gtceu.granite":"花崗岩", - "material.gtceu.granite_red":"紅花崗岩", - "material.gtceu.granitic_mineral_sand":"花崗岩礦砂", - "material.gtceu.graphene":"石墨烯", - "material.gtceu.graphite":"石墨", - "material.gtceu.gray_dye":"灰色染料", - "material.gtceu.green_dye":"綠色染料", - "material.gtceu.green_sapphire":"綠色藍寶石", - "material.gtceu.green_sapphire_slurry":"綠色藍寶石漿液", - "material.gtceu.grossular":"鈣鋁榴石", - "material.gtceu.gunpowder":"火藥", - "material.gtceu.gypsum":"石膏", - "material.gtceu.hafnium":"鉿", - "material.gtceu.hassium":"釒黑", - "material.gtceu.hastelloy_c_276":"哈斯特洛依合金 C-276", - "material.gtceu.hastelloy_x":"哈斯特洛依合金-X", - "material.gtceu.heavy_fuel":"重燃油", - "material.gtceu.helium":"氦", - "material.gtceu.helium_3":"氦-3", - "material.gtceu.hematite":"赤鐵", - "material.gtceu.high_octane_gasoline":"高辛烷值汽油", - "material.gtceu.holmium":"鈥", - "material.gtceu.hot_alkaline_debrominated_brine":"熱鹼性脫溴滷水", - "material.gtceu.hot_brine":"熱滷水", - "material.gtceu.hot_chlorinated_brominated_brine":"熱氯化溴滷水", - "material.gtceu.hot_debrominated_brine":"熱脫溴滷水", - "material.gtceu.hsla_steel":"HSLA鋼", - "material.gtceu.hsse":"高速鋼-E", - "material.gtceu.hssg":"高速鋼-G", - "material.gtceu.hsss":"高速鋼-S", - "material.gtceu.hydro_cracked_butadiene":"加氫裂解丁二烯", - "material.gtceu.hydro_cracked_butane":"加氫裂解丁烷", - "material.gtceu.hydro_cracked_butene":"加氫裂解丁烯", - "material.gtceu.hydro_cracked_ethane":"加氫裂解乙烷", - "material.gtceu.hydro_cracked_ethylene":"加氫裂解乙烯", - "material.gtceu.hydro_cracked_propane":"加氫裂解丙烷", - "material.gtceu.hydro_cracked_propene":"加氫裂解丙烯", - "material.gtceu.hydrochloric_acid":"鹽酸", - "material.gtceu.hydrofluoric_acid":"氫氟酸", - "material.gtceu.hydrogen":"氫", - "material.gtceu.hydrogen_cyanide":"氰化氫", - "material.gtceu.hydrogen_iodide":"碘化氫", - "material.gtceu.hydrogen_sulfide":"硫化氫", - "material.gtceu.hypochlorous_acid":"次氯酸", - "material.gtceu.ice":"冰", - "material.gtceu.ilmenite":"鈦鐵", - "material.gtceu.impure_enriched_naquadah_solution":"含雜富集矽岩溶液", - "material.gtceu.impure_naquadria_solution":"含雜超能矽岩溶液", - "material.gtceu.incoloy_ma_956":"耐熱鉻鐵合金 MA-956", - "material.gtceu.indium":"銦", - "material.gtceu.indium_concentrate":"銦富集溶液", - "material.gtceu.indium_gallium_phosphide":"磷化銦鎵", - "material.gtceu.indium_phosphide":"磷化銦", - "material.gtceu.indium_tin_barium_titanium_cuprate":"銦錫鋇鈦銅氧合金", - "material.gtceu.inert_metal_mixture":"惰性金屬混合物", - "material.gtceu.invar":"殷鋼", - "material.gtceu.iodine":"碘", - "material.gtceu.iridium":"銥", - "material.gtceu.iridium_chloride":"氯化銥", - "material.gtceu.iridium_metal_residue":"銥金屬渣", - "material.gtceu.iron":"鐵", - "material.gtceu.iron_ii_chloride":"氯化亞鐵", - "material.gtceu.iron_iii_chloride":"氯化鐵", - "material.gtceu.isoprene":"異戊二烯", - "material.gtceu.kanthal":"坎塔爾合金", - "material.gtceu.krypton":"氪", - "material.gtceu.kyanite":"藍晶石", - "material.gtceu.lanthanum":"鑭", - "material.gtceu.lapis":"青金石", - "material.gtceu.lapotron":"蘭波頓", - "material.gtceu.lava":"熔岩", - "material.gtceu.lawrencium":"鐒", - "material.gtceu.lazurite":"藍金石", - "material.gtceu.lead":"鉛", - "material.gtceu.lead_zinc_solution":"鉛鋅溶液", - "material.gtceu.lepidolite":"鋰雲母", - "material.gtceu.light_blue_dye":"淺藍色染料", - "material.gtceu.light_fuel":"輕燃油", - "material.gtceu.light_gray_dye":"淺灰色染料", - "material.gtceu.lightly_hydro_cracked_gas":"輕度加氫裂解煉油氣", - "material.gtceu.lightly_hydro_cracked_heavy_fuel":"輕度加氫裂解重燃油", - "material.gtceu.lightly_hydro_cracked_light_fuel":"輕度加氫裂解輕燃油", - "material.gtceu.lightly_hydro_cracked_naphtha":"輕度加氫裂解石腦油", - "material.gtceu.lightly_steam_cracked_gas":"輕度蒸汽裂解煉油氣", - "material.gtceu.lightly_steam_cracked_heavy_fuel":"輕度蒸汽裂解重燃油", - "material.gtceu.lightly_steam_cracked_light_fuel":"輕度蒸汽裂解輕燃油", - "material.gtceu.lightly_steam_cracked_naphtha":"輕度蒸汽裂解石腦油", - "material.gtceu.lime_dye":"淺綠色染料", - "material.gtceu.liquid_air":"液態空氣", - "material.gtceu.liquid_ender_air":"液態終界空氣", - "material.gtceu.liquid_nether_air":"液態地獄空氣", - "material.gtceu.lithium":"鋰", - "material.gtceu.lithium_chloride":"氯化鋰", - "material.gtceu.livermorium":"鉝", - "material.gtceu.lpg":"液化石油氣", - "material.gtceu.lubricant":"潤滑油", - "material.gtceu.lutetium":"鎦", - "material.gtceu.magenta_dye":"洋紅色染料", - "material.gtceu.magnalium":"鎂鋁合金", - "material.gtceu.magnesia":"氧化鎂", - "material.gtceu.magnesite":"菱鎂", - "material.gtceu.magnesium":"鎂", - "material.gtceu.magnesium_chloride":"氯化鎂", - "material.gtceu.magnesium_diboride":"二硼化鎂", - "material.gtceu.magnetic_iron":"磁化鐵", - "material.gtceu.magnetic_neodymium":"磁化釹", - "material.gtceu.magnetic_samarium":"磁化釤", - "material.gtceu.magnetic_steel":"磁化鋼", - "material.gtceu.magnetite":"磁鐵", - "material.gtceu.malachite":"孔雀石", - "material.gtceu.manganese":"錳", - "material.gtceu.manganese_phosphide":"磷化錳", - "material.gtceu.maraging_steel_300":"麻時效鋼-300", - "material.gtceu.marble":"大理石", - "material.gtceu.massicot":"鉛黃", - "material.gtceu.mc_guffium_239":"麥高芬-239", - "material.gtceu.meat":"肉", - "material.gtceu.meitnerium":"䥑", - "material.gtceu.mendelevium":"鍆", - "material.gtceu.mercury":"汞", - "material.gtceu.mercury_barium_calcium_cuprate":"汞鋇鈣銅氧化物", - "material.gtceu.metal_mixture":"金屬混合物", - "material.gtceu.methane":"甲烷", - "material.gtceu.methanol":"甲醇", - "material.gtceu.methyl_acetate":"乙酸甲酯", - "material.gtceu.mica":"雲母", - "material.gtceu.milk":"牛奶", - "material.gtceu.mirabilite":"芒硝", - "material.gtceu.molybdenite":"輝鉬", - "material.gtceu.molybdenum":"鉬", - "material.gtceu.molybdenum_disilicide":"二矽化鉬", - "material.gtceu.monazite":"獨居石", - "material.gtceu.monochloramine":"氯胺", - "material.gtceu.moscovium":"鏌", - "material.gtceu.mutagen":"誘變劑", - "material.gtceu.naphtha":"石腦油", - "material.gtceu.naphthalene":"萘", - "material.gtceu.naquadah":"矽岩", - "material.gtceu.naquadah_alloy":"矽岩合金", - "material.gtceu.naquadria":"超能矽岩", - "material.gtceu.naquadria_solution":"超能矽岩溶液", - "material.gtceu.naquadria_sulfate":"硫酸超能矽岩", - "material.gtceu.naquadria_waste":"超能矽岩廢液", - "material.gtceu.natural_gas":"天然氣", - "material.gtceu.neodymium":"釹", - "material.gtceu.neon":"氖", - "material.gtceu.neptunium":"錼", - "material.gtceu.nether_air":"地獄空氣", - "material.gtceu.nether_quartz":"地獄石英", - "material.gtceu.nether_star":"地獄之星", - "material.gtceu.netherite":"獄髓", - "material.gtceu.netherrack":"地獄岩", - "material.gtceu.neutronium":"中子素", - "material.gtceu.nichrome":"鎳鉻合金", - "material.gtceu.nickel":"鎳", - "material.gtceu.nickel_zinc_ferrite":"鎳鋅鐵氧體", - "material.gtceu.nihonium":"鉨", - "material.gtceu.niobium":"鈮", - "material.gtceu.niobium_nitride":"氮化鈮", - "material.gtceu.niobium_titanium":"鈮鈦合金", - "material.gtceu.nitration_mixture":"硝酸混酸", - "material.gtceu.nitric_acid":"硝酸", - "material.gtceu.nitric_oxide":"一氧化氮", - "material.gtceu.nitrobenzene":"硝基苯", - "material.gtceu.nitrochlorobenzene":"硝基氯苯", - "material.gtceu.nitrogen":"氮", - "material.gtceu.nitrogen_dioxide":"二氧化氮", - "material.gtceu.nitrosyl_chloride":"亞硝醯氯", - "material.gtceu.nitrous_oxide":"一氧化二氮", - "material.gtceu.nobelium":"鍩", - "material.gtceu.obsidian":"黑曜石", - "material.gtceu.octane":"辛烷", - "material.gtceu.oganesson":"氣奧", - "material.gtceu.oil":"石油", - "material.gtceu.oil_heavy":"重油", - "material.gtceu.oil_light":"輕油", - "material.gtceu.oil_medium":"原油", - "material.gtceu.oilsands":"油砂", - "material.gtceu.olivine":"橄欖石", - "material.gtceu.opal":"貓眼石", - "material.gtceu.orange_dye":"橙色染料", - "material.gtceu.osmiridium":"銥鋨合金", - "material.gtceu.osmium":"鋨", - "material.gtceu.osmium_tetroxide":"四氧化鋨", - "material.gtceu.oxygen":"氧", - "material.gtceu.palladium":"鈀", - "material.gtceu.palladium_raw":"粗鈀", - "material.gtceu.paper":"紙", - "material.gtceu.paracetamol":"對乙醯氨基酚", - "material.gtceu.pcb_coolant":"多氯聯苯冷卻液 ", - "material.gtceu.pentlandite":"鎳黃鐵", - "material.gtceu.perlite":"珍珠岩", - "material.gtceu.phenol":"苯酚", - "material.gtceu.phosphate":"磷酸鹽", - "material.gtceu.phosphoric_acid":"磷酸", - "material.gtceu.phosphorus":"磷", - "material.gtceu.phosphorus_pentoxide":"五氧化二磷", - "material.gtceu.phthalic_acid":"鄰苯二甲酸", - "material.gtceu.pink_dye":"粉紅色染料", - "material.gtceu.pitchblende":"瀝青鈾", - "material.gtceu.platinum":"鉑", - "material.gtceu.platinum_group_sludge":"鉑系礦泥", - "material.gtceu.platinum_raw":"粗鉑", - "material.gtceu.platinum_sludge_residue":"鉑泥渣", - "material.gtceu.plutonium":"鈽", - "material.gtceu.plutonium_241":"鈽-241", - "material.gtceu.pollucite":"銫榴石", - "material.gtceu.polonium":"釙", - "material.gtceu.polybenzimidazole":"聚苯並咪唑", - "material.gtceu.polycaprolactam":"聚己內醯胺", - "material.gtceu.polychlorinated_biphenyl":"多氯聯苯", - "material.gtceu.polydimethylsiloxane":"聚二甲基矽氧烷", - "material.gtceu.polyethylene":"聚乙烯", - "material.gtceu.polyphenylene_sulfide":"聚苯硫醚", - "material.gtceu.polytetrafluoroethylene":"聚四氟乙烯", - "material.gtceu.polyvinyl_acetate":"聚乙酸乙烯酯", - "material.gtceu.polyvinyl_butyral":"聚乙烯醇縮丁醛", - "material.gtceu.polyvinyl_chloride":"聚氯乙烯", - "material.gtceu.potash":"鉀鹼", - "material.gtceu.potassium":"鉀", - "material.gtceu.potassium_carbonate":"碳酸鉀", - "material.gtceu.potassium_cyanide":"氰化鉀", - "material.gtceu.potassium_dichromate":"重鉻酸鉀", - "material.gtceu.potassium_feldspar":"鉀長石", - "material.gtceu.potassium_ferrocyanide":"亞鐵氰化鉀", - "material.gtceu.potassium_hydroxide":"氫氧化鉀", - "material.gtceu.potassium_iodide":"碘化鉀", - "material.gtceu.potassium_sulfate":"硫酸鉀", - "material.gtceu.potin":"粗青銅合金", - "material.gtceu.powellite":"鉬鈣", - "material.gtceu.praseodymium":"鐠", - "material.gtceu.promethium":"鉕", - "material.gtceu.propane":"丙烷", - "material.gtceu.propene":"丙烯", - "material.gtceu.protactinium":"鏷", - "material.gtceu.prussian_blue":"普魯士藍", - "material.gtceu.purple_dye":"紫色染料", - "material.gtceu.pyrite":"黃鐵", - "material.gtceu.pyrochlore":"燒綠石", - "material.gtceu.pyrolusite":"軟錳", - "material.gtceu.pyrope":"鎂鋁榴石", - "material.gtceu.quartz_sand":"石英砂", - "material.gtceu.quartzite":"石英岩", - "material.gtceu.quicklime":"生石灰", - "material.gtceu.rad_away":"消輻寧", - "material.gtceu.radium":"鐳", - "material.gtceu.radon":"氡", - "material.gtceu.rare_earth":"稀土", - "material.gtceu.rarest_metal_mixture":"稀有金屬混合物", - "material.gtceu.raw_brine":"粗鹵水", - "material.gtceu.raw_gasoline":"粗汽油", - "material.gtceu.raw_growth_medium":"培養基原液", - "material.gtceu.raw_rubber":"生橡膠", - "material.gtceu.raw_styrene_butadiene_rubber":"生丁苯橡膠", - "material.gtceu.realgar":"雄黃", - "material.gtceu.red_alloy":"紅色合金", - "material.gtceu.red_dye":"紅色染料", - "material.gtceu.red_garnet":"紅石榴石", - "material.gtceu.red_steel":"紅鋼", - "material.gtceu.redrock":"紅岩", - "material.gtceu.redstone":"紅石", - "material.gtceu.refinery_gas":"煉油氣", - "material.gtceu.reinforced_epoxy_resin":"強化環氧樹脂", - "material.gtceu.rhenium":"錸", - "material.gtceu.rhodium":"銠", - "material.gtceu.rhodium_plated_palladium":"鍍銠鈀", - "material.gtceu.rhodium_sulfate":"硫酸銠", - "material.gtceu.rock_salt":"岩鹽", - "material.gtceu.rocket_fuel":"火箭燃料", - "material.gtceu.roentgenium":"錀", - "material.gtceu.rose_gold":"玫瑰金", - "material.gtceu.rtm_alloy":"釕鎢鉬合金", - "material.gtceu.rubber":"橡膠", - "material.gtceu.rubidium":"銣", - "material.gtceu.ruby":"紅寶石", - "material.gtceu.ruby_slurry":"紅寶石漿液", - "material.gtceu.ruridit":"釕銥合金", - "material.gtceu.ruthenium":"釕", - "material.gtceu.ruthenium_tetroxide":"四氧化釕", - "material.gtceu.ruthenium_trinium_americium_neutronate":"釕凱金鋂中子素氧化物", - "material.gtceu.rutherfordium":"鑪", - "material.gtceu.rutile":"金紅石", - "material.gtceu.salt":"鹽", - "material.gtceu.salt_water":"鹽水", - "material.gtceu.saltpeter":"硝石", - "material.gtceu.samarium":"釤", - "material.gtceu.samarium_iron_arsenic_oxide":"釤鐵砷氧化物", - "material.gtceu.sapphire":"藍寶石", - "material.gtceu.sapphire_slurry":"藍寶石漿液", - "material.gtceu.scandium":"鈧", - "material.gtceu.scheelite":"白鎢", - "material.gtceu.sculk":"伏聆", - "material.gtceu.seaborgium":"釒喜", - "material.gtceu.seed_oil":"種子油", - "material.gtceu.selenium":"硒", - "material.gtceu.severely_hydro_cracked_gas":"重度加氫裂解煉油氣", - "material.gtceu.severely_hydro_cracked_heavy_fuel":"重度加氫裂解重燃油", - "material.gtceu.severely_hydro_cracked_light_fuel":"重度加氫裂解輕燃油", - "material.gtceu.severely_hydro_cracked_naphtha":"重度加氫裂解石腦油", - "material.gtceu.severely_steam_cracked_gas":"重度蒸汽裂解煉油氣", - "material.gtceu.severely_steam_cracked_heavy_fuel":"重度蒸汽裂解重燃油", - "material.gtceu.severely_steam_cracked_light_fuel":"重度蒸汽裂解輕燃油", - "material.gtceu.severely_steam_cracked_naphtha":"重度蒸汽裂解石腦油", - "material.gtceu.silicon":"矽", - "material.gtceu.silicon_dioxide":"二氧化矽", - "material.gtceu.silicone_rubber":"矽橡膠", - "material.gtceu.silver":"銀", - "material.gtceu.soapstone":"皂石", - "material.gtceu.soda_ash":"純鹼", - "material.gtceu.sodalite":"方鈉石", - "material.gtceu.sodium":"鈉", - "material.gtceu.sodium_bicarbonate":"碳酸氫鈉", - "material.gtceu.sodium_bisulfate":"硫酸氫鈉", - "material.gtceu.sodium_hydroxide":"氫氧化鈉", - "material.gtceu.sodium_nitrite":"亞硝酸鈉", - "material.gtceu.sodium_persulfate":"過硫酸鈉", - "material.gtceu.sodium_potassium":"鈉鉀合金", - "material.gtceu.sodium_sulfide":"硫化鈉", - "material.gtceu.soldering_alloy":"焊錫", - "material.gtceu.spessartine":"錳鋁榴石", - "material.gtceu.sphalerite":"閃鋅", - "material.gtceu.spodumene":"鋰輝石", - "material.gtceu.stainless_steel":"不鏽鋼", - "material.gtceu.steam":"蒸汽", - "material.gtceu.steam_cracked_butadiene":"蒸汽裂解丁二烯", - "material.gtceu.steam_cracked_butane":"蒸汽裂解丁烷", - "material.gtceu.steam_cracked_butene":"蒸汽裂解丁烯", - "material.gtceu.steam_cracked_ethane":"蒸汽裂解乙烷", - "material.gtceu.steam_cracked_ethylene":"蒸汽裂解乙烯", - "material.gtceu.steam_cracked_propane":"蒸汽裂解丙烷", - "material.gtceu.steam_cracked_propene":"蒸汽裂解丙烯", - "material.gtceu.steel":"鋼", - "material.gtceu.stellite_100":"司太立-100", - "material.gtceu.sterilized_growth_medium":"無菌培養基", - "material.gtceu.sterling_silver":"標準純銀", - "material.gtceu.stibnite":"輝銻", - "material.gtceu.stone":"石頭", - "material.gtceu.strontium":"鍶", - "material.gtceu.styrene":"苯乙烯", - "material.gtceu.styrene_butadiene_rubber":"丁苯橡膠", - "material.gtceu.sugar":"糖", - "material.gtceu.sulfur":"硫", - "material.gtceu.sulfur_dioxide":"二氧化硫", - "material.gtceu.sulfur_trioxide":"三氧化硫", - "material.gtceu.sulfuric_acid":"硫酸", - "material.gtceu.sulfuric_copper_solution":"硫酸銅溶液", - "material.gtceu.sulfuric_gas":"含硫煉油氣", - "material.gtceu.sulfuric_heavy_fuel":"含硫重燃油", - "material.gtceu.sulfuric_light_fuel":"含硫輕燃油", - "material.gtceu.sulfuric_naphtha":"含硫石腦油", - "material.gtceu.sulfuric_nickel_solution":"硫酸鎳溶液", - "material.gtceu.talc":"滑石", - "material.gtceu.tantalite":"鉭鐵", - "material.gtceu.tantalum":"鉭", - "material.gtceu.tantalum_carbide":"碳化鉭", - "material.gtceu.technetium":"鎝", - "material.gtceu.tellurium":"碲", - "material.gtceu.tennessine":"石田", - "material.gtceu.terbium":"鋱", - "material.gtceu.tetrafluoroethylene":"四氟乙烯", - "material.gtceu.tetrahedrite":"黝銅", - "material.gtceu.tetranitromethane":"四硝基甲烷", - "material.gtceu.thallium":"鉈", - "material.gtceu.thorium":"釷", - "material.gtceu.thulium":"銩", - "material.gtceu.tin":"錫", - "material.gtceu.tin_alloy":"錫鐵合金", - "material.gtceu.titanium":"鈦", - "material.gtceu.titanium_carbide":"碳化鈦", - "material.gtceu.titanium_tetrachloride":"四氯化鈦", - "material.gtceu.titanium_trifluoride":"三氟化鈦", - "material.gtceu.titanium_tungsten_carbide":"碳化鈦鎢", - "material.gtceu.toluene":"甲苯", - "material.gtceu.topaz":"黃玉", - "material.gtceu.treated_wood":"防腐木", - "material.gtceu.tricalcium_phosphate":"磷酸三鈣", - "material.gtceu.trinium":"凱金", - "material.gtceu.trinium_sulfide":"硫化凱金", - "material.gtceu.tritanium":"三鈦", - "material.gtceu.tritium":"氚", - "material.gtceu.trona":"天然鹼", - "material.gtceu.tungstate":"鎢酸鋰", - "material.gtceu.tungsten":"鎢", - "material.gtceu.tungsten_carbide":"碳化鎢", - "material.gtceu.tungsten_steel":"鎢鋼", - "material.gtceu.tungstic_acid":"鎢酸", - "material.gtceu.ultimet":"哈氏合金", - "material.gtceu.uraninite":"晶質鈾", - "material.gtceu.uranium":"鈾", - "material.gtceu.uranium_235":"鈾-235", - "material.gtceu.uranium_hexafluoride":"六氟化鈾", - "material.gtceu.uranium_rhodium_dinaquadide":"鈾銠矽岩合金", - "material.gtceu.uranium_triplatinum":"三鉑化鈾", - "material.gtceu.uu_matter":"UU物質", - "material.gtceu.uvarovite":"鈣鉻榴石", - "material.gtceu.vanadium":"釩", - "material.gtceu.vanadium_gallium":"釩鎵合金", - "material.gtceu.vanadium_magnetite":"釩磁鐵", - "material.gtceu.vanadium_steel":"釩鋼", - "material.gtceu.vinyl_acetate":"乙酸乙烯酯", - "material.gtceu.vinyl_chloride":"氯乙烯", - "material.gtceu.water":"水", - "material.gtceu.watertight_steel":"防水鋼", - "material.gtceu.wax":"蠟", - "material.gtceu.wheat":"小麥", - "material.gtceu.white_dye":"白色染料", - "material.gtceu.wood":"木", - "material.gtceu.wood_gas":"木煤氣", - "material.gtceu.wood_tar":"木焦油", - "material.gtceu.wood_vinegar":"木醋酸", - "material.gtceu.wrought_iron":"鍛鐵", - "material.gtceu.wulfenite":"鉬鉛", - "material.gtceu.xenon":"氙", - "material.gtceu.yellow_dye":"黃色染料", - "material.gtceu.yellow_garnet":"黃石榴石", - "material.gtceu.yellow_limonite":"黃褐鐵", - "material.gtceu.ytterbium":"鐿", - "material.gtceu.yttrium":"釔", - "material.gtceu.yttrium_barium_cuprate":"釔鋇銅氧化物", - "material.gtceu.zeolite":"沸石", - "material.gtceu.zeron_100":"賽龍-100", - "material.gtceu.zinc":"鋅", - "material.gtceu.zinc_sulfide":"硫化鋅", - "material.gtceu.zincite":"紅鋅", - "material.gtceu.zirconium":"鋯", - "message.gtceu.new_veins":"勘探到%d個新礦脈!", - "metaarmor.energy_share.disable":"能量供給:工具充能已禁用", - "metaarmor.energy_share.enable":"能量供給:工具充能已啟用", - "metaarmor.energy_share.error":"能量供給:§c能量不足,無法為工具充能!", - "metaarmor.energy_share.tooltip":"供能模式:%s", - "metaarmor.energy_share.tooltip.guide":"手持物品並潛行右擊以更換模式", - "metaarmor.hud.energy_lvl":"能量儲存:%s", - "metaarmor.hud.engine_enabled":"引擎已啟用:%s", - "metaarmor.hud.fuel_lvl":"燃料儲存:%s", - "metaarmor.hud.gravi_engine":"重力引擎:%s", - "metaarmor.hud.hover_mode":"懸浮模式:%s", - "metaarmor.hud.status.disabled":"§c關", - "metaarmor.hud.status.enabled":"§a開", - "metaarmor.jetpack.emergency_hover_mode":"緊急懸浮模式已啟用!", - "metaarmor.jetpack.flight.disable":"噴射背包:飛行已停用", - "metaarmor.jetpack.flight.enable":"噴射背包:飛行已啟用", - "metaarmor.jetpack.hover.disable":"噴射背包:懸浮模式已禁用", - "metaarmor.jetpack.hover.enable":"噴射背包:懸浮模式已啟用", - "metaarmor.message.nightvision.disabled":"§b夜視:§c關閉", - "metaarmor.message.nightvision.enabled":"§b夜視:§a開啟", - "metaarmor.message.nightvision.error":"§c能量不足!", - "metaarmor.nms.boosted_jump.disabled":"奈米肌體™套裝:跳躍提升已停用", - "metaarmor.nms.boosted_jump.enabled":"奈米肌體™套裝:跳躍提升已啟用", - "metaarmor.nms.nightvision.disabled":"奈米肌體™套裝:夜視已禁用", - "metaarmor.nms.nightvision.enabled":"奈米肌體™套裝:夜視已啟用", - "metaarmor.nms.nightvision.error":"奈米肌體™套裝:§c能量不足!", - "metaarmor.nms.share.disable":"奈米肌體™套裝:供能模式已禁用", - "metaarmor.nms.share.enable":"奈米肌體™套裝:供能模式已啟用", - "metaarmor.nms.share.error":"奈米肌體™套裝:§c能量不足,無法供能!", - "metaarmor.qts.nightvision.disabled":"夸克科技™套裝:夜視已禁用", - "metaarmor.qts.nightvision.enabled":"夸克科技™套裝:夜視已啟用", - "metaarmor.qts.nightvision.error":"夸克科技™套裝:§c能量不足!", - "metaarmor.qts.share.disable":"夸克科技™套裝:供能模式已禁用", - "metaarmor.qts.share.enable":"夸克科技™套裝:供能模式已啟用", - "metaarmor.qts.share.error":"夸克科技™套裝:§c能量不足,無法供能!", - "metaarmor.tooltip.autoeat":"使用物品欄中的食物補充飽食度", - "metaarmor.tooltip.breath":"補充氧氣條", - "metaarmor.tooltip.burning":"消除燃燒傷害", - "metaarmor.tooltip.falldamage":"消除摔落傷害", - "metaarmor.tooltip.freezing":"防止寒冷侵襲", - "metaarmor.tooltip.jump":"提升跳躍高度與距離", - "metaarmor.tooltip.potions":"消除負面效果", - "metaarmor.tooltip.speed":"提升奔跑速度", - "metaarmor.tooltip.stepassist":"提供步行輔助", - "metaitem.behavior.mode_switch.current_mode":"模式:%s", - "metaitem.behavior.mode_switch.mode_switched":"§e模式設定為:%s", - "metaitem.behavior.mode_switch.tooltip":"潛行右擊以切換模式", - "metaitem.clipboard.tooltip":"可以在上面書寫(無需任何書寫工具)。手持右鍵在牆面上放置,潛行右擊取下。", - "metaitem.cover.digital.mode.energy.disabled":"點選以啟用能量模式", - "metaitem.cover.digital.mode.energy.enabled":"已啟用能量模式", - "metaitem.cover.digital.mode.fluid.disabled":"點選以啟用流體模式", - "metaitem.cover.digital.mode.fluid.enabled":"已啟用流體模式", - "metaitem.cover.digital.mode.item.disabled":"點選以啟用物品模式", - "metaitem.cover.digital.mode.item.enabled":"已啟用物品模式", - "metaitem.cover.digital.mode.machine.disabled":"點選以啟用機器模式", - "metaitem.cover.digital.mode.machine.enabled":"已啟用機器模式", - "metaitem.cover.digital.mode.proxy.disabled":"點選以啟用代理模式", - "metaitem.cover.digital.mode.proxy.enabled":"已啟用代理模式", - "metaitem.cover.digital.tooltip":"§7作§f覆蓋板§7時透過§f能量線纜f7將機器連線到§f中央監視器§7。", - "metaitem.cover.digital.wireless.tooltip.0":"§7作§f覆蓋板§7時§f將機器§f無線§7接入§f中央監控器§7。", - "metaitem.cover.digital.wireless.tooltip.1":"§f手持右擊中央監控器§7來進行遠端綁定。", - "metaitem.cover.digital.wireless.tooltip.2":"§f手持並潛行右擊§7則可移除現有綁定。", - "metaitem.cover.digital.wireless.tooltip.3":"§a綁定至:§f%s", - "metaitem.crushed.tooltip.purify":"右擊盛有水的鍋釜以清洗", - "metaitem.debug_scanner.tooltip":"三錄儀", - "metaitem.dust.tooltip.purify":"右擊盛有水的鍋釜以清洗", - "metaitem.electric.discharge_mode.disabled":"§e釋能模式已禁用", - "metaitem.electric.discharge_mode.enabled":"§e釋能模式已啟用", - "metaitem.electric.discharge_mode.tooltip":"潛行右擊以開關釋能模式", - "metaitem.generic.electric_item.stored":"%d/%d EU(%s)", - "metaitem.generic.electric_item.tooltip":"%d/%d EU - %s電壓", - "metaitem.generic.fluid_container.tooltip":"%d/%dmB %s", - "metaitem.int_circuit.configuration":"設定:%d", - "metaitem.liquid_fuel_jetpack.tooltip":"利用內燃發電機的燃料來提供推進動力", - "metaitem.machine_configuration.mode":"§a設定模式:§r%s", - "metaitem.plugin.proxy.tooltips.1":"(請將螢幕調整為代理模式)", - "metaitem.plugin.tooltips.1":"可為螢幕安裝外掛以實現更多功能。", - "metaitem.prospector.mode.bedrock_ore":"§b基岩礦勘探模式§r", - "metaitem.prospector.mode.fluid":"§b流體勘探模式§r", - "metaitem.prospector.mode.ores":"§a礦探勘模式§r", - "metaitem.prospector.tooltip.modes":"可用模式:", - "metaitem.prospector.tooltip.radius":"掃描半徑:%s", - "metaitem.record.sus.tooltip":"§7Leonz - Among Us Drip", - "metaitem.terminal.tooltip":"工欲善其事,必先利其器。", - "metaitem.terminal.tooltip.creative":"§b創造模式", - "metaitem.terminal.tooltip.hardware":"§a硬體:%d", - "metaitem.tool.tooltip.durability":"§f耐久度:§a%d / %d", - "metaitem.tool.tooltip.primary_material":"§f材料:§e%s", - "metaitem.tool.tooltip.rotor.efficiency":"渦輪效率:§9%d%%", - "metaitem.tool.tooltip.rotor.power":"渦輪產能:§9%d%%", - "metaitem.tricorder_scanner.tooltip":"三錄儀", - "monitor.gui.title.argb":"ARGB:", - "monitor.gui.title.back":"返回", - "monitor.gui.title.config":"設定", - "monitor.gui.title.plugin":"外掛:", - "monitor.gui.title.scale":"尺寸:", - "monitor.gui.title.slot":"槽位:", - "ore.spawnlocation.name":"礦物生成資訊", - "recipe.capability.eu.name":"GTCEu能量", - "recipe.capability.fluid.name":"流體", - "recipe.capability.item.name":"物品", - "recipe.condition.adjacent_block.tooltip":"水平相鄰方塊應為", - "recipe.condition.biome.tooltip":"生態域:%s", - "recipe.condition.daytime.day.tooltip":"白天才能運作", - "recipe.condition.daytime.night.tooltip":"夜晚才能運作", - "recipe.condition.dimension.tooltip":"維度:%s", - "recipe.condition.dimension_marker.tooltip":"維度:", - "recipe.condition.eu_to_start.tooltip":"啟動耗能:%d%s", - "recipe.condition.pos_y.tooltip":"Y軸高度:%d <= Y <= %d", - "recipe.condition.rain.tooltip":"雨量:%d", - "recipe.condition.rock_breaker.tooltip":"水平相鄰方塊需要為流體源", - "recipe.condition.steam_vent.tooltip":"清潔蒸汽排氣口", - "recipe.condition.thunder.tooltip":"雷級:%d", - "tagprefix.andesite":"安山岩%s礦", - "tagprefix.basalt":"玄武岩%s礦", - "tagprefix.blackstone":"黑石%s礦", - "tagprefix.block":"%s方塊", - "tagprefix.bolt":"%s螺栓", - "tagprefix.buzz_saw_blade":"%s圓鋸鋸片", - "tagprefix.cable_gt_double":"2x%s線纜", - "tagprefix.cable_gt_hex":"16x%s線纜", - "tagprefix.cable_gt_octal":"8x%s線纜", - "tagprefix.cable_gt_quadruple":"4x%s線纜", - "tagprefix.cable_gt_single":"1x%s線纜", - "tagprefix.chainsaw_head":"%s鏈鋸頭", - "tagprefix.chipped_gem":"破碎的%s", - "tagprefix.crushed_ore":"粉碎%s礦", - "tagprefix.deepslate":"深板岩%s礦", - "tagprefix.dense_plate":"緻密%s板", - "tagprefix.diorite":"閃長岩%s礦", - "tagprefix.door":"%s門", - "tagprefix.double_plate":"雙層%s板", - "tagprefix.drill_head":"%s鑽頭", - "tagprefix.dust":"%s粉", - "tagprefix.dye":"%s染料", - "tagprefix.endstone":"終界石%s礦", - "tagprefix.exquisite_gem":"精緻的%s", - "tagprefix.fence":"%s柵欄", - "tagprefix.fence_gate":"%s柵欄門", - "tagprefix.fine_wire":"細%s導線", - "tagprefix.flawed_gem":"有瑕的%s", - "tagprefix.flawless_gem":"無瑕的%s", - "tagprefix.foil":"%s箔", - "tagprefix.frame":"%s框架", - "tagprefix.gear":"%s齒輪", - "tagprefix.gem":"%s", - "tagprefix.granite":"花崗岩%s礦", - "tagprefix.gravel":"沙礫%s礦", - "tagprefix.hot_ingot":"熱%s錠", - "tagprefix.impure_dust":"含雜%s粉", - "tagprefix.ingot":"%s錠", - "tagprefix.lens":"%s透鏡", - "tagprefix.log":"%s原木", - "tagprefix.long_rod":"長%s桿", - "tagprefix.marble":"大理岩%s礦", - "tagprefix.netherrack":"地獄岩%s礦", - "tagprefix.nugget":"%s粒", - "tagprefix.pipe_huge_fluid":"巨型%s流體管道", - "tagprefix.pipe_huge_item":"巨型%s物品管道", - "tagprefix.pipe_huge_restrictive":"巨型加固%s物品管道", - "tagprefix.pipe_large_fluid":"大型%s流體管道", - "tagprefix.pipe_large_item":"大型%s物品管道", - "tagprefix.pipe_large_restrictive":"大型加固%s物品管道", - "tagprefix.pipe_nonuple_fluid":"九重%s流體管道", - "tagprefix.pipe_normal_fluid":"普通%s流體管道", - "tagprefix.pipe_normal_item":"普通%s物品管道", - "tagprefix.pipe_normal_restrictive":"普通加固%s物品管道", - "tagprefix.pipe_quadruple_fluid":"四重%s流體管道", - "tagprefix.pipe_small_fluid":"小型%s流體管道", - "tagprefix.pipe_small_item":"小型%s物品管道", - "tagprefix.pipe_small_restrictive":"小型加固%s物品管道", - "tagprefix.pipe_tiny_fluid":"微型%s流體管道", - "tagprefix.planks":"%s木材", - "tagprefix.plate":"%s板", - "tagprefix.polymer.dense_plate":"緻密%s片", - "tagprefix.polymer.double_plate":"雙層%s片", - "tagprefix.polymer.dust":"%s末", - "tagprefix.polymer.foil":"薄%s片", - "tagprefix.polymer.ingot":"%s條", - "tagprefix.polymer.nugget":"%s顆粒", - "tagprefix.polymer.plate":"%s片", - "tagprefix.polymer.small_dust":"小堆%s末", - "tagprefix.polymer.tiny_dust":"小撮%s末", - "tagprefix.pure_dust":"潔淨%s粉", - "tagprefix.purified_ore":"純淨%s礦", - "tagprefix.raw":"%s原礦", - "tagprefix.raw_ore_block":"%s原礦方塊", - "tagprefix.red_granite":"紅花崗岩%s礦", - "tagprefix.red_sand":"紅沙%s礦", - "tagprefix.refined_ore":"精煉%s礦", - "tagprefix.ring":"%s環", - "tagprefix.rock":"%s", - "tagprefix.rod":"%s桿", - "tagprefix.rotor":"%s轉子", - "tagprefix.round":"%s滾珠", - "tagprefix.sand":"沙子%s礦", - "tagprefix.screw":"%s螺絲", - "tagprefix.screwdriver_tip":"%s螺絲起子頭", - "tagprefix.slab":"%s半磚", - "tagprefix.small_dust":"小堆%s粉", - "tagprefix.small_gear":"小型%s齒輪", - "tagprefix.small_spring":"小型%s彈簧", - "tagprefix.spring":"%s彈簧", - "tagprefix.stairs":"%s階梯", - "tagprefix.stone":"%s礦", - "tagprefix.tiny_dust":"小撮%s粉", - "tagprefix.tuff":"凝灰岩%s礦", - "tagprefix.turbine_blade":"%s渦輪扇葉", - "tagprefix.wire_cutter_head":"%s剪線鉗鉗頭", - "tagprefix.wire_gt_double":"2x%s導線", - "tagprefix.wire_gt_hex":"16x%s導線", - "tagprefix.wire_gt_octal":"8x%s導線", - "tagprefix.wire_gt_quadruple":"4x%s導線", - "tagprefix.wire_gt_single":"1x%s導線", - "tagprefix.wrench_tip":"%s扳手頂", - "tile.gtceu.brittle_charcoal.name":"脆木炭塊", - "tile.gtceu.brittle_charcoal.tooltip.0":"產自木炭堆點火器。", - "tile.gtceu.brittle_charcoal.tooltip.1":"採掘以獲得木炭。", - "tile.gtceu.foam.name":"建築泡沫", - "tile.gtceu.petrified_foam.name":"石化建築泡沫", - "tile.gtceu.reinforced_foam.name":"強化建築泡沫", - "tile.gtceu.reinforced_stone.name":"防爆石", - "tile.gtceu.seal.name":"密封方塊" + "behavior.data_item.assemblyline.data": "- §a%s", + "behavior.data_item.assemblyline.title": "§n裝配線結構資料:", + "behavior.item_magnet.disabled": "§c磁場已禁用", + "behavior.item_magnet.enabled": "§a磁場已啟用", + "behavior.portable_scanner.amp_per_sec": "最後一秒 %s A", + "behavior.portable_scanner.bedrock_fluid.amount": "流體儲量:%s %s - %s%%", + "behavior.portable_scanner.bedrock_fluid.amount_unknown": "流體儲量:%s%%", + "behavior.portable_scanner.bedrock_fluid.nothing": "流體儲量:§6無§r", + "behavior.portable_scanner.block_hardness": "硬度:%s;爆炸抗性:%s", + "behavior.portable_scanner.block_name": "名稱:%s;後設資料:%s", + "behavior.portable_scanner.debug_cpu_load": "%2$s刻內平均CPU負載約%1$sns,最差情況為%sns。", + "behavior.portable_scanner.debug_cpu_load_seconds": "負載秒數為%s秒。", + "behavior.portable_scanner.debug_lag_count": "已在伺服器中造成%s次延遲尖峰警告(任何大於%sms的情況)。", + "behavior.portable_scanner.debug_machine": "元ID:%s", + "behavior.portable_scanner.debug_machine_invalid": " 無效!", + "behavior.portable_scanner.debug_machine_invalid_null=invalid! MetaTileEntity =": " null!", + "behavior.portable_scanner.debug_machine_valid": "無效!", + "behavior.portable_scanner.divider": "=========================", + "behavior.portable_scanner.energy_container_in": "輸入上限:%s(%s)EU,%s A", + "behavior.portable_scanner.energy_container_out": "輸出上限:%s(%s)EU,%s A", + "behavior.portable_scanner.energy_container_storage": "電量:%s EU / %s EU", + "behavior.portable_scanner.environmental_hazard": "區域內的環境污染:%s§r - %s ppm", + "behavior.portable_scanner.environmental_hazard.nothing": "區域內的環境污染:§6無§r", + "behavior.portable_scanner.eu_per_sec": "最後一秒 %s EU/t", + "behavior.portable_scanner.guild_name": "§2公會名稱:%s§r", + "behavior.portable_scanner.local_hazard": "區域內的其他污染:%s§r - %s ppm", + "behavior.portable_scanner.local_hazard.nothing": "區域內的其他污染:§6無§r", + "behavior.portable_scanner.machine_disabled": "已停止。", + "behavior.portable_scanner.machine_front_facing": "控制器面向:%s", + "behavior.portable_scanner.machine_ownership": "§2機器所有者型別:%s§r", + "behavior.portable_scanner.machine_power_loss": "因斷電而停止工作。", + "behavior.portable_scanner.machine_progress": "處理進度/總計:%s / %s", + "behavior.portable_scanner.machine_upwards_facing": "控制器正面朝向:%s", + "behavior.portable_scanner.mode.caption": "顯示模式:%s", + "behavior.portable_scanner.mode.show_all_info": "顯示所有資訊", + "behavior.portable_scanner.mode.show_block_info": "顯示方塊資訊", + "behavior.portable_scanner.mode.show_electrical_info": "顯示電器資訊", + "behavior.portable_scanner.mode.show_environmental_info": "顯示環境資訊", + "behavior.portable_scanner.mode.show_machine_info": "顯示機器資訊", + "behavior.portable_scanner.mode.show_recipe_info": "顯示配方資訊", + "behavior.portable_scanner.muffled": "已靜音。", + "behavior.portable_scanner.multiblock_energy_input": "最大輸入:%s EU/t,電壓等級 %s", + "behavior.portable_scanner.multiblock_energy_output": "最大輸出:%s EU/t,電壓等級 %s", + "behavior.portable_scanner.multiblock_maintenance": "故障:%s", + "behavior.portable_scanner.multiblock_parallel": "平行處理:%s", + "behavior.portable_scanner.player_name": "§2玩家姓名:%s§r,§7玩家線上:%s§r", + "behavior.portable_scanner.position": "----- X:%s;Y:%s;Z:%s;D:%s -----", + "behavior.portable_scanner.state": "%s:%s", + "behavior.portable_scanner.tank": "流體儲量(槽位%s):%s mB / %s mB %s", + "behavior.portable_scanner.tanks_empty": "未儲存流體", + "behavior.portable_scanner.team_name": "§2團隊名稱:%s§r", + "behavior.portable_scanner.workable_consumption": "預計耗能:%s EU/t,%s A", + "behavior.portable_scanner.workable_production": "預計產能:%s EU/t,%s A", + "behavior.portable_scanner.workable_progress": "處理進度:%s s / %s s", + "behavior.portable_scanner.workable_stored_energy": "能量暫存:%s EU / %s EU", + "behavior.prospector.added_waypoint": "已建立路徑點:%s!", + "behavior.prospector.not_enough_energy": "能量不足!", + "behavior.toggle_energy_consumer.tooltip": "右擊切換模式", + "behaviour.boor.by": "透過%s", + "behaviour.hammer": "右擊機器以開啟或關閉消音功能", + "behaviour.hoe": "可以翻耕泥土", + "behaviour.lighter.fluid.tooltip": "可使用丙烷或丁烷來生火", + "behaviour.lighter.tooltip.description": "可以點火", + "behaviour.lighter.tooltip.usage": "潛行右擊以開/關", + "behaviour.lighter.uses": "剩餘次數:%d", + "behaviour.meta.machine.config.copy.tooltip": "§7潛行右擊以複製機器設定", + "behaviour.meta.machine.config.paste.tooltip": "§7右擊以貼上機器設定", + "behaviour.paintspray.black.tooltip": "可以將物品染成黑色", + "behaviour.paintspray.blue.tooltip": "可以將物品染成藍色", + "behaviour.paintspray.brown.tooltip": "可以將物品染成棕色", + "behaviour.paintspray.cyan.tooltip": "可以將物品染成青色", + "behaviour.paintspray.gray.tooltip": "可以將物品染成灰色", + "behaviour.paintspray.green.tooltip": "可以將物品染成綠色", + "behaviour.paintspray.light_blue.tooltip": "可以將物品染成淺藍色", + "behaviour.paintspray.light_gray.tooltip": "可以將物品染成淺灰色", + "behaviour.paintspray.lime.tooltip": "可以將物品染成淺綠色", + "behaviour.paintspray.magenta.tooltip": "可以將物品染成洋紅色", + "behaviour.paintspray.orange.tooltip": "可以將物品染成橙色", + "behaviour.paintspray.pink.tooltip": "可以將物品染成粉紅色", + "behaviour.paintspray.purple.tooltip": "可以將物品染成紫色", + "behaviour.paintspray.red.tooltip": "可以將物品染成紅色", + "behaviour.paintspray.solvent.tooltip": "可以移除已染色物品的顏色", + "behaviour.paintspray.uses": "剩餘次數:%d", + "behaviour.paintspray.white.tooltip": "可以將物品染成白色", + "behaviour.paintspray.yellow.tooltip": "可以將物品染成黃色", + "behaviour.prospecting": "適用於探礦", + "behaviour.setting.allow.input.from.output.tooltip": "%s-允許從輸出面輸入:%s", + "behaviour.setting.item_auto_output.tooltip": "%s-自動輸出:%s", + "behaviour.setting.muffled.tooltip": "靜音:%s", + "behaviour.setting.output.direction.tooltip": "%s-輸出面方向:%s", + "behaviour.soft_hammer": "用來開啟與關閉機器", + "behaviour.soft_hammer.disabled": "已暫停工作", + "behaviour.soft_hammer.enabled": "已恢復工作", + "behaviour.soft_hammer.idle_after_cycle": "當前週期結束後暫停機器", + "behaviour.wrench": "右擊以旋轉方塊", + "block.filter_casing.tooltip": "建立一個§a無塵§r環境", + "block.gtceu.acid_hazard_sign_block": "強酸危害警示方塊", + "block.gtceu.active_transformer": "有源變壓器", + "block.gtceu.advanced_computer_casing": "高階電腦外殼", + "block.gtceu.advanced_data_access_hatch": "高階資料訪問倉", + "block.gtceu.alloy_blast_smelter": "合金冶煉爐", + "block.gtceu.aluminium_crate": "鋁板條箱", + "block.gtceu.aluminium_drum": "鋁桶", + "block.gtceu.antimatter_hazard_sign_block": "反物質危害警示方塊", + "block.gtceu.assembly_line": "裝配線", + "block.gtceu.assembly_line_casing": "裝配線外殼", + "block.gtceu.assembly_line_grating": "裝配線格柵", + "block.gtceu.assembly_line_unit": "裝配線控制外殼", + "block.gtceu.atomic_casing": "原子機械方塊", + "block.gtceu.auto_maintenance_hatch": "自動維護倉", + "block.gtceu.bio_hazard_sign_block": "生化危害警示方塊", + "block.gtceu.black_borderless_lamp": "黑色無框燈", + "block.gtceu.black_lamp": "黑色燈", + "block.gtceu.black_large_metal_sheet": "黑色粗紋金屬板方塊", + "block.gtceu.black_metal_sheet": "黑色金屬板方塊", + "block.gtceu.black_studs": "黑色橡膠混凝土", + "block.gtceu.blue_borderless_lamp": "藍色無框燈", + "block.gtceu.blue_lamp": "藍色燈", + "block.gtceu.blue_large_metal_sheet": "藍色粗紋金屬板方塊", + "block.gtceu.blue_metal_sheet": "藍色金屬板方塊", + "block.gtceu.blue_studs": "藍色橡膠混凝土", + "block.gtceu.boss_hazard_sign_block": "Boss危害警示方塊", + "block.gtceu.brittle_charcoal": "脆木炭塊", + "block.gtceu.bronze_brick_casing": "磚砌青銅外殼", + "block.gtceu.bronze_crate": "青銅板條箱", + "block.gtceu.bronze_drum": "青銅桶", + "block.gtceu.bronze_firebox_casing": "青銅燃燒室", + "block.gtceu.bronze_gearbox": "青銅齒輪箱機械方塊", + "block.gtceu.bronze_large_boiler": "大型青銅鍋爐", + "block.gtceu.bronze_machine_casing": "青銅機器外殼", + "block.gtceu.bronze_pipe_casing": "青銅管道方塊", + "block.gtceu.brown_borderless_lamp": "棕色無框燈", + "block.gtceu.brown_lamp": "棕色燈", + "block.gtceu.brown_large_metal_sheet": "棕色粗紋金屬板方塊", + "block.gtceu.brown_metal_sheet": "棕色金屬板方塊", + "block.gtceu.brown_studs": "棕色橡膠混凝土", + "block.gtceu.casing_coke_bricks": "焦爐磚塊", + "block.gtceu.casing_grate": "柵格機械方塊", + "block.gtceu.causality_hazard_sign_block": "因果律危害警示方塊", + "block.gtceu.charcoal_pile_igniter": "木炭堆點火器", + "block.gtceu.chiseled_dark_concrete": "浮雕深色混凝土", + "block.gtceu.chiseled_light_concrete": "浮雕淺色混凝土", + "block.gtceu.chiseled_marble": "浮雕大理岩", + "block.gtceu.chiseled_red_granite": "浮雕紅花崗岩", + "block.gtceu.clean_machine_casing": "潔淨不鏽鋼機械方塊", + "block.gtceu.cleaning_maintenance_hatch": "無塵維護倉", + "block.gtceu.cleanroom": "無塵室", + "block.gtceu.cleanroom_glass": "無塵室玻璃", + "block.gtceu.coke_oven": "焦爐", + "block.gtceu.coke_oven_bricks": "焦爐磚塊", + "block.gtceu.coke_oven_hatch": "焦爐倉", + "block.gtceu.computation_receiver_hatch": "算力資料靶倉", + "block.gtceu.computation_transmitter_hatch": "算力資料來源倉", + "block.gtceu.computer_casing": "電腦外殼", + "block.gtceu.computer_heat_vent": "電腦散熱口", + "block.gtceu.configurable_maintenance_hatch": "可配置維護倉", + "block.gtceu.corrosion_proof_casing": "耐腐蝕機械方塊", + "block.gtceu.cracked_dark_concrete_bricks": "裂紋深色混凝土磚", + "block.gtceu.cracked_light_concrete_bricks": "裂紋淺色混凝土磚", + "block.gtceu.cracked_marble_bricks": "裂紋大理岩磚", + "block.gtceu.cracked_red_granite_bricks": "裂紋紅花崗岩磚", + "block.gtceu.cracker": "裂解機", + "block.gtceu.creative_chest": "創造模式箱子", + "block.gtceu.creative_computation_provider": "創造模式算力提供器", + "block.gtceu.creative_data_access_hatch": "創造模式資料訪問倉", + "block.gtceu.creative_energy": "創造模式能量單元", + "block.gtceu.creative_tank": "創造模式儲罐", + "block.gtceu.crushing_wheels": "粉碎輪", + "block.gtceu.cupronickel_coil_block": "白銅線圈方塊", + "block.gtceu.cyan_borderless_lamp": "青色無框燈", + "block.gtceu.cyan_lamp": "青色燈", + "block.gtceu.cyan_large_metal_sheet": "青色粗紋金屬板方塊", + "block.gtceu.cyan_metal_sheet": "青色金屬板方塊", + "block.gtceu.cyan_studs": "青色橡膠混凝土", + "block.gtceu.dark_concrete": "深色混凝土", + "block.gtceu.dark_concrete_bricks": "深色混凝土磚", + "block.gtceu.dark_concrete_cobblestone": "深色混凝土鵝卵石", + "block.gtceu.dark_concrete_small_tile": "深色混凝土小片磚瓦", + "block.gtceu.dark_concrete_tile": "深色混凝土磚瓦", + "block.gtceu.dark_concrete_windmill_a": "深色混凝土風車形磚瓦 A", + "block.gtceu.dark_concrete_windmill_b": "深色混凝土風車形磚瓦 B", + "block.gtceu.data_access_hatch": "資料訪問倉", + "block.gtceu.data_bank": "資料庫", + "block.gtceu.data_receiver_hatch": "光學資料靶倉", + "block.gtceu.data_transmitter_hatch": "光學資料來源倉", + "block.gtceu.distillation_tower": "蒸餾塔", + "block.gtceu.electric_blast_furnace": "電力高爐", + "block.gtceu.electrolytic_cell": "電解器", + "block.gtceu.empty_tier_i_battery": "空電容(Tier I)", + "block.gtceu.empty_tier_ii_battery": "空電容(Tier II)", + "block.gtceu.empty_tier_iii_battery": "空電容(Tier III)", + "block.gtceu.engine_intake_casing": "引擎進氣機械方塊", + "block.gtceu.ev_16a_energy_converter": "16§e安§r§5EV§r能量轉換器", + "block.gtceu.ev_1a_energy_converter": "1§e安§r§5EV§r能量轉換器", + "block.gtceu.ev_4a_energy_converter": "4§e安§r§5EV§r能量轉換器", + "block.gtceu.ev_8a_energy_converter": "8§e安§r§5EV§r能量轉換器", + "block.gtceu.ev_air_scrubber": "§5進階空氣淨化器 III§r", + "block.gtceu.ev_alloy_smelter": "§5進階合金爐 III§r", + "block.gtceu.ev_arc_furnace": "§5進階電弧爐 III§r", + "block.gtceu.ev_assembler": "§5進階組裝機 III§r", + "block.gtceu.ev_autoclave": "§5進階高壓釜 III§r", + "block.gtceu.ev_battery_buffer_16x": "16x§5超高壓§r電池箱(§5EV§r)", + "block.gtceu.ev_battery_buffer_4x": "4x§5超高壓§r電池箱(§5EV§r)", + "block.gtceu.ev_battery_buffer_8x": "8x§5超高壓§r電池箱(§5EV§r)", + "block.gtceu.ev_bedrock_ore_miner": "§5進階基岩採礦機 III§r", + "block.gtceu.ev_bender": "§5進階卷板機 III§r", + "block.gtceu.ev_block_breaker": "§5進階方塊破壞器 III§r", + "block.gtceu.ev_brewery": "§5進階釀造室 III§r", + "block.gtceu.ev_canner": "§5進階裝罐機 III§r", + "block.gtceu.ev_centrifuge": "§5進階離心機 III§r", + "block.gtceu.ev_charger_4x": "4x§5超高壓§r充電機(§5EV§r)", + "block.gtceu.ev_chemical_bath": "§5進階化學水浴機 III§r", + "block.gtceu.ev_chemical_reactor": "§5進階化學反應器 III§r", + "block.gtceu.ev_circuit_assembler": "§5進階電路組裝機 III§r", + "block.gtceu.ev_compressor": "§5進階壓縮機 III§r", + "block.gtceu.ev_cutter": "§5進階切割機 III§r", + "block.gtceu.ev_diode": "§5EV§r二極體", + "block.gtceu.ev_distillery": "§5進階蒸餾室 III§r", + "block.gtceu.ev_electric_furnace": "§5進階電爐 III§r", + "block.gtceu.ev_electrolyzer": "§5進階電解機 III§r", + "block.gtceu.ev_electromagnetic_separator": "§5進階電磁分離機 III§r", + "block.gtceu.ev_energy_input_hatch": "§5EV§r能量輸入倉", + "block.gtceu.ev_energy_input_hatch_16a": "16安§5EV§r能量輸入倉", + "block.gtceu.ev_energy_input_hatch_4a": "4安§5EV§r能量輸入倉 ", + "block.gtceu.ev_energy_output_hatch": "§5EV§r能量輸出倉", + "block.gtceu.ev_energy_output_hatch_16a": "16安§5EV§r能量輸出倉", + "block.gtceu.ev_energy_output_hatch_4a": "4安§5EV§r能量輸出倉", + "block.gtceu.ev_extractor": "§5進階提取機 III§r", + "block.gtceu.ev_extruder": "§5進階壓模器 III§r", + "block.gtceu.ev_fermenter": "§5進階發酵槽 III§r", + "block.gtceu.ev_fisher": "§5進階捕魚機 III§r", + "block.gtceu.ev_fluid_drilling_rig": "§5進階流體鑽機 III§r", + "block.gtceu.ev_fluid_heater": "§5進階流體加熱器 III§r", + "block.gtceu.ev_fluid_passthrough_hatch": "§5EV§r流體通行倉", + "block.gtceu.ev_fluid_solidifier": "§5進階流體固化器 III§r", + "block.gtceu.ev_forge_hammer": "§5進階鍛造錘 III§r", + "block.gtceu.ev_forming_press": "§5進階衝壓機床 III§r", + "block.gtceu.ev_gas_collector": "§5進階集氣室 III§r", + "block.gtceu.ev_hermetic_casing": "密封機械方塊 IV", + "block.gtceu.ev_input_bus": "§5EV§r輸入匯流排", + "block.gtceu.ev_input_hatch": "§5EV§r輸入倉", + "block.gtceu.ev_input_hatch_4x": "§5EV§r四重輸入倉", + "block.gtceu.ev_input_hatch_9x": "§5EV§r九重輸入倉", + "block.gtceu.ev_item_collector": "§5進階物品收集器 III§r", + "block.gtceu.ev_item_passthrough_hatch": "§5EV§r物品通行倉", + "block.gtceu.ev_lapotronic_battery": "§5EV§r蘭波頓電池", + "block.gtceu.ev_large_miner": "§5進階大型採礦機 III§r", + "block.gtceu.ev_laser_engraver": "§5進階雷射蝕刻機 III§r", + "block.gtceu.ev_lathe": "§5進階車床 III§r", + "block.gtceu.ev_macerator": "§5進階研磨機 III§r", + "block.gtceu.ev_machine_casing": "§5EV§r機械方塊", + "block.gtceu.ev_machine_hull": "§5EV§r機器外殼", + "block.gtceu.ev_mixer": "§5進階攪拌機 III§r", + "block.gtceu.ev_muffler_hatch": "§5EV§r消音倉", + "block.gtceu.ev_ore_washer": "§5進階洗礦廠 III§r", + "block.gtceu.ev_output_bus": "§5EV§r輸出匯流排", + "block.gtceu.ev_output_hatch": "§5EV§r輸出倉", + "block.gtceu.ev_output_hatch_4x": "§5EV§r四重輸出倉", + "block.gtceu.ev_output_hatch_9x": "§5EV§r九重輸出倉", + "block.gtceu.ev_packer": "§5進階打包機 III§r", + "block.gtceu.ev_polarizer": "§5進階兩極磁化機 III§r", + "block.gtceu.ev_pump": "§5進階泵 III§r", + "block.gtceu.ev_rock_crusher": "§5進階碎岩機 III§r", + "block.gtceu.ev_rotor_holder": "§5EV§r轉子支架", + "block.gtceu.ev_scanner": "§5進階掃描器 III§r", + "block.gtceu.ev_sifter": "§5進階篩選機 III§r", + "block.gtceu.ev_substation_input_hatch_64a": "64安§5EV§r變電能量輸入倉", + "block.gtceu.ev_substation_output_hatch_64a": "64安§5EV§r變電能量輸出倉", + "block.gtceu.ev_super_chest": "超級箱 IV", + "block.gtceu.ev_super_tank": "超級缸 IV", + "block.gtceu.ev_thermal_centrifuge": "§5進階熱力離心機 III§r", + "block.gtceu.ev_transformer_16a": "§5超高壓§r高能變壓器(§5EV§r)", + "block.gtceu.ev_transformer_1a": "§5超高壓§r變壓器(§5EV§r)", + "block.gtceu.ev_transformer_2a": "§5超高壓§r進階變壓器(§5EV§r)", + "block.gtceu.ev_transformer_4a": "§5超高壓§r高流變壓器(§5EV§r)", + "block.gtceu.ev_wiremill": "§5進階線材軋機 III§r", + "block.gtceu.ev_world_accelerator": "§5進階世界加速器 III§r", + "block.gtceu.explosion_hazard_sign_block": "爆炸危害警示方塊", + "block.gtceu.explosive.breaking_tooltip": "破壞它會引爆火藥,潛行挖掘以重新拾取", + "block.gtceu.explosive.lighting_tooltip": "無法用紅石信號引爆", + "block.gtceu.extreme_combustion_engine": "極限內燃引擎", + "block.gtceu.extreme_engine_intake_casing": "極限引擎進氣機械方塊", + "block.gtceu.filter_casing": "過濾器機械方塊", + "block.gtceu.fire_hazard_sign_block": "易燃危害警示方塊", + "block.gtceu.firebricks": "耐火磚塊", + "block.gtceu.foam": "建築泡沫", + "block.gtceu.frost_hazard_sign_block": "低溫危害警示方塊", + "block.gtceu.frostproof_machine_casing": "鋁製防凍機械方塊", + "block.gtceu.fusion_casing": "核融合機械方塊", + "block.gtceu.fusion_casing_mk2": "核融合機械方塊 MK-II", + "block.gtceu.fusion_casing_mk3": "核融合機械方塊 MK-III", + "block.gtceu.fusion_coil": "核融合線圈方塊", + "block.gtceu.fusion_glass": "核融合玻璃", + "block.gtceu.gas_large_turbine": "大型燃氣渦輪", + "block.gtceu.generic_hazard_sign_block": "泛用危害警示方塊", + "block.gtceu.gold_drum": "金桶", + "block.gtceu.gray_borderless_lamp": "灰色無框燈", + "block.gtceu.gray_lamp": "灰色燈", + "block.gtceu.gray_large_metal_sheet": "灰色粗紋金屬板方塊", + "block.gtceu.gray_metal_sheet": "灰色金屬板方塊", + "block.gtceu.gray_studs": "灰色橡膠混凝土", + "block.gtceu.green_borderless_lamp": "綠色無框燈", + "block.gtceu.green_lamp": "綠色燈", + "block.gtceu.green_large_metal_sheet": "綠色粗紋金屬板方塊", + "block.gtceu.green_metal_sheet": "綠色金屬板方塊", + "block.gtceu.green_studs": "綠色橡膠混凝土", + "block.gtceu.gregification_hazard_sign_block": "格雷化危害警示方塊", + "block.gtceu.heat_vent": "散熱片", + "block.gtceu.heatproof_machine_casing": "殷鋼隔熱機械方塊", + "block.gtceu.high_performance_computation_array": "高效能運算陣列(HPCA)", + "block.gtceu.high_power_casing": "高能機械方塊", + "block.gtceu.high_pressure_hazard_sign_block": "高壓力危害警示方塊", + "block.gtceu.high_temperature_hazard_sign_block": "高溫危害警示方塊", + "block.gtceu.high_temperature_smelting_casing": "高溫冶煉機械方塊", + "block.gtceu.high_voltage_hazard_sign_block": "高壓電危害警示方塊", + "block.gtceu.hp_steam_alloy_smelter": "高壓蒸汽合金爐", + "block.gtceu.hp_steam_compressor": "高壓蒸汽壓縮機", + "block.gtceu.hp_steam_extractor": "高壓蒸汽提取機", + "block.gtceu.hp_steam_forge_hammer": "高壓蒸汽鍛造錘", + "block.gtceu.hp_steam_furnace": "高壓蒸汽熔爐", + "block.gtceu.hp_steam_liquid_boiler": "高壓蒸汽液體燃料鍋爐", + "block.gtceu.hp_steam_macerator": "高壓蒸汽研磨機", + "block.gtceu.hp_steam_miner": "高壓蒸汽採礦機", + "block.gtceu.hp_steam_rock_crusher": "高壓蒸汽碎岩機", + "block.gtceu.hp_steam_solar_boiler": "高壓蒸汽太陽能鍋爐", + "block.gtceu.hp_steam_solid_boiler": "高壓蒸汽固體燃料鍋爐", + "block.gtceu.hpca_active_cooler_component": "HPCA主動冷卻元件", + "block.gtceu.hpca_advanced_computation_component": "HPCA高階計算元件", + "block.gtceu.hpca_bridge_component": "HPCA橋接元件", + "block.gtceu.hpca_computation_component": "HPCA計算元件", + "block.gtceu.hpca_empty_component": "空HPCA元件", + "block.gtceu.hpca_heat_sink_component": "HPCA散熱元件", + "block.gtceu.hssg_coil_block": "高速鋼-G線圈方塊", + "block.gtceu.huge_duct_pipe": "巨型風管", + "block.gtceu.hv_16a_energy_converter": "16§e安§r§6HV§r能量轉換器", + "block.gtceu.hv_1a_energy_converter": "1§e安§r§6HV§r能量轉換器", + "block.gtceu.hv_4a_energy_converter": "4§e安§r§6HV§r能量轉換器", + "block.gtceu.hv_8a_energy_converter": "8§e安§r§6HV§r能量轉換器", + "block.gtceu.hv_air_scrubber": "§6進階空氣淨化器 II§r", + "block.gtceu.hv_alloy_smelter": "§6進階合金爐 II§r", + "block.gtceu.hv_arc_furnace": "§6進階電弧爐 II§r", + "block.gtceu.hv_assembler": "§6進階組裝機 II§r", + "block.gtceu.hv_autoclave": "§6進階高壓釜 II§r", + "block.gtceu.hv_battery_buffer_16x": "16x§6高壓§r電池箱(§6HV§r)", + "block.gtceu.hv_battery_buffer_4x": "4x§6高壓§r電池箱(§6HV§r)", + "block.gtceu.hv_battery_buffer_8x": "8x§6高壓§r電池箱(§6HV§r)", + "block.gtceu.hv_bedrock_ore_miner": "§6進階基岩採礦機 II§r", + "block.gtceu.hv_bender": "§6進階卷板機 II§r", + "block.gtceu.hv_block_breaker": "§6進階方塊破壞機 II§r", + "block.gtceu.hv_brewery": "§6進階釀造室 II§r", + "block.gtceu.hv_buffer": "§6進階緩衝器 II§r", + "block.gtceu.hv_canner": "§6進階裝罐機 II§r", + "block.gtceu.hv_centrifuge": "§6進階離心機 II§r", + "block.gtceu.hv_charger_4x": "4x§6高壓§r充電機(§6HV§r)", + "block.gtceu.hv_chemical_bath": "§6進階化學水浴機 II§r", + "block.gtceu.hv_chemical_reactor": "§6進階化學反應器 II§r", + "block.gtceu.hv_circuit_assembler": "§6進階電路組裝機 II§r", + "block.gtceu.hv_combustion": "§6進階內燃發電機 II§r", + "block.gtceu.hv_compressor": "§6進階壓縮機 II§r", + "block.gtceu.hv_cutter": "§6進階切割機 II§r", + "block.gtceu.hv_diode": "§6HV§r二極體", + "block.gtceu.hv_distillery": "§6進階蒸餾室 II§r", + "block.gtceu.hv_electric_furnace": "§6進階電爐 II§r", + "block.gtceu.hv_electrolyzer": "§6進階電解機 II§r", + "block.gtceu.hv_electromagnetic_separator": "§6進階電磁分離機 II§r", + "block.gtceu.hv_energy_input_hatch": "§6HV§r能量輸入倉", + "block.gtceu.hv_energy_output_hatch": "§6HV§r能量輸出倉", + "block.gtceu.hv_extractor": "§6進階提取機 II§r", + "block.gtceu.hv_extruder": "§6進階壓模器 II§r", + "block.gtceu.hv_fermenter": "§6進階發酵槽 II§r", + "block.gtceu.hv_fisher": "§6進階捕魚機 II§r", + "block.gtceu.hv_fluid_drilling_rig": "§6進階流體鑽機 II§r", + "block.gtceu.hv_fluid_heater": "§6進階流體加熱器 II§r", + "block.gtceu.hv_fluid_passthrough_hatch": "§6HV§r流體通行倉", + "block.gtceu.hv_fluid_solidifier": "§6進階流體固化器 II§r", + "block.gtceu.hv_forge_hammer": "§6進階鍛造錘 II§r", + "block.gtceu.hv_forming_press": "§6進階衝壓機床 II§r", + "block.gtceu.hv_gas_collector": "§6進階集氣室 II§r", + "block.gtceu.hv_gas_turbine": "§6進階燃氣輪機 II§r", + "block.gtceu.hv_hermetic_casing": "密封機械方塊 III", + "block.gtceu.hv_input_bus": "§6HV§r輸入匯流排", + "block.gtceu.hv_input_hatch": "§6HV§r輸入倉", + "block.gtceu.hv_item_collector": "§6進階物品收集器 II§r", + "block.gtceu.hv_item_passthrough_hatch": "§6HV§r物品通行倉", + "block.gtceu.hv_laser_engraver": "§6進階雷射蝕刻機 II§r", + "block.gtceu.hv_lathe": "§6進階車床 II§r", + "block.gtceu.hv_macerator": "§6進階研磨機 II§r", + "block.gtceu.hv_machine_casing": "§6HV§r機械方塊", + "block.gtceu.hv_machine_hull": "§6HV§r機器外殼", + "block.gtceu.hv_miner": "§6進階採礦機 II§r", + "block.gtceu.hv_mixer": "§6進階攪拌機 II§r", + "block.gtceu.hv_muffler_hatch": "§6HV§r消音倉", + "block.gtceu.hv_ore_washer": "§6進階洗礦廠 II§r", + "block.gtceu.hv_output_bus": "§6HV§r輸出匯流排", + "block.gtceu.hv_output_hatch": "§6HV§r輸出倉", + "block.gtceu.hv_packer": "§6進階打包機 II§r", + "block.gtceu.hv_polarizer": "§6進階兩極磁化機 II§r", + "block.gtceu.hv_pump": "§6進階泵 II§r", + "block.gtceu.hv_rock_crusher": "§6進階碎岩機 II§r", + "block.gtceu.hv_rotor_holder": "§6HV§r轉子支架", + "block.gtceu.hv_scanner": "§6進階掃描器 II§r", + "block.gtceu.hv_sifter": "§6進階篩選機 II§r", + "block.gtceu.hv_steam_turbine": "§6進階蒸汽輪機 II§r", + "block.gtceu.hv_super_chest": "超級箱 III", + "block.gtceu.hv_super_tank": "超級缸 III", + "block.gtceu.hv_thermal_centrifuge": "§6進階熱力離心機 II§r", + "block.gtceu.hv_transformer_16a": "§6高壓§r高能變壓器(§6HV§r)", + "block.gtceu.hv_transformer_1a": "§6高壓§r變壓器(§6HV§r)", + "block.gtceu.hv_transformer_2a": "§6高壓§r進階變壓器(§6HV§r)", + "block.gtceu.hv_transformer_4a": "§6高壓§r高流變壓器(§6HV§r)", + "block.gtceu.hv_wiremill": "§6進階線材軋機 II§r", + "block.gtceu.hv_world_accelerator": "§6進階世界加速器 II§r", + "block.gtceu.implosion_compressor": "聚爆壓縮機", + "block.gtceu.industrial_steam_casing": "工業蒸汽機械方塊", + "block.gtceu.industrial_tnt": "工業TNT", + "block.gtceu.inert_machine_casing": "聚四氟乙烯化學惰性機械方塊", + "block.gtceu.itnt.drops_tooltip": "爆炸範圍比TNT大得多,所有被摧毀的方塊都會掉落", + "block.gtceu.iv_1024a_laser_source_hatch": "1024§e安§r§9IV§r雷射源倉", + "block.gtceu.iv_1024a_laser_target_hatch": "1024§e安§r§9IV§r雷射靶倉", + "block.gtceu.iv_16a_energy_converter": "16§e安§r§9IV§r能量轉換器", + "block.gtceu.iv_1a_energy_converter": "1§e安§r§9IV§r能量轉換器", + "block.gtceu.iv_256a_laser_source_hatch": "256§e安§r§9IV§r雷射源倉", + "block.gtceu.iv_256a_laser_target_hatch": "256§e安§r§9IV§r雷射靶倉", + "block.gtceu.iv_4096a_laser_source_hatch": "4096§e安§r§9IV§r雷射源倉", + "block.gtceu.iv_4096a_laser_target_hatch": "4096§e安§r§9IV§r雷射靶倉", + "block.gtceu.iv_4a_energy_converter": "4§e安§r§9IV§r能量轉換器", + "block.gtceu.iv_8a_energy_converter": "8§e安§r§9IV§r能量轉換器", + "block.gtceu.iv_alloy_smelter": "§9精英合金爐§r", + "block.gtceu.iv_arc_furnace": "§9精英電弧爐§r", + "block.gtceu.iv_assembler": "§9精英組裝機§r", + "block.gtceu.iv_autoclave": "§9精英高壓釜§r", + "block.gtceu.iv_battery_buffer_16x": "16x§9強導壓§r電池箱(§9IV§r)", + "block.gtceu.iv_battery_buffer_4x": "4x§9強導壓§r電池箱(§9IV§r)", + "block.gtceu.iv_battery_buffer_8x": "8x§9強導壓§r電池箱(§9IV§r)", + "block.gtceu.iv_bender": "§9精英卷板機§r", + "block.gtceu.iv_brewery": "§9精英釀造室§r", + "block.gtceu.iv_canner": "§9精英裝罐機§r", + "block.gtceu.iv_centrifuge": "§9精英離心機§r", + "block.gtceu.iv_charger_4x": "4x§9強導壓§r充電機(§9IV§r)", + "block.gtceu.iv_chemical_bath": "§9精英化學水浴機§r", + "block.gtceu.iv_chemical_reactor": "§9精英化學反應器§r", + "block.gtceu.iv_circuit_assembler": "§9精英電路組裝機§r", + "block.gtceu.iv_compressor": "§9精英壓縮機§r", + "block.gtceu.iv_cutter": "§9精英切割機§r", + "block.gtceu.iv_diode": "§9IV§r二極體", + "block.gtceu.iv_distillery": "§9精英蒸餾室§r", + "block.gtceu.iv_electric_furnace": "§9精英電爐§r", + "block.gtceu.iv_electrolyzer": "§9精英電解機§r", + "block.gtceu.iv_electromagnetic_separator": "§9精英電磁分離機§r", + "block.gtceu.iv_energy_input_hatch": "§9IV§r能量輸入倉", + "block.gtceu.iv_energy_input_hatch_16a": "16安§9IV§r能量輸入倉", + "block.gtceu.iv_energy_input_hatch_4a": "4安§9IV§r能量輸入倉", + "block.gtceu.iv_energy_output_hatch": "§9IV§r能量輸出倉", + "block.gtceu.iv_energy_output_hatch_16a": "16安§9IV§r能量輸出倉", + "block.gtceu.iv_energy_output_hatch_4a": "4安§9IV§r能量輸出倉", + "block.gtceu.iv_extractor": "§9精英提取機§r", + "block.gtceu.iv_extruder": "§9精英壓模器§r", + "block.gtceu.iv_fermenter": "§9精英發酵槽§r", + "block.gtceu.iv_fisher": "§9精英捕魚機§r", + "block.gtceu.iv_fluid_heater": "§9精英流體加熱器§r", + "block.gtceu.iv_fluid_passthrough_hatch": "§9IV§r流體通行倉", + "block.gtceu.iv_fluid_solidifier": "§9精英流體固化器§r", + "block.gtceu.iv_forge_hammer": "§9精英鍛造錘§r", + "block.gtceu.iv_forming_press": "§9精英衝壓機床§r", + "block.gtceu.iv_gas_collector": "§9精英集氣室§r", + "block.gtceu.iv_hermetic_casing": "密封機械方塊 V", + "block.gtceu.iv_input_bus": "§9IV§r輸入匯流排", + "block.gtceu.iv_input_hatch": "§9IV§r輸入倉", + "block.gtceu.iv_input_hatch_4x": "§9IV§r四重輸入倉", + "block.gtceu.iv_input_hatch_9x": "§9IV§r九重輸入倉", + "block.gtceu.iv_item_passthrough_hatch": "§9IV§r物品通行倉", + "block.gtceu.iv_lapotronic_battery": "§9IV§r蘭波頓電池", + "block.gtceu.iv_large_miner": "§9精英大型採礦機§r", + "block.gtceu.iv_laser_engraver": "§9精英雷射蝕刻機§r", + "block.gtceu.iv_lathe": "§9精英車床§r", + "block.gtceu.iv_macerator": "§9精英研磨機§r", + "block.gtceu.iv_machine_casing": "§9IV§r機械方塊", + "block.gtceu.iv_machine_hull": "§9IV§r機器外殼", + "block.gtceu.iv_mixer": "§9精英攪拌機§r", + "block.gtceu.iv_muffler_hatch": "§9IV§r消音倉", + "block.gtceu.iv_ore_washer": "§9精英洗礦廠§r", + "block.gtceu.iv_output_bus": "§9IV§r輸出匯流排", + "block.gtceu.iv_output_hatch": "§9IV§r輸出倉", + "block.gtceu.iv_output_hatch_4x": "§9IV§r四重輸出倉", + "block.gtceu.iv_output_hatch_9x": "§9IV§r九重輸出倉", + "block.gtceu.iv_packer": "§9精英打包機§r", + "block.gtceu.iv_parallel_hatch": "§9IV§r平行控制倉", + "block.gtceu.iv_polarizer": "§9精英兩極磁化機§r", + "block.gtceu.iv_quantum_chest": "量子箱 V", + "block.gtceu.iv_quantum_tank": "量子缸 V", + "block.gtceu.iv_rock_crusher": "§9精英碎岩機§r", + "block.gtceu.iv_rotor_holder": "§9IV§r轉子支架", + "block.gtceu.iv_scanner": "§9精英掃描器§r", + "block.gtceu.iv_sifter": "§9精英篩選機§r", + "block.gtceu.iv_substation_input_hatch_64a": "64安§9IV§r變電能量輸入倉", + "block.gtceu.iv_substation_output_hatch_64a": "64安§9IV§r變電能量輸出倉", + "block.gtceu.iv_thermal_centrifuge": "§9精英熱力離心機§r", + "block.gtceu.iv_transformer_16a": "§9強導壓§r高能變壓器(§9IV§r)", + "block.gtceu.iv_transformer_1a": "§9強導壓§r變壓器(§9IV§r)", + "block.gtceu.iv_transformer_2a": "§9強導壓§r進階變壓器(§9IV§r)", + "block.gtceu.iv_transformer_4a": "§9強導壓§r高流變壓器(§9IV§r)", + "block.gtceu.iv_wiremill": "§9精英線材軋機§r", + "block.gtceu.iv_world_accelerator": "§9精英世界加速器§r", + "block.gtceu.kanthal_coil_block": "坎塔爾合金線圈方塊", + "block.gtceu.laminated_glass": "夾層玻璃", + "block.gtceu.lamp.tooltip.inverted": "反相", + "block.gtceu.lamp.tooltip.no_bloom": "無泛光", + "block.gtceu.lamp.tooltip.no_light": "無光照", + "block.gtceu.large_arc_smelter": "大型電弧爐", + "block.gtceu.large_assembler": "大型組裝廠", + "block.gtceu.large_autoclave": "大型高壓結晶室", + "block.gtceu.large_brewer": "大型釀造廠", + "block.gtceu.large_centrifuge": "大型離心機組", + "block.gtceu.large_chemical_bath": "大型化學水浴機", + "block.gtceu.large_chemical_reactor": "大型化學反應器", + "block.gtceu.large_circuit_assembler": "大型電路組裝設施", + "block.gtceu.large_combustion_engine": "大型內燃引擎", + "block.gtceu.large_cutter": "大型切割機", + "block.gtceu.large_distillery": "大型分餾蒸餾廠", + "block.gtceu.large_duct_pipe": "大型風管", + "block.gtceu.large_electrolyzer": "大型電解槽", + "block.gtceu.large_electromagnet": "大型電磁工廠", + "block.gtceu.large_engraving_laser": "大型雷射蝕刻機", + "block.gtceu.large_extractor": "大型提取機", + "block.gtceu.large_extruder": "大型壓模機", + "block.gtceu.large_maceration_tower": "大型研磨塔", + "block.gtceu.large_material_press": "大型擠壓機", + "block.gtceu.large_mixer": "大型攪拌罐", + "block.gtceu.large_packer": "大型打包機", + "block.gtceu.large_scale_assembler_casing": "大型組裝機機械方塊", + "block.gtceu.large_sifting_funnel": "大型篩選漏斗", + "block.gtceu.large_solidifier": "大型固化陣列", + "block.gtceu.large_wiremill": "大型線材工廠", + "block.gtceu.laser_hazard_sign_block": "雷射危害警示方塊", + "block.gtceu.laser_safe_engraving_casing": "雷射安全機械方塊", + "block.gtceu.light_blue_borderless_lamp": "淺藍色無框燈", + "block.gtceu.light_blue_lamp": "淺藍色燈", + "block.gtceu.light_blue_large_metal_sheet": "淺藍色粗紋金屬板方塊", + "block.gtceu.light_blue_metal_sheet": "淺藍色金屬板方塊", + "block.gtceu.light_blue_studs": "淺藍色橡膠混凝土", + "block.gtceu.light_concrete": "淺色混凝土", + "block.gtceu.light_concrete_bricks": "淺色混凝土磚", + "block.gtceu.light_concrete_cobblestone": "淺色混凝土鵝卵石", + "block.gtceu.light_concrete_small_tile": "淺色混凝土小片磚瓦", + "block.gtceu.light_concrete_tile": "淺色混凝土磚瓦", + "block.gtceu.light_concrete_windmill_a": "淺色混凝土風車形磚瓦 A", + "block.gtceu.light_concrete_windmill_b": "淺色混凝土風車形磚瓦 B", + "block.gtceu.light_gray_borderless_lamp": "淺灰色無框燈", + "block.gtceu.light_gray_lamp": "淺灰色燈", + "block.gtceu.light_gray_large_metal_sheet": "淺灰色粗紋金屬板方塊", + "block.gtceu.light_gray_metal_sheet": "淺灰色金屬板方塊", + "block.gtceu.light_gray_studs": "淺灰色橡膠混凝土", + "block.gtceu.lime_borderless_lamp": "淺綠色無框燈", + "block.gtceu.lime_lamp": "淺綠色燈", + "block.gtceu.lime_large_metal_sheet": "淺綠色粗紋金屬板方塊", + "block.gtceu.lime_metal_sheet": "淺綠色金屬板方塊", + "block.gtceu.lime_studs": "淺綠色橡膠混凝土", + "block.gtceu.long_distance_fluid_pipeline": "長距離流體管道", + "block.gtceu.long_distance_fluid_pipeline_endpoint": "長距離流體管道介面", + "block.gtceu.long_distance_item_pipeline": "長距離物品管道", + "block.gtceu.long_distance_item_pipeline_endpoint": "長距離物品管道介面", + "block.gtceu.long_distance_item_pipeline_input_endpoint": "輸入介面", + "block.gtceu.long_distance_item_pipeline_input_pos": " - 輸入:%s", + "block.gtceu.long_distance_item_pipeline_network_header": "網路:", + "block.gtceu.long_distance_item_pipeline_no_network": "找不到網路", + "block.gtceu.long_distance_item_pipeline_output_endpoint": "輸出介面", + "block.gtceu.long_distance_item_pipeline_output_pos": " - 輸出:%s", + "block.gtceu.long_distance_item_pipeline_pipe_count": " - 管道:%s", + "block.gtceu.lp_steam_alloy_smelter": "低壓蒸汽合金爐", + "block.gtceu.lp_steam_compressor": "低壓蒸汽壓縮機", + "block.gtceu.lp_steam_extractor": "低壓蒸汽提取機", + "block.gtceu.lp_steam_forge_hammer": "低壓蒸汽鍛造錘", + "block.gtceu.lp_steam_furnace": "低壓蒸汽熔爐", + "block.gtceu.lp_steam_liquid_boiler": "低壓蒸汽液體燃料鍋爐", + "block.gtceu.lp_steam_macerator": "低壓蒸汽研磨機", + "block.gtceu.lp_steam_miner": "低壓蒸汽採礦機", + "block.gtceu.lp_steam_rock_crusher": "低壓蒸汽碎岩機", + "block.gtceu.lp_steam_solar_boiler": "低壓蒸汽太陽能鍋爐", + "block.gtceu.lp_steam_solid_boiler": "低壓蒸汽固體燃料鍋爐", + "block.gtceu.luv_1024a_laser_source_hatch": "1024§e安§r§dLuV§r雷射源倉", + "block.gtceu.luv_1024a_laser_target_hatch": "1024§e安§r§dLuV§r雷射靶倉", + "block.gtceu.luv_16a_energy_converter": "16§e安§r§dLuV§r能量轉換器", + "block.gtceu.luv_1a_energy_converter": "1§e安§r§dLuV§r能量轉換器", + "block.gtceu.luv_256a_laser_source_hatch": "256§e安§r§dLuV§r雷射源倉", + "block.gtceu.luv_256a_laser_target_hatch": "256§e安§r§dLuV§r雷射靶倉", + "block.gtceu.luv_4096a_laser_source_hatch": "4096§e安§r§dLuV§r雷射源倉", + "block.gtceu.luv_4096a_laser_target_hatch": "4096§e安§r§dLuV§r雷射靶倉", + "block.gtceu.luv_4a_energy_converter": "4§e安§r§dLuV§r能量轉換器", + "block.gtceu.luv_8a_energy_converter": "8§e安§r§dLuV§r能量轉換器", + "block.gtceu.luv_alloy_smelter": "§d精英合金爐 II§r", + "block.gtceu.luv_arc_furnace": "§d精英電弧爐 II§r", + "block.gtceu.luv_assembler": "§d精英組裝機 II§r", + "block.gtceu.luv_autoclave": "§d精英高壓釜 II§r", + "block.gtceu.luv_battery_buffer_16x": "16x§d劇差壓§r電池箱(§dLuV§r)", + "block.gtceu.luv_battery_buffer_4x": "4x§d劇差壓§r電池箱(§dLuV§r)", + "block.gtceu.luv_battery_buffer_8x": "8x§d劇差壓§r電池箱(§dLuV§r)", + "block.gtceu.luv_bender": "§d精英卷板機 II§r", + "block.gtceu.luv_brewery": "§d精英釀造室 II§r", + "block.gtceu.luv_canner": "§d精英裝罐機 II§r", + "block.gtceu.luv_centrifuge": "§d精英離心機 II§r", + "block.gtceu.luv_charger_4x": "4x§d劇差壓§r充電機(§dLuV§r)", + "block.gtceu.luv_chemical_bath": "§d精英化學水浴機 II§r", + "block.gtceu.luv_chemical_reactor": "§d精英化學反應器 II§r", + "block.gtceu.luv_circuit_assembler": "§d精英電路組裝機 II§r", + "block.gtceu.luv_compressor": "§d精英壓縮機 II§r", + "block.gtceu.luv_cutter": "§d精英切割機 II§r", + "block.gtceu.luv_diode": "§dLuV§r二極體", + "block.gtceu.luv_distillery": "§d精英蒸餾室 II§r", + "block.gtceu.luv_dual_input_hatch": "§dLuV§r兩用輸入倉", + "block.gtceu.luv_dual_output_hatch": "§dLuV§r兩用輸出倉", + "block.gtceu.luv_electric_furnace": "§d精英電爐 II§r", + "block.gtceu.luv_electrolyzer": "§d精英電解機 II§r", + "block.gtceu.luv_electromagnetic_separator": "§d精英電磁分離機 II§r", + "block.gtceu.luv_energy_input_hatch": "§dLuV§r能量輸入倉", + "block.gtceu.luv_energy_input_hatch_16a": "16安§dLuV§r能量輸入倉", + "block.gtceu.luv_energy_input_hatch_4a": "4安§dLuV§r能量輸入倉", + "block.gtceu.luv_energy_output_hatch": "§dLuV§r能量輸出倉", + "block.gtceu.luv_energy_output_hatch_16a": "16安§dLuV§r能量輸出倉", + "block.gtceu.luv_energy_output_hatch_4a": "4安§dLuV§r能量輸出倉", + "block.gtceu.luv_extractor": "§d精英提取機 II§r", + "block.gtceu.luv_extruder": "§d精英壓模器 II§r", + "block.gtceu.luv_fermenter": "§d精英發酵槽 II§r", + "block.gtceu.luv_fisher": "§d精英捕魚機 II§r", + "block.gtceu.luv_fluid_heater": "§d精英流體加熱器 II§r", + "block.gtceu.luv_fluid_passthrough_hatch": "§dLuV§r流體通行倉", + "block.gtceu.luv_fluid_solidifier": "§d精英流體固化器 II§r", + "block.gtceu.luv_forge_hammer": "§d精英鍛造錘 II§r", + "block.gtceu.luv_forming_press": "§d精英衝壓機床 II§r", + "block.gtceu.luv_fusion_reactor": "核融合反應爐控制電腦 MK I", + "block.gtceu.luv_gas_collector": "§d精英集氣室 II§r", + "block.gtceu.luv_hermetic_casing": "密封機械方塊 VI", + "block.gtceu.luv_input_bus": "§dLuV§r輸入匯流排", + "block.gtceu.luv_input_hatch": "§dLuV§r輸入倉", + "block.gtceu.luv_input_hatch_4x": "§dLuV§r四重輸入倉", + "block.gtceu.luv_input_hatch_9x": "§dLuV§r九重輸入倉", + "block.gtceu.luv_item_passthrough_hatch": "§dLuV§r物品通行倉", + "block.gtceu.luv_lapotronic_battery": "§dLuV§r蘭波頓電池", + "block.gtceu.luv_large_miner": "§d精英大型採礦機 II§r", + "block.gtceu.luv_laser_engraver": "§d精英雷射蝕刻機 II§r", + "block.gtceu.luv_lathe": "§d精英車床 II§r", + "block.gtceu.luv_macerator": "§d精英研磨機 II§r", + "block.gtceu.luv_machine_casing": "§dLuV§r機械方塊", + "block.gtceu.luv_machine_hull": "§dLuV§r機器外殼", + "block.gtceu.luv_mixer": "§d精英攪拌機 II§r", + "block.gtceu.luv_muffler_hatch": "§dLuV§r消音倉", + "block.gtceu.luv_ore_washer": "§d精英洗礦廠 II§r", + "block.gtceu.luv_output_bus": "§dLuV§r輸出匯流排", + "block.gtceu.luv_output_hatch": "§dLuV§r輸出倉", + "block.gtceu.luv_output_hatch_4x": "§dLuV§r四重輸出倉", + "block.gtceu.luv_output_hatch_9x": "§dLuV§r九重輸出倉", + "block.gtceu.luv_packer": "§d精英打包機 II§r", + "block.gtceu.luv_parallel_hatch": "§dLuV§r平行控制倉", + "block.gtceu.luv_polarizer": "§d精英兩極磁化機 II§r", + "block.gtceu.luv_quantum_chest": "量子箱 VI", + "block.gtceu.luv_quantum_tank": "量子缸 VI", + "block.gtceu.luv_rock_crusher": "§d精英碎岩機 II§r", + "block.gtceu.luv_rotor_holder": "§dLuV§r轉子支架", + "block.gtceu.luv_scanner": "§d精英掃描器 II§r", + "block.gtceu.luv_sifter": "§d精英篩選機 II§r", + "block.gtceu.luv_substation_input_hatch_64a": "64安§dLuV§r變電能量輸入倉", + "block.gtceu.luv_substation_output_hatch_64a": "64安§dLuV§r變電能量輸出倉", + "block.gtceu.luv_thermal_centrifuge": "§d精英熱力離心機 II§r", + "block.gtceu.luv_transformer_16a": "§d劇差壓§r高能變壓器(§dLuV§r)", + "block.gtceu.luv_transformer_1a": "§d劇差壓§r變壓器(§dLuV§r)", + "block.gtceu.luv_transformer_2a": "§d劇差壓§r進階變壓器(§dLuV§r)", + "block.gtceu.luv_transformer_4a": "§d劇差壓§r高流變壓器(§dLuV§r)", + "block.gtceu.luv_wiremill": "§d精英線材軋機 II§r", + "block.gtceu.luv_world_accelerator": "§d精英世界加速器 II§r", + "block.gtceu.lv_16a_energy_converter": "16§e安§r§7LV§r能量轉換器", + "block.gtceu.lv_1a_energy_converter": "1§e安§r§7LV§r能量轉換器", + "block.gtceu.lv_4a_energy_converter": "4§e安§r§7LV§r能量轉換器", + "block.gtceu.lv_8a_energy_converter": "8§e安§r§7LV§r能量轉換器", + "block.gtceu.lv_air_scrubber": "基礎空氣淨化器§r", + "block.gtceu.lv_alloy_smelter": "基礎合金爐§r", + "block.gtceu.lv_arc_furnace": "基礎電弧爐§r", + "block.gtceu.lv_assembler": "基礎組裝機§r", + "block.gtceu.lv_autoclave": "基礎高壓釜§r", + "block.gtceu.lv_battery_buffer_16x": "16x§7低壓§r電池箱(§7LV§r)", + "block.gtceu.lv_battery_buffer_4x": "4x§7低壓§r電池箱(§7LV§r)", + "block.gtceu.lv_battery_buffer_8x": "8x§7低壓§r電池箱(§7LV§r)", + "block.gtceu.lv_bender": "基礎卷板機§r", + "block.gtceu.lv_block_breaker": "基礎方塊破壞器§r", + "block.gtceu.lv_brewery": "基礎釀造室§r", + "block.gtceu.lv_buffer": "基礎緩衝器§r", + "block.gtceu.lv_canner": "基礎裝罐機§r", + "block.gtceu.lv_centrifuge": "基礎離心機§r", + "block.gtceu.lv_charger_4x": "4x§7低壓§r充電機(§7LV§r)", + "block.gtceu.lv_chemical_bath": "基礎化學水浴機§r", + "block.gtceu.lv_chemical_reactor": "基礎化學反應器§r", + "block.gtceu.lv_circuit_assembler": "基礎電路組裝機§r", + "block.gtceu.lv_combustion": "基礎內燃發電機§r", + "block.gtceu.lv_compressor": "基礎壓縮機§r", + "block.gtceu.lv_cutter": "基礎切割機§r", + "block.gtceu.lv_diode": "§7LV§r二極體", + "block.gtceu.lv_distillery": "基礎蒸餾室§r", + "block.gtceu.lv_electric_furnace": "基礎電爐§r", + "block.gtceu.lv_electrolyzer": "基礎電解機§r", + "block.gtceu.lv_electromagnetic_separator": "基礎電磁分離機§r", + "block.gtceu.lv_energy_input_hatch": "§7LV§r能量輸入倉", + "block.gtceu.lv_energy_output_hatch": "§7LV§r能量輸出倉", + "block.gtceu.lv_extractor": "基礎提取機§r", + "block.gtceu.lv_extruder": "基礎壓模器§r", + "block.gtceu.lv_fermenter": "基礎發酵槽§r", + "block.gtceu.lv_fisher": "基礎捕魚機§r", + "block.gtceu.lv_fluid_heater": "基礎流體加熱器§r", + "block.gtceu.lv_fluid_passthrough_hatch": "§7LV§r流體通行倉", + "block.gtceu.lv_fluid_solidifier": "基礎流體固化器§r", + "block.gtceu.lv_forge_hammer": "基礎鍛造錘§r", + "block.gtceu.lv_forming_press": "基礎衝壓機床§r", + "block.gtceu.lv_gas_collector": "基礎集氣室§r", + "block.gtceu.lv_gas_turbine": "基礎燃氣輪機§r", + "block.gtceu.lv_hermetic_casing": "密封機械方塊 I", + "block.gtceu.lv_input_bus": "§7LV§r輸入匯流排", + "block.gtceu.lv_input_hatch": "§7LV§r輸入倉", + "block.gtceu.lv_item_collector": "基礎物品收集器§r", + "block.gtceu.lv_item_passthrough_hatch": "§7LV§r物品通行倉", + "block.gtceu.lv_laser_engraver": "基礎雷射蝕刻機§r", + "block.gtceu.lv_lathe": "基礎車床§r", + "block.gtceu.lv_macerator": "基礎研磨機§r", + "block.gtceu.lv_machine_casing": "§7LV§r機械方塊", + "block.gtceu.lv_machine_hull": "§7LV§r機器外殼", + "block.gtceu.lv_miner": "基礎採礦機§r", + "block.gtceu.lv_mixer": "基礎攪拌機§r", + "block.gtceu.lv_muffler_hatch": "§7LV§r消音倉", + "block.gtceu.lv_ore_washer": "基礎洗礦廠§r", + "block.gtceu.lv_output_bus": "§7LV§r輸出匯流排", + "block.gtceu.lv_output_hatch": "§7LV§r輸出倉", + "block.gtceu.lv_packer": "基礎打包機§r", + "block.gtceu.lv_polarizer": "基礎兩極磁化機§r", + "block.gtceu.lv_pump": "基礎泵§r", + "block.gtceu.lv_rock_crusher": "基礎碎岩機§r", + "block.gtceu.lv_scanner": "基礎掃描器§r", + "block.gtceu.lv_sifter": "基礎篩選機§r", + "block.gtceu.lv_steam_turbine": "基礎蒸汽輪機§r", + "block.gtceu.lv_super_chest": "超級箱 I", + "block.gtceu.lv_super_tank": "超級缸 I", + "block.gtceu.lv_thermal_centrifuge": "基礎熱力離心機§r", + "block.gtceu.lv_transformer_16a": "§7低壓§r高能變壓器(§7LV§r)", + "block.gtceu.lv_transformer_1a": "§7低壓§r變壓器(§7LV§r)", + "block.gtceu.lv_transformer_2a": "§7低壓§r進階變壓器(§7LV§r)", + "block.gtceu.lv_transformer_4a": "§7低壓§r高流變壓器(§7LV§r)", + "block.gtceu.lv_wiremill": "基礎線材軋機§r", + "block.gtceu.lv_world_accelerator": "基礎世界加速器§r", + "block.gtceu.magenta_borderless_lamp": "洋紅色無框燈", + "block.gtceu.magenta_lamp": "洋紅色燈", + "block.gtceu.magenta_large_metal_sheet": "洋紅色粗紋金屬板方塊", + "block.gtceu.magenta_metal_sheet": "洋紅色金屬板方塊", + "block.gtceu.magenta_studs": "洋紅色橡膠混凝土", + "block.gtceu.magic_hazard_sign_block": "魔力危害警示方塊", + "block.gtceu.magnetic_hazard_sign_block": "強磁危害警示方塊", + "block.gtceu.maintenance_hatch": "維護倉", + "block.gtceu.marble": "大理岩", + "block.gtceu.marble_bricks": "大理岩磚", + "block.gtceu.marble_cobblestone": "大理岩鵝卵石", + "block.gtceu.marble_small_tile": "大理岩小片磚瓦", + "block.gtceu.marble_tile": "大理岩磚瓦", + "block.gtceu.marble_windmill_a": "大理岩風車形磚瓦 A", + "block.gtceu.marble_windmill_b": "大理岩風車形磚瓦 B", + "block.gtceu.max_16a_energy_converter": "16§e安§r§c§lMAX§r能量轉換器", + "block.gtceu.max_1a_energy_converter": "1§e安§r§c§lMAX§r能量轉換器", + "block.gtceu.max_4a_energy_converter": "4§e安§r§c§lMAX§r能量轉換器", + "block.gtceu.max_8a_energy_converter": "8§e安§r§c§lMAX§r能量轉換器", + "block.gtceu.max_battery_buffer_16x": "16x上限壓電池箱(§c§lMAX§r)", + "block.gtceu.max_battery_buffer_4x": "4x上限壓電池箱(§c§lMAX§r)", + "block.gtceu.max_battery_buffer_8x": "8x上限壓電池箱(§c§lMAX§r)", + "block.gtceu.max_charger_4x": "4x上限壓充電機(§c§lMAX§r)", + "block.gtceu.max_dual_input_hatch": "§c§lMAX§r兩用輸入倉", + "block.gtceu.max_dual_output_hatch": "§c§lMAX§r兩用輸出倉", + "block.gtceu.max_energy_input_hatch": "§c§lMAX§r能量輸入倉", + "block.gtceu.max_energy_input_hatch_16a": "16安§c§lMAX§r能量輸入倉", + "block.gtceu.max_energy_input_hatch_4a": "4安§c§lMAX§r能量輸入倉", + "block.gtceu.max_energy_output_hatch": "§c§lMAX§r能量輸出倉", + "block.gtceu.max_energy_output_hatch_16a": "16安§c§lMAX§r能量輸出倉", + "block.gtceu.max_energy_output_hatch_4a": "4安§c§lMAX§r能量輸出倉", + "block.gtceu.max_input_bus": "§c§lMAX§r輸入匯流排", + "block.gtceu.max_input_hatch": "§c§lMAX§r輸入倉", + "block.gtceu.max_input_hatch_4x": "§c§lMAX§r四重輸入倉", + "block.gtceu.max_input_hatch_9x": "§c§lMAX§r九重輸入倉", + "block.gtceu.max_machine_casing": "§c§lMAX§r機械方塊", + "block.gtceu.max_machine_hull": "§c§lMAX§r機器外殼", + "block.gtceu.max_output_bus": "§c§lMAX§r輸出匯流排", + "block.gtceu.max_output_hatch": "§c§lMAX§r輸出倉", + "block.gtceu.max_output_hatch_4x": "§c§lMAX§r四重輸出倉", + "block.gtceu.max_output_hatch_9x": "§c§lMAX§r九重輸出倉", + "block.gtceu.max_substation_input_hatch_64a": "64安§c§lMAX§r變電能量輸入倉", + "block.gtceu.max_substation_output_hatch_64a": "64安§c§lMAX§r變電能量輸出倉", + "block.gtceu.me_input_bus": "ME輸入匯流排", + "block.gtceu.me_input_hatch": "ME輸入倉", + "block.gtceu.me_output_bus": "ME輸出匯流排", + "block.gtceu.me_output_hatch": "ME輸出倉", + "block.gtceu.me_pattern_buffer": "ME樣板供應倉", + "block.gtceu.me_pattern_buffer_proxy": "ME遠端樣板供應倉", + "block.gtceu.me_stocking_input_bus": "ME庫存輸入匯流排", + "block.gtceu.me_stocking_input_hatch": "ME庫存輸入倉", + "block.gtceu.mega_blast_furnace": "轉底爐", + "block.gtceu.mega_vacuum_freezer": "巨型真空冷凍機", + "block.gtceu.miner_pipe": "採礦管道", + "block.gtceu.mob_infestation_hazard_sign_block": "怪物侵襲危害警示方塊", + "block.gtceu.mob_spawner_hazard_sign_block": "生怪磚危害警示方塊", + "block.gtceu.molybdenum_disilicide_coil_block": "二矽化鉬線圈方塊", + "block.gtceu.mossy_dark_concrete_bricks": "青苔深色混凝土磚", + "block.gtceu.mossy_dark_concrete_cobblestone": "青苔深色混凝土鵝卵石", + "block.gtceu.mossy_light_concrete_bricks": "青苔淺色混凝土磚", + "block.gtceu.mossy_light_concrete_cobblestone": "青苔淺色混凝土鵝卵石", + "block.gtceu.mossy_marble_bricks": "青苔大理岩磚", + "block.gtceu.mossy_marble_cobblestone": "青苔大理岩鵝卵石", + "block.gtceu.mossy_red_granite_bricks": "青苔紅花崗岩磚", + "block.gtceu.mossy_red_granite_cobblestone": "青苔紅花崗岩鵝卵石", + "block.gtceu.multi_smelter": "工業熔爐", + "block.gtceu.mv_16a_energy_converter": "16§e安§r§bMV§r能量轉換器", + "block.gtceu.mv_1a_energy_converter": "1§e安§r§bMV§r能量轉換器", + "block.gtceu.mv_4a_energy_converter": "4§e安§r§bMV§r能量轉換器", + "block.gtceu.mv_8a_energy_converter": "8§e安§r§bMV§r能量轉換器", + "block.gtceu.mv_air_scrubber": "§b進階空氣淨化器§r", + "block.gtceu.mv_alloy_smelter": "§b進階合金爐§r", + "block.gtceu.mv_arc_furnace": "§b進階電弧爐§r", + "block.gtceu.mv_assembler": "§b進階組裝機§r", + "block.gtceu.mv_autoclave": "§b進階高壓釜§r", + "block.gtceu.mv_battery_buffer_16x": "16x§b中壓§r電池箱(§bMV§r)", + "block.gtceu.mv_battery_buffer_4x": "4x§b中壓§r電池箱(§bMV§r)", + "block.gtceu.mv_battery_buffer_8x": "8x§b中壓§r電池箱(§bMV§r)", + "block.gtceu.mv_bedrock_ore_miner": "§b進階基岩採礦機§r", + "block.gtceu.mv_bender": "§b進階卷板機§r", + "block.gtceu.mv_block_breaker": "§b進階方塊破壞器§r", + "block.gtceu.mv_brewery": "§b進階釀造室§r", + "block.gtceu.mv_buffer": "§b進階緩衝器§r", + "block.gtceu.mv_canner": "§b進階裝罐機§r", + "block.gtceu.mv_centrifuge": "§b進階離心機§r", + "block.gtceu.mv_charger_4x": "4x§b中壓§r充電機(§bMV§r)", + "block.gtceu.mv_chemical_bath": "§b進階化學水浴機§r", + "block.gtceu.mv_chemical_reactor": "§b進階化學反應器§r", + "block.gtceu.mv_circuit_assembler": "§b進階電路組裝機§r", + "block.gtceu.mv_combustion": "§b進階內燃發電機§r", + "block.gtceu.mv_compressor": "§b進階壓縮機§r", + "block.gtceu.mv_cutter": "§b進階切割機§r", + "block.gtceu.mv_diode": "§bMV§r二極體", + "block.gtceu.mv_distillery": "§b進階蒸餾室§r", + "block.gtceu.mv_electric_furnace": "§b進階電爐§r", + "block.gtceu.mv_electrolyzer": "§b進階電解機§r", + "block.gtceu.mv_electromagnetic_separator": "§b進階電磁分離機§r", + "block.gtceu.mv_energy_input_hatch": "§bMV§r能量輸入倉", + "block.gtceu.mv_energy_output_hatch": "§bMV§r能量輸出倉", + "block.gtceu.mv_extractor": "§b進階提取機§r", + "block.gtceu.mv_extruder": "§b進階壓模器§r", + "block.gtceu.mv_fermenter": "§b進階發酵槽§r", + "block.gtceu.mv_fisher": "§b進階捕魚機§r", + "block.gtceu.mv_fluid_drilling_rig": "§b進階流體鑽機 §r", + "block.gtceu.mv_fluid_heater": "§b進階流體加熱器§r", + "block.gtceu.mv_fluid_passthrough_hatch": "§bMV§r流體通行倉", + "block.gtceu.mv_fluid_solidifier": "§b進階流體固化器§r", + "block.gtceu.mv_forge_hammer": "§b進階鍛造錘§r", + "block.gtceu.mv_forming_press": "§b進階衝壓機床§r", + "block.gtceu.mv_gas_collector": "§b進階集氣室§r", + "block.gtceu.mv_gas_turbine": "§b進階燃氣輪機§r", + "block.gtceu.mv_hermetic_casing": "密封機械方塊 II", + "block.gtceu.mv_input_bus": "§bMV§r輸入匯流排", + "block.gtceu.mv_input_hatch": "§bMV§r輸入倉", + "block.gtceu.mv_item_collector": "§b進階物品收集器§r", + "block.gtceu.mv_item_passthrough_hatch": "§bMV§r物品通行倉", + "block.gtceu.mv_laser_engraver": "§b進階雷射蝕刻機§r", + "block.gtceu.mv_lathe": "§b進階車床§r", + "block.gtceu.mv_macerator": "§b進階研磨機§r", + "block.gtceu.mv_machine_casing": "§bMV§r機械方塊", + "block.gtceu.mv_machine_hull": "§bMV§r機器外殼", + "block.gtceu.mv_miner": "§b進階採礦機§r", + "block.gtceu.mv_mixer": "§b進階攪拌機§r", + "block.gtceu.mv_muffler_hatch": "§bMV§r消音倉", + "block.gtceu.mv_ore_washer": "§b進階洗礦廠§r", + "block.gtceu.mv_output_bus": "§bMV§r輸出匯流排", + "block.gtceu.mv_output_hatch": "§bMV§r輸出倉", + "block.gtceu.mv_packer": "§b進階打包機§r", + "block.gtceu.mv_polarizer": "§b進階兩極磁化機§r", + "block.gtceu.mv_pump": "§b進階泵§r", + "block.gtceu.mv_rock_crusher": "§b進階碎岩機§r", + "block.gtceu.mv_scanner": "§b進階掃描器§r", + "block.gtceu.mv_sifter": "§b進階篩選機§r", + "block.gtceu.mv_steam_turbine": "§b進階蒸汽輪機§r", + "block.gtceu.mv_super_chest": "超級箱 II", + "block.gtceu.mv_super_tank": "超級缸 II", + "block.gtceu.mv_thermal_centrifuge": "§b進階熱力離心機§r", + "block.gtceu.mv_transformer_16a": "§b中壓§r高能變壓器(§bMV§r)", + "block.gtceu.mv_transformer_1a": "§b中壓§r變壓器(§bMV§r)", + "block.gtceu.mv_transformer_2a": "§b中壓§r進階變壓器(§bMV§r)", + "block.gtceu.mv_transformer_4a": "§b中壓§r高流變壓器(§bMV§r)", + "block.gtceu.mv_wiremill": "§b進階線材軋機§r", + "block.gtceu.mv_world_accelerator": "§b進階世界加速器§r", + "block.gtceu.naquadah_coil_block": "矽岩線圈方塊", + "block.gtceu.network_switch": "網路交換機", + "block.gtceu.nichrome_coil_block": "鎳鉻合金線圈方塊", + "block.gtceu.noise_hazard_sign_block": "噪音危害警示方塊", + "block.gtceu.nonconducting_casing": "絕緣機械方塊", + "block.gtceu.normal_duct_pipe": "普通風管", + "block.gtceu.normal_laser_pipe": "普通雷射管道", + "block.gtceu.normal_laser_pipe.tooltip": "§f無損§7傳遞能量,僅限直線擺放", + "block.gtceu.normal_optical_pipe": "光纜", + "block.gtceu.normal_optical_pipe.tooltip": "§7傳遞§f算力§7或§f研究資料§7", + "block.gtceu.object_holder": "物品支架", + "block.gtceu.oil_heavy": "重油", + "block.gtceu.oil_light": "輕油", + "block.gtceu.oil_medium": "原油", + "block.gtceu.opv_1024a_laser_source_hatch": "1024§e安§r§9§lOpV§r雷射源倉", + "block.gtceu.opv_1024a_laser_target_hatch": "1024§e安§r§9§lOpV§r雷射靶倉", + "block.gtceu.opv_16a_energy_converter": "16§e安§r§9§lOpV§r能量轉換器", + "block.gtceu.opv_1a_energy_converter": "1§e安§r§9§lOpV§r能量轉換器", + "block.gtceu.opv_256a_laser_source_hatch": "256§e安§r§9§lOpV§r雷射源倉", + "block.gtceu.opv_256a_laser_target_hatch": "256§e安§r§9§lOpV§r雷射靶倉", + "block.gtceu.opv_4096a_laser_source_hatch": "4096§e安§r§9§lOpV§r雷射源倉", + "block.gtceu.opv_4096a_laser_target_hatch": "4096§e安§r§9§lOpV§r雷射靶倉", + "block.gtceu.opv_4a_energy_converter": "4§e安§r§9§lOpV§r能量轉換器", + "block.gtceu.opv_8a_energy_converter": "8§e安§r§9§lOpV§r能量轉換器", + "block.gtceu.opv_alloy_smelter": "§9§l傳奇合金爐§r", + "block.gtceu.opv_arc_furnace": "§9§l傳奇電弧爐§r", + "block.gtceu.opv_assembler": "§9§l傳奇組裝機§r", + "block.gtceu.opv_autoclave": "§9§l傳奇高壓釜§r", + "block.gtceu.opv_battery_buffer_16x": "16x§9過載壓§r電池箱(§9§lOpV§r)", + "block.gtceu.opv_battery_buffer_4x": "4x§9過載壓§r電池箱(§9§lOpV§r)", + "block.gtceu.opv_battery_buffer_8x": "8x§9過載壓§r電池箱(§9§lOpV§r)", + "block.gtceu.opv_bender": "§9§l傳奇卷板機§r", + "block.gtceu.opv_brewery": "§9§l傳奇釀造室§r", + "block.gtceu.opv_canner": "§9§l傳奇裝罐機§r", + "block.gtceu.opv_centrifuge": "§9§l傳奇離心機§r", + "block.gtceu.opv_charger_4x": "4x§9過載壓§r充電機(§9§lOpV§r)", + "block.gtceu.opv_chemical_bath": "§9§l傳奇化學水浴機§r", + "block.gtceu.opv_chemical_reactor": "§9§l傳奇化學反應器§r", + "block.gtceu.opv_circuit_assembler": "§9§l傳奇電路組裝機§r", + "block.gtceu.opv_compressor": "§9§l傳奇壓縮機§r", + "block.gtceu.opv_cutter": "§9§l傳奇切割機§r", + "block.gtceu.opv_diode": "§9§lOpV§r二極體", + "block.gtceu.opv_distillery": "§9§l傳奇蒸餾室§r", + "block.gtceu.opv_dual_input_hatch": "§9§lOpV§r兩用輸入倉", + "block.gtceu.opv_dual_output_hatch": "§9§lOpV§r兩用輸出倉", + "block.gtceu.opv_electric_furnace": "§9§l傳奇電爐§r", + "block.gtceu.opv_electrolyzer": "§9§l傳奇電解機§r", + "block.gtceu.opv_electromagnetic_separator": "§9§l傳奇電磁分離機§r", + "block.gtceu.opv_energy_input_hatch": "§9§lOpV§r能量輸入倉", + "block.gtceu.opv_energy_input_hatch_16a": "16安§9§lOpV§r能量輸入倉", + "block.gtceu.opv_energy_input_hatch_4a": "4安§9§lOpV§r能量輸入倉", + "block.gtceu.opv_energy_output_hatch": "§9§lOpV§r能量輸出倉", + "block.gtceu.opv_energy_output_hatch_16a": "16安§9§lOpV§r能量輸出倉", + "block.gtceu.opv_energy_output_hatch_4a": "4安§9§lOpV§r能量輸出倉", + "block.gtceu.opv_extractor": "§9§l傳奇提取機§r", + "block.gtceu.opv_extruder": "§9§l傳奇壓模器§r", + "block.gtceu.opv_fermenter": "§9§l傳奇發酵槽§r", + "block.gtceu.opv_fluid_heater": "§9§l傳奇流體加熱器§r", + "block.gtceu.opv_fluid_passthrough_hatch": "§9§lOpV§r流體通行倉", + "block.gtceu.opv_fluid_solidifier": "§9§l傳奇流體固化器§r", + "block.gtceu.opv_forge_hammer": "§9§l傳奇鍛造錘§r", + "block.gtceu.opv_forming_press": "§9§l傳奇衝壓機床§r", + "block.gtceu.opv_gas_collector": "§9§l傳奇集氣室§r", + "block.gtceu.opv_input_bus": "§9§lOpV§r輸入匯流排", + "block.gtceu.opv_input_hatch": "§9§lOpV§r輸入倉", + "block.gtceu.opv_input_hatch_4x": "§9§lOpV§r四重輸入倉", + "block.gtceu.opv_input_hatch_9x": "§9§lOpV§r九重輸入倉", + "block.gtceu.opv_item_passthrough_hatch": "§9§lOpV§r物品通行倉", + "block.gtceu.opv_laser_engraver": "§9§l傳奇雷射蝕刻機§r", + "block.gtceu.opv_lathe": "§9§l傳奇車床§r", + "block.gtceu.opv_macerator": "§9§l傳奇研磨機§r", + "block.gtceu.opv_machine_casing": "§9§lOpV§r機械方塊", + "block.gtceu.opv_machine_hull": "§9§lOpV§r機器外殼", + "block.gtceu.opv_mixer": "§9§l傳奇攪拌機§r", + "block.gtceu.opv_muffler_hatch": "§9§lOpV§r消音倉", + "block.gtceu.opv_ore_washer": "§9§l傳奇洗礦廠§r", + "block.gtceu.opv_output_bus": "§9§lOpV§r輸出匯流排", + "block.gtceu.opv_output_hatch": "§9§lOpV§r輸出倉", + "block.gtceu.opv_output_hatch_4x": "§9§lOpV§r四重輸出倉", + "block.gtceu.opv_output_hatch_9x": "§9§lOpV§r九重輸出倉", + "block.gtceu.opv_packer": "§9§l傳奇打包機§r", + "block.gtceu.opv_polarizer": "§9§l傳奇兩極磁化機§r", + "block.gtceu.opv_quantum_chest": "量子箱 XIII", + "block.gtceu.opv_quantum_tank": "量子缸 XIII", + "block.gtceu.opv_rock_crusher": "§9§l傳奇碎岩機§r", + "block.gtceu.opv_rotor_holder": "§9§lOpV§r轉子支架", + "block.gtceu.opv_scanner": "§9§l傳奇掃描器§r", + "block.gtceu.opv_sifter": "§9§l傳奇篩選機§r", + "block.gtceu.opv_substation_input_hatch_64a": "64安§9§lOpV§r變電能量輸入倉", + "block.gtceu.opv_substation_output_hatch_64a": "64安§9§lOpV§r變電能量輸出倉", + "block.gtceu.opv_thermal_centrifuge": "§9§l傳奇熱力離心機§r", + "block.gtceu.opv_transformer_16a": "§9過載壓§r高能變壓器(§9OpV§r)", + "block.gtceu.opv_transformer_1a": "§9過載壓§r變壓器(§9OpV§r)", + "block.gtceu.opv_transformer_2a": "§9過載壓§r進階變壓器(§9OpV§r)", + "block.gtceu.opv_transformer_4a": "§9過載壓§r高流變壓器(§9OpV§r)", + "block.gtceu.opv_wiremill": "§9§l傳奇線材軋機§r", + "block.gtceu.orange_borderless_lamp": "橙色無框燈", + "block.gtceu.orange_lamp": "橙色燈", + "block.gtceu.orange_large_metal_sheet": "橙色粗紋金屬板方塊", + "block.gtceu.orange_metal_sheet": "橙色金屬板方塊", + "block.gtceu.orange_studs": "橙色橡膠混凝土", + "block.gtceu.overworld_marker": "主世界", + "block.gtceu.palladium_substation": "鍍鈀變電站機械方塊", + "block.gtceu.pattern_buffer.desc.0": "§f多方塊結構的整合式§6AE2樣板供應器§f。", + "block.gtceu.pattern_buffer.desc.1": "§fAE2樣板可以利用§6共享庫存§f中的一切。", + "block.gtceu.pattern_buffer.desc.2": "§f使用§b快閃記憶體§f綁定§6ME遠端樣板供應倉§f,以使機器相互連線!", + "block.gtceu.pattern_buffer_proxy.desc.0": "§f可以將單單一個§6ME樣板供應倉§f連線到眾多機器。", + "block.gtceu.pattern_buffer_proxy.desc.1": "§f所有綁定的遠端樣板供應倉將共享§6原樣板供應倉§f中的樣板。", + "block.gtceu.pattern_buffer_proxy.desc.2": "§f讓工廠蓬勃發展!", + "block.gtceu.petrified_foam": "石化建築泡沫", + "block.gtceu.pink_borderless_lamp": "粉紅色無框燈", + "block.gtceu.pink_lamp": "粉紅色燈", + "block.gtceu.pink_large_metal_sheet": "粉紅色粗紋金屬板方塊", + "block.gtceu.pink_metal_sheet": "粉紅色金屬板方塊", + "block.gtceu.pink_studs": "粉紅色橡膠混凝土", + "block.gtceu.plascrete": "塑膠混凝土", + "block.gtceu.plasma_large_turbine": "大型電漿渦輪", + "block.gtceu.polished_dark_concrete": "拋光深色混凝土", + "block.gtceu.polished_light_concrete": "拋光淺色混凝土", + "block.gtceu.polished_marble": "拋光大理岩", + "block.gtceu.polished_red_granite": "拋光紅花崗岩", + "block.gtceu.powderbarrel": "火藥桶", + "block.gtceu.powderbarrel.drops_tooltip": "爆炸範圍略大於TNT,所有被摧毀的方塊都會掉落", + "block.gtceu.power_substation": "蓄能變電站", + "block.gtceu.primitive_blast_furnace": "土高爐", + "block.gtceu.primitive_pump": "原始水泵", + "block.gtceu.ptfe_pipe_casing": "聚四氟乙烯管道方塊", + "block.gtceu.pump_deck": "水泵蓋板", + "block.gtceu.pump_hatch": "水泵倉", + "block.gtceu.purple_borderless_lamp": "紫色無框燈", + "block.gtceu.purple_lamp": "紫色燈", + "block.gtceu.purple_large_metal_sheet": "紫色粗紋金屬板方塊", + "block.gtceu.purple_metal_sheet": "紫色金屬板方塊", + "block.gtceu.purple_studs": "紫色橡膠混凝土", + "block.gtceu.pyrolyse_oven": "熱解爐", + "block.gtceu.radioactive_hazard_sign_block": "輻射危害警示方塊", + "block.gtceu.reaction_safe_mixing_casing": "惰性攪拌機械方塊", + "block.gtceu.red_borderless_lamp": "紅色無框燈", + "block.gtceu.red_granite": "紅花崗岩", + "block.gtceu.red_granite_bricks": "紅花崗岩磚", + "block.gtceu.red_granite_cobblestone": "紅花崗岩鵝卵石", + "block.gtceu.red_granite_small_tile": "紅花崗岩小片磚瓦", + "block.gtceu.red_granite_tile": "紅花崗岩磚磚瓦", + "block.gtceu.red_granite_windmill_a": "紅花崗岩風車形磚磚瓦 A", + "block.gtceu.red_granite_windmill_b": "紅花崗岩風車形磚磚瓦 B", + "block.gtceu.red_lamp": "紅色燈", + "block.gtceu.red_large_metal_sheet": "紅色粗紋金屬板方塊", + "block.gtceu.red_metal_sheet": "紅色金屬板方塊", + "block.gtceu.red_studs": "紅色橡膠混凝土", + "block.gtceu.reinforced_foam": "強化建築泡沫", + "block.gtceu.reinforced_stone": "防爆石", + "block.gtceu.research_station": "研究站", + "block.gtceu.reservoir_hatch": "蓄水倉", + "block.gtceu.robust_machine_casing": "強化鎢鋼機械方塊", + "block.gtceu.rtm_alloy_coil_block": "釕鎢鉬合金線圈方塊", + "block.gtceu.rubber_button": "橡膠木按鈕", + "block.gtceu.rubber_door": "橡膠木門", + "block.gtceu.rubber_fence": "橡膠木柵欄", + "block.gtceu.rubber_fence_gate": "橡膠木柵欄門", + "block.gtceu.rubber_hanging_sign": "懸掛式橡膠木告示牌", + "block.gtceu.rubber_leaves": "橡膠木樹葉", + "block.gtceu.rubber_log": "橡膠木原木", + "block.gtceu.rubber_planks": "橡膠木材", + "block.gtceu.rubber_pressure_plate": "橡膠木壓力板", + "block.gtceu.rubber_sapling": "橡膠木樹苗", + "block.gtceu.rubber_sign": "橡膠木告示牌", + "block.gtceu.rubber_slab": "橡膠木半磚", + "block.gtceu.rubber_stairs": "橡膠木階梯", + "block.gtceu.rubber_trapdoor": "橡膠木地板門", + "block.gtceu.rubber_wood": "橡膠木", + "block.gtceu.secure_maceration_casing": "安全研磨機械方塊", + "block.gtceu.shock_proof_cutting_casing": "防震切割機械方塊", + "block.gtceu.slicing_blades": "切片刀", + "block.gtceu.small_dark_concrete_bricks": "深色混凝土小塊磚", + "block.gtceu.small_duct_pipe": "小型風管", + "block.gtceu.small_light_concrete_bricks": "淺色混凝土小塊磚", + "block.gtceu.small_marble_bricks": "大理岩小塊磚", + "block.gtceu.small_red_granite_bricks": "紅花崗岩小塊磚", + "block.gtceu.solid_machine_casing": "脫氧鋼機械方塊", + "block.gtceu.spatial_storage_hazard_sign_block": "空間儲存危害警示方塊", + "block.gtceu.square_dark_concrete_bricks": "深色混凝土方形磚", + "block.gtceu.square_light_concrete_bricks": "淺色混凝土方形磚", + "block.gtceu.square_marble_bricks": "大理岩方形磚", + "block.gtceu.square_red_granite_bricks": "紅花崗岩方形磚", + "block.gtceu.stable_machine_casing": "加強鈦機械方塊", + "block.gtceu.stainless_steel_crate": "不鏽鋼板條箱", + "block.gtceu.stainless_steel_drum": "不鏽鋼桶", + "block.gtceu.stainless_steel_gearbox": "不鏽鋼齒輪箱機械方塊", + "block.gtceu.stainless_steel_turbine_casing": "不鏽鋼渦輪機械方塊", + "block.gtceu.steam_casing_bricked_bronze": "磚砌青銅外殼", + "block.gtceu.steam_casing_bricked_bronze.tooltip": "§7用來製作你的第一批蒸汽機器", + "block.gtceu.steam_casing_bricked_steel": "磚砌鍛鐵外殼", + "block.gtceu.steam_casing_bricked_steel.tooltip": "§7用來製作更高等級的蒸汽機器", + "block.gtceu.steam_casing_bronze": "青銅外殼", + "block.gtceu.steam_casing_bronze.tooltip": "§7用來製作你的第一批蒸汽機器", + "block.gtceu.steam_casing_steel": "鋼製外殼", + "block.gtceu.steam_casing_steel.tooltip": "§7用來製作更高等級的蒸汽機器", + "block.gtceu.steam_grinder": "蒸汽碾磨機", + "block.gtceu.steam_input_bus": "輸入匯流排(蒸汽)", + "block.gtceu.steam_input_hatch": "蒸汽輸入倉", + "block.gtceu.steam_large_turbine": "大型蒸汽渦輪", + "block.gtceu.steam_liquid_boiler.bronze": "小型蒸汽液體燃料鍋爐", + "block.gtceu.steam_machine_casing": "蒸汽機械方塊", + "block.gtceu.steam_output_bus": "輸出匯流排(蒸汽)", + "block.gtceu.steam_oven": "蒸汽熔煉爐", + "block.gtceu.steam_solid_boiler.bronze": "小型蒸汽固體燃料鍋爐", + "block.gtceu.steel_brick_casing": "磚砌鍛鐵外殼", + "block.gtceu.steel_crate": "鋼板條箱", + "block.gtceu.steel_drum": "鋼桶", + "block.gtceu.steel_firebox_casing": "鋼製燃燒室", + "block.gtceu.steel_gearbox": "鋼齒輪箱機械方塊", + "block.gtceu.steel_large_boiler": "大型鋼鍋爐", + "block.gtceu.steel_machine_casing": "牢固機械方塊", + "block.gtceu.steel_multiblock_tank": "鋼製多方塊儲罐", + "block.gtceu.steel_pipe_casing": "鋼管道方塊", + "block.gtceu.steel_tank_valve": "鋼製儲罐閥門", + "block.gtceu.steel_turbine_casing": "鋼渦輪機械方塊", + "block.gtceu.sterilizing_filter_casing": "除菌過濾器機械方塊", + "block.gtceu.stress_proof_casing": "耐壓機械方塊", + "block.gtceu.stripped_rubber_log": "剝皮橡膠木原木", + "block.gtceu.stripped_rubber_wood": "剝皮橡膠木塊", + "block.gtceu.sturdy_machine_casing": "堅固高速鋼-E機械方塊", + "block.gtceu.substation_capacitor.tooltip_empty": "§7用於填補蓄能變電站的結構空隙", + "block.gtceu.substation_capacitor.tooltip_filled": "§c電池容量:§f%d EU", + "block.gtceu.superconducting_coil": "超導線圈方塊", + "block.gtceu.tempered_glass": "鋼化玻璃", + "block.gtceu.the_end_marker": "終界", + "block.gtceu.the_nether_marker": "地獄", + "block.gtceu.titanium_crate": "鈦板條箱", + "block.gtceu.titanium_drum": "鈦桶", + "block.gtceu.titanium_firebox_casing": "鈦燃燒室", + "block.gtceu.titanium_gearbox": "鈦齒輪箱機械方塊", + "block.gtceu.titanium_large_boiler": "大型鈦鍋爐", + "block.gtceu.titanium_pipe_casing": "鈦管道方塊", + "block.gtceu.titanium_turbine_casing": "鈦渦輪機械方塊", + "block.gtceu.treated_wood_button": "防腐木按鈕", + "block.gtceu.treated_wood_door": "防腐木門", + "block.gtceu.treated_wood_fence": "防腐木柵欄", + "block.gtceu.treated_wood_fence_gate": "防腐木柵欄門", + "block.gtceu.treated_wood_hanging_sign": "懸掛式防腐木告示牌", + "block.gtceu.treated_wood_planks": "防腐木材", + "block.gtceu.treated_wood_pressure_plate": "防腐木壓力板", + "block.gtceu.treated_wood_sign": "防腐木告示牌", + "block.gtceu.treated_wood_slab": "防腐木半磚", + "block.gtceu.treated_wood_stairs": "防腐木階梯", + "block.gtceu.treated_wood_trapdoor": "防腐木地板門", + "block.gtceu.trinium_coil_block": "凱金線圈方塊", + "block.gtceu.tritanium_coil_block": "三鈦線圈方塊", + "block.gtceu.tungsten_steel_crate": "鎢鋼板條箱", + "block.gtceu.tungsten_steel_drum": "鎢鋼桶", + "block.gtceu.tungstensteel_firebox_casing": "鎢鋼燃燒室", + "block.gtceu.tungstensteel_gearbox": "鎢鋼齒輪箱機械方塊", + "block.gtceu.tungstensteel_large_boiler": "大型鎢鋼鍋爐", + "block.gtceu.tungstensteel_pipe_casing": "鎢鋼管道方塊", + "block.gtceu.tungstensteel_turbine_casing": "鎢鋼渦輪機械方塊", + "block.gtceu.turret_hazard_sign_block": "炮塔危害警示方塊", + "block.gtceu.uev_1024a_laser_source_hatch": "1024§e安§r§aUEV§r雷射源倉", + "block.gtceu.uev_1024a_laser_target_hatch": "1024§e安§r§aUEV§r雷射靶倉", + "block.gtceu.uev_16a_energy_converter": "16§e安§r§aUEV§r能量轉換器", + "block.gtceu.uev_1a_energy_converter": "1§e安§r§aUEV§r能量轉換器", + "block.gtceu.uev_256a_laser_source_hatch": "256§e安§r§aUEV§r雷射源倉", + "block.gtceu.uev_256a_laser_target_hatch": "256§e安§r§aUEV§r雷射靶倉", + "block.gtceu.uev_4096a_laser_source_hatch": "4096§e安§r§aUEV§r雷射源倉", + "block.gtceu.uev_4096a_laser_target_hatch": "4096§e安§r§aUEV§r雷射靶倉", + "block.gtceu.uev_4a_energy_converter": "4§e安§r§aUEV§r能量轉換器", + "block.gtceu.uev_8a_energy_converter": "8§e安§r§aUEV§r能量轉換器", + "block.gtceu.uev_alloy_smelter": "§a史詩合金爐 II§r", + "block.gtceu.uev_arc_furnace": "§a史詩電弧爐 II§r", + "block.gtceu.uev_assembler": "§a史詩組裝機 II§r", + "block.gtceu.uev_autoclave": "§a史詩高壓釜 II§r", + "block.gtceu.uev_battery_buffer_16x": "16x§a極超壓§r電池箱(§aUEV§r)", + "block.gtceu.uev_battery_buffer_4x": "4x§a極超壓§r電池箱(§aUEV§r)", + "block.gtceu.uev_battery_buffer_8x": "8x§a極超壓§r電池箱(§aUEV§r)", + "block.gtceu.uev_bender": "§a史詩卷板機 II§r", + "block.gtceu.uev_brewery": "§a史詩釀造室 II§r", + "block.gtceu.uev_canner": "§a史詩裝罐機 II§r", + "block.gtceu.uev_centrifuge": "§a史詩離心機 II§r", + "block.gtceu.uev_charger_4x": "4x§a極超壓§r充電機(§aUEV§r)", + "block.gtceu.uev_chemical_bath": "§a史詩化學水浴機 II§r", + "block.gtceu.uev_chemical_reactor": "§a史詩化學反應器 II§r", + "block.gtceu.uev_circuit_assembler": "§a史詩電路組裝機 II§r", + "block.gtceu.uev_compressor": "§a史詩壓縮機 II§r", + "block.gtceu.uev_cutter": "§a史詩切割機 II§r", + "block.gtceu.uev_diode": "§aUEV§r二極體", + "block.gtceu.uev_distillery": "§a史詩蒸餾室 II§r", + "block.gtceu.uev_dual_input_hatch": "§aUEV§r兩用輸入倉", + "block.gtceu.uev_dual_output_hatch": "§aUEV§r兩用輸出倉", + "block.gtceu.uev_electric_furnace": "§a史詩電爐 II§r", + "block.gtceu.uev_electrolyzer": "§a史詩電解機 II§r", + "block.gtceu.uev_electromagnetic_separator": "§a史詩電磁分離機 II§r", + "block.gtceu.uev_energy_input_hatch": "§aUEV§r能量輸入倉", + "block.gtceu.uev_energy_input_hatch_16a": "16安§aUEV§r能量輸入倉", + "block.gtceu.uev_energy_input_hatch_4a": "4安§aUEV§r能量輸入倉", + "block.gtceu.uev_energy_output_hatch": "§aUEV§r能量輸出倉", + "block.gtceu.uev_energy_output_hatch_16a": "16安§aUEV§r能量輸出倉", + "block.gtceu.uev_energy_output_hatch_4a": "4安§aUEV§r能量輸出倉", + "block.gtceu.uev_extractor": "§a史詩提取機 II§r", + "block.gtceu.uev_extruder": "§a史詩壓模器 II§r", + "block.gtceu.uev_fermenter": "§a史詩發酵槽 II§r", + "block.gtceu.uev_fluid_heater": "§a史詩流體加熱器 II§r", + "block.gtceu.uev_fluid_passthrough_hatch": "§aUEV§r流體通行倉", + "block.gtceu.uev_fluid_solidifier": "§a史詩流體固化器 II§r", + "block.gtceu.uev_forge_hammer": "§a史詩鍛造錘 II§r", + "block.gtceu.uev_forming_press": "§a史詩衝壓機床 II§r", + "block.gtceu.uev_gas_collector": "§a史詩集氣室 II§r", + "block.gtceu.uev_input_bus": "§aUEV§r輸入匯流排", + "block.gtceu.uev_input_hatch": "§aUEV§r輸入倉", + "block.gtceu.uev_input_hatch_4x": "§aUEV§r四重輸入倉", + "block.gtceu.uev_input_hatch_9x": "§aUEV§r九重輸入倉", + "block.gtceu.uev_item_passthrough_hatch": "§aUEV§r物品通行倉", + "block.gtceu.uev_laser_engraver": "§a史詩雷射蝕刻機 II§r", + "block.gtceu.uev_lathe": "§a史詩車床 II§r", + "block.gtceu.uev_macerator": "§a史詩研磨機 II§r", + "block.gtceu.uev_machine_casing": "§aUEV§r機械方塊", + "block.gtceu.uev_machine_hull": "§aUEV§r機器外殼", + "block.gtceu.uev_mixer": "§a史詩攪拌機 II§r", + "block.gtceu.uev_muffler_hatch": "§aUEV§r消音倉", + "block.gtceu.uev_ore_washer": "§a史詩洗礦廠 II§r", + "block.gtceu.uev_output_bus": "§aUEV§r輸出匯流排", + "block.gtceu.uev_output_hatch": "§aUEV§r輸出倉", + "block.gtceu.uev_output_hatch_4x": "§aUEV§r四重輸出倉", + "block.gtceu.uev_output_hatch_9x": "§aUEV§r九重輸出倉", + "block.gtceu.uev_packer": "§a史詩打包機 II§r", + "block.gtceu.uev_polarizer": "§a史詩兩極磁化機 II§r", + "block.gtceu.uev_quantum_chest": "量子箱 X", + "block.gtceu.uev_quantum_tank": "量子缸 X", + "block.gtceu.uev_rock_crusher": "§a史詩碎岩機 II§r", + "block.gtceu.uev_rotor_holder": "§aUEV§r轉子支架", + "block.gtceu.uev_scanner": "§a史詩掃描器 II§r", + "block.gtceu.uev_sifter": "§a史詩篩選機 II§r", + "block.gtceu.uev_substation_input_hatch_64a": "64安§aUEV§r變電能量輸入倉", + "block.gtceu.uev_substation_output_hatch_64a": "64安§aUEV§r變電能量輸出倉", + "block.gtceu.uev_thermal_centrifuge": "§a史詩熱力離心機 II§r", + "block.gtceu.uev_transformer_16a": "§a極超壓§r高能變壓器(§aUEV§r)", + "block.gtceu.uev_transformer_1a": "§a極超壓§r變壓器(§aUEV§r)", + "block.gtceu.uev_transformer_2a": "§a極超壓§r進階變壓器(§aUEV§r)", + "block.gtceu.uev_transformer_4a": "§a極超壓§r高流變壓器(§aUEV§r)", + "block.gtceu.uev_wiremill": "§a史詩線材軋機 II§r", + "block.gtceu.uhv_1024a_laser_source_hatch": "1024§e安§r§4UHV§r雷射源倉", + "block.gtceu.uhv_1024a_laser_target_hatch": "1024§e安§r§4UHV§r雷射靶倉", + "block.gtceu.uhv_16a_energy_converter": "16§e安§r§4UHV§r能量轉換器", + "block.gtceu.uhv_1a_energy_converter": "1§e安§r§4UHV§r能量轉換器", + "block.gtceu.uhv_256a_laser_source_hatch": "256§e安§r§4UHV§r雷射源倉", + "block.gtceu.uhv_256a_laser_target_hatch": "256§e安§r§4UHV§r雷射靶倉", + "block.gtceu.uhv_4096a_laser_source_hatch": "4096§e安§r§4UHV§r雷射源倉", + "block.gtceu.uhv_4096a_laser_target_hatch": "4096§e安§r§4UHV§r雷射靶倉", + "block.gtceu.uhv_4a_energy_converter": "4§e安§r§4UHV§r能量轉換器", + "block.gtceu.uhv_8a_energy_converter": "8§e安§r§4UHV§r能量轉換器", + "block.gtceu.uhv_alloy_smelter": "§4史詩合金爐§r", + "block.gtceu.uhv_arc_furnace": "§4史詩電弧爐§r", + "block.gtceu.uhv_assembler": "§4史詩組裝機§r", + "block.gtceu.uhv_autoclave": "§4史詩高壓釜§r", + "block.gtceu.uhv_battery_buffer_16x": "16x§4極高壓§r電池箱(§4UHV§r)", + "block.gtceu.uhv_battery_buffer_4x": "4x§4極高壓§r電池箱(§4UHV§r)", + "block.gtceu.uhv_battery_buffer_8x": "8x§4極高壓§r電池箱(§4UHV§r)", + "block.gtceu.uhv_bender": "§4史詩卷板機§r", + "block.gtceu.uhv_brewery": "§4史詩釀造室§r", + "block.gtceu.uhv_canner": "§4史詩裝罐機§r", + "block.gtceu.uhv_centrifuge": "§4史詩離心機§r", + "block.gtceu.uhv_charger_4x": "4x§4極高壓§r充電機(§4UHV§r)", + "block.gtceu.uhv_chemical_bath": "§4史詩化學水浴機§r", + "block.gtceu.uhv_chemical_reactor": "§4史詩化學反應器§r", + "block.gtceu.uhv_circuit_assembler": "§4史詩電路組裝機§r", + "block.gtceu.uhv_compressor": "§4史詩壓縮機§r", + "block.gtceu.uhv_cutter": "§4史詩切割機§r", + "block.gtceu.uhv_diode": "§4UHV§r二極體", + "block.gtceu.uhv_distillery": "§4史詩蒸餾室§r", + "block.gtceu.uhv_dual_input_hatch": "§4UHV§r兩用輸入倉", + "block.gtceu.uhv_dual_output_hatch": "§4UHV§r兩用輸出倉", + "block.gtceu.uhv_electric_furnace": "§4史詩電爐§r", + "block.gtceu.uhv_electrolyzer": "§4史詩電解機§r", + "block.gtceu.uhv_electromagnetic_separator": "§4史詩電磁分離機§r", + "block.gtceu.uhv_energy_input_hatch": "§4UHV§r能量輸入倉", + "block.gtceu.uhv_energy_input_hatch_16a": "16安§4UHV§r能量輸入倉", + "block.gtceu.uhv_energy_input_hatch_4a": "4安§4UHV§r能量輸入倉", + "block.gtceu.uhv_energy_output_hatch": "§4UHV§r能量輸出倉", + "block.gtceu.uhv_energy_output_hatch_16a": "16安§4UHV§r能量輸出倉", + "block.gtceu.uhv_energy_output_hatch_4a": "4安§4UHV§r能量輸出倉", + "block.gtceu.uhv_extractor": "§4史詩提取機§r", + "block.gtceu.uhv_extruder": "§4史詩壓模器§r", + "block.gtceu.uhv_fermenter": "§4史詩發酵槽§r", + "block.gtceu.uhv_fluid_heater": "§4史詩流體加熱器§r", + "block.gtceu.uhv_fluid_passthrough_hatch": "§4UHV§r流體通行倉", + "block.gtceu.uhv_fluid_solidifier": "§4史詩流體固化器§r", + "block.gtceu.uhv_forge_hammer": "§4史詩鍛造錘§r", + "block.gtceu.uhv_forming_press": "§4史詩衝壓機床§r", + "block.gtceu.uhv_gas_collector": "§4史詩集氣室§r", + "block.gtceu.uhv_hermetic_casing": "密封機械方塊 IX", + "block.gtceu.uhv_input_bus": "§4UHV§r輸入匯流排", + "block.gtceu.uhv_input_hatch": "§4UHV§r輸入倉", + "block.gtceu.uhv_input_hatch_4x": "§4UHV§r四重輸入倉", + "block.gtceu.uhv_input_hatch_9x": "§4UHV§r九重輸入倉", + "block.gtceu.uhv_item_passthrough_hatch": "§4UHV§r物品通行倉", + "block.gtceu.uhv_laser_engraver": "§4史詩雷射蝕刻機§r", + "block.gtceu.uhv_lathe": "§4史詩車床§r", + "block.gtceu.uhv_macerator": "§4史詩研磨機§r", + "block.gtceu.uhv_machine_casing": "§4UHV§r機械方塊", + "block.gtceu.uhv_machine_hull": "§4UHV§r機器外殼", + "block.gtceu.uhv_mixer": "§4史詩攪拌機§r", + "block.gtceu.uhv_muffler_hatch": "§4UHV§r消音倉", + "block.gtceu.uhv_ore_washer": "§4史詩洗礦廠§r", + "block.gtceu.uhv_output_bus": "§4UHV§r輸出匯流排", + "block.gtceu.uhv_output_hatch": "§4UHV§r輸出倉", + "block.gtceu.uhv_output_hatch_4x": "§4UHV§r四重輸出倉", + "block.gtceu.uhv_output_hatch_9x": "§4UHV§r九重輸出倉", + "block.gtceu.uhv_packer": "§4史詩打包機§r", + "block.gtceu.uhv_polarizer": "§4史詩兩極磁化機§r", + "block.gtceu.uhv_quantum_chest": "量子箱 IX", + "block.gtceu.uhv_quantum_tank": "量子缸 IX", + "block.gtceu.uhv_rock_crusher": "§4史詩碎岩機§r", + "block.gtceu.uhv_rotor_holder": "§4UHV§r轉子支架", + "block.gtceu.uhv_scanner": "§4史詩掃描器 §r", + "block.gtceu.uhv_sifter": "§4史詩篩選機§r", + "block.gtceu.uhv_substation_input_hatch_64a": "64安§4UHV§r變電能量輸入倉", + "block.gtceu.uhv_substation_output_hatch_64a": "64安§4UHV§r變電能量輸出倉", + "block.gtceu.uhv_thermal_centrifuge": "§4史詩熱力離心機§r", + "block.gtceu.uhv_transformer_16a": "§4極高壓§r高能變壓器(§4UHV§r)", + "block.gtceu.uhv_transformer_1a": "§4極高壓§r變壓器(§4UHV§r)", + "block.gtceu.uhv_transformer_2a": "§4極高壓§r進階變壓器(§4UHV§r) ", + "block.gtceu.uhv_transformer_4a": "§4極高壓§r高流變壓器(§4UHV§r)", + "block.gtceu.uhv_ultimate_battery": "§4UHV§r終極電池", + "block.gtceu.uhv_wiremill": "§4史詩線材軋機§r", + "block.gtceu.uiv_1024a_laser_source_hatch": "1024§e安§r§2UIV§r雷射源倉", + "block.gtceu.uiv_1024a_laser_target_hatch": "1024§e安§r§2UIV§r雷射靶倉", + "block.gtceu.uiv_16a_energy_converter": "16§e安§r§2UIV§r能量轉換器", + "block.gtceu.uiv_1a_energy_converter": "1§e安§r§2UIV§r能量轉換器", + "block.gtceu.uiv_256a_laser_source_hatch": "256§e安§r§2UIV§r雷射源倉", + "block.gtceu.uiv_256a_laser_target_hatch": "256§e安§r§2UIV§r雷射靶倉", + "block.gtceu.uiv_4096a_laser_source_hatch": "4096§e安§r§2UIV§r雷射源倉", + "block.gtceu.uiv_4096a_laser_target_hatch": "4096§e安§r§2UIV§r雷射靶倉", + "block.gtceu.uiv_4a_energy_converter": "4§e安§r§2UIV§r能量轉換器", + "block.gtceu.uiv_8a_energy_converter": "8§e安§r§2UIV§r能量轉換器", + "block.gtceu.uiv_alloy_smelter": "§2史詩合金爐 III§r", + "block.gtceu.uiv_arc_furnace": "§2史詩電弧爐 III§r", + "block.gtceu.uiv_assembler": "§2史詩組裝機 III§r", + "block.gtceu.uiv_autoclave": "§2史詩高壓釜 III§r", + "block.gtceu.uiv_battery_buffer_16x": "16x§2極巨壓§r電池箱(§2UIV§r)", + "block.gtceu.uiv_battery_buffer_4x": "4x§2極巨壓§r電池箱(§2UIV§r)", + "block.gtceu.uiv_battery_buffer_8x": "8x§2極巨壓§r電池箱(§2UIV§r)", + "block.gtceu.uiv_bender": "§2史詩卷板機 III§r", + "block.gtceu.uiv_brewery": "§2史詩釀造室 III§r", + "block.gtceu.uiv_canner": "§2史詩裝罐機 III§r", + "block.gtceu.uiv_centrifuge": "§2史詩離心機 III§r", + "block.gtceu.uiv_charger_4x": "4x§2極巨壓§r充電機(§2UIV§r)", + "block.gtceu.uiv_chemical_bath": "§2史詩化學水浴機 III§r", + "block.gtceu.uiv_chemical_reactor": "§2史詩化學反應器 III§r", + "block.gtceu.uiv_circuit_assembler": "§2史詩電路組裝機 III§r", + "block.gtceu.uiv_compressor": "§2史詩壓縮機 III§r", + "block.gtceu.uiv_cutter": "§2史詩切割機 III§r", + "block.gtceu.uiv_diode": "§2UIV§r二極體", + "block.gtceu.uiv_distillery": "§2史詩蒸餾室 III§r", + "block.gtceu.uiv_dual_input_hatch": "§2UIV§r兩用輸入倉", + "block.gtceu.uiv_dual_output_hatch": "§2UIV§r兩用輸出倉", + "block.gtceu.uiv_electric_furnace": "§2史詩電爐 III§r", + "block.gtceu.uiv_electrolyzer": "§2史詩電解機 III§r", + "block.gtceu.uiv_electromagnetic_separator": "§2史詩電磁分離機 III§r", + "block.gtceu.uiv_energy_input_hatch": "§2UIV§r能量輸入倉", + "block.gtceu.uiv_energy_input_hatch_16a": "16安§2UIV§r能量輸入倉", + "block.gtceu.uiv_energy_input_hatch_4a": "4安§2UIV§r能量輸入倉", + "block.gtceu.uiv_energy_output_hatch": "§2UIV§r能量輸出倉", + "block.gtceu.uiv_energy_output_hatch_16a": "16安§2UIV§r能量輸出倉", + "block.gtceu.uiv_energy_output_hatch_4a": "4安§2UIV§r能量輸出倉", + "block.gtceu.uiv_extractor": "§2史詩提取機 III§r", + "block.gtceu.uiv_extruder": "§2史詩壓模器 III§r", + "block.gtceu.uiv_fermenter": "§2史詩發酵槽 III§r", + "block.gtceu.uiv_fluid_heater": "§2史詩流體加熱器 III§r", + "block.gtceu.uiv_fluid_passthrough_hatch": "§2UIV§r流體通行倉", + "block.gtceu.uiv_fluid_solidifier": "§2史詩流體固化器 III§r", + "block.gtceu.uiv_forge_hammer": "§2史詩鍛造錘 III§r", + "block.gtceu.uiv_forming_press": "§2史詩衝壓機床 III§r", + "block.gtceu.uiv_gas_collector": "§2史詩集氣室 III§r", + "block.gtceu.uiv_input_bus": "§2UIV§r輸入匯流排", + "block.gtceu.uiv_input_hatch": "§2UIV§r輸入倉", + "block.gtceu.uiv_input_hatch_4x": "§2UIV§r四重輸入倉", + "block.gtceu.uiv_input_hatch_9x": "§2UIV§r九重輸入倉", + "block.gtceu.uiv_item_passthrough_hatch": "§2UIV§r物品通行倉", + "block.gtceu.uiv_laser_engraver": "§2史詩雷射蝕刻機 III§r", + "block.gtceu.uiv_lathe": "§2史詩車床 III§r", + "block.gtceu.uiv_macerator": "§2史詩研磨機 III§r", + "block.gtceu.uiv_machine_casing": "§2UIV§r機械方塊", + "block.gtceu.uiv_machine_hull": "§2UIV§r機器外殼", + "block.gtceu.uiv_mixer": "§2史詩攪拌機 III§r", + "block.gtceu.uiv_muffler_hatch": "§2UIV§r消音倉", + "block.gtceu.uiv_ore_washer": "§2史詩洗礦廠 III§r", + "block.gtceu.uiv_output_bus": "§2UIV§r輸出匯流排", + "block.gtceu.uiv_output_hatch": "§2UIV§r輸出倉", + "block.gtceu.uiv_output_hatch_4x": "§2UIV§r四重輸出倉", + "block.gtceu.uiv_output_hatch_9x": "§2UIV§r九重輸出倉", + "block.gtceu.uiv_packer": "§2史詩打包機 III§r", + "block.gtceu.uiv_polarizer": "§2史詩兩極磁化機 III§r", + "block.gtceu.uiv_quantum_chest": "量子箱 XI", + "block.gtceu.uiv_quantum_tank": "量子缸 XI", + "block.gtceu.uiv_rock_crusher": "§2史詩碎岩機 III§r", + "block.gtceu.uiv_rotor_holder": "§2UIV§r轉子支架", + "block.gtceu.uiv_scanner": "§2史詩掃描器 III§r", + "block.gtceu.uiv_sifter": "§2史詩篩選機 III§r", + "block.gtceu.uiv_substation_input_hatch_64a": "64安§2UIV§r變電能量輸入倉", + "block.gtceu.uiv_substation_output_hatch_64a": "64安§2UIV§r變電能量輸出倉", + "block.gtceu.uiv_thermal_centrifuge": "§2史詩熱力離心機 III§r", + "block.gtceu.uiv_transformer_16a": "§2極巨壓§r高能變壓器(§2UIV§r)", + "block.gtceu.uiv_transformer_1a": "§2極巨壓§r變壓器(§2UIV§r)", + "block.gtceu.uiv_transformer_2a": "§2極巨壓§r進階變壓器(§2UIV§r)", + "block.gtceu.uiv_transformer_4a": "§2極巨壓§r高流變壓器(§2UIV§r)", + "block.gtceu.uiv_wiremill": "§2史詩線材軋機 III§r", + "block.gtceu.ulv_16a_energy_converter": "16§e安§r§8ULV§r能量轉換器", + "block.gtceu.ulv_1a_energy_converter": "1§e安§r§8ULV§r能量轉換器", + "block.gtceu.ulv_4a_energy_converter": "4§e安§r§8ULV§r能量轉換器", + "block.gtceu.ulv_8a_energy_converter": "8§e安§r§8ULV§r能量轉換器", + "block.gtceu.ulv_battery_buffer_16x": "16x§8超低壓§r電池箱(§8ULV§r)", + "block.gtceu.ulv_battery_buffer_4x": "4x§8超低壓§r電池箱(§8ULV§r)", + "block.gtceu.ulv_battery_buffer_8x": "8x§8超低壓§r電池箱(§8ULV§r)", + "block.gtceu.ulv_charger_4x": "4x§8超低壓§r充電機(§8ULV§r)", + "block.gtceu.ulv_energy_input_hatch": "§8ULV§r能量輸入倉", + "block.gtceu.ulv_energy_output_hatch": "§8ULV§r能量輸出倉", + "block.gtceu.ulv_input_bus": "§8ULV§r輸入匯流排", + "block.gtceu.ulv_input_hatch": "§8ULV§r輸入倉", + "block.gtceu.ulv_machine_casing": "§8ULV§r機械方塊", + "block.gtceu.ulv_machine_hull": "§8ULV§r機器外殼", + "block.gtceu.ulv_output_bus": "§8ULV§r輸出匯流排", + "block.gtceu.ulv_output_hatch": "§8ULV§r輸出倉", + "block.gtceu.ulv_transformer_16a": "§8超低壓§r高能變壓器(§8ULV§r)", + "block.gtceu.ulv_transformer_1a": "§8超低壓§r變壓器(§8ULV§r)", + "block.gtceu.ulv_transformer_2a": "§8超低壓§r進階變壓器(§8ULV§r)", + "block.gtceu.ulv_transformer_4a": "§8超低壓§r高流變壓器(§8ULV§r)", + "block.gtceu.uv_1024a_laser_source_hatch": "1024§e安§r§3UV§r雷射源倉", + "block.gtceu.uv_1024a_laser_target_hatch": "1024§e安§r§3UV§r雷射靶倉", + "block.gtceu.uv_16a_energy_converter": "16§e安§r§3UV§r能量轉換器", + "block.gtceu.uv_1a_energy_converter": "1§e安§r§3UV§r能量轉換器", + "block.gtceu.uv_256a_laser_source_hatch": "256§e安§r§3UV§r雷射源倉", + "block.gtceu.uv_256a_laser_target_hatch": "256§e安§r§3UV§r雷射靶倉", + "block.gtceu.uv_4096a_laser_source_hatch": "4096§e安§r§3UV§r雷射源倉", + "block.gtceu.uv_4096a_laser_target_hatch": "4096§e安§r§3UV§r雷射靶倉", + "block.gtceu.uv_4a_energy_converter": "4§e安§r§3UV§r能量轉換器", + "block.gtceu.uv_8a_energy_converter": "8§e安§r§3UV§r能量轉換器", + "block.gtceu.uv_alloy_smelter": "§3終極合金爐§r", + "block.gtceu.uv_arc_furnace": "§3終極電弧爐§r", + "block.gtceu.uv_assembler": "§3終極組裝機§r", + "block.gtceu.uv_autoclave": "§3終極高壓釜§r", + "block.gtceu.uv_battery_buffer_16x": "16x§3極限壓§r電池箱(§3UV§r)", + "block.gtceu.uv_battery_buffer_4x": "4x§3極限壓§r電池箱(§3UV§r)", + "block.gtceu.uv_battery_buffer_8x": "8x§3極限壓§r電池箱(§3UV§r)", + "block.gtceu.uv_bender": "§3終極卷板機§r", + "block.gtceu.uv_brewery": "§3終極釀造室§r", + "block.gtceu.uv_canner": "§3終極裝罐機§r", + "block.gtceu.uv_centrifuge": "§3終極離心機§r", + "block.gtceu.uv_charger_4x": "4x§3極限壓§r充電機(§3UV§r)", + "block.gtceu.uv_chemical_bath": "§3終極化學水浴機§r", + "block.gtceu.uv_chemical_reactor": "§3終極化學反應器§r", + "block.gtceu.uv_circuit_assembler": "§3終極電路組裝機§r", + "block.gtceu.uv_compressor": "§3終極壓縮機§r", + "block.gtceu.uv_cutter": "§3終極切割機§r", + "block.gtceu.uv_diode": "§3UV§r二極體", + "block.gtceu.uv_distillery": "§3終極蒸餾室§r", + "block.gtceu.uv_dual_input_hatch": "§3UV§r兩用輸入倉", + "block.gtceu.uv_dual_output_hatch": "§3UV§r兩用輸出倉", + "block.gtceu.uv_electric_furnace": "§3終極電爐§r", + "block.gtceu.uv_electrolyzer": "§3終極電解機§r", + "block.gtceu.uv_electromagnetic_separator": "§3終極電磁分離機§r", + "block.gtceu.uv_energy_input_hatch": "§3UV§r能量輸入倉", + "block.gtceu.uv_energy_input_hatch_16a": "16安§3UV§r能量輸入倉", + "block.gtceu.uv_energy_input_hatch_4a": "4安§3UV§r能量輸入倉", + "block.gtceu.uv_energy_output_hatch": "§3UV§r能量輸出倉", + "block.gtceu.uv_energy_output_hatch_16a": "16安§3UV§r能量輸出倉", + "block.gtceu.uv_energy_output_hatch_4a": "4安§3UV§r能量輸出倉", + "block.gtceu.uv_extractor": "§3終極提取機§r", + "block.gtceu.uv_extruder": "§3終極壓模器§r", + "block.gtceu.uv_fermenter": "§3終極發酵槽§r", + "block.gtceu.uv_fluid_heater": "§3終極流體加熱器§r", + "block.gtceu.uv_fluid_passthrough_hatch": "§3UV§r流體通行倉", + "block.gtceu.uv_fluid_solidifier": "§3終極流體固化器§r", + "block.gtceu.uv_forge_hammer": "§3終極鍛造錘§r", + "block.gtceu.uv_forming_press": "§3終極衝壓機床§r", + "block.gtceu.uv_fusion_reactor": "核融合反應爐控制電腦 MK-III", + "block.gtceu.uv_gas_collector": "§3終極集氣室§r", + "block.gtceu.uv_hermetic_casing": "密封機械方塊 VIII", + "block.gtceu.uv_input_bus": "§3UV§r輸入匯流排", + "block.gtceu.uv_input_hatch": "§3UV§r輸入倉", + "block.gtceu.uv_input_hatch_4x": "§3UV§r四重輸入倉", + "block.gtceu.uv_input_hatch_9x": "§3UV§r九重輸入倉", + "block.gtceu.uv_item_passthrough_hatch": "§3UV§r物品通行倉", + "block.gtceu.uv_lapotronic_battery": "§3UV§r蘭波頓電池", + "block.gtceu.uv_laser_engraver": "§3終極雷射蝕刻機§r", + "block.gtceu.uv_lathe": "§3終極車床§r", + "block.gtceu.uv_macerator": "§3終極研磨機§r", + "block.gtceu.uv_machine_casing": "§3UV§r機械方塊", + "block.gtceu.uv_machine_hull": "§3UV§r機器外殼", + "block.gtceu.uv_mixer": "§3終極攪拌機§r", + "block.gtceu.uv_muffler_hatch": "§3UV§r消音倉", + "block.gtceu.uv_ore_washer": "§3終極洗礦廠§r", + "block.gtceu.uv_output_bus": "§3UV§r輸出匯流排", + "block.gtceu.uv_output_hatch": "§3UV§r輸出倉", + "block.gtceu.uv_output_hatch_4x": "§3UV§r四重輸出倉", + "block.gtceu.uv_output_hatch_9x": "§3UV§r九重輸出倉", + "block.gtceu.uv_packer": "§3終極打包機§r", + "block.gtceu.uv_parallel_hatch": "§3UV§r平行控制倉", + "block.gtceu.uv_polarizer": "§3終極兩極磁化機§r", + "block.gtceu.uv_quantum_chest": "量子箱 VIII", + "block.gtceu.uv_quantum_tank": "量子缸 VIII", + "block.gtceu.uv_rock_crusher": "§3終極碎岩機§r", + "block.gtceu.uv_rotor_holder": "§3UV§r轉子支架", + "block.gtceu.uv_scanner": "§3終極掃描器§r", + "block.gtceu.uv_sifter": "§3終極篩選機§r", + "block.gtceu.uv_substation_input_hatch_64a": "64安§3UV§r變電能量輸入倉", + "block.gtceu.uv_substation_output_hatch_64a": "64安§3UV§r變電能量輸出倉", + "block.gtceu.uv_thermal_centrifuge": "§3終極熱力離心機§r", + "block.gtceu.uv_transformer_16a": "§3極限壓§r高能變壓器(§3UV§r)", + "block.gtceu.uv_transformer_1a": "§3極限壓§r變壓器(§3UV§r)", + "block.gtceu.uv_transformer_2a": "§3極限壓§r進階變壓器(§3UV§r)", + "block.gtceu.uv_transformer_4a": "§3極限壓§r高流變壓器(§3UV§r)", + "block.gtceu.uv_wiremill": "§3終極線材軋機§r", + "block.gtceu.uv_world_accelerator": "§3終極世界加速器§r", + "block.gtceu.uxv_1024a_laser_source_hatch": "1024§e安§r§eUXV§r雷射源倉", + "block.gtceu.uxv_1024a_laser_target_hatch": "1024§e安§r§eUXV§r雷射靶倉", + "block.gtceu.uxv_16a_energy_converter": "16§e安§r§eUXV§r能量轉換器", + "block.gtceu.uxv_1a_energy_converter": "1§e安§r§eUXV§r能量轉換器", + "block.gtceu.uxv_256a_laser_source_hatch": "256§e安§r§eUXV§r雷射源倉", + "block.gtceu.uxv_256a_laser_target_hatch": "256§e安§r§eUXV§r雷射靶倉", + "block.gtceu.uxv_4096a_laser_source_hatch": "4096§e安§r§eUXV§r雷射源倉", + "block.gtceu.uxv_4096a_laser_target_hatch": "4096§e安§r§eUXV§r雷射靶倉", + "block.gtceu.uxv_4a_energy_converter": "4§e安§r§eUXV§r能量轉換器", + "block.gtceu.uxv_8a_energy_converter": "8§e安§r§eUXV§r能量轉換器", + "block.gtceu.uxv_alloy_smelter": "§e史詩合金爐 IV§r", + "block.gtceu.uxv_arc_furnace": "§e史詩電弧爐 IV§r", + "block.gtceu.uxv_assembler": "§e史詩組裝機 IV§r", + "block.gtceu.uxv_autoclave": "§e史詩高壓釜 IV§r", + "block.gtceu.uxv_battery_buffer_16x": "16x§e極頂壓§r電池箱(§eUXV§r)", + "block.gtceu.uxv_battery_buffer_4x": "4x§e極頂壓§r電池箱(§eUXV§r)", + "block.gtceu.uxv_battery_buffer_8x": "8x§e極頂壓§r電池箱(§eUXV§r)", + "block.gtceu.uxv_bender": "§e史詩卷板機 IV§r", + "block.gtceu.uxv_brewery": "§e史詩釀造室 IV§r", + "block.gtceu.uxv_canner": "§e史詩裝罐機 IV§r", + "block.gtceu.uxv_centrifuge": "§e史詩離心機 IV§r", + "block.gtceu.uxv_charger_4x": "4x§e極頂壓§r充電機(§eUXV§r)", + "block.gtceu.uxv_chemical_bath": "§e史詩化學水浴機 IV§r", + "block.gtceu.uxv_chemical_reactor": "§e史詩化學反應器 IV§r", + "block.gtceu.uxv_circuit_assembler": "§e史詩電路組裝機 IV§r", + "block.gtceu.uxv_compressor": "§e史詩壓縮機 IV§r", + "block.gtceu.uxv_cutter": "§e史詩切割機 IV§r", + "block.gtceu.uxv_diode": "§eUXV§r二極體", + "block.gtceu.uxv_distillery": "§e史詩蒸餾室 IV§r", + "block.gtceu.uxv_dual_input_hatch": "§eUXV§r兩用輸入倉", + "block.gtceu.uxv_dual_output_hatch": "§eUXV§r兩用輸出倉", + "block.gtceu.uxv_electric_furnace": "§e史詩電爐 IV§r", + "block.gtceu.uxv_electrolyzer": "§e史詩電解機 IV§r", + "block.gtceu.uxv_electromagnetic_separator": "§e史詩電磁分離機 IV§r", + "block.gtceu.uxv_energy_input_hatch": "§eUXV§r能量輸入倉", + "block.gtceu.uxv_energy_input_hatch_16a": "16安§eUXV§r能量輸入倉", + "block.gtceu.uxv_energy_input_hatch_4a": "4安§eUXV§r能量輸入倉", + "block.gtceu.uxv_energy_output_hatch": "§eUXV§r能量輸出倉", + "block.gtceu.uxv_energy_output_hatch_16a": "16安§eUXV§r能量輸出倉", + "block.gtceu.uxv_energy_output_hatch_4a": "4安§eUXV§r能量輸出倉", + "block.gtceu.uxv_extractor": "§e史詩提取機 IV§r", + "block.gtceu.uxv_extruder": "§e史詩壓模器 IV§r", + "block.gtceu.uxv_fermenter": "§e史詩發酵槽 IV§r", + "block.gtceu.uxv_fluid_heater": "§e史詩流體加熱器 IV§r", + "block.gtceu.uxv_fluid_passthrough_hatch": "§eUXV§r流體通行倉", + "block.gtceu.uxv_fluid_solidifier": "§e史詩流體固化器 IV§r", + "block.gtceu.uxv_forge_hammer": "§e史詩鍛造錘 IV§r", + "block.gtceu.uxv_forming_press": "§e史詩衝壓機床 IV§r", + "block.gtceu.uxv_gas_collector": "§e史詩集氣室 IV§r", + "block.gtceu.uxv_input_bus": "§eUXV§r輸入匯流排", + "block.gtceu.uxv_input_hatch": "§eUXV§r輸入倉", + "block.gtceu.uxv_input_hatch_4x": "§eUXV§r四重輸入倉", + "block.gtceu.uxv_input_hatch_9x": "§eUXV§r九重輸入倉", + "block.gtceu.uxv_item_passthrough_hatch": "§eUXV§r物品通行倉", + "block.gtceu.uxv_laser_engraver": "§e史詩雷射蝕刻機 IV§r", + "block.gtceu.uxv_lathe": "§e史詩車床 IV§r", + "block.gtceu.uxv_macerator": "§e史詩研磨機 IV§r", + "block.gtceu.uxv_machine_casing": "§eUXV§r機械方塊", + "block.gtceu.uxv_machine_hull": "§eUXV§r機器外殼", + "block.gtceu.uxv_mixer": "§e史詩攪拌機 IV§r", + "block.gtceu.uxv_muffler_hatch": "§eUXV§r消音倉", + "block.gtceu.uxv_ore_washer": "§e史詩洗礦廠 IV§r", + "block.gtceu.uxv_output_bus": "§eUXV§r輸出匯流排", + "block.gtceu.uxv_output_hatch": "§eUXV§r輸出倉", + "block.gtceu.uxv_output_hatch_4x": "§eUXV§r四重輸出倉", + "block.gtceu.uxv_output_hatch_9x": "§eUXV§r九重輸出倉", + "block.gtceu.uxv_packer": "§e史詩打包機 IV§r", + "block.gtceu.uxv_polarizer": "§e史詩兩極磁化機 IV§r", + "block.gtceu.uxv_quantum_chest": "量子箱 XII", + "block.gtceu.uxv_quantum_tank": "量子缸 XII", + "block.gtceu.uxv_rock_crusher": "§e史詩碎岩機 IV§r", + "block.gtceu.uxv_rotor_holder": "§eUXV§r轉子支架", + "block.gtceu.uxv_scanner": "§e史詩掃描器 IV§r", + "block.gtceu.uxv_sifter": "§e史詩篩選機 IV§r", + "block.gtceu.uxv_substation_input_hatch_64a": "64安§eUXV§r變電能量輸入倉", + "block.gtceu.uxv_substation_output_hatch_64a": "64安§eUXV§r變電能量輸出倉", + "block.gtceu.uxv_thermal_centrifuge": "§e史詩熱力離心機 IV§r", + "block.gtceu.uxv_transformer_16a": "§e極頂壓§r高能變壓器(§eUXV§r)", + "block.gtceu.uxv_transformer_1a": "§e極頂壓§r變壓器(§eUXV§r)", + "block.gtceu.uxv_transformer_2a": "§e極頂壓§r進階變壓器(§eUXV§r)", + "block.gtceu.uxv_transformer_4a": "§e極頂壓§r高流變壓器(§eUXV§r)", + "block.gtceu.uxv_wiremill": "§e史詩線材軋機 IV§r", + "block.gtceu.vacuum_freezer": "真空冷凍機", + "block.gtceu.vibration_safe_casing": "防震機械方塊", + "block.gtceu.void_hazard_sign_block": "虛空危害警示方塊", + "block.gtceu.watertight_casing": "防水機械方塊", + "block.gtceu.white_borderless_lamp": "白色無框燈", + "block.gtceu.white_lamp": "白色燈", + "block.gtceu.white_large_metal_sheet": "白色粗紋金屬板方塊", + "block.gtceu.white_metal_sheet": "白色金屬板方塊", + "block.gtceu.white_studs": "白色橡膠混凝土", + "block.gtceu.wire_coil.tooltip_cracking": "§8裂解機:", + "block.gtceu.wire_coil.tooltip_energy_cracking": "§a耗能:§f%s%%", + "block.gtceu.wire_coil.tooltip_energy_smelter": "§a耗能:§8每配方§f%s EU/t", + "block.gtceu.wire_coil.tooltip_extended_info": "§7按住§6SHIFT§7獲得更多線圈資訊", + "block.gtceu.wire_coil.tooltip_heat": "§c基礎熱容:§f%d K", + "block.gtceu.wire_coil.tooltip_parallel_smelter": "§5最大平行:§f%s", + "block.gtceu.wire_coil.tooltip_pyro": "§8熱解爐:", + "block.gtceu.wire_coil.tooltip_smelter": "§8工業熔爐:", + "block.gtceu.wire_coil.tooltip_speed_pyro": "§b處理速度:§f%s%%", + "block.gtceu.wood_crate": "木板條箱", + "block.gtceu.wood_drum": "木桶", + "block.gtceu.wood_wall": "木牆", + "block.gtceu.wooden_multiblock_tank": "木製多方塊儲罐", + "block.gtceu.wooden_tank_valve": "木製儲罐閥門", + "block.gtceu.yellow_borderless_lamp": "黃色無框燈", + "block.gtceu.yellow_lamp": "黃色燈", + "block.gtceu.yellow_large_metal_sheet": "黃色粗紋金屬板方塊", + "block.gtceu.yellow_metal_sheet": "黃色金屬板方塊", + "block.gtceu.yellow_stripes_block.a": "黃色路障方塊", + "block.gtceu.yellow_stripes_block.b": "黃色路障方塊", + "block.gtceu.yellow_stripes_block.c": "黃色路障方塊", + "block.gtceu.yellow_stripes_block.d": "黃色路障方塊", + "block.gtceu.yellow_stripes_block_a": "黃色路障方塊A", + "block.gtceu.yellow_stripes_block_b": "黃色路障方塊B", + "block.gtceu.yellow_studs": "黃色橡膠混凝土", + "block.gtceu.zpm_1024a_laser_source_hatch": "1024§e安§r§cZPM§r雷射源倉", + "block.gtceu.zpm_1024a_laser_target_hatch": "1024§e安§r§cZPM§r雷射靶倉", + "block.gtceu.zpm_16a_energy_converter": "16§e安§r§cZPM§r能量轉換器", + "block.gtceu.zpm_1a_energy_converter": "1§e安§r§cZPM§r能量轉換器", + "block.gtceu.zpm_256a_laser_source_hatch": "256§e安§r§cZPM§r雷射源倉", + "block.gtceu.zpm_256a_laser_target_hatch": "256§e安§r§cZPM§r雷射靶倉", + "block.gtceu.zpm_4096a_laser_source_hatch": "4096§e安§r§cZPM§r雷射源倉", + "block.gtceu.zpm_4096a_laser_target_hatch": "4096§e安§r§cZPM§r雷射靶倉", + "block.gtceu.zpm_4a_energy_converter": "4§e安§r§cZPM§r能量轉換器", + "block.gtceu.zpm_8a_energy_converter": "8§e安§r§cZPM§r能量轉換器", + "block.gtceu.zpm_alloy_smelter": "§c精英合金爐 III§r", + "block.gtceu.zpm_arc_furnace": "§c精英電弧爐 III§r", + "block.gtceu.zpm_assembler": "§c精英組裝機 III§r", + "block.gtceu.zpm_autoclave": "§c精英高壓釜 III§r", + "block.gtceu.zpm_battery_buffer_16x": "16x§c零點壓§r電池箱(§cZPM§r)", + "block.gtceu.zpm_battery_buffer_4x": "4x§c零點壓§r電池箱(§cZPM§r)", + "block.gtceu.zpm_battery_buffer_8x": "8x§c零點壓§r電池箱(§cZPM§r)", + "block.gtceu.zpm_bender": "§c精英卷板機 III§r", + "block.gtceu.zpm_brewery": "§c精英釀造室 III§r", + "block.gtceu.zpm_canner": "§c精英裝罐機 III§r", + "block.gtceu.zpm_centrifuge": "§c精英離心機 III§r", + "block.gtceu.zpm_charger_4x": "4x§c零點壓§r充電機(§cZPM§r)", + "block.gtceu.zpm_chemical_bath": "§c精英化學水浴機 III§r", + "block.gtceu.zpm_chemical_reactor": "§c精英化學反應器 III§r", + "block.gtceu.zpm_circuit_assembler": "§c精英電路組裝機 III§r", + "block.gtceu.zpm_compressor": "§c精英壓縮機 III§r", + "block.gtceu.zpm_cutter": "§c精英切割機 III§r", + "block.gtceu.zpm_diode": "§cZPM§r二極體", + "block.gtceu.zpm_distillery": "§c精英蒸餾室 III§r", + "block.gtceu.zpm_dual_input_hatch": "§cZPM§r兩用輸入倉", + "block.gtceu.zpm_dual_output_hatch": "§cZPM§r兩用輸出倉", + "block.gtceu.zpm_electric_furnace": "§c精英電爐 III§r", + "block.gtceu.zpm_electrolyzer": "§c精英電解機 III§r", + "block.gtceu.zpm_electromagnetic_separator": "§c精英電磁分離機 III§r", + "block.gtceu.zpm_energy_input_hatch": "§cZPM§r能量輸入倉", + "block.gtceu.zpm_energy_input_hatch_16a": "16安§cZPM§r能量輸入倉", + "block.gtceu.zpm_energy_input_hatch_4a": "4安§cZPM§r能量輸入倉", + "block.gtceu.zpm_energy_output_hatch": "§cZPM§r能量輸出倉", + "block.gtceu.zpm_energy_output_hatch_16a": "16安§cZPM§r能量輸出倉", + "block.gtceu.zpm_energy_output_hatch_4a": "4安§cZPM§r能量輸出倉", + "block.gtceu.zpm_extractor": "§c精英提取機 III§r", + "block.gtceu.zpm_extruder": "§c精英壓模器 III§r", + "block.gtceu.zpm_fermenter": "§c精英發酵槽 III§r", + "block.gtceu.zpm_fluid_heater": "§c精英流體加熱器 III§r", + "block.gtceu.zpm_fluid_passthrough_hatch": "§cZPM§r流體通行倉", + "block.gtceu.zpm_fluid_solidifier": "§c精英流體固化器 III§r", + "block.gtceu.zpm_forge_hammer": "§c精英鍛造錘 III§r", + "block.gtceu.zpm_forming_press": "§c精英衝壓機床 III§r", + "block.gtceu.zpm_fusion_reactor": "核融合反應爐控制電腦 MK-II", + "block.gtceu.zpm_gas_collector": "§c精英集氣室 III§r", + "block.gtceu.zpm_hermetic_casing": "密封機械方塊 VII", + "block.gtceu.zpm_input_bus": "§cZPM§r輸入匯流排", + "block.gtceu.zpm_input_hatch": "§cZPM§r輸入倉", + "block.gtceu.zpm_input_hatch_4x": "§cZPM§r四重輸入倉", + "block.gtceu.zpm_input_hatch_9x": "§cZPM§r九重輸入倉", + "block.gtceu.zpm_item_passthrough_hatch": "§cZPM§r物品通行倉", + "block.gtceu.zpm_lapotronic_battery": "§cZPM§r蘭波頓電池", + "block.gtceu.zpm_laser_engraver": "§c精英雷射蝕刻機 III§r", + "block.gtceu.zpm_lathe": "§c精英車床 III§r", + "block.gtceu.zpm_macerator": "§c精英研磨機 III§r", + "block.gtceu.zpm_machine_casing": "§cZPM§r機械方塊", + "block.gtceu.zpm_machine_hull": "§cZPM§r機器外殼", + "block.gtceu.zpm_mixer": "§c精英攪拌機 III§r", + "block.gtceu.zpm_muffler_hatch": "§cZPM§r消音倉", + "block.gtceu.zpm_ore_washer": "§c精英洗礦廠 III§r", + "block.gtceu.zpm_output_bus": "§cZPM§r輸出匯流排", + "block.gtceu.zpm_output_hatch": "§cZPM§r輸出倉", + "block.gtceu.zpm_output_hatch_4x": "§cZPM§r四重輸出倉", + "block.gtceu.zpm_output_hatch_9x": "§cZPM§r九重輸出倉", + "block.gtceu.zpm_packer": "§c精英打包機 III§r", + "block.gtceu.zpm_parallel_hatch": "§cZPM§r平行控制倉", + "block.gtceu.zpm_polarizer": "§c精英兩極磁化機 III§r", + "block.gtceu.zpm_quantum_chest": "量子箱 VII", + "block.gtceu.zpm_quantum_tank": "量子缸 VII", + "block.gtceu.zpm_rock_crusher": "§c精英碎岩機 III§r", + "block.gtceu.zpm_rotor_holder": "§cZPM§r轉子支架", + "block.gtceu.zpm_scanner": "§c精英掃描器III§r", + "block.gtceu.zpm_sifter": "§c精英篩選機 III§r", + "block.gtceu.zpm_substation_input_hatch_64a": "64安§cZPM§r變電能量輸入倉", + "block.gtceu.zpm_substation_output_hatch_64a": "64安§cZPM§r變電能量輸出倉", + "block.gtceu.zpm_thermal_centrifuge": "§c精英熱力離心機 III§r", + "block.gtceu.zpm_transformer_16a": "§c零點壓§r高能變壓器(§cZPM§r)", + "block.gtceu.zpm_transformer_1a": "§c零點壓§r變壓器(§cZPM§r)", + "block.gtceu.zpm_transformer_2a": "§c零點壓§r進階變壓器(§cZPM§r)", + "block.gtceu.zpm_transformer_4a": "§c零點壓§r高流變壓器(§cZPM§r)", + "block.gtceu.zpm_wiremill": "§c精英線材軋機 III§r", + "block.gtceu.zpm_world_accelerator": "§c精英世界加速器 III§r", + "block.sterilizing_filter_casing.tooltip": "創造一個§a無菌§r環境", + "block.surface_rock": "地表岩石(%s)", + "button.gtceu.mark_as_depleted.name": "標記為枯竭", + "button.gtceu.toggle_waypoint.name": "切換路徑點", + "command.gtceu.dump_data.success": "已將登錄檔%2$s中的%1$s個資源轉儲到%3$s", + "command.gtceu.medical_condition.get": "玩家%s有以下疾病:", + "command.gtceu.medical_condition.get.element": "症狀【%s】§r:%s分%s秒", + "command.gtceu.medical_condition.get.element.permanent": "症狀【%s】§r:%s分%s秒(永久)", + "command.gtceu.medical_condition.get.empty": "玩家%s沒有疾病。", + "command.gtceu.place_vein.failure": "無法放置%s礦脈於%s", + "command.gtceu.place_vein.success": "成功放置%s礦脈於%s", + "command.gtceu.share_prospection_data.notification": "%s與你分享了礦脈資料!", + "config.gtceu.option.addLoot": "新增戰利品", + "config.gtceu.option.ae2": "ae2", + "config.gtceu.option.allUniqueStoneTypes": "所有獨特石頭型別", + "config.gtceu.option.animationTime": "動畫時間", + "config.gtceu.option.armorHud": "盔甲HUD", + "config.gtceu.option.bedrockOreDistance": "基岩礦距離", + "config.gtceu.option.bedrockOreDropTagPrefix": "基岩礦掉落Tag", + "config.gtceu.option.borderColor": "邊框顏色", + "config.gtceu.option.bronzeBoilerHeatSpeed": "青銅鍋爐-加熱速度", + "config.gtceu.option.bronzeBoilerMaxTemperature": "青銅鍋爐-最高溫度", + "config.gtceu.option.buttonAnchor": "按鈕位置", + "config.gtceu.option.casingsPerCraft": "每次合成機械方塊數量", + "config.gtceu.option.cleanMultiblocks": "多方塊結構是否潔淨", + "config.gtceu.option.client": "客戶端", + "config.gtceu.option.compat": "相容", + "config.gtceu.option.debug": "除錯", + "config.gtceu.option.debugWorldgen": "礦位置Debug模式", + "config.gtceu.option.defaultPaintingColor": "機器預設噴漆顏色", + "config.gtceu.option.defaultUIColor": "預設UI顏色", + "config.gtceu.option.dev": "開發", + "config.gtceu.option.direction": "方向", + "config.gtceu.option.disableManualCompression": "關閉手工壓縮", + "config.gtceu.option.doBedrockOres": "新增基岩礦", + "config.gtceu.option.doSuperflatOres": "超平坦世界生成礦", + "config.gtceu.option.doesExplosionDamagesTerrain": "機器爆炸是否破壞地形", + "config.gtceu.option.dumpAssets": "匯出資源", + "config.gtceu.option.dumpRecipes": "匯出配方", + "config.gtceu.option.enableCleanroom": "啟用無塵室", + "config.gtceu.option.enableFEConverters": "啟用FE轉換器", + "config.gtceu.option.enableMaintenance": "啟用維護倉", + "config.gtceu.option.enableResearch": "啟用研究", + "config.gtceu.option.enableTieredCasings": "啟用分級機械方塊", + "config.gtceu.option.enableWorldAccelerators": "啟用世界加速器", + "config.gtceu.option.enchantedTools": "附魔工具", + "config.gtceu.option.energy": "能量", + "config.gtceu.option.energyConsumption": "能耗", + "config.gtceu.option.energyUsageMultiplier": "能源消耗倍率", + "config.gtceu.option.environmentalHazardDecayRate": "環境污染衰減速率", + "config.gtceu.option.environmentalHazards": "環境污染", + "config.gtceu.option.euToFeRatio": "GTEU到FE的轉換比例", + "config.gtceu.option.feToEuRatio": "FE到GTEU的轉換比例", + "config.gtceu.option.flintAndSteelRequireSteel": "打火石配方是否需要鋼", + "config.gtceu.option.ftbChunksIntegration": "FTB區塊-整合", + "config.gtceu.option.gameplay": "遊戲玩法", + "config.gtceu.option.generateLowQualityGems": "生成劣質寶石", + "config.gtceu.option.ghostCircuit": "虛擬電路", + "config.gtceu.option.gt6StylePipesCables": "類GT6管道/線纜", + "config.gtceu.option.hardAdvancedIronRecipes": "更難的高階鐵製品配方", + "config.gtceu.option.hardDyeRecipes": "更難的染料配方", + "config.gtceu.option.hardGlassRecipes": "更難的玻璃配方", + "config.gtceu.option.hardIronRecipes": "更難的鐵製品配方", + "config.gtceu.option.hardMiscRecipes": "更難的雜項配方", + "config.gtceu.option.hardMultiRecipes": "更難的多方塊控制器配方", + "config.gtceu.option.hardRedstoneRecipes": "更難的紅石配方", + "config.gtceu.option.hardToolArmorRecipes": "更難的工具盔甲配方", + "config.gtceu.option.hardWoodRecipes": "更難的木頭配方", + "config.gtceu.option.harderBrickRecipes": "更難的磚塊配方", + "config.gtceu.option.harderCharcoalRecipe": "更難的木炭配方", + "config.gtceu.option.harderCircuitRecipes": "更難的電路板配方", + "config.gtceu.option.harderRods": "更難的桿配方", + "config.gtceu.option.harmlessActiveTransformers": "無害的有源變壓器", + "config.gtceu.option.hazardsEnabled": "啟用危險物質", + "config.gtceu.option.hideFacadesInRecipeViewer": "配方瀏覽器中隱藏偽裝板", + "config.gtceu.option.hideFilledCellsInRecipeViewer": "配方瀏覽器中隱藏裝滿的單元", + "config.gtceu.option.hideOreProcessingDiagrams": "隱藏礦物處理流程圖", + "config.gtceu.option.highTierContent": "極高電壓內容", + "config.gtceu.option.hpLiquidBoilerBaseOutput": "高壓液體鍋爐-基礎輸出", + "config.gtceu.option.hpSolarBoilerBaseOutput": "高壓太陽能鍋爐-基礎輸出", + "config.gtceu.option.hpSolidBoilerBaseOutput": "高壓固體鍋爐-基礎輸出", + "config.gtceu.option.hudLocation": "HUD位置", + "config.gtceu.option.hudOffsetX": "HUD偏移X", + "config.gtceu.option.hudOffsetY": "HUD偏移Y", + "config.gtceu.option.inWorldPreviewDuration": "世界中預覽時長", + "config.gtceu.option.increaseDungeonLoot": "更多的地牢戰利品", + "config.gtceu.option.infiniteBedrockOresFluids": "無限基岩礦流體", + "config.gtceu.option.journeyMapIntegration": "旅行地圖-整合", + "config.gtceu.option.largeBoilers": "大型鍋爐", + "config.gtceu.option.ldFluidPipeMinDistance": "長距流體管道最小距離", + "config.gtceu.option.ldItemPipeMinDistance": "長距物品管道最小距離", + "config.gtceu.option.liquidBoilerBaseOutput": "液體鍋爐-基礎輸出", + "config.gtceu.option.machineSounds": "機器音效", + "config.gtceu.option.machines": "機器", + "config.gtceu.option.machinesEmissiveTextures": "啟用機器泛光紋理", + "config.gtceu.option.meHatchEnergyUsage": "ME倉能耗", + "config.gtceu.option.minerSpeed": "採礦機速度", + "config.gtceu.option.minimap": "小地圖", + "config.gtceu.option.nanoSaber": "奈米劍", + "config.gtceu.option.nanoSaberBaseDamage": "奈米劍基礎傷害", + "config.gtceu.option.nanoSaberDamageBoost": "奈米劍傷害增幅", + "config.gtceu.option.nativeEUToFE": "線纜直接給FE機器供能", + "config.gtceu.option.nerfPaperCrafting": "削弱紙配方", + "config.gtceu.option.nerfWoodCrafting": "削弱木材木棒合成", + "config.gtceu.option.onlyOwnerBreak": "僅所有者可破壞", + "config.gtceu.option.onlyOwnerGUI": "僅所有者可開啟GUI", + "config.gtceu.option.orderedAssemblyLineFluids": "有序的裝配線-流體", + "config.gtceu.option.orderedAssemblyLineItems": "有序的裝配線-物品", + "config.gtceu.option.oreBlockProspectRange": "礦物探測半徑", + "config.gtceu.option.oreGenerationChunkCacheSize": "礦物生成區塊快取大小", + "config.gtceu.option.oreIconSize": "礦物圖示大小", + "config.gtceu.option.oreIndicatorChunkCacheSize": "礦脈指示物區塊快取大小", + "config.gtceu.option.oreIndicators": "礦脈指示物", + "config.gtceu.option.oreNamePrefix": "礦物名稱字首", + "config.gtceu.option.oreScaleStop": "最大圖示縮放比例", + "config.gtceu.option.oreVeinGridSize": "礦脈網格大小", + "config.gtceu.option.oreVeinRandomOffset": "礦脈隨機偏移", + "config.gtceu.option.oreVeins": "礦脈", + "config.gtceu.option.ownerOPBypass": "跳過所有權檢查的最低許可權等級", + "config.gtceu.option.prospectorEnergyUseMultiplier": "探礦儀能源消耗倍率", + "config.gtceu.option.recipeProgressLowEnergy": "跳電時,機器進度將", + "config.gtceu.option.recipes": "配方", + "config.gtceu.option.removeSmeltingForEBFMetals": "移除需要電力高爐冶煉的金屬的熔爐配方", + "config.gtceu.option.removeVanillaBlockRecipes": "移除原版方塊配方", + "config.gtceu.option.removeVanillaLargeOreVeins": "移除原版大型礦脈", + "config.gtceu.option.removeVanillaOreGen": "移除原版礦物", + "config.gtceu.option.removeVanillaTNTRecipe": "移除原版TNT配方", + "config.gtceu.option.renderFluids": "渲染流體", + "config.gtceu.option.renderer": "渲染器", + "config.gtceu.option.replaceMinedBlocksWith": "用...替換採礦機採過的方塊", + "config.gtceu.option.requireGTToolsForBlocks": "方塊需要格雷工具", + "config.gtceu.option.rngDamageElectricTools": "電動工具耐久度消耗機率", + "config.gtceu.option.rubberTreeSpawnChance": "橡膠樹生成權重", + "config.gtceu.option.sandOresFall": "沙子礦受重力嗎", + "config.gtceu.option.shouldWeatherOrTerrainExplosion": "機器是否因天氣或地形爆炸", + "config.gtceu.option.showDimensionTier": "顯示維度等級", + "config.gtceu.option.smallBoilers": "小型鍋爐", + "config.gtceu.option.solarBoilerBaseOutput": "太陽能鍋爐-基礎輸出", + "config.gtceu.option.solidBoilerBaseOutput": "固體鍋爐-基礎輸出", + "config.gtceu.option.sprayCanChainLength": "噴霧罐單次可噴塗長度", + "config.gtceu.option.steamMultiParallelAmount": "蒸汽多方塊機器平行數", + "config.gtceu.option.steamPerWater": "蒸汽-水轉化率", + "config.gtceu.option.steelBoilerHeatSpeed": "鋼鍋爐-加熱速度", + "config.gtceu.option.steelBoilerMaxTemperature": "鋼鍋爐-最高溫度", + "config.gtceu.option.steelSteamMultiblocks": "用鋼的蒸汽多方塊結構", + "config.gtceu.option.surfaceRockProspectRange": "地表岩石探測半徑", + "config.gtceu.option.titaniumBoilerHeatSpeed": "鈦鍋爐-加熱速度", + "config.gtceu.option.titaniumBoilerMaxTemperature": "鈦鍋爐-最高溫度", + "config.gtceu.option.toggle": "切換", + "config.gtceu.option.toolCraftingSounds": "使用工具合成時播放聲音", + "config.gtceu.option.toolUseSounds": "使用工具時播放聲音", + "config.gtceu.option.tools": "工具", + "config.gtceu.option.treeFellingDelay": "砍樹延遲", + "config.gtceu.option.tungstensteelBoilerHeatSpeed": "鎢鋼鍋爐-加熱速度", + "config.gtceu.option.tungstensteelBoilerMaxTemperature": "鎢鋼鍋爐-最高溫度", + "config.gtceu.option.universalHazards": "普遍化的危險物質", + "config.gtceu.option.updateIntervals": "更新間隔", + "config.gtceu.option.useVBO": "使用VBO", + "config.gtceu.option.voltageTierAdvImpeller": "進階噴射背包電壓等級", + "config.gtceu.option.voltageTierAdvNanoSuit": "進階奈米胸甲電壓等級", + "config.gtceu.option.voltageTierAdvQuarkTech": "進階夸克胸甲電壓等級", + "config.gtceu.option.voltageTierImpeller": "噴射背包電壓等級", + "config.gtceu.option.voltageTierNanoSuit": "奈米套裝電壓等級", + "config.gtceu.option.voltageTierNightVision": "夜視儀電壓等級", + "config.gtceu.option.voltageTierQuarkTech": "夸克套裝電壓等級", + "config.gtceu.option.worldAcceleratorBlacklist": "世界加速器黑名單", + "config.gtceu.option.worldgen": "世界生成", + "config.gtceu.option.xOffset": "x偏移", + "config.gtceu.option.xaerosMapIntegration": "Xaero地圖-整合", + "config.gtceu.option.yOffset": "y偏移", + "config.gtceu.option.zombieSpawnWithSabers": "帶奈米劍的殭屍生成", + "config.jade.plugin_gtceu.auto_output_info": "[GTCEu] 自動輸出資訊", + "config.jade.plugin_gtceu.cable_info": "[GTCEu] 線纜資訊", + "config.jade.plugin_gtceu.controllable_provider": "[GTCEu] 是否停工", + "config.jade.plugin_gtceu.electric_container_provider": "[GTCEu] 電力槽", + "config.jade.plugin_gtceu.energy_converter_provider": "[GTCEu] 能量轉換器模式", + "config.jade.plugin_gtceu.exhaust_vent_info": "[GTCEu] 排氣口資訊", + "config.jade.plugin_gtceu.hazard_cleaner_provider": "[GTCEu] 污染清理", + "config.jade.plugin_gtceu.machine_mode": "[GTCEu] 機器模式", + "config.jade.plugin_gtceu.maintenance_info": "[GTCEu] 維護資訊", + "config.jade.plugin_gtceu.me_pattern_buffer": "[GTCEu] 樣板供應倉資訊", + "config.jade.plugin_gtceu.me_pattern_buffer_proxy": "[GTCEu] 遠端樣板供應倉資訊", + "config.jade.plugin_gtceu.multiblock_structure": "[GTCEu] 多方塊結構", + "config.jade.plugin_gtceu.parallel_info": "[GTCEu] 平行資訊", + "config.jade.plugin_gtceu.primitive_pump": "[GTCEu] 原始水泵資訊", + "config.jade.plugin_gtceu.recipe_logic_provider": "[GTCEu] 配方資訊", + "config.jade.plugin_gtceu.recipe_output_info": "[GTCEu] 配方輸出資訊", + "config.jade.plugin_gtceu.stained_color": "[GTCEu] 染色方塊資訊", + "config.jade.plugin_gtceu.steam_boiler_info": "[GTCEu] 蒸汽鍋爐資訊", + "config.jade.plugin_gtceu.transformer": "[GTCEu] 變壓器資訊", + "config.jade.plugin_gtceu.workable_provider": "[GTCEu] 工作資訊", + "cover.advanced_detector.latch.disabled.0": "行為:線性", + "cover.advanced_detector.latch.disabled.1": "", + "cover.advanced_detector.latch.disabled.2": "更改此覆蓋板的紅石行為。", + "cover.advanced_detector.latch.disabled.3": "§e線性§7 - 預設模式;物品數量小於最小值時不發出紅石訊號,大於最大值時發出訊號強度15的紅石訊號,數量介於二者之間發出訊號強度在0 - 15之間的紅石訊號", + "cover.advanced_detector.latch.disabled.4": "§e鎖存§7 - 發出滿級紅石訊號,直到物品數量大於最大值;然後停止發出紅石訊號,直到數量低於最小值", + "cover.advanced_detector.latch.enabled.0": "行為:鎖存", + "cover.advanced_detector.latch.enabled.1": "", + "cover.advanced_detector.latch.enabled.2": "更改此覆蓋板的紅石行為。", + "cover.advanced_detector.latch.enabled.3": "§e線性§7 - 預設模式;物品數量小於最小值時不發出紅石訊號,大於最大值時發出訊號強度15的紅石訊號,數量介於二者之間發出訊號強度在0 - 15之間的紅石訊號", + "cover.advanced_detector.latch.enabled.4": "§e鎖存§7 - 發出滿級紅石訊號,直到物品數量大於最大值;然後停止發出紅石訊號,直到數量低於最小值", + "cover.advanced_energy_detector.invert.disabled.0": "輸出:普通", + "cover.advanced_energy_detector.invert.disabled.1": "", + "cover.advanced_energy_detector.invert.disabled.2": "切換以反轉紅石邏輯", + "cover.advanced_energy_detector.invert.disabled.3": "預設情況下,能量小於所設定的最小 EU 時覆蓋板將發出紅石訊號,大於最大 EU 時則停止發出紅石訊號", + "cover.advanced_energy_detector.invert.enabled.0": "輸出:反轉", + "cover.advanced_energy_detector.invert.enabled.1": "", + "cover.advanced_energy_detector.invert.enabled.2": "切換以反轉紅石邏輯", + "cover.advanced_energy_detector.invert.enabled.3": "預設情況下,能量小於所設定的最小 EU 時覆蓋板將發出紅石訊號,大於最大 EU 時則停止發出紅石訊號", + "cover.advanced_energy_detector.label": "進階能量探測覆蓋板", + "cover.advanced_energy_detector.max": "最大值", + "cover.advanced_energy_detector.min": "最小值", + "cover.advanced_energy_detector.use_percent.disabled.0": "模式:EU設定值", + "cover.advanced_energy_detector.use_percent.disabled.1": "", + "cover.advanced_energy_detector.use_percent.disabled.2": "使用給定的EU數值或百分比來比較所附著的能量儲存中能量的最大/最小值。", + "cover.advanced_energy_detector.use_percent.enabled.0": "模式: 百分比", + "cover.advanced_energy_detector.use_percent.enabled.1": "", + "cover.advanced_energy_detector.use_percent.enabled.2": "使用給定的EU數值或百分比來比較所附著的能量儲存中能量的最大/最小值。", + "cover.advanced_fluid_detector.invert.disabled.0": "輸出:普通", + "cover.advanced_fluid_detector.invert.disabled.1": "", + "cover.advanced_fluid_detector.invert.disabled.2": "切換以反轉紅石邏輯", + "cover.advanced_fluid_detector.invert.disabled.3": "預設情況下,流體量介於所設定的最小值和最大值之間時覆蓋板將發出紅石訊號,小於最小值時則停止發出紅石訊號", + "cover.advanced_fluid_detector.invert.enabled.0": "輸出:反轉", + "cover.advanced_fluid_detector.invert.enabled.1": "", + "cover.advanced_fluid_detector.invert.enabled.2": "切換以反轉紅石邏輯", + "cover.advanced_fluid_detector.invert.enabled.3": "預設情況下,流體量介於所設定的最小值和最大值之間時覆蓋板將發出紅石訊號,小於最小值時則停止發出紅石訊號", + "cover.advanced_fluid_detector.label": "進階流體探測器", + "cover.advanced_fluid_detector.max": "最大流體量(mB)", + "cover.advanced_fluid_detector.min": "最小流體量(mB)", + "cover.advanced_item_detector.invert.disabled.0": "輸出:普通", + "cover.advanced_item_detector.invert.disabled.1": "", + "cover.advanced_item_detector.invert.disabled.2": "切換以反轉紅石邏輯", + "cover.advanced_item_detector.invert.disabled.3": "預設情況下,物品數量介於所設定的最小值和最大值之間時覆蓋板將發出紅石訊號,小於最小值時則停止發出紅石訊號", + "cover.advanced_item_detector.invert.enabled.0": "輸出:反轉", + "cover.advanced_item_detector.invert.enabled.1": "", + "cover.advanced_item_detector.invert.enabled.2": "切換以反轉紅石邏輯", + "cover.advanced_item_detector.invert.enabled.3": "預設情況下,物品數量介於所設定的最小值和最大值之間時覆蓋板將發出紅石訊號,小於最小值時則停止發出紅石訊號", + "cover.advanced_item_detector.label": "進階物品探測器", + "cover.advanced_item_detector.max": "最大物品數量", + "cover.advanced_item_detector.min": "最小物品數量", + "cover.bucket.mode.bucket": "B", + "cover.bucket.mode.milli_bucket": "mB", + "cover.conveyor.blocks_input.disabled.0": "若啟用,覆蓋板設定為將物品從儲存空間輸出至管道時將阻止物品從所在面輸入。", + "cover.conveyor.blocks_input.disabled.1": "§c已禁用", + "cover.conveyor.blocks_input.enabled.0": "若啟用,覆蓋板設定為將物品從儲存空間輸出至管道時將阻止物品從所在面輸入。", + "cover.conveyor.blocks_input.enabled.1": "§a已啟用", + "cover.conveyor.distribution.insert_first.0": "分配模式:§b優先順序", + "cover.conveyor.distribution.insert_first.1": "§7將物品輸入至所搜尋到的優先順序最高的物品儲存空間", + "cover.conveyor.distribution.insert_first.2": "§7加固物品管道會降低管道路徑的優先順序。", + "cover.conveyor.distribution.round_robin_global.0": "分配模式:§b輪詢排程", + "cover.conveyor.distribution.round_robin_global.1": "§7將物品平分至相連的物品儲存空間。", + "cover.conveyor.distribution.round_robin_prio.0": "分配模式:§b輪詢排程(次序式)", + "cover.conveyor.distribution.round_robin_prio.1": "§7嘗試將物品平分至相連的物品儲存空間,並優先考慮優先順序更高的。", + "cover.conveyor.distribution.round_robin_prio.2": "§7加固物品管道會降低管道路徑的優先順序。", + "cover.conveyor.item_filter.title": "物品過濾", + "cover.conveyor.mode": "模式:%s", + "cover.conveyor.mode.export": "模式:輸出", + "cover.conveyor.mode.import": "模式:輸入", + "cover.conveyor.tag.title.0": "標籤名稱", + "cover.conveyor.tag.title.1": "(*可作萬用字元)", + "cover.conveyor.title": "傳送帶覆蓋板設定(%s)", + "cover.conveyor.transfer_rate": "§7物品/秒", + "cover.detector_base.message_inverted_state": "監控狀態: 反轉", + "cover.detector_base.message_normal_state": "監控狀態:普通", + "cover.ender_fluid_link.incomplete_hex.0": "輸入的顏色不正確!", + "cover.ender_fluid_link.incomplete_hex.1": "輸入正確的八位十六進位制顏色碼方可應用", + "cover.ender_fluid_link.incomplete_hex.2": "此時關閉介面將導致丟失編輯內容!", + "cover.ender_fluid_link.iomode.disabled": "已禁用I/O", + "cover.ender_fluid_link.iomode.enabled": "已啟用I/O", + "cover.ender_fluid_link.private.tooltip.disabled.0": "切換至私有儲罐模式", + "cover.ender_fluid_link.private.tooltip.disabled.1": "私有權歸最初加裝該覆蓋板的玩家所有", + "cover.ender_fluid_link.private.tooltip.enabled": "切換至公共儲罐模式", + "cover.ender_fluid_link.title": "終界流體連線", + "cover.ender_fluid_link.tooltip.channel_description": "把輸入文本設為頻道描述", + "cover.ender_fluid_link.tooltip.channel_name": "把輸入文本設為頻道名", + "cover.ender_fluid_link.tooltip.clear_button": "清除頻道描述", + "cover.ender_fluid_link.tooltip.list_button": "顯示頻道列表", + "cover.filter.blacklist.disabled": "白名單", + "cover.filter.blacklist.enabled": "黑名單", + "cover.filter.mode.filter_both": "過濾兩者", + "cover.filter.mode.filter_extract": "過濾輸出", + "cover.filter.mode.filter_insert": "過濾輸入", + "cover.fluid.voiding.advanced.title": "高階流體銷毀設定", + "cover.fluid.voiding.title": "流體銷毀設定", + "cover.fluid_filter.config_amount.0": "向上或向下滾動滑鼠滾輪以增加或減少流體量。", + "cover.fluid_filter.config_amount.1": "Shift[§6x10§r],Ctrl[§ex100§r],Shift+Ctrl[§ax1000§r]", + "cover.fluid_filter.config_amount.2": "亦可透過右擊或左擊來增減流體量。", + "cover.fluid_filter.config_amount.3": "按住Shift時點選滑鼠則將使流體量翻倍或減半。", + "cover.fluid_filter.config_amount.4": "點選中鍵以清除", + "cover.fluid_filter.mode.filter_both": "過濾兩者", + "cover.fluid_filter.mode.filter_drain": "過濾輸出", + "cover.fluid_filter.mode.filter_fill": "過濾輸入", + "cover.fluid_filter.title": "流體過濾卡", + "cover.fluid_regulator.keep_exact": "保持供應:%s", + "cover.fluid_regulator.supply_exact": "精確供應:%s", + "cover.fluid_regulator.title": "流體調節器設定(%s)", + "cover.fluid_regulator.transfer_mode.description.0": "§e任意傳輸§r-在此模式下,覆蓋板將傳輸任何與過濾卡匹配的流體。", + "cover.fluid_regulator.transfer_mode.description.1": "§e精確供應-在此模式下,覆蓋板會將此按鈕下方視窗中指定的流體按指定量打包傳輸。若流體量小於指定量,流體不會被傳輸。", + "cover.fluid_regulator.transfer_mode.description.2": "§e保持供應-在此模式下,覆蓋板將在目標容器中保持指定數量的液體,低於保持量時傳輸相應量的流體。", + "cover.fluid_regulator.transfer_mode.description.3": "§7小提示:按住Shift/Crtl把增加或減少的數量乘以10/100。", + "cover.item.voiding.advanced.title": "高階物品銷毀設定", + "cover.item.voiding.title": "物品銷毀設定", + "cover.item_filter.ignore_damage.disabled": "匹配耐久度", + "cover.item_filter.ignore_damage.enabled": "無視耐久度", + "cover.item_filter.ignore_nbt.disabled": "匹配NBT", + "cover.item_filter.ignore_nbt.enabled": "忽略NBT", + "cover.item_filter.title": "物品過濾卡", + "cover.item_smart_filter.filtering_mode.centrifuge": "離心機", + "cover.item_smart_filter.filtering_mode.description.0": "為該智慧覆蓋板選擇目標機器。", + "cover.item_smart_filter.filtering_mode.description.1": "它能夠自動挑選符合機器配方的物品。", + "cover.item_smart_filter.filtering_mode.electrolyzer": "電解機", + "cover.item_smart_filter.filtering_mode.sifter": "篩選機", + "cover.item_smart_filter.title": "智慧物品過濾", + "cover.machine_controller.invert.disabled.0": "§e普通§r - 該模式下的覆蓋板需要比設定強度小的紅石訊號來觸發", + "cover.machine_controller.invert.enabled.0": "§e反相§r - 該模式下的覆蓋板需要比設定強度大的紅石訊號來觸發", + "cover.machine_controller.inverted": "反相", + "cover.machine_controller.mode.cover_down": "控制目標:覆蓋板(底面)", + "cover.machine_controller.mode.cover_east": "控制目標:覆蓋板(東面)", + "cover.machine_controller.mode.cover_north": "控制目標:覆蓋板(北面)", + "cover.machine_controller.mode.cover_south": "控制目標:覆蓋板(南面)", + "cover.machine_controller.mode.cover_up": "控制目標:覆蓋板(頂面)", + "cover.machine_controller.mode.cover_west": "控制目標:覆蓋板(西面)", + "cover.machine_controller.mode.machine": "控制目標:機器", + "cover.machine_controller.mode.null": "控制目標:無", + "cover.machine_controller.normal": "普通", + "cover.machine_controller.redstone": "最小紅石訊號強度:%,d", + "cover.machine_controller.title": "機器控制設定", + "cover.pump.fluid_filter.title": "流體過濾", + "cover.pump.mode.export": "模式:輸出", + "cover.pump.mode.import": "模式:輸入", + "cover.pump.title": "泵覆蓋板設定(%s)", + "cover.pump.transfer_rate": "%s", + "cover.robotic_arm.title": "機械臂設定(%s)", + "cover.robotic_arm.transfer_mode.description.0": "§e任意傳輸§r-在此模式下,覆蓋板將儘可能傳輸一切符合過濾設定的物品。", + "cover.robotic_arm.transfer_mode.description.1": "§e精確補給§r-在此模式下,覆蓋板每次都會輸入在物品過濾卡的過濾槽中指定(或者在標籤過濾卡的按鈕裡指定)數量的物品。若物品的數量小於指定數量,物品將不會被輸入。", + "cover.robotic_arm.transfer_mode.description.2": "§e保持補給§r-在此模式下,覆蓋板將保持目標容器中指定物品的數量,需要物品時則供應相應量的物品。", + "cover.robotic_arm.transfer_mode.description.3": "§7小提示:左/右擊過濾槽可以調整物品數量,同時按住Shift可以更快地調整。", + "cover.robotic_arm.transfer_mode.keep_exact": "保持補給", + "cover.robotic_arm.transfer_mode.transfer_any": "任意傳輸", + "cover.robotic_arm.transfer_mode.transfer_exact": "精確補給", + "cover.shutter.message.disabled": "扇板已開啟", + "cover.shutter.message.enabled": "扇板已關閉", + "cover.storage.title": "儲存覆蓋板", + "cover.tag_filter.info.0": "§b接受複雜表示式", + "cover.tag_filter.info.1": "& = 且(AND)", + "cover.tag_filter.info.10": "§b使用範例:§6*dusts/gold | (gtceu:circuits & !*lv)", + "cover.tag_filter.info.11": "這將匹配所有種類的金粉或LV以外的電路", + "cover.tag_filter.info.2": "丨= 或(OR)", + "cover.tag_filter.info.3": "^ = 異或(XOR)", + "cover.tag_filter.info.4": "! = 非(NOT)", + "cover.tag_filter.info.5": "( )表示優先順序", + "cover.tag_filter.info.6": "* 表示萬用字元", + "cover.tag_filter.info.7": "§b例:", + "cover.tag_filter.info.8": "§6dust*Gold | (plate* &! *Double*)", + "cover.tag_filter.info.9": "將匹配所有大小的金粉或所有非雙重板的板", + "cover.tag_filter.matches": "物品匹配", + "cover.tag_filter.matches_not": "物品不匹配", + "cover.tag_filter.test_slot.info": "放入一件物品以測試是否匹配過濾表示式", + "cover.tag_filter.title": "礦物詞典過濾卡", + "cover.universal.manual_import_export.mode.description.0": "§e禁用§r-僅依照覆蓋板與內部過濾卡的指定規則傳輸。", + "cover.universal.manual_import_export.mode.description.1": "§e過濾§r-外部I/O將只根據過濾卡的指定規則傳輸,不受覆蓋板的限制。", + "cover.universal.manual_import_export.mode.description.2": "§e無過濾§r-外部I/O無視所有傳輸規則,過濾卡將僅控制覆蓋板進行的I/O。", + "cover.universal.manual_import_export.mode.disabled": "特殊I/O模式:§b禁用\n§7僅依照覆蓋板與內部過濾卡的指定規則傳輸。", + "cover.universal.manual_import_export.mode.filtered": "特殊I/O模式:§b過濾\n§7外部I/O將只根據過濾卡的指定規則傳輸,不受覆蓋板的限制。", + "cover.universal.manual_import_export.mode.unfiltered": "特殊I/O模式:§b無過濾\n§7外部I/O無視所有傳輸規則,過濾卡將僅控制覆蓋板進行的I/O。", + "cover.voiding.label.disabled": "禁用", + "cover.voiding.label.enabled": "啟用", + "cover.voiding.message.disabled": "已禁用銷毀覆蓋板", + "cover.voiding.message.enabled": "已啟用銷毀覆蓋板", + "cover.voiding.tooltip": "§c警告!§7“啟用”時所有流體和物品全部都會被銷毀。", + "cover.voiding.voiding_mode.description.0": "§e匹配銷毀§r:匹配過濾規則即銷毀。", + "cover.voiding.voiding_mode.description.1": "§e溢位銷毀§r:匹配過濾規則即銷毀超出設定數量的部分物品/流體。", + "cover.voiding.voiding_mode.void_any": "匹配銷毀", + "cover.voiding.voiding_mode.void_overflow": "溢位銷毀", + "curios.identifier.gtceu_magnet": "GTCEu磁鐵", + "death.attack.gtceu.axe": "%s被%s用斧子砍死了", + "death.attack.gtceu.butchery_knife": "%s死在了%s的屠刀之下", + "death.attack.gtceu.buzzsaw": "%2$手中圓鋸的嗞嗞聲成為了%1$s生命中最後聽到的聲音", + "death.attack.gtceu.chainsaw_lv": "%2$s的鏈鋸切碎了%1$s", + "death.attack.gtceu.chemical": "%s歷經了一場化學事故", + "death.attack.gtceu.crowbar": "%s被%s用撬棍撬走了半條命", + "death.attack.gtceu.drill_ev": "%2$s的超高壓電鑽洞穿了%1$s", + "death.attack.gtceu.drill_hv": "%2$s的高壓電鑽洞穿了%1$s", + "death.attack.gtceu.drill_iv": "%2$s的強導壓電鑽洞穿了%1$s", + "death.attack.gtceu.drill_lv": "%2$s的低壓電鑽洞穿了%1$s", + "death.attack.gtceu.drill_mv": "%2$s的中壓電鑽洞穿了%1$s", + "death.attack.gtceu.electric": "%s觸電身亡", + "death.attack.gtceu.explosion": "%s爆炸了", + "death.attack.gtceu.explosion.player": "拜%2$s所賜,%1$s爆炸了", + "death.attack.gtceu.file": "%s歷盡了%s的“銼”折", + "death.attack.gtceu.frost": "%s探索到了低溫的奧秘", + "death.attack.gtceu.hammer": "%s被%s錘死了", + "death.attack.gtceu.heat": "%s被活活煮熟了", + "death.attack.gtceu.heat.player": "%s被%s活活煮熟了", + "death.attack.gtceu.hoe": "%s被%s鋤死了", + "death.attack.gtceu.knife": "%2$s紳士地捅了%1$s幾刀", + "death.attack.gtceu.mallet": "%s被%s用錘頭活活敲死了", + "death.attack.gtceu.medical_condition/arsenicosis": "%s死於砷中毒", + "death.attack.gtceu.medical_condition/asbestosis": "%s得了間皮瘤", + "death.attack.gtceu.medical_condition/berylliosis": "%s貪婪地挖掘綠寶石,結果有點過火了", + "death.attack.gtceu.medical_condition/carbon_monoxide_poisoning": "%s離開時爐子還開着", + "death.attack.gtceu.medical_condition/carcinogen": "%s身患白血病", + "death.attack.gtceu.medical_condition/chemical_burns": "%s歷經了一場化學事故", + "death.attack.gtceu.medical_condition/irritant": "%s身上長了§n§l極其嚴重§r的皮疹", + "death.attack.gtceu.medical_condition/methanol_poisoning": "%s在禁酒令下嘗試飲用私釀烈酒", + "death.attack.gtceu.medical_condition/nausea": "%s死於噁心", + "death.attack.gtceu.medical_condition/none": "%s死於...什麼都沒有?", + "death.attack.gtceu.medical_condition/poison": "%s忘了毒物的確有毒", + "death.attack.gtceu.medical_condition/silicosis": "%s不是死於肺結核,而是矽肺病", + "death.attack.gtceu.medical_condition/weak_poison": "%s吞下了鉛(或水銀!)", + "death.attack.gtceu.mining_hammer": "%s被%s當成礦砸死了", + "death.attack.gtceu.mortar": "%s被%s用研缽磨成了粉", + "death.attack.gtceu.pickaxe": "%s被%s用鎬子鑿死了", + "death.attack.gtceu.radiation": "%s放射出了喜悅的光芒", + "death.attack.gtceu.screwdriver": "%s被%s用螺絲起子鑽死了", + "death.attack.gtceu.screwdriver_lv": "%s的螺絲被%s扭掉了", + "death.attack.gtceu.scythe": "%s一鐮刀下去,%s的靈魂灰飛煙滅", + "death.attack.gtceu.shovel": "%s被%s用鍬掏死了", + "death.attack.gtceu.spade": "%s被%s用鏟子挖死了", + "death.attack.gtceu.turbine": "%s一頭扎進了渦輪裡", + "death.attack.gtceu.wire_cutter": "%s用剪線鉗剪斷了%s的血管", + "death.attack.gtceu.wrench": "%s被%s用扳手夯死了!", + "death.attack.gtceu.wrench_hv": "%s的血管被%s狠狠擰鬆了", + "death.attack.gtceu.wrench_iv": "%2$s一扳手下去,扳倒了%1$s的美好人生", + "death.attack.gtceu.wrench_lv": "%s的血管被%s狠狠擰鬆了", + "effect.gtceu.weak_poison": "輕度中毒", + "enchantment.damage.disjunction": "終界離析", + "enchantment.disjunction": "終界離析", + "enchantment.gtceu.disjunction.description": "對終界生物施加虛弱和緩慢效果。", + "enchantment.gtceu.hard_hammer.description": "像格雷科技的錘一樣粉碎所採掘的方塊。", + "enchantment.hard_hammer": "錘碎", + "entity.gtceu.boat": "船", + "entity.gtceu.chest_boat": "儲物箱船", + "entity.gtceu.dynamite": "炸藥", + "entity.gtceu.industrial_tnt": "工業TNT", + "entity.gtceu.powderbarrel": "火藥桶", + "fluid.empty": "空", + "fluid.gtceu.potion": "藥水", + "fluid.spawnlocation.name": "流體礦脈資訊", + "fluid.tile.lava": "熔岩", + "fluid.tile.water": "水", + "fluid_cell.empty": "空", + "gtceu.air_scrubber": "空氣淨化器", + "gtceu.alloy_blast_smelter": "合金冶煉爐", + "gtceu.alloy_smelter": "合金冶煉", + "gtceu.arc_furnace": "電弧爐", + "gtceu.assembler": "組裝機", + "gtceu.assembly_line": "裝配線", + "gtceu.auto_decomp.rotor": "渦輪轉子", + "gtceu.auto_decomp.tool": "非電動工具", + "gtceu.autoclave": "高壓釜", + "gtceu.battery_buffer.average_input": "平均輸入:%s EU/t", + "gtceu.battery_buffer.average_output": "平均輸出:%s EU/t", + "gtceu.bender": "卷板機", + "gtceu.brewery": "釀造室", + "gtceu.bus.collapse.error": "匯流排位於已成型的多方塊結構後方可進行該操作", + "gtceu.bus.collapse_false": "已禁用物品堆疊自動合併", + "gtceu.bus.collapse_true": "已啟用物品堆疊自動合併", + "gtceu.button.bedrock_fluids": "顯示基岩流體礦脈", + "gtceu.button.hide_depleted": "隱藏枯竭的礦脈", + "gtceu.button.ore_veins": "顯示GT礦脈", + "gtceu.button.show_depleted": "顯示枯竭的礦脈", + "gtceu.cable.amperage": "§e最大電流:§r§e%d", + "gtceu.cable.loss_per_block": "§c線損/公尺/安:§r§c%d§7 伏", + "gtceu.cable.superconductor": "%s§d超導體", + "gtceu.cable.voltage": "§a最大電壓:§r§a%d§a(%s§a)", + "gtceu.canner": "裝罐機", + "gtceu.centrifuge": "離心機", + "gtceu.chance_logic.and": "AND", + "gtceu.chance_logic.first": "第一", + "gtceu.chance_logic.none": "NONE", + "gtceu.chance_logic.or": "OR", + "gtceu.chance_logic.xor": "XOR", + "gtceu.chat.cape": "§5恭喜你:你剛剛解鎖了一件新披風!檢視終端應用程式“披風選擇器”來使用它。§r", + "gtceu.chemical_bath": "化學水浴機", + "gtceu.chemical_reactor": "化學反應器", + "gtceu.circuit_assembler": "電路組裝機", + "gtceu.coke_oven": "焦爐", + "gtceu.combustion_generator": "內燃發電機", + "gtceu.command.copy.click_to_copy": "點選複製", + "gtceu.command.copy.copied_and_click": "已複製到剪貼簿,點選再次複製", + "gtceu.command.copy.copied_end": "]到剪貼簿", + "gtceu.command.copy.copied_start": "已複製[", + "gtceu.command.hand.electric": "電量資訊:%d / %d EU - 等級:%d; 是否為電池:%s", + "gtceu.command.hand.fluid": "流體資訊:%d / %d mB;是否可輸入:%s; 是否可輸出:%s", + "gtceu.command.hand.fluid2": "流體 ID:", + "gtceu.command.hand.groovy": "考慮使用§6/gs hand", + "gtceu.command.hand.item_id": "物品:%s(後設資料:%d)", + "gtceu.command.hand.material": "材料 ID:", + "gtceu.command.hand.meta_item": "元物品 ID:", + "gtceu.command.hand.no_item": "在執行此命令之前,您的主手或副手必須拿著物品。", + "gtceu.command.hand.not_a_player": "這個命令只有玩家可以使用。", + "gtceu.command.hand.ore_prefix": "礦物字首:", + "gtceu.command.hand.tag_entries": "§3標籤條目:", + "gtceu.command.hand.tool_stats": "工具狀態類:%s", + "gtceu.command.hand.usage": "用法:/gtceu hand", + "gtceu.command.recipecheck.begin": "開始配方衝突檢查...", + "gtceu.command.recipecheck.end": "配方衝突檢查詢到%d可能存在的衝突,檢視伺服器日誌以瞭解更多資訊", + "gtceu.command.recipecheck.end_no_conflicts": "未發現配方衝突!", + "gtceu.command.recipecheck.usage": "用法:/gtceu recipecheck", + "gtceu.command.usage": "用法:/gtceu ", + "gtceu.command.worldgen.reload.failed": "Worldgen重新載入失敗。檢查控制台是否有錯誤。", + "gtceu.command.worldgen.reload.success": "Worldgen已成功從設定重新載入。", + "gtceu.command.worldgen.reload.usage": "用法:/gtceu worldgen reload", + "gtceu.command.worldgen.usage": "用法:/gtceu worldgen ", + "gtceu.compressor": "壓縮機", + "gtceu.cover.activity_detector.message_activity_inverted": "正在以反相模式監控活動狀態", + "gtceu.cover.activity_detector.message_activity_normal": "正在以普通模式監控活動狀態", + "gtceu.cover.activity_detector_advanced.message_activity_inverted": "正在以反相模式監控處理狀態", + "gtceu.cover.activity_detector_advanced.message_activity_normal": "正在以普通模式監控處理狀態", + "gtceu.cover.energy_detector.message_electricity_storage_inverted": "正在以反相模式監控電力儲存", + "gtceu.cover.energy_detector.message_electricity_storage_normal": "正在以普通模式監控電力儲存", + "gtceu.cover.fluid_detector.message_fluid_storage_inverted": "正在以反相模式監控流體儲存", + "gtceu.cover.fluid_detector.message_fluid_storage_normal": "正在以普通模式監控流體儲存", + "gtceu.cover.item_detector.message_item_storage_inverted": "正在以反相模式監控物品儲存", + "gtceu.cover.item_detector.message_item_storage_normal": "正在以普通模式監控物品儲存", + "gtceu.cracker": "裂解機", + "gtceu.creative.activity.off": "未啟用", + "gtceu.creative.activity.on": "已啟用", + "gtceu.creative.chest.ipc": "每次輸出流體量", + "gtceu.creative.chest.item": "物品", + "gtceu.creative.chest.tpc": "每次輸出間隔Tick", + "gtceu.creative.computation.average": "平均CWU/t需求", + "gtceu.creative.energy.amperage": "電流", + "gtceu.creative.energy.sink": "歸零", + "gtceu.creative.energy.source": "最大值", + "gtceu.creative.energy.voltage": "電壓", + "gtceu.creative.tank.fluid": "流體", + "gtceu.creative.tank.mbpc": "每次輸出流體量", + "gtceu.creative.tank.tpc": "每次輸出間隔Tick", + "gtceu.creative_tooltip.1": "§7你需要", + "gtceu.creative_tooltip.2": "§b創造模式", + "gtceu.creative_tooltip.3": "§7來使用它", + "gtceu.cutter": "切割機", + "gtceu.debug.f3_h.enabled": "格雷科技修改了除錯資訊!對於開發人員:在GregTech設定檔案中啟用misc:debug以檢視更多資訊", + "gtceu.direction.tooltip.back": "背面", + "gtceu.direction.tooltip.down": "底面", + "gtceu.direction.tooltip.front": "正面", + "gtceu.direction.tooltip.left": "左面", + "gtceu.direction.tooltip.right": "右面", + "gtceu.direction.tooltip.up": "頂面", + "gtceu.distillation_tower": "蒸餾塔", + "gtceu.distillery": "蒸餾室", + "gtceu.duct_pipe.transfer_rate": "§b空氣傳輸速率:%s", + "gtceu.dummy": "假人", + "gtceu.electric_blast_furnace": "電力高爐", + "gtceu.electric_furnace": "電爐", + "gtceu.electrolyzer": "電解機", + "gtceu.electromagnetic_separator": "電磁分離機", + "gtceu.extractor": "提取機", + "gtceu.extruder": "壓模器", + "gtceu.fermenter": "發酵槽", + "gtceu.fluid.amount": "§9總量:%d/%d mB", + "gtceu.fluid.click_combined": "§7手持流體容器點選流體槽以§c倒出§7或§b填入§7流體(Shift+點擊以用整組容器倒出流體或用整組容器中的流體填入)", + "gtceu.fluid.click_to_empty": "§7手持流體容器點選流體槽以§c倒出§7流體(Shift+點擊以用整組容器倒出流體)", + "gtceu.fluid.click_to_fill": "§7手持流體容器點選流體槽以§b填入§7流體(Shift+點擊以用整組容器中的流體填入)", + "gtceu.fluid.empty": "空", + "gtceu.fluid.gas_generic": "氣態%s", + "gtceu.fluid.gas_vapor": "%s蒸氣", + "gtceu.fluid.generic": "%s", + "gtceu.fluid.liquid_generic": "液態%s", + "gtceu.fluid.molten": "熔融%s", + "gtceu.fluid.plasma": "%s電漿", + "gtceu.fluid.state_gas": "§a狀態:氣態", + "gtceu.fluid.state_liquid": "§a狀態:液態", + "gtceu.fluid.state_plasma": "§a狀態:電漿態", + "gtceu.fluid.temperature": "§c溫度:%d K", + "gtceu.fluid.temperature.cryogenic": "§b低溫流體!輕拿輕放!", + "gtceu.fluid.type_acid.tooltip": "§6酸性流體!輕拿輕放!", + "gtceu.fluid_heater": "流體加熱器", + "gtceu.fluid_pipe.acid_proof": "§6可傳輸酸性物質", + "gtceu.fluid_pipe.capacity": "§9容積:§f%d mB", + "gtceu.fluid_pipe.channels": "§e平行管道:§f%d", + "gtceu.fluid_pipe.cryo_proof": "§6可傳輸低溫物質", + "gtceu.fluid_pipe.gas_proof": "§6可以傳輸氣體", + "gtceu.fluid_pipe.max_temperature": "§c溫度上限:§f%d K", + "gtceu.fluid_pipe.not_gas_proof": "§4氣體可能洩漏!", + "gtceu.fluid_pipe.plasma_proof": "§6可傳輸所有電漿", + "gtceu.fluid_solidifier": "流體固化器", + "gtceu.forge_hammer": "鍛造錘", + "gtceu.forming_press": "衝壓機床", + "gtceu.forming_press.naming.named": "§o已命名物品", + "gtceu.forming_press.naming.press": "§o名稱模板", + "gtceu.forming_press.naming.to_name": "§o待命名物品", + "gtceu.fusion_reactor": "核融合反應爐", + "gtceu.gas_collector": "集氣室", + "gtceu.gas_turbine": "燃氣輪機", + "gtceu.gui.auto_output.name": "自動", + "gtceu.gui.charger_slot.tooltip.0": "§f充電槽§r", + "gtceu.gui.charger_slot.tooltip.1": "§7從%s電池中取電§7", + "gtceu.gui.charger_slot.tooltip.2": "§7也可為%s工具或電池充電", + "gtceu.gui.chunkmode.disabled.0": "區塊模式§c禁用§r:點擊啟用。", + "gtceu.gui.chunkmode.disabled.1": "§7切換需要機器待機。", + "gtceu.gui.chunkmode.enabled.0": "區塊模式§a啟用§r:點擊禁用。", + "gtceu.gui.chunkmode.enabled.1": "§7切換需要機器待機。", + "gtceu.gui.circuit.title": "電路設定", + "gtceu.gui.config_slot": "§f設定槽位§r", + "gtceu.gui.config_slot.auto_pull_managed": "§4停用:§7由ME自動拉取管理", + "gtceu.gui.config_slot.remove": "§7右擊§4清除§7設定槽位。§r", + "gtceu.gui.config_slot.scroll": "§7使用滾輪§a切換§7設定數。§r", + "gtceu.gui.config_slot.set": "§7點選§b設定/選擇§7設定槽位。§r", + "gtceu.gui.config_slot.set_only": "§7點選§b設定§7設定槽位。§r", + "gtceu.gui.configurator_slot.tooltip.0": "§f設定器槽§r", + "gtceu.gui.configurator_slot.tooltip.1": "§7在此插槽放置一個§6程式設計電路§7以", + "gtceu.gui.configurator_slot.tooltip.2": "§7更改其設定值。", + "gtceu.gui.configurator_slot.tooltip.3": "§7按住§6Shift§7時點選按鈕,一次加減§6§75個編號", + "gtceu.gui.configurator_slot.tooltip.4": "§a此插槽中的程式設計電路也視為一個配方輸入。§r", + "gtceu.gui.content.chance_base": "產出機率:%s%%", + "gtceu.gui.content.chance_base_logic": "產出機率:%s%% (%s)", + "gtceu.gui.content.chance_boosted": "當前等級機率:%s%%", + "gtceu.gui.content.chance_boosted_logic": "當前等級機率:%s%%(%s)", + "gtceu.gui.content.chance_nc": "§c不會被消耗§r", + "gtceu.gui.content.chance_nc_short": "§c不消耗§r", + "gtceu.gui.content.chance_tier_boost_minus": "電壓加成:-%s%%/每級", + "gtceu.gui.content.chance_tier_boost_plus": "電壓加成:+%s%%/每級", + "gtceu.gui.content.count_range": "%s-%sx", + "gtceu.gui.content.per_tick": "§a每刻(tick)消耗/產生§r", + "gtceu.gui.content.tips.per_second_short": "§a/秒§r", + "gtceu.gui.content.tips.per_tick_short": "§a/刻(tick)§r", + "gtceu.gui.content.units.per_second": "/s", + "gtceu.gui.content.units.per_tick": "/t", + "gtceu.gui.cover_setting.title": "覆蓋板設定", + "gtceu.gui.editor.group.recipe_type": "封頂", + "gtceu.gui.editor.tips.citation": "引用次數", + "gtceu.gui.fisher_mode.tooltip.0": "捕捉垃圾物品", + "gtceu.gui.fisher_mode.tooltip.1": "關閉時,每次執行消耗兩根線。", + "gtceu.gui.fluid_amount": "流體總量:", + "gtceu.gui.fluid_auto_input.tooltip.disabled": "流體自動輸入已禁用", + "gtceu.gui.fluid_auto_input.tooltip.enabled": "流體自動輸入已啟用", + "gtceu.gui.fluid_auto_output.allow_input.disabled": "禁止從輸出面輸入流體", + "gtceu.gui.fluid_auto_output.allow_input.enabled": "允許從輸出面輸入流體", + "gtceu.gui.fluid_auto_output.tooltip.disabled": "流體自動輸出已禁用", + "gtceu.gui.fluid_auto_output.tooltip.enabled": "流體自動輸出已啟用", + "gtceu.gui.fluid_lock.tooltip.disabled": "流體鎖定已禁用", + "gtceu.gui.fluid_lock.tooltip.enabled": "流體鎖定已啟用", + "gtceu.gui.fluid_voiding_partial.tooltip.disabled": "過量流體銷毀已禁用", + "gtceu.gui.fluid_voiding_partial.tooltip.enabled": "過量流體銷毀已啟用", + "gtceu.gui.fuel_amount": "燃料總量:", + "gtceu.gui.item_auto_input.tooltip.disabled": "物品自動輸入已禁用", + "gtceu.gui.item_auto_input.tooltip.enabled": "物品自動輸入已啟用", + "gtceu.gui.item_auto_output.allow_input.disabled": "禁止從輸出面輸入物品", + "gtceu.gui.item_auto_output.allow_input.enabled": "允許從輸出面輸入物品", + "gtceu.gui.item_auto_output.tooltip.disabled": "物品自動輸出已禁用", + "gtceu.gui.item_auto_output.tooltip.enabled": "物品自動輸出已啟用", + "gtceu.gui.item_lock.tooltip.disabled": "物品鎖定已禁用", + "gtceu.gui.item_lock.tooltip.enabled": "物品鎖定已啟用", + "gtceu.gui.item_voiding_partial.tooltip.disabled": "物品過量銷毀已禁用", + "gtceu.gui.item_voiding_partial.tooltip.enabled": "物品過量銷毀已開啟", + "gtceu.gui.machinemode": "當前機器模式:%s", + "gtceu.gui.machinemode.title": "當前機器模式", + "gtceu.gui.me_bus.auto_pull_button": "點擊以切換ME自動拉取模式", + "gtceu.gui.me_network.offline": "網路狀態:§4離線§r", + "gtceu.gui.me_network.online": "網路狀態:§2線上§r", + "gtceu.gui.multiblock_fluid_voiding.0": "銷毀模式", + "gtceu.gui.multiblock_fluid_voiding.1": "§7銷毀§9流體", + "gtceu.gui.multiblock_item_fluid_voiding.0": "銷毀模式", + "gtceu.gui.multiblock_item_fluid_voiding.1": "§7銷毀§6物品§7和§9流體", + "gtceu.gui.multiblock_item_voiding.0": "銷毀模式", + "gtceu.gui.multiblock_item_voiding.1": "§7銷毀§6物品", + "gtceu.gui.multiblock_no_voiding.0": "銷毀模式", + "gtceu.gui.multiblock_no_voiding.1": "§7不銷毀", + "gtceu.gui.output_setting.title": "輸出設定", + "gtceu.gui.output_setting.tooltips.0": "左擊以自動輸出物品", + "gtceu.gui.output_setting.tooltips.1": "右擊以自動輸出流體", + "gtceu.gui.overclock.description.0": "超頻按鈕", + "gtceu.gui.overclock.description.1": "§7配方可以超頻到設定的電壓等級", + "gtceu.gui.overclock.disabled.0": "超頻已禁用", + "gtceu.gui.overclock.disabled.1": "點擊啟用", + "gtceu.gui.overclock.enabled.0": "超頻已啟用", + "gtceu.gui.overclock.enabled.1": "點擊禁用", + "gtceu.gui.overclock.off": "X", + "gtceu.gui.overclock.range": "可用電壓級 [%s,%s]", + "gtceu.gui.overclock.title": "超頻電壓級", + "gtceu.gui.silktouch.disabled.0": "絲綢之觸已禁用:點擊啟用。", + "gtceu.gui.silktouch.disabled.1": "§7切換需要機器待機。", + "gtceu.gui.silktouch.enabled.0": "絲綢之觸已啟用:點擊禁用。", + "gtceu.gui.silktouch.enabled.1": "§7切換需要機器待機。", + "gtceu.gui.sort": "分類", + "gtceu.gui.title_bar.back": "返回", + "gtceu.gui.title_bar.page_switcher": "頁面", + "gtceu.gui.toggle_view.disabled": "切換檢視(流體)", + "gtceu.gui.toggle_view.enabled": "切換檢視(物品)", + "gtceu.gui.waiting_list": "傳送佇列:", + "gtceu.hazard_trigger.any": "任何方式", + "gtceu.hazard_trigger.description": "肇因:", + "gtceu.hazard_trigger.inhalation": "吸入", + "gtceu.hazard_trigger.none": "無", + "gtceu.hazard_trigger.protection.description": "免受:", + "gtceu.hazard_trigger.skin_contact": "皮膚接觸", + "gtceu.implosion_compressor": "聚爆壓縮機", + "gtceu.io.both": "同時", + "gtceu.io.export": "輸出", + "gtceu.io.import": "輸入", + "gtceu.io.none": "無", + "gtceu.item_filter.empty_item": "空(無物品)", + "gtceu.item_filter.footer": "§e手持物品右鍵取代設定", + "gtceu.item_list.item_stored": "§7儲量:%d", + "gtceu.item_pipe.priority": "§9優先順序:§f%d", + "gtceu.jade.cleaned_this_second": "污染清理速率:%s/s", + "gtceu.jade.energy_stored": "%d / %d EU", + "gtceu.jade.progress_computation": "計算進度:%s / %s", + "gtceu.jade.progress_sec": "%s / %s s", + "gtceu.jade.progress_tick": "%s / %s t", + "gtceu.jei.bedrock_fluid.heavy_oil_deposit": "重油礦藏", + "gtceu.jei.bedrock_fluid.lava_deposit": "熔岩礦藏", + "gtceu.jei.bedrock_fluid.light_oil_deposit": "輕油礦藏", + "gtceu.jei.bedrock_fluid.natural_gas_deposit": "天然氣礦藏", + "gtceu.jei.bedrock_fluid.nether_natural_gas_deposit": "地獄天然氣礦藏", + "gtceu.jei.bedrock_fluid.oil_deposit": "石油礦藏", + "gtceu.jei.bedrock_fluid.raw_oil_deposit": "原油礦藏", + "gtceu.jei.bedrock_fluid.salt_water_deposit": "鹽水礦藏", + "gtceu.jei.bedrock_fluid_diagram": "基岩流體生成資訊", + "gtceu.jei.bedrock_ore_diagram": "基岩礦脈生成資訊", + "gtceu.jei.fluid.dep_amount_hover": "消耗後消耗的量", + "gtceu.jei.fluid.dep_chance_hover": "開採流體礦脈時消耗的機率", + "gtceu.jei.fluid.dep_yield_hover": "流體礦脈耗盡後能開採的最大流體量", + "gtceu.jei.fluid.depleted_rate": "耗盡後產量:%d", + "gtceu.jei.fluid.depletion_amount": "消耗量:%d", + "gtceu.jei.fluid.depletion_chance": "消耗機率:%d%%", + "gtceu.jei.fluid.dimension": "維度:", + "gtceu.jei.fluid.max_hover": "流體礦脈所能具有的的最大產量", + "gtceu.jei.fluid.max_yield": "最大產量:%d", + "gtceu.jei.fluid.min_hover": "流體礦脈所能具有的的最小產量", + "gtceu.jei.fluid.min_yield": "最小產量:%d", + "gtceu.jei.fluid.vein_weight": "礦脈權重:%d", + "gtceu.jei.fluid.weight_hover": "流體礦脈的生成權重。滑鼠懸於圖示可檢視該流體在特定生態域中特殊的生成權重", + "gtceu.jei.materials.average_mass": "平均質量:%d", + "gtceu.jei.materials.average_neutrons": "平均中子數:%d", + "gtceu.jei.materials.average_protons": "平均質子數:%d", + "gtceu.jei.multiblock_info": "多方塊結構資訊", + "gtceu.jei.ore.between.0": "中層礦", + "gtceu.jei.ore.between.1": "和其他礦一起生成在礦脈的中間%d層", + "gtceu.jei.ore.biome_weighting": "§d%s的生成權重:§3%d", + "gtceu.jei.ore.biome_weighting_no_spawn": "§d%s的生成權重:§c無法生成", + "gtceu.jei.ore.biome_weighting_title": "§d特定生態域中的例外權重:", + "gtceu.jei.ore.ore_weight": "礦脈內生成權重:%d%%", + "gtceu.jei.ore.primary.0": "頂層礦", + "gtceu.jei.ore.primary.1": "在礦脈的頂部%d層生成", + "gtceu.jei.ore.secondary.0": "底層礦", + "gtceu.jei.ore.secondary.1": "在礦脈的底部%d層生成", + "gtceu.jei.ore.sporadic.0": "散佈礦", + "gtceu.jei.ore.sporadic.1": "生成在礦脈的任何地方", + "gtceu.jei.ore.surface_rock.0": "這種地表岩石標誌著礦脈的生成位置。", + "gtceu.jei.ore.surface_rock.1": "挖掘掉落3小撮粉,受幸運加成", + "gtceu.jei.ore_processing_diagram": "礦物處理流程圖", + "gtceu.jei.ore_vein.apatite_vein": "磷灰石礦脈", + "gtceu.jei.ore_vein.banded_iron_vein": "帶狀鐵礦脈", + "gtceu.jei.ore_vein.bauxite_vein_end": "終界鋁土礦脈", + "gtceu.jei.ore_vein.beryllium_vein": "鈹礦脈", + "gtceu.jei.ore_vein.cassiterite_vein": "錫石礦脈", + "gtceu.jei.ore_vein.certus_quartz": "賽特斯石英", + "gtceu.jei.ore_vein.coal_vein": "煤炭礦脈", + "gtceu.jei.ore_vein.copper_tin_vein": "銅錫礦脈", + "gtceu.jei.ore_vein.copper_vein": "銅礦脈", + "gtceu.jei.ore_vein.diamond_vein": "鑽石礦脈", + "gtceu.jei.ore_vein.galena_vein": "方鉛礦脈", + "gtceu.jei.ore_vein.garnet_tin_vein": "錫石榴石礦脈", + "gtceu.jei.ore_vein.garnet_vein": "石榴石礦脈", + "gtceu.jei.ore_vein.iron_vein": "鐵礦脈", + "gtceu.jei.ore_vein.lapis_vein": "青金石礦脈", + "gtceu.jei.ore_vein.lubricant_vein": "皂滑礦脈", + "gtceu.jei.ore_vein.magnetite_vein_end": "終界磁鐵礦脈", + "gtceu.jei.ore_vein.magnetite_vein_ow": "主世界磁鐵礦脈", + "gtceu.jei.ore_vein.manganese_vein": "錳礦脈", + "gtceu.jei.ore_vein.manganese_vein_ow": "主世界錳礦脈", + "gtceu.jei.ore_vein.mica_vein": "雲母礦脈", + "gtceu.jei.ore_vein.mineral_sand_vein": "礦砂礦脈", + "gtceu.jei.ore_vein.molybdenum_vein": "鉬礦脈", + "gtceu.jei.ore_vein.monazite_vein": "獨居石礦脈", + "gtceu.jei.ore_vein.naquadah_vein": "矽岩礦脈", + "gtceu.jei.ore_vein.nether_quartz_vein": "地獄石英礦脈", + "gtceu.jei.ore_vein.nickel_vein": "鎳礦脈", + "gtceu.jei.ore_vein.oilsands_vein": "油砂礦脈", + "gtceu.jei.ore_vein.olivine_vein": "橄欖石礦脈", + "gtceu.jei.ore_vein.pitchblende_vein_end": "終界瀝青鈾礦脈", + "gtceu.jei.ore_vein.redstone_vein": "紅石礦脈", + "gtceu.jei.ore_vein.redstone_vein_ow": "主世界紅石礦脈", + "gtceu.jei.ore_vein.saltpeter_vein": "硝石礦脈", + "gtceu.jei.ore_vein.salts_vein": "鹽礦脈", + "gtceu.jei.ore_vein.sapphire_vein": "藍寶石礦脈", + "gtceu.jei.ore_vein.scheelite_vein": "白鎢礦脈", + "gtceu.jei.ore_vein.sheldonite_vein": "謝爾頓礦脈", + "gtceu.jei.ore_vein.sulfur_vein": "硫礦脈", + "gtceu.jei.ore_vein.tetrahedrite_vein": "黝銅礦脈", + "gtceu.jei.ore_vein.topaz_vein": "黃玉礦脈", + "gtceu.jei.ore_vein_diagram": "礦脈生成資訊", + "gtceu.jei.ore_vein_diagram.chance": "§e機率:%s§r", + "gtceu.jei.ore_vein_diagram.dimensions": "維度:", + "gtceu.jei.ore_vein_diagram.spawn_range": "生成範圍:", + "gtceu.jei.ore_vein_diagram.weight": "權重:%s", + "gtceu.jei.programmed_circuit": "程式設計電路頁", + "gtceu.journeymap.options.layers": "勘探層", + "gtceu.journeymap.options.layers.bedrock_fluids": "顯示基岩流體礦脈", + "gtceu.journeymap.options.layers.hide_depleted": "隱藏枯竭的礦脈", + "gtceu.journeymap.options.layers.ore_veins": "顯示礦脈", + "gtceu.key.armor_charging": "啟用/禁用盔甲向物品欄充能", + "gtceu.key.armor_hover": "切換盔甲懸浮模式", + "gtceu.key.armor_mode_switch": "切換盔甲模式", + "gtceu.key.enable_boots": "啟用跳躍提升", + "gtceu.key.enable_jetpack": "啟用噴射背包", + "gtceu.key.tool_aoe_change": "切換工具範圍模式", + "gtceu.large_boiler": "大型鍋爐", + "gtceu.large_chemical_reactor": "大型化學反應器", + "gtceu.laser_engraver": "雷射蝕刻機", + "gtceu.lathe": "車床", + "gtceu.macerator": "研磨機", + "gtceu.machine.active_transformer.tooltip.0": "變形金剛:偽裝的雷射", + "gtceu.machine.active_transformer.tooltip.1": "可以將任意數量的能量§f輸入§7整合為任意數量的能量§f輸出§7。", + "gtceu.machine.active_transformer.tooltip.2": "當你使用§d雷射§7進行能量傳輸時,擁有驚人的傳輸距離。", + "gtceu.machine.active_transformer.tooltip.3": "Lasers§7.", + "gtceu.machine.advanced_processing_array.tooltip": "這個世界需要更多平行", + "gtceu.machine.assembly_line.tooltip": "真不是什麼多方塊組裝機!", + "gtceu.machine.available_recipe_map_1.tooltip": "可用配方型別:%s", + "gtceu.machine.available_recipe_map_2.tooltip": "可用配方型別:%s,%s", + "gtceu.machine.available_recipe_map_3.tooltip": "可用配方型別:%s,%s,%s", + "gtceu.machine.available_recipe_map_4.tooltip": "可用配方型別:%s,%s,%s,%s", + "gtceu.machine.basic.input_from_output_side.allow": "允許從輸出面輸入:", + "gtceu.machine.basic.input_from_output_side.disallow": "禁止從輸出面輸入:", + "gtceu.machine.bedrock_ore_miner.depletion": "§b損耗率:§f%s%%", + "gtceu.machine.bedrock_ore_miner.description": "§7從基岩之下的礦脈鑽掘礦", + "gtceu.machine.bedrock_ore_miner.production": "§e產量倍率:§f%dx,超頻後%fx", + "gtceu.machine.block_breaker.speed_bonus": "§e速度獎勵:§f%d%%", + "gtceu.machine.block_breaker.tooltip": "§7採掘正面的方塊並收集掉落物", + "gtceu.machine.boiler.info.cooling.down": "§9冷卻中§r%s", + "gtceu.machine.boiler.info.heating.up": "§c加熱中§r%s", + "gtceu.machine.boiler.info.producing.steam": " §a(沸騰)", + "gtceu.machine.buffer.tooltip": "用於儲存物品和流體的小小緩衝器", + "gtceu.machine.canner.jei_description": "填入或倒空流體容器,例如桶和流體單元", + "gtceu.machine.central_monitor.tooltip": "但它能執行《毀滅戰士》嗎?", + "gtceu.machine.charcoal_pile.tooltip": "不烤麵包烤燃料的地下麵包房", + "gtceu.machine.charcoal_pile.tooltip.0": "§c點火後§7將原木燒製成§a木炭§7。", + "gtceu.machine.charcoal_pile.tooltip.1": "使用可點火的物品右擊即可啟動。", + "gtceu.machine.charcoal_pile.tooltip.2": "熱解發生在下方至多§b9x4x9§7的空間內。", + "gtceu.machine.charcoal_pile.tooltip.3": "原木不可暴露在§e空氣§7中!", + "gtceu.machine.cleanroom.tooltip": "將那些討厭的灰塵拒之門外", + "gtceu.machine.cleanroom.tooltip.0": "將機器放在內部執行無塵室配方。", + "gtceu.machine.cleanroom.tooltip.1": "清理汙染時耗能為§f30EU/t§7,潔淨狀態耗能為§f4EU/t§7。", + "gtceu.machine.cleanroom.tooltip.2": "超頻增加每個週期的清潔度。", + "gtceu.machine.cleanroom.tooltip.3": "§b大小:§f5x5x5到15x15x15", + "gtceu.machine.cleanroom.tooltip.4": "天花板需要§f過濾器機械方塊§7,不包含天花板的邊緣。", + "gtceu.machine.cleanroom.tooltip.5": "接受最多§f四扇門§7!門處於開啟狀態時不會影響潔淨度。", + "gtceu.machine.cleanroom.tooltip.6": "發電機、消音倉、採礦機和原始機器對於無塵室來說太髒了!", + "gtceu.machine.cleanroom.tooltip.7": "透過牆壁上的§f機器外殼§7或§f二極體§7向內部輸入能量。", + "gtceu.machine.cleanroom.tooltip.ae2.channels": "透過牆壁上的§f機器外殼§7傳送最多§f8個AE2頻道§7。", + "gtceu.machine.cleanroom.tooltip.ae2.no_channels": "透過牆壁上的§f機器外殼§7連通§aAE2網路§7。", + "gtceu.machine.cleanroom.tooltip.hold_ctrl": "按住CTRL以顯示完整的結構資訊", + "gtceu.machine.coke_oven.tooltip": "為鍊鋼和發電提供更優質的燃料", + "gtceu.machine.coke_oven_hatch.tooltip": "§7允許焦爐的自動化輸入輸出", + "gtceu.machine.combustion_generator.tooltip": "§7需要液體燃料", + "gtceu.machine.computation_receiver_hatch.tooltip": "為多方塊結構輸入算力資料", + "gtceu.machine.computation_transmitter_hatch.tooltip": "從多方塊結構輸出算力資料", + "gtceu.machine.cracker.tooltip": "有它,石油才有用", + "gtceu.machine.cracker.tooltip.1": "使用§6白銅§7後的每個線圈等級可以減少§f10%%§7的能源消耗。", + "gtceu.machine.data_access_hatch.tooltip.0": "令多方塊結構得以訪問資料", + "gtceu.machine.data_access_hatch.tooltip.1": "新增了§a%s§7個資料容器(快閃記憶體等)插槽", + "gtceu.machine.data_bank.tooltip.0": "你的個人網路儲存器", + "gtceu.machine.data_bank.tooltip.1": "大容量資料儲存,使用光纜傳輸。", + "gtceu.machine.data_bank.tooltip.2": "資料庫間可以相互連線。", + "gtceu.machine.data_bank.tooltip.3": "每個資料/光學倉耗能為§f%s EU/t§7。", + "gtceu.machine.data_bank.tooltip.4": "每個已連線的資料/光學倉耗能為§f%s EU/t§7。", + "gtceu.machine.data_receiver_hatch.tooltip": "為多方塊結構輸入研究資料", + "gtceu.machine.data_transmitter_hatch.tooltip": "從多方塊結構輸出研究資料", + "gtceu.machine.diode.message": "最大電流:%s", + "gtceu.machine.diode.tooltip_general": "將只允許能量向一個方向流動,並限制電流。", + "gtceu.machine.diode.tooltip_starts_at": "預設允許§f1A§r電流通行,使用軟錘切換。", + "gtceu.machine.diode.tooltip_tool_usage": "用軟錘右擊以改變電流。", + "gtceu.machine.distillation_tower.tooltip": "流體精煉廠", + "gtceu.machine.drum.disable_output": "不排出液體", + "gtceu.machine.drum.enable_output": "將液體排到底面相鄰的容器中", + "gtceu.machine.dual_hatch.export.tooltip": "為多方塊結構輸出物品和流體", + "gtceu.machine.dual_hatch.import.tooltip": "為多方塊結構輸入物品和流體", + "gtceu.machine.electric_blast_furnace.tooltip": "電力高爐有了,那電力煙燻爐呢?", + "gtceu.machine.electric_blast_furnace.tooltip.0": "每超過配方溫度§f900K§7,耗能均將乘以§f95%%§7(不計超頻)。", + "gtceu.machine.electric_blast_furnace.tooltip.1": "每超過配方溫度§f1800K§7,將一次超頻的效率變為§f100%%§7(無損超頻)。", + "gtceu.machine.electric_blast_furnace.tooltip.2": "超過§fMV§7後的每一級電壓,都會將溫度提高§f100K§7。", + "gtceu.machine.endpoint.tooltip.0": "使用§f長距離管道§7方塊連線管道介面以建立管路。", + "gtceu.machine.endpoint.tooltip.1": "管路必須有且僅有一個§f1輸入§7介面和一個§f1輸出§7介面。", + "gtceu.machine.endpoint.tooltip.2": "只有管道介面需要被§f區塊載入§7。", + "gtceu.machine.endpoint.tooltip.min_length": "§b最低介面間距:§f%d格方塊", + "gtceu.machine.energy_converter.description": "在EU和FE之間轉換能量形式。", + "gtceu.machine.energy_converter.message_conversion_eu": "EU轉為FE,,輸入:%dA %d EU,輸出:%d FE", + "gtceu.machine.energy_converter.message_conversion_native": "FE轉為EU,輸入:%dFE,輸出:%dA %d EU", + "gtceu.machine.energy_converter.tooltip_conversion_eu": "§aEU轉換:§f%dA %d EU(%s§f)§7 -> %d FE", + "gtceu.machine.energy_converter.tooltip_conversion_native": "§cFE轉換:§f%d FE -> %dA %d EU (%s§f)", + "gtceu.machine.energy_converter.tooltip_tool_usage": "預設§f轉換為FE§r,使用軟錘切換。", + "gtceu.machine.energy_hatch.input.tooltip": "為多方塊結構輸入能量", + "gtceu.machine.energy_hatch.input_hi_amp.tooltip": "為多方塊結構輸入更多電流", + "gtceu.machine.energy_hatch.output.tooltip": "為多方塊結構輸出能量", + "gtceu.machine.energy_hatch.output_hi_amp.tooltip": "為多方塊結構輸出更多電流", + "gtceu.machine.ev_alloy_smelter.tooltip": "§7高科技融合冶煉爐", + "gtceu.machine.ev_arc_furnace.tooltip": "§7誰需要高爐?", + "gtceu.machine.ev_assembler.tooltip": "§7復仇者,集結!", + "gtceu.machine.ev_autoclave.tooltip": "§7使粉末結晶", + "gtceu.machine.ev_bender.tooltip": "§7吁,他不行!我們要的是BENDER!!!", + "gtceu.machine.ev_brewery.tooltip": "§7緊湊高效的藥劑釀造", + "gtceu.machine.ev_canner.tooltip": "§7為容器填入或從中倒出物品及流體", + "gtceu.machine.ev_centrifuge.tooltip": "§7分子分離機", + "gtceu.machine.ev_chemical_bath.tooltip": "§7用化學品浸漬以分離礦物", + "gtceu.machine.ev_chemical_reactor.tooltip": "§7讓化學品相互反應", + "gtceu.machine.ev_circuit_assembler.tooltip": "§7一拿一放,東揀西裝", + "gtceu.machine.ev_compressor.tooltip": "§7全自動壓縮機 C77", + "gtceu.machine.ev_cutter.tooltip": "§7切片,切塊", + "gtceu.machine.ev_distillery.tooltip": "§7提取流體精華", + "gtceu.machine.ev_electric_furnace.tooltip": "§7別把它當成 Commodore 64 了", + "gtceu.machine.ev_electrolyzer.tooltip": "§7電離分子", + "gtceu.machine.ev_electromagnetic_separator.tooltip": "§7分離出磁性礦物", + "gtceu.machine.ev_extractor.tooltip": "§7毀滅級榨汁機 - D123", + "gtceu.machine.ev_extruder.tooltip": "§7通用型金屬加工器", + "gtceu.machine.ev_fermenter.tooltip": "§7發酵流體", + "gtceu.machine.ev_fluid_drilling_rig.tooltip": "甚至可以抽空整個油田", + "gtceu.machine.ev_fluid_heater.tooltip": "§7加熱你的流體", + "gtceu.machine.ev_fluid_solidifier.tooltip": "§7冷卻液體形成固體", + "gtceu.machine.ev_forge_hammer.tooltip": "§7停,掄錘時間到!", + "gtceu.machine.ev_forming_press.tooltip": "§7影象拓印者", + "gtceu.machine.ev_gas_collector.tooltip": "§7依照維度從空氣中收集種類各異的氣體", + "gtceu.machine.ev_laser_engraver.tooltip": "§7請勿直視雷射", + "gtceu.machine.ev_lathe.tooltip": "§7以更高的效率生產桿", + "gtceu.machine.ev_macerator.tooltip": "§7粉碎礦並獲得副產物", + "gtceu.machine.ev_mass_fabricator.tooltip": "§7UU物質 = “質量” * “發生”的平方", + "gtceu.machine.ev_mixer.tooltip": "§7它能被攪碎嗎?", + "gtceu.machine.ev_ore_washer.tooltip": "§7清洗礦以獲得更多副產物", + "gtceu.machine.ev_packer.tooltip": "§7取出盒外,放入盒中", + "gtceu.machine.ev_polarizer.tooltip": "§7將你的磁體極化", + "gtceu.machine.ev_replicator.tooltip": "§7生產最純淨的元素", + "gtceu.machine.ev_rock_crusher.tooltip": "§7在水平相鄰處放置熔岩和水", + "gtceu.machine.ev_scanner.tooltip": "§7掃描材料及其它物質", + "gtceu.machine.ev_sifter.tooltip": "§7保持冷靜,繼續篩選", + "gtceu.machine.ev_thermal_centrifuge.tooltip": "§7更精確地分離礦", + "gtceu.machine.ev_wiremill.tooltip": "§7更高效地生產導線", + "gtceu.machine.extreme_combustion_engine.tooltip": "極限化學能釋放者", + "gtceu.machine.fisher.requirement": "需要以機器正下方為中心的%dx%d正方形水源。", + "gtceu.machine.fisher.speed": "每%d刻抓到一些東西", + "gtceu.machine.fisher.tooltip": "每次消耗一根線捕魚", + "gtceu.machine.fluid_drilling_rig.depletion": "§b損耗率:§f%s%%", + "gtceu.machine.fluid_drilling_rig.description": "§7從基岩下的礦脈中鑽取流體。", + "gtceu.machine.fluid_drilling_rig.production": "§e產量倍率:§f%dx,超頻後%fx", + "gtceu.machine.fluid_hatch.export.tooltip": "為多方塊結構輸出流體", + "gtceu.machine.fluid_hatch.import.tooltip": "為多方塊結構輸入流體", + "gtceu.machine.fluid_tank.fluid": "含有%smB%s", + "gtceu.machine.fluid_tank.max_multiblock": "多方塊結構最大尺寸:%dx%dx%d", + "gtceu.machine.fusion_reactor.capacity": "§7儲能上限:§e%sM EU", + "gtceu.machine.fusion_reactor.luv.tooltip": "我發動魔法卡,融合!", + "gtceu.machine.fusion_reactor.overclocking": "超頻時消耗兩倍能量,工作時間減半", + "gtceu.machine.fusion_reactor.uv.tooltip": "化 作 白 矮 星 砸 向 你", + "gtceu.machine.fusion_reactor.zpm.tooltip": "一 輪 紅 日 落 大 地", + "gtceu.machine.gas_turbine.tooltip": "§7需要氣體燃料", + "gtceu.machine.high_performance_computation_array.tooltip.0": "只是普通的超級電腦", + "gtceu.machine.high_performance_computation_array.tooltip.1": "用於生產§f算力§7(同時會產生熱量)。", + "gtceu.machine.high_performance_computation_array.tooltip.2": "需要HPCA元件來生產§fCWU/t§7(計算工作單元)。", + "gtceu.machine.hp_steam_alloy_smelter.tooltip": "§7融合冶煉爐", + "gtceu.machine.hp_steam_compressor.tooltip": "§7壓縮物品", + "gtceu.machine.hp_steam_extractor.tooltip": "§7提取你的第一塊橡膠", + "gtceu.machine.hp_steam_forge_hammer.tooltip": "§7鍛造錘", + "gtceu.machine.hp_steam_furnace.tooltip": "§7利用蒸汽冶煉物品", + "gtceu.machine.hp_steam_liquid_boiler.tooltip": "§7比小型液體燃料鍋爐更快", + "gtceu.machine.hp_steam_macerator.tooltip": "§7粉碎你的礦", + "gtceu.machine.hp_steam_rock_crusher.tooltip": "§7在水平相鄰處放置熔岩和水", + "gtceu.machine.hp_steam_solar_boiler.tooltip": "§7來自太陽的蒸汽能源", + "gtceu.machine.hp_steam_solid_boiler.tooltip": "§7比小型固體燃料鍋爐更快", + "gtceu.machine.hpca.active_cooler_component.tooltip": "不再免費,但效果更好", + "gtceu.machine.hpca.advanced_computation_component.damaged.name": "損壞的HPCA高階計算元件", + "gtceu.machine.hpca.advanced_computation_component.damaged.tooltip": "只花了一隻胳膊和一條腿", + "gtceu.machine.hpca.advanced_computation_component.tooltip": "計算大聯盟", + "gtceu.machine.hpca.bridge_component.tooltip": "這就是高效能運算陣列中“陣列”一詞的來源", + "gtceu.machine.hpca.component_general.max_eut": "§6最大能量:§f%d EU/t", + "gtceu.machine.hpca.component_general.upkeep_eut": "§e維持耗能:§f%d EU/t", + "gtceu.machine.hpca.component_type.bridge": "允許§fHPCA§7與§f網路交換機§7連線", + "gtceu.machine.hpca.component_type.computation_cooling": "§c最多需要:§f%d 冷卻", + "gtceu.machine.hpca.component_type.computation_cwut": "§9算力:§f%d CWU/t", + "gtceu.machine.hpca.component_type.cooler_active": "§b冷卻型別:§f主動", + "gtceu.machine.hpca.component_type.cooler_active_coolant": "§c最多需要:§f%d mB/t %s", + "gtceu.machine.hpca.component_type.cooler_cooling": "§a提供:§f%d 冷卻", + "gtceu.machine.hpca.component_type.cooler_passive": "§b冷卻型別:§f被動", + "gtceu.machine.hpca.component_type.damaged": "HPCA過熱可能會損壞!", + "gtceu.machine.hpca.computation_component.damaged.name": "損壞的HPCA計算元件", + "gtceu.machine.hpca.computation_component.damaged.tooltip": "免費的可回收材料", + "gtceu.machine.hpca.computation_component.tooltip": "寶寶的第一次計算", + "gtceu.machine.hpca.empty_component.tooltip": "只是為了填充空間", + "gtceu.machine.hpca.heat_sink_component.tooltip": "免費冷卻!有免費的嗎?", + "gtceu.machine.hull.tooltip": "§7你需要§5絕§d對§4天§c馬§e行§a空§b的§3想§9象§1能§5力§7來使用它", + "gtceu.machine.hv_alloy_smelter.tooltip": "§7高科技融合冶煉爐", + "gtceu.machine.hv_arc_furnace.tooltip": "§7誰需要高爐?", + "gtceu.machine.hv_assembler.tooltip": "§7復仇者,集結!", + "gtceu.machine.hv_autoclave.tooltip": "§7使粉末結晶", + "gtceu.machine.hv_bender.tooltip": "§7吁,他不行!我們要的是BENDER!!!", + "gtceu.machine.hv_brewery.tooltip": "§7緊湊高效的藥劑釀造", + "gtceu.machine.hv_canner.tooltip": "§7為容器填入或從中倒出物品及流體", + "gtceu.machine.hv_centrifuge.tooltip": "§7分離分子", + "gtceu.machine.hv_chemical_bath.tooltip": "§7用化學品浸漬以分離礦物", + "gtceu.machine.hv_chemical_reactor.tooltip": "§7讓化學品相互反應", + "gtceu.machine.hv_circuit_assembler.tooltip": "§7一拿一放,東揀西裝", + "gtceu.machine.hv_compressor.tooltip": "§7全自動壓縮機 C77", + "gtceu.machine.hv_cutter.tooltip": "§7切片,切塊", + "gtceu.machine.hv_distillery.tooltip": "§7提取流體精華", + "gtceu.machine.hv_electric_furnace.tooltip": "§7別把它當成 Commodore 64 了", + "gtceu.machine.hv_electrolyzer.tooltip": "§7電離分子", + "gtceu.machine.hv_electromagnetic_separator.tooltip": "§7分離出磁性礦物", + "gtceu.machine.hv_extractor.tooltip": "§7毀滅級榨汁機 - D123", + "gtceu.machine.hv_extruder.tooltip": "§7通用型金屬加工器", + "gtceu.machine.hv_fermenter.tooltip": "§7發酵流體", + "gtceu.machine.hv_fluid_drilling_rig.tooltip": "並不能用來液壓破碎", + "gtceu.machine.hv_fluid_heater.tooltip": "§7加熱你的流體", + "gtceu.machine.hv_fluid_solidifier.tooltip": "§7冷卻液體形成固體", + "gtceu.machine.hv_forge_hammer.tooltip": "§7停,掄錘時間到!", + "gtceu.machine.hv_forming_press.tooltip": "§7影象拓印者", + "gtceu.machine.hv_gas_collector.tooltip": "§7依照維度從空氣中收集種類各異的氣體", + "gtceu.machine.hv_laser_engraver.tooltip": "§7請勿直視雷射", + "gtceu.machine.hv_lathe.tooltip": "§7以更高的效率生產桿", + "gtceu.machine.hv_macerator.tooltip": "§7粉碎礦並獲得副產物", + "gtceu.machine.hv_mass_fabricator.tooltip": "§7UU物質 = “質量” * “發生”的平方", + "gtceu.machine.hv_mixer.tooltip": "§7它能被攪碎嗎?", + "gtceu.machine.hv_ore_washer.tooltip": "§7清洗礦以獲得更多副產物", + "gtceu.machine.hv_packer.tooltip": "§7取出盒外,放入盒中", + "gtceu.machine.hv_polarizer.tooltip": "§7將你的磁體極化", + "gtceu.machine.hv_replicator.tooltip": "§7生產最純淨的元素", + "gtceu.machine.hv_rock_crusher.tooltip": "§7在水平相鄰處放置熔岩和水", + "gtceu.machine.hv_scanner.tooltip": "§7掃描材料及其它物質", + "gtceu.machine.hv_sifter.tooltip": "§7保持冷靜,繼續篩選", + "gtceu.machine.hv_thermal_centrifuge.tooltip": "§7更精確地分離礦", + "gtceu.machine.hv_wiremill.tooltip": "§7更高效地生產導線", + "gtceu.machine.implosion_compressor.tooltip": "唯一一臺你想要爆一爆的機器", + "gtceu.machine.item_bus.export.tooltip": "為多方塊結構輸出物品", + "gtceu.machine.item_bus.import.tooltip": "為多方塊結構輸入物品", + "gtceu.machine.item_collector.gui.collect_range": "作用區域:%sx%s格", + "gtceu.machine.item_collector.tooltip": "吸取它周圍的掉落物", + "gtceu.machine.iv_alloy_smelter.tooltip": "§7合金集聚器", + "gtceu.machine.iv_arc_furnace.tooltip": "§7放電加熱器", + "gtceu.machine.iv_assembler.tooltip": "§l不是§7工作台", + "gtceu.machine.iv_autoclave.tooltip": "§7高壓鍋", + "gtceu.machine.iv_bender.tooltip": "§7形態扭曲器", + "gtceu.machine.iv_brewery.tooltip": "§7釀酒好手", + "gtceu.machine.iv_canner.tooltip": "§7罐作機", + "gtceu.machine.iv_centrifuge.tooltip": "§7分子旋風", + "gtceu.machine.iv_chemical_bath.tooltip": "§7化學品浸潤器", + "gtceu.machine.iv_chemical_reactor.tooltip": "§7化學表演藝術家", + "gtceu.machine.iv_circuit_assembler.tooltip": "§7電子廠", + "gtceu.machine.iv_compressor.tooltip": "§7奇點凝縮機", + "gtceu.machine.iv_cutter.tooltip": "§7物質切削器", + "gtceu.machine.iv_distillery.tooltip": "§7凝結物質分離器", + "gtceu.machine.iv_electric_furnace.tooltip": "§7電子激發處理器", + "gtceu.machine.iv_electrolyzer.tooltip": "§7分子崩解機 E-4906", + "gtceu.machine.iv_electromagnetic_separator.tooltip": "§7電磁分類器", + "gtceu.machine.iv_extractor.tooltip": "§7真空提取機", + "gtceu.machine.iv_extruder.tooltip": "§7材料壓出器", + "gtceu.machine.iv_fermenter.tooltip": "§7發酵加速器", + "gtceu.machine.iv_fluid_heater.tooltip": "§7熱量灌注器", + "gtceu.machine.iv_fluid_solidifier.tooltip": "§7並不是製冰機", + "gtceu.machine.iv_forge_hammer.tooltip": "§7鍛板機", + "gtceu.machine.iv_forming_press.tooltip": "§7物件層化機", + "gtceu.machine.iv_gas_collector.tooltip": "§7依照維度從大氣層中收集種類各異的氣體", + "gtceu.machine.iv_laser_engraver.tooltip": "§7功率高達兩百零四萬瓦", + "gtceu.machine.iv_lathe.tooltip": "§7全自動旋轉車削機 L-5906", + "gtceu.machine.iv_macerator.tooltip": "§7全自動破壁機 9001", + "gtceu.machine.iv_mass_fabricator.tooltip": "§7創世紀工廠", + "gtceu.machine.iv_mixer.tooltip": "§7物質組織器", + "gtceu.machine.iv_ore_washer.tooltip": "§7全新用途滾筒洗衣機 I-360", + "gtceu.machine.iv_packer.tooltip": "§7裝箱者", + "gtceu.machine.iv_polarizer.tooltip": "§7磁性引入機", + "gtceu.machine.iv_replicator.tooltip": "§7物質黏貼機", + "gtceu.machine.iv_rock_crusher.tooltip": "§7岩漿冷卻固化器 R-8200", + "gtceu.machine.iv_scanner.tooltip": "§7異常探測儀", + "gtceu.machine.iv_sifter.tooltip": "§7由群巒傳說贊助提供", + "gtceu.machine.iv_thermal_centrifuge.tooltip": "§7烈焰血汗工廠 T-6350", + "gtceu.machine.iv_wiremill.tooltip": "§7錠材拉伸機", + "gtceu.machine.large_boiler.bronze.tooltip": "再多來點蒸汽!", + "gtceu.machine.large_boiler.steel.tooltip": "木炭吞噬者", + "gtceu.machine.large_boiler.titanium.tooltip": "我超級魔法燃料呢?", + "gtceu.machine.large_boiler.tungstensteel.tooltip": "你手上有幾座煤礦也不夠它吃的吧?", + "gtceu.machine.large_chemical_reactor.tooltip": "黑盒反應器", + "gtceu.machine.large_combustion_engine.tooltip": "燃料點火室", + "gtceu.machine.large_combustion_engine.tooltip.boost_extreme": "提供§f80 mB/s§7的液態氧,並消耗§f雙倍§7燃料以產生高達§f%s§7EU/t的功率。", + "gtceu.machine.large_combustion_engine.tooltip.boost_regular": "提供§f20 mB/s§7的氧氣,並消耗§f雙倍§7燃料以產生高達§f%s§7EU/t的功率。", + "gtceu.machine.large_miner.ev.tooltip": "替你挖礦", + "gtceu.machine.large_miner.iv.tooltip": "挖掉整個生態域", + "gtceu.machine.large_miner.luv.tooltip": "掀翻整片大陸", + "gtceu.machine.large_turbine.gas.tooltip": "並不是噴射發動機", + "gtceu.machine.large_turbine.plasma.tooltip": "電漿能量虹吸器", + "gtceu.machine.large_turbine.steam.tooltip": "別把頭伸進去", + "gtceu.machine.laser_hatch.both.tooltip": "§c雷射傳導線纜必須直線擺放!§7", + "gtceu.machine.laser_hatch.source.tooltip": "§7遠距離發射能量", + "gtceu.machine.laser_hatch.target.tooltip": "§7遠距離接收能量", + "gtceu.machine.laser_source_hatch.tooltip.0": "遠距離發射能量", + "gtceu.machine.laser_source_hatch.tooltip.1": "§c雷射傳導線纜必須直線擺放!§7", + "gtceu.machine.laser_target_hatch.tooltip.0": "遠距離接收能量", + "gtceu.machine.laser_target_hatch.tooltip.1": "§c雷射傳導線纜必須直線擺放!§7", + "gtceu.machine.locked_safe.malfunctioning": "§c故障中!", + "gtceu.machine.locked_safe.requirements": "§7需要更換以下部件:", + "gtceu.machine.lp_steam_alloy_smelter.tooltip": "§7融合冶煉爐", + "gtceu.machine.lp_steam_compressor.tooltip": "§7壓縮物品", + "gtceu.machine.lp_steam_extractor.tooltip": "§7提取你的第一塊橡膠", + "gtceu.machine.lp_steam_forge_hammer.tooltip": "§7鍛造錘", + "gtceu.machine.lp_steam_furnace.tooltip": "§7利用蒸汽冶煉物品", + "gtceu.machine.lp_steam_liquid_boiler.tooltip": "§7消耗液體的鍋爐", + "gtceu.machine.lp_steam_macerator.tooltip": "§7粉碎你的礦", + "gtceu.machine.lp_steam_rock_crusher.tooltip": "§7在水平相鄰處放置熔岩和水", + "gtceu.machine.lp_steam_solar_boiler.tooltip": "§7來自太陽的蒸汽能源", + "gtceu.machine.lp_steam_solid_boiler.tooltip": "§7獲取蒸汽能源的早期手段", + "gtceu.machine.luv_alloy_smelter.tooltip": "§7合金集聚器", + "gtceu.machine.luv_arc_furnace.tooltip": "§7放電加熱器", + "gtceu.machine.luv_assembler.tooltip": "§l不是§7工作台", + "gtceu.machine.luv_autoclave.tooltip": "§7高壓鍋", + "gtceu.machine.luv_bender.tooltip": "§7形態扭曲器", + "gtceu.machine.luv_brewery.tooltip": "§7釀酒好手", + "gtceu.machine.luv_canner.tooltip": "§7罐作機", + "gtceu.machine.luv_centrifuge.tooltip": "§7分子旋風", + "gtceu.machine.luv_chemical_bath.tooltip": "§7化學品浸潤器", + "gtceu.machine.luv_chemical_reactor.tooltip": "§7化學表演藝術家", + "gtceu.machine.luv_circuit_assembler.tooltip": "§7電子廠", + "gtceu.machine.luv_compressor.tooltip": "§7奇點凝縮機", + "gtceu.machine.luv_cutter.tooltip": "§7物質切削器", + "gtceu.machine.luv_distillery.tooltip": "§7凝結物質分離器", + "gtceu.machine.luv_electric_furnace.tooltip": "§7電子激發處理器", + "gtceu.machine.luv_electrolyzer.tooltip": "§7分子崩解機 E-4907", + "gtceu.machine.luv_electromagnetic_separator.tooltip": "§7電磁分類器", + "gtceu.machine.luv_extractor.tooltip": "§7真空提取機", + "gtceu.machine.luv_extruder.tooltip": "§7材料壓出器", + "gtceu.machine.luv_fermenter.tooltip": "§7發酵加速器", + "gtceu.machine.luv_fluid_heater.tooltip": "§7熱量灌注器", + "gtceu.machine.luv_fluid_solidifier.tooltip": "§7並不是製冰機", + "gtceu.machine.luv_forge_hammer.tooltip": "§7鍛板機", + "gtceu.machine.luv_forming_press.tooltip": "§7物件層化機", + "gtceu.machine.luv_gas_collector.tooltip": "§7依照維度從大氣層中收集種類各異的氣體", + "gtceu.machine.luv_laser_engraver.tooltip": "§7功率高達八百一十六萬瓦", + "gtceu.machine.luv_lathe.tooltip": "§7全自動旋轉車削機 L-5907", + "gtceu.machine.luv_macerator.tooltip": "§7全自動破壁機 9002", + "gtceu.machine.luv_mass_fabricator.tooltip": "§7創世紀工廠", + "gtceu.machine.luv_mixer.tooltip": "§7物質組織器", + "gtceu.machine.luv_ore_washer.tooltip": "§7全新用途滾筒洗衣機 I-361", + "gtceu.machine.luv_packer.tooltip": "§7裝箱者", + "gtceu.machine.luv_polarizer.tooltip": "§7磁性引入機", + "gtceu.machine.luv_replicator.tooltip": "§7物質黏貼機", + "gtceu.machine.luv_rock_crusher.tooltip": "§7岩漿冷卻固化器 R-9200", + "gtceu.machine.luv_scanner.tooltip": "§7異常探測儀", + "gtceu.machine.luv_sifter.tooltip": "§7由群巒傳說贊助提供", + "gtceu.machine.luv_thermal_centrifuge.tooltip": "§7烈焰血汗工廠 T-6351", + "gtceu.machine.luv_wiremill.tooltip": "§7錠材拉伸機", + "gtceu.machine.lv_alloy_smelter.tooltip": "§7高科技融合冶煉爐", + "gtceu.machine.lv_arc_furnace.tooltip": "§7誰需要高爐?", + "gtceu.machine.lv_assembler.tooltip": "§7復仇者,集結!", + "gtceu.machine.lv_autoclave.tooltip": "§7使粉末結晶", + "gtceu.machine.lv_bender.tooltip": "§7吁,他不行!我們要的是BENDER!!!", + "gtceu.machine.lv_brewery.tooltip": "§7緊湊高效的藥劑釀造", + "gtceu.machine.lv_canner.tooltip": "§7為容器填入或從中倒出物品及流體", + "gtceu.machine.lv_centrifuge.tooltip": "§7分離分子", + "gtceu.machine.lv_chemical_bath.tooltip": "§7用化學品浸漬以分離礦物", + "gtceu.machine.lv_chemical_reactor.tooltip": "§7讓化學品相互反應", + "gtceu.machine.lv_circuit_assembler.tooltip": "§7一拿一放,東揀西裝", + "gtceu.machine.lv_compressor.tooltip": "§7全自動壓縮機 C77", + "gtceu.machine.lv_cutter.tooltip": "§7切片,切塊", + "gtceu.machine.lv_distillery.tooltip": "§7提取流體精華", + "gtceu.machine.lv_electric_furnace.tooltip": "§7別把它當成 Commodore 64 了", + "gtceu.machine.lv_electrolyzer.tooltip": "§7電離分子", + "gtceu.machine.lv_electromagnetic_separator.tooltip": "§7分離出磁性礦物", + "gtceu.machine.lv_extractor.tooltip": "§7毀滅級榨汁機 - D123", + "gtceu.machine.lv_extruder.tooltip": "§7通用型金屬加工器", + "gtceu.machine.lv_fermenter.tooltip": "§7發酵流體", + "gtceu.machine.lv_fluid_heater.tooltip": "§7加熱你的流體", + "gtceu.machine.lv_fluid_solidifier.tooltip": "§7冷卻液體形成固體", + "gtceu.machine.lv_forge_hammer.tooltip": "§7停,掄錘時間到!", + "gtceu.machine.lv_forming_press.tooltip": "§7影象拓印者", + "gtceu.machine.lv_gas_collector.tooltip": "§7依照維度從空氣中收集種類各異的氣體", + "gtceu.machine.lv_laser_engraver.tooltip": "§7請勿直視雷射", + "gtceu.machine.lv_lathe.tooltip": "§7以更高的效率生產桿", + "gtceu.machine.lv_macerator.tooltip": "§7粉碎礦", + "gtceu.machine.lv_mass_fabricator.tooltip": "§7UU物質 = “質量” * “發生”的平方", + "gtceu.machine.lv_mixer.tooltip": "§7它能被攪碎嗎?", + "gtceu.machine.lv_ore_washer.tooltip": "§7清洗礦以獲得更多副產物", + "gtceu.machine.lv_packer.tooltip": "§7取出盒外,放入盒中", + "gtceu.machine.lv_polarizer.tooltip": "§7將你的磁體極化", + "gtceu.machine.lv_replicator.tooltip": "§7生產最純淨的元素", + "gtceu.machine.lv_rock_crusher.tooltip": "§7在水平相鄰處放置熔岩和水", + "gtceu.machine.lv_scanner.tooltip": "§7掃描材料及其它物質", + "gtceu.machine.lv_sifter.tooltip": "§7保持冷靜,繼續篩選", + "gtceu.machine.lv_thermal_centrifuge.tooltip": "§7更精確地分離礦", + "gtceu.machine.lv_wiremill.tooltip": "§7更高效地生產導線", + "gtceu.machine.machine_hatch.locked": "機器介面已鎖定", + "gtceu.machine.machine_hatch.processing_array": "當在§e處理陣列§7中時,僅可搭載適用於§e處理陣列§7的機器", + "gtceu.machine.machine_hatch.tooltip": "僅可容納有效物品的特型訪問匯流排", + "gtceu.machine.maintenance_hatch.tooltip": "用於給多方塊結構提供維護", + "gtceu.machine.maintenance_hatch_cleanroom_auto.tooltip.0": "可以自動維修多方塊結構,附帶清潔功能!", + "gtceu.machine.maintenance_hatch_cleanroom_auto.tooltip.1": "清潔方式:", + "gtceu.machine.maintenance_hatch_configurable.tooltip.0": "更精細的維修多方塊結構", + "gtceu.machine.maintenance_hatch_configurable.tooltip.1": "起手無需維護!", + "gtceu.machine.maintenance_hatch_full_auto.tooltip": "可以自動維修多方塊結構", + "gtceu.machine.maintenance_hatch_tape_slot.tooltip": "放入膠帶以防止出現故障", + "gtceu.machine.maintenance_hatch_tool_slot.tooltip": "所需工具處於物品欄時空手點選該槽位來進行維修", + "gtceu.machine.me.copy_paste.tooltip": "手持快閃記憶體,左擊複製設定,右擊貼上設定", + "gtceu.machine.me.export.tooltip": "在連線到ME網路之前,具有無限容量。", + "gtceu.machine.me.fluid_export.tooltip": "將流體直接儲存到ME網路中。", + "gtceu.machine.me.fluid_import.data_stick.name": "§oME輸入倉設定資料", + "gtceu.machine.me.fluid_import.tooltip": "自動從ME網路取出定量流體。", + "gtceu.machine.me.import_copy_settings": "已將設定儲存到快閃記憶體", + "gtceu.machine.me.import_paste_settings": "已應用快閃記憶體中的設定", + "gtceu.machine.me.item_export.tooltip": "將物品直接儲存到ME網路中。", + "gtceu.machine.me.item_import.data_stick.name": "§oME輸入匯流排設定資料", + "gtceu.machine.me.item_import.tooltip": "自動從ME網路取出定量物品。", + "gtceu.machine.me.stocking_auto_pull_disabled": "ME自動拉取已停用", + "gtceu.machine.me.stocking_auto_pull_enabled": "ME自動拉取已啟用", + "gtceu.machine.me.stocking_fluid.tooltip.0": "直接從ME網路取用流體", + "gtceu.machine.me.stocking_fluid.tooltip.1": "ME自動拉取模式將自動標記ME網路中的前16種流體,每5秒更新一次。", + "gtceu.machine.me.stocking_item.tooltip.0": "直接從ME網路取用物品", + "gtceu.machine.me.stocking_item.tooltip.1": "ME自動拉取模式將自動標記ME網路中的前16種物品,每5秒更新一次。", + "gtceu.machine.me_import_fluid_hatch.configs.tooltip": "可標記16種流體", + "gtceu.machine.me_import_item_hatch.configs.tooltip": "可標記16種物品", + "gtceu.machine.miner.chunkradius": "區塊半徑:%d", + "gtceu.machine.miner.fluid_usage": "消耗§f%d mB/t§7的§f%s§7,每次超頻都會使消耗量加倍。", + "gtceu.machine.miner.minex": "mX:%d", + "gtceu.machine.miner.miney": "mY:%d", + "gtceu.machine.miner.minez": "mZ:%d", + "gtceu.machine.miner.multi.description": "一種佔地面積大、產礦量大的多方塊採礦機。", + "gtceu.machine.miner.multi.modes": "具有絲綢之觸和區塊對齊模式。", + "gtceu.machine.miner.multi.production": "產出§f研磨機§7§f3x§7倍的粉碎礦。", + "gtceu.machine.miner.per_block": "§7每個方塊需要§f%d§7秒。", + "gtceu.machine.miner.radius": "半徑:%d", + "gtceu.machine.miner.startx": "sX:%d", + "gtceu.machine.miner.starty": "sY:%d", + "gtceu.machine.miner.startz": "sZ:%d", + "gtceu.machine.miner.tooltip": "§7只採掘機器下方的礦!工作範圍預設為§f%sx%s§7。", + "gtceu.machine.muffle.off": "靜音:已禁用", + "gtceu.machine.muffle.on": "靜音:已啟用", + "gtceu.machine.muffler_hatch.tooltip.0": "從機器中回收廢料", + "gtceu.machine.muffler_hatch.tooltip.1": "§l切 勿 阻 隔 輸 出 口!", + "gtceu.machine.multi_furnace.tooltip": "就像家裡的烤箱一樣", + "gtceu.machine.multiblock.tank.tooltip": "透過控制器或儲罐閥門進行吞吐。", + "gtceu.machine.mv_alloy_smelter.tooltip": "§7高科技融合冶煉爐", + "gtceu.machine.mv_arc_furnace.tooltip": "§7誰需要高爐?", + "gtceu.machine.mv_assembler.tooltip": "§7復仇者,集結!", + "gtceu.machine.mv_autoclave.tooltip": "§7使粉末結晶", + "gtceu.machine.mv_bender.tooltip": "§7吁,他不行!我們要的是BENDER!!!", + "gtceu.machine.mv_brewery.tooltip": "§7緊湊高效的藥劑釀造", + "gtceu.machine.mv_canner.tooltip": "§7為容器填入或從中倒出物品及流體", + "gtceu.machine.mv_centrifuge.tooltip": "§7分離分子", + "gtceu.machine.mv_chemical_bath.tooltip": "§7用化學品浸漬以分離礦物", + "gtceu.machine.mv_chemical_reactor.tooltip": "§7讓化學品相互反應", + "gtceu.machine.mv_circuit_assembler.tooltip": "§7一拿一放,東揀西裝", + "gtceu.machine.mv_compressor.tooltip": "§7全自動壓縮機 C77", + "gtceu.machine.mv_cutter.tooltip": "§7切片,切塊", + "gtceu.machine.mv_distillery.tooltip": "§7提取流體精華", + "gtceu.machine.mv_electric_furnace.tooltip": "§7別把它當成 Commodore 64 了", + "gtceu.machine.mv_electrolyzer.tooltip": "§7電離分子", + "gtceu.machine.mv_electromagnetic_separator.tooltip": "§7分離出磁性礦物", + "gtceu.machine.mv_extractor.tooltip": "§7毀滅級榨汁機 - D123", + "gtceu.machine.mv_extruder.tooltip": "§7通用型金屬加工器", + "gtceu.machine.mv_fermenter.tooltip": "§7發酵流體", + "gtceu.machine.mv_fluid_drilling_rig.tooltip": "我猜你做這個是為了採油", + "gtceu.machine.mv_fluid_heater.tooltip": "§7加熱你的流體", + "gtceu.machine.mv_fluid_solidifier.tooltip": "§7冷卻液體形成固體", + "gtceu.machine.mv_forge_hammer.tooltip": "§7停,掄錘時間到!", + "gtceu.machine.mv_forming_press.tooltip": "§7影象拓印者", + "gtceu.machine.mv_gas_collector.tooltip": "§7依照維度從空氣中收集種類各異的氣體", + "gtceu.machine.mv_laser_engraver.tooltip": "§7請勿直視雷射", + "gtceu.machine.mv_lathe.tooltip": "§7以更高的效率生產桿", + "gtceu.machine.mv_macerator.tooltip": "§7粉碎礦", + "gtceu.machine.mv_mass_fabricator.tooltip": "§7UU物質 = “質量” * “發生”的平方", + "gtceu.machine.mv_mixer.tooltip": "§7它能被攪碎嗎?", + "gtceu.machine.mv_ore_washer.tooltip": "§7清洗礦以獲得更多副產物", + "gtceu.machine.mv_packer.tooltip": "§7取出盒外,放入盒中", + "gtceu.machine.mv_polarizer.tooltip": "§7將你的磁體極化", + "gtceu.machine.mv_replicator.tooltip": "§7生產最純淨的元素", + "gtceu.machine.mv_rock_crusher.tooltip": "§7在水平相鄰處放置熔岩和水", + "gtceu.machine.mv_scanner.tooltip": "§7掃描材料及其它物質", + "gtceu.machine.mv_sifter.tooltip": "§7保持冷靜,繼續篩選", + "gtceu.machine.mv_thermal_centrifuge.tooltip": "§7更精確地分離礦", + "gtceu.machine.mv_wiremill.tooltip": "§7更高效地生產導線", + "gtceu.machine.network_switch.tooltip.0": "乙太網路集線器", + "gtceu.machine.network_switch.tooltip.1": "用於路由與分發§f算力§7。", + "gtceu.machine.network_switch.tooltip.2": "可以將任意數量的算力§f輸入§7整合為為任意數量的算力§f輸出§7。", + "gtceu.machine.network_switch.tooltip.3": "每個算力資料倉使用§f%s EU/t§7。", + "gtceu.machine.object_holder.tooltip": "研究站的先進支撐機構", + "gtceu.machine.opv_gas_collector.tooltip": "§7依照維度從宇宙中收集種類各異的氣體", + "gtceu.machine.opv_rock_crusher.tooltip": "§7火山成型室", + "gtceu.machine.parallel_hatch.display": "調整多方塊的最多平行處理數。", + "gtceu.machine.parallel_hatch_mk5.tooltip": "允許同時處理至多4個配方。", + "gtceu.machine.parallel_hatch_mk6.tooltip": "允許同時處理至多16個配方。", + "gtceu.machine.parallel_hatch_mk7.tooltip": "允許同時處理至多64個配方。", + "gtceu.machine.parallel_hatch_mk8.tooltip": "允許同時處理至多256個配方。", + "gtceu.machine.parallel_limit": "可同時處理至多§b%d§r§7個配方。", + "gtceu.machine.passthrough_hatch_fluid.tooltip": "將流體從一側輸送到另一側", + "gtceu.machine.passthrough_hatch_item.tooltip": "將物品從一側傳送到另一側", + "gtceu.machine.perfect_oc": "超頻不會損失能效。", + "gtceu.machine.power_substation.tooltip.0": "集中電網的核心", + "gtceu.machine.power_substation.tooltip.1": "所有§f電容§r不需要保持同一電壓等級。", + "gtceu.machine.power_substation.tooltip.2": "最多容許§f%d層電容§r。", + "gtceu.machine.power_substation.tooltip.3": "每§f24小時§7損失相當於總容量的§f1%%§r的能量。", + "gtceu.machine.power_substation.tooltip.4": "每個電容的損失上限為§f%d kEU/t§r。", + "gtceu.machine.power_substation.tooltip.5": "可以使用", + "gtceu.machine.power_substation.tooltip.6": "雷射倉§r。", + "gtceu.machine.primitive_blast_furnace.bronze.tooltip": "為你帶來第一塊鋼", + "gtceu.machine.primitive_water_pump.tooltip": "終界介面蓄水庫-家用款", + "gtceu.machine.processing_array.tooltip": "當幾臺機器無法解決問題時", + "gtceu.machine.pump.tooltip": "§7抽乾大海的最佳手段!", + "gtceu.machine.pump.tooltip_buckets": "每桶§f%d§7tick", + "gtceu.machine.pump_hatch.tooltip": "原始水泵專用流體輸出口", + "gtceu.machine.pyrolyse_oven.tooltip": "電力焦爐", + "gtceu.machine.pyrolyse_oven.tooltip.1": "§a白銅§7線圈會使效率降低§f25%%§7,§a坎塔爾合金§7後的每個線圈都會增加§f50%%§7的速度。", + "gtceu.machine.quantum_chest.items_stored": "物品數量:", + "gtceu.machine.quantum_chest.tooltip": "§7比儲物抽屜好", + "gtceu.machine.quantum_tank.tooltip": "§7小小身體,大大肚量", + "gtceu.machine.research_station.researching": "研究中。", + "gtceu.machine.research_station.tooltip.0": "不僅僅是一個多方塊掃描器", + "gtceu.machine.research_station.tooltip.1": "用於掃描§f資料球§7和§f資料模組§7。", + "gtceu.machine.research_station.tooltip.2": "需要§f算力§7來進行工作。", + "gtceu.machine.research_station.tooltip.3": "提供更多的算力可以使研究進展的更快。", + "gtceu.machine.rotor_holder.tooltip.0": "為多方塊結構的轉子", + "gtceu.machine.rotor_holder.tooltip.1": "提供支撐,固定轉子使其不能飛走", + "gtceu.machine.steam.steam_hatch.tooltip": "§e接受流體:§f蒸汽", + "gtceu.machine.steam_boiler.heat_amount": "熱容:%s %%", + "gtceu.machine.steam_bus.tooltip": "無法作用於非蒸汽驅動的多方塊結構", + "gtceu.machine.steam_grinder.tooltip": "多方塊研磨機,但是沒有副產物", + "gtceu.machine.steam_miner.tooltip": "§7只採掘機器下方的礦!", + "gtceu.machine.steam_oven.tooltip": "不要與工業熔爐混淆", + "gtceu.machine.steam_turbine.tooltip": "§7將蒸汽轉化為 EU", + "gtceu.machine.substation_hatch.input.tooltip": "為蓄能變電站輸入能量", + "gtceu.machine.substation_hatch.output.tooltip": "為蓄能變電站輸出能量", + "gtceu.machine.tank_valve.tooltip": "用以吞吐多方塊儲罐中的流體。正面向下時可自動輸出。", + "gtceu.machine.transformer.description": "§7轉換能量的電壓等級", + "gtceu.machine.transformer.message_transform_down": "降壓 輸出:%d EU %dA 輸出:%d EU %dA", + "gtceu.machine.transformer.message_transform_up": "升壓 輸入:%d EU %dA 輸出:% dEU %dA", + "gtceu.machine.transformer.tooltip_tool_usage": "預設§f降壓§r,使用螺絲起子切換。", + "gtceu.machine.transformer.tooltip_transform_down": "§a降壓:§f%dA %d EU(%s§f)-> %dA %d EU(%s§f)", + "gtceu.machine.transformer.tooltip_transform_up": "§c升壓:§f%dA %d EU(%s§f)-> %dA %d EU(%s§f)", + "gtceu.machine.uev_gas_collector.tooltip": "§7依照維度從太陽系中收集種類各異的氣體", + "gtceu.machine.uev_rock_crusher.tooltip": "§7火山成型室", + "gtceu.machine.uhv_gas_collector.tooltip": "§7根據維度從太陽系中收集氣體", + "gtceu.machine.uhv_rock_crusher.tooltip": "§7火山成型室", + "gtceu.machine.uiv_gas_collector.tooltip": "§7根據維度從太陽系中收集氣體", + "gtceu.machine.uiv_rock_crusher.tooltip": "§7火山成型室", + "gtceu.machine.uv_alloy_smelter.tooltip": "§7金屬混合調製裝置", + "gtceu.machine.uv_arc_furnace.tooltip": "§7短路加熱器", + "gtceu.machine.uv_assembler.tooltip": "§7裝配構建者", + "gtceu.machine.uv_autoclave.tooltip": "§7重壓單元", + "gtceu.machine.uv_bender.tooltip": "§7物質畸變者", + "gtceu.machine.uv_brewery.tooltip": "§7強勁釀製者", + "gtceu.machine.uv_canner.tooltip": "§7罐子致動器", + "gtceu.machine.uv_centrifuge.tooltip": "§7分子龍捲風", + "gtceu.machine.uv_chemical_bath.tooltip": "§7化學沉浸洗滌者", + "gtceu.machine.uv_chemical_reactor.tooltip": "§7反應催化器", + "gtceu.machine.uv_circuit_assembler.tooltip": "§7電腦工廠", + "gtceu.machine.uv_compressor.tooltip": "§7物質約束器", + "gtceu.machine.uv_cutter.tooltip": "§7物件分割者", + "gtceu.machine.uv_distillery.tooltip": "§7餾分分離器", + "gtceu.machine.uv_electric_furnace.tooltip": "§7原子激發器", + "gtceu.machine.uv_electrolyzer.tooltip": "§7原子離子化裝置", + "gtceu.machine.uv_electromagnetic_separator.tooltip": "§7電磁場驅離裝置", + "gtceu.machine.uv_extractor.tooltip": "§7液化吸取者", + "gtceu.machine.uv_extruder.tooltip": "§7形制驅動者", + "gtceu.machine.uv_fermenter.tooltip": "§7呼吸控制器", + "gtceu.machine.uv_fluid_heater.tooltip": "§7熱量灌輸器", + "gtceu.machine.uv_fluid_solidifier.tooltip": "§7流體硬化器", + "gtceu.machine.uv_forge_hammer.tooltip": "§7衝擊調製器", + "gtceu.machine.uv_forming_press.tooltip": "§7表面移相器", + "gtceu.machine.uv_gas_collector.tooltip": "§7根據維度從太陽系中收集氣體", + "gtceu.machine.uv_laser_engraver.tooltip": "§7高精度光子加農炮", + "gtceu.machine.uv_lathe.tooltip": "§7飛旋磨輪", + "gtceu.machine.uv_macerator.tooltip": "§7形態毀滅者", + "gtceu.machine.uv_mass_fabricator.tooltip": "§7存在之源", + "gtceu.machine.uv_mixer.tooltip": "§7材料均質機", + "gtceu.machine.uv_ore_washer.tooltip": "§7微型洗車房", + "gtceu.machine.uv_packer.tooltip": "§7亞馬遜倉庫", + "gtceu.machine.uv_polarizer.tooltip": "§7磁場重置裝置", + "gtceu.machine.uv_replicator.tooltip": "§7元素創制者", + "gtceu.machine.uv_rock_crusher.tooltip": "§7火山成型室", + "gtceu.machine.uv_scanner.tooltip": "§7電子顯微鏡", + "gtceu.machine.uv_sifter.tooltip": "§7脈衝過濾器", + "gtceu.machine.uv_thermal_centrifuge.tooltip": "§7騰焰旋風", + "gtceu.machine.uv_wiremill.tooltip": "§7導線易形者", + "gtceu.machine.uxv_gas_collector.tooltip": "§7根據維度從太陽系中收集氣體", + "gtceu.machine.uxv_rock_crusher.tooltip": "§7火山成型室", + "gtceu.machine.vacuum_freezer.tooltip": "啊哈我的大冰箱!", + "gtceu.machine.workbench.storage_note.0": "(相鄰的物品容器中", + "gtceu.machine.workbench.storage_note.1": "可參與合成的物品)", + "gtceu.machine.workbench.tab.container": "儲存", + "gtceu.machine.workbench.tab.crafting": "合成", + "gtceu.machine.workbench.tab.item_list": "儲存空間", + "gtceu.machine.workbench.tab.workbench": "合成", + "gtceu.machine.workbench.tooltip.0": "比林業的好", + "gtceu.machine.workbench.tooltip.1": "具有物品儲存、工具儲存、從相鄰的儲存容器中讀取物品和儲存配方功能。", + "gtceu.machine.world_accelerator.description": "以兩種模式之一加速周圍方塊的更新刻:§f方塊實體§r或§f隨機刻§7。使用螺絲起子切換模式。", + "gtceu.machine.world_accelerator.mode_entity": "隨機刻模式", + "gtceu.machine.world_accelerator.mode_tile": "方塊實體模式", + "gtceu.machine.world_accelerator.working_area": "§b作用範圍:", + "gtceu.machine.world_accelerator.working_area_random": " 隨機刻模式:§f%dx%d", + "gtceu.machine.world_accelerator.working_area_tile": " 方塊實體模式:§f相鄰方塊", + "gtceu.machine.zpm_alloy_smelter.tooltip": "§7合金集聚器", + "gtceu.machine.zpm_arc_furnace.tooltip": "§7放電加熱器", + "gtceu.machine.zpm_assembler.tooltip": "§l不是§7工作台", + "gtceu.machine.zpm_autoclave.tooltip": "§7高壓鍋", + "gtceu.machine.zpm_bender.tooltip": "§7形態扭曲器", + "gtceu.machine.zpm_brewery.tooltip": "§7釀酒好手", + "gtceu.machine.zpm_canner.tooltip": "§7罐作機", + "gtceu.machine.zpm_centrifuge.tooltip": "§7分子旋風", + "gtceu.machine.zpm_chemical_bath.tooltip": "§7化學品浸潤器", + "gtceu.machine.zpm_chemical_reactor.tooltip": "§7化學表演藝術家", + "gtceu.machine.zpm_circuit_assembler.tooltip": "§7電子廠", + "gtceu.machine.zpm_compressor.tooltip": "§7奇點凝縮機", + "gtceu.machine.zpm_cutter.tooltip": "§7物質切削器", + "gtceu.machine.zpm_distillery.tooltip": "§7凝結物質分離器", + "gtceu.machine.zpm_electric_furnace.tooltip": "§7電子激發處理器", + "gtceu.machine.zpm_electrolyzer.tooltip": "§7分子崩解機 E-4908", + "gtceu.machine.zpm_electromagnetic_separator.tooltip": "§7電磁分類器", + "gtceu.machine.zpm_extractor.tooltip": "§7真空提取機", + "gtceu.machine.zpm_extruder.tooltip": "§7材料壓出器", + "gtceu.machine.zpm_fermenter.tooltip": "§7發酵加速器", + "gtceu.machine.zpm_fluid_heater.tooltip": "§7熱量灌注器", + "gtceu.machine.zpm_fluid_solidifier.tooltip": "§7並不是製冰機", + "gtceu.machine.zpm_forge_hammer.tooltip": "§7鍛板機", + "gtceu.machine.zpm_forming_press.tooltip": "§7物件層化機", + "gtceu.machine.zpm_gas_collector.tooltip": "§7收集不同維度的大氣中種類各異的氣體", + "gtceu.machine.zpm_laser_engraver.tooltip": "§7功率高達三千兩百六十四萬瓦", + "gtceu.machine.zpm_lathe.tooltip": "§7全自動旋轉車削機 L-5908", + "gtceu.machine.zpm_macerator.tooltip": "§7全自動破壁機 9003", + "gtceu.machine.zpm_mass_fabricator.tooltip": "§7創世紀工廠", + "gtceu.machine.zpm_mixer.tooltip": "§7物質組織器", + "gtceu.machine.zpm_ore_washer.tooltip": "§7全新用途滾筒洗衣機 I-362", + "gtceu.machine.zpm_packer.tooltip": "§7裝箱者", + "gtceu.machine.zpm_polarizer.tooltip": "§7磁性引入機", + "gtceu.machine.zpm_replicator.tooltip": "§7物質黏貼機", + "gtceu.machine.zpm_rock_crusher.tooltip": "§7岩漿冷卻固化器 R-10200", + "gtceu.machine.zpm_scanner.tooltip": "§7異常探測儀", + "gtceu.machine.zpm_sifter.tooltip": "§7由群巒傳說贊助提供", + "gtceu.machine.zpm_thermal_centrifuge.tooltip": "§7烈焰血汗工廠 T-6352", + "gtceu.machine.zpm_wiremill.tooltip": "§7錠材拉伸機", + "gtceu.maintenance.configurable_duration": "處理耗時:%fx", + "gtceu.maintenance.configurable_duration.changed_description": "配方處理速度現為正常速度(不計超頻)的%f倍。", + "gtceu.maintenance.configurable_duration.modify": "修改耗時:", + "gtceu.maintenance.configurable_duration.unchanged_description": "配方以正常速度執行。更改設定以更新。", + "gtceu.maintenance.configurable_time": "故障機率:%fx", + "gtceu.maintenance.configurable_time.changed_description": "故障的發生機率現為正常值的%f倍。", + "gtceu.maintenance.configurable_time.unchanged_description": "故障的發生機率為正常值。更改設定以更新。", + "gtceu.medical_condition.antidote.description": "§a解毒劑 §7按住Shift以顯示詳情", + "gtceu.medical_condition.antidote.description.effect_removed": "疾病效果持續時間降低%s%%", + "gtceu.medical_condition.antidote.description.effect_removed.all": "消除所有疾病效果", + "gtceu.medical_condition.antidote.description_shift": "§a治癒以下疾病:", + "gtceu.medical_condition.arsenicosis": "§b砷中毒", + "gtceu.medical_condition.asbestosis": "§d石棉肺", + "gtceu.medical_condition.berylliosis": "§5鈹中毒", + "gtceu.medical_condition.carbon_monoxide_poisoning": "§7一氧化碳汙染", + "gtceu.medical_condition.carcinogen": "§e致癌", + "gtceu.medical_condition.chemical_burns": "§5化學燒傷", + "gtceu.medical_condition.description": "§c§l危險物質 §7按住Shift以顯示詳情", + "gtceu.medical_condition.description_shift": "§c§l危險物質:", + "gtceu.medical_condition.irritant": "§6刺激性", + "gtceu.medical_condition.methanol_poisoning": "§6甲醇中毒", + "gtceu.medical_condition.nausea": "§3噁心", + "gtceu.medical_condition.none": "§2無害", + "gtceu.medical_condition.poison": "§2中毒", + "gtceu.medical_condition.silicosis": "§1矽肺病", + "gtceu.medical_condition.weak_poison": "§a輕度中毒", + "gtceu.minimap.ore_vein.depleted": "已枯竭", + "gtceu.mixer": "攪拌機", + "gtceu.mode.both": "§d全部(流體和物品)§r", + "gtceu.mode.fluid": "§9流體§r", + "gtceu.mode.item": "§6物品§r", + "gtceu.muffler.recovery_tooltip": "§b回收機率:§f%d%%", + "gtceu.multiblock.active_transformer.average_in": "§b平均輸入:§f%s EU/t", + "gtceu.multiblock.active_transformer.average_out": "§b平均輸出:§f%s EU/t", + "gtceu.multiblock.active_transformer.danger_enabled": "§c§b危險:易爆", + "gtceu.multiblock.active_transformer.max_input": "§a最大輸入:§f%s EU/t", + "gtceu.multiblock.active_transformer.max_output": "§c最大輸出:§f%s EU/t", + "gtceu.multiblock.assembly_line.description": "裝配線是由5到16“片”組成的大型多方塊結構。理論上,它是一個大型組裝機,用於生產高階元件。", + "gtceu.multiblock.blast_furnace.max_temperature": "熱容:%s", + "gtceu.multiblock.central_monitor.height": "螢幕高度:%d", + "gtceu.multiblock.central_monitor.height_modify": "調整高度:%d", + "gtceu.multiblock.central_monitor.low_power": "供能不足", + "gtceu.multiblock.central_monitor.tooltip.0": "這臺機器可以監控由數位介面覆蓋板代理的機器。您可以方便地監視能源網路中代理的機器的流體、物品、能量和狀態。", + "gtceu.multiblock.central_monitor.tooltip.1": "監控器螢幕的搭建尺寸為3x2到%dx%d (寬x高)。", + "gtceu.multiblock.central_monitor.tooltip.2": "預設高度為3,在結構形成之前,您可以在GUI中調整螢幕高度。", + "gtceu.multiblock.central_monitor.tooltip.3": "能源消耗:每塊螢幕%d EU/s。", + "gtceu.multiblock.central_monitor.width": "螢幕寬度:%d", + "gtceu.multiblock.charcoal_pile.description.0": "將下方最大9x4x9區域內的原木燒製成脆木炭塊。", + "gtceu.multiblock.charcoal_pile.description.1": "", + "gtceu.multiblock.charcoal_pile.description.2": "木炭堆底部必須由磚塊構成,壁面和頂面則可選用泥土、沙子等任何土地類方塊。堆內必須填滿,不可存在空氣。", + "gtceu.multiblock.charcoal_pile.description.3": "", + "gtceu.multiblock.charcoal_pile.description.4": "木炭堆的尺寸越大,所需的處理時間就越長,但效率更高。", + "gtceu.multiblock.cleanroom.clean_amount": "潔淨度:§a%s%%", + "gtceu.multiblock.cleanroom.clean_state": "狀態:§a潔淨", + "gtceu.multiblock.cleanroom.dirty_state": "狀態:§4汙染", + "gtceu.multiblock.coke_oven.description": "焦爐是一種多方塊結構,用於在早期生產焦煤和雜酚油,無需燃料即可工作,內部至多可容納 32 桶雜酚油。其儲存可透過焦爐倉進行訪問。", + "gtceu.multiblock.computation.max": "最大算力:%s", + "gtceu.multiblock.computation.non_bridging": "發現非橋接連線", + "gtceu.multiblock.computation.non_bridging.detailed": "算力資料倉與一臺無法橋接的機器連線", + "gtceu.multiblock.computation.not_enough_computation": "機器需要更多算力!", + "gtceu.multiblock.computation.usage": "使用:%s", + "gtceu.multiblock.cracker.description": "裂解機是一種用於將輕燃油和重燃油裂解為相應裂解物的多方塊結構。", + "gtceu.multiblock.cracking_unit.energy": "耗能:%s%%", + "gtceu.multiblock.data_bank.description": "資料庫是一個用於在多個裝配線間分享研究資料的多方塊結構。此外,它也能讓裝配線讀取資料模組裡更複雜的研究資料。", + "gtceu.multiblock.data_bank.providing": "提供資料。", + "gtceu.multiblock.dimension": "§e維度:§r%sx%sx%s", + "gtceu.multiblock.distillation_tower.description": "蒸餾塔是一種用於蒸餾不同石油及其副產品的多方塊結構。", + "gtceu.multiblock.distillation_tower.distilling_fluid": "正在蒸餾%s", + "gtceu.multiblock.electric_blast_furnace.description": "電力高爐是一種用來熔鍊合金、熔化金屬或冶煉礦的多方塊結構。也可用於獲取高階的合金和金屬,例如鋁、不鏽鋼、鈦或矽岩合金。", + "gtceu.multiblock.energy_consumption": "能量消耗:%s EU/t(%s)", + "gtceu.multiblock.exact_hatch_1.tooltip": "§f只允許有且僅有§6一個§f能量輸入倉。", + "gtceu.multiblock.extreme_combustion_engine.description": "極限內燃引擎是一種產出§9IV§r能量的多方塊結構,工作方式與內燃發電機類似。", + "gtceu.multiblock.fluid_rig.drilled_fluid": "流體:%s", + "gtceu.multiblock.fluid_rig.fluid_amount": "抽取速率:%s", + "gtceu.multiblock.fluid_rig.no_fluid_in_area": "區域內沒有。", + "gtceu.multiblock.fluid_rig.vein_depleted": "礦脈已枯竭", + "gtceu.multiblock.fluid_rig.vein_depletion": "礦脈大小:%s", + "gtceu.multiblock.fusion_reactor.energy": "EU:%d / %d", + "gtceu.multiblock.fusion_reactor.heat": "熱量:%d", + "gtceu.multiblock.generation_eu": "輸出功率:§a%s EU/t", + "gtceu.multiblock.hpca.computation": "提供:%s", + "gtceu.multiblock.hpca.description": "高效能運算陣列(HPCA)是個多方塊結構,用於為更複雜的裝配線研究資料提供計算工作單元(CWU/t)。該結構中有3×3的區域可以以任意方式填充HPCA元件,不同的元件提供不同數量的算力,冷卻與能源成本,並且影響熱量的產出與冷卻液的消耗。當存在橋接元件時,HPCA可以連線入網路交換機,讓不同來源的算力整合並輸出到一個或多個目的地。", + "gtceu.multiblock.hpca.energy": "使用:%s / %s EU/t (%s)", + "gtceu.multiblock.hpca.error_damaged": "計算元件損壞!", + "gtceu.multiblock.hpca.error_temperature": "溫度超過100℃,可能導致計算元件損壞!", + "gtceu.multiblock.hpca.hover_for_info": "懸停以顯示細節", + "gtceu.multiblock.hpca.info_bridging_disabled": "橋接已關閉", + "gtceu.multiblock.hpca.info_bridging_enabled": "橋接已啟動", + "gtceu.multiblock.hpca.info_coolant_name": "多氯聯苯冷卻液", + "gtceu.multiblock.hpca.info_max_computation": "最大算力:%s", + "gtceu.multiblock.hpca.info_max_coolant_required": "冷卻液還需:%s", + "gtceu.multiblock.hpca.info_max_cooling_available": "冷卻液可用:%s", + "gtceu.multiblock.hpca.info_max_cooling_demand": "冷卻液需求:%s", + "gtceu.multiblock.hpca.temperature": "溫度:%s", + "gtceu.multiblock.hpca.warning_low_cooling": "- 冷卻不足", + "gtceu.multiblock.hpca.warning_multiple_bridges": "- 多個橋接元件(沒有額外好處)", + "gtceu.multiblock.hpca.warning_no_computation": "- 沒有計算元件", + "gtceu.multiblock.hpca.warning_structure_header": "結構警告:", + "gtceu.multiblock.hpca.warning_temperature": "溫度超過50℃,超過100℃時可能導致計算元件損壞!", + "gtceu.multiblock.hpca.warning_temperature_active_cool": "充分利用主動冷卻元件", + "gtceu.multiblock.idling": "待機。", + "gtceu.multiblock.implosion_compressor.description": "聚爆壓縮機是一種多方塊結構,能夠藉助炸藥將寶石粉轉化為相應的寶石。", + "gtceu.multiblock.invalid_structure": "結構無效。", + "gtceu.multiblock.invalid_structure.tooltip": "該方塊是多方塊結構的控制器,請檢視該方塊的JEI介面以獲取搭建圖示。", + "gtceu.multiblock.large_boiler.description": "大型鍋爐是一種使用水和能量源產生蒸汽的多方塊結構。這裡說的“能量源”通常是指固體燃料和高密度流體。不同等級的鍋爐僅在蒸汽產量上有所差別。", + "gtceu.multiblock.large_boiler.efficiency": "效率:%s", + "gtceu.multiblock.large_boiler.explosion_tooltip": "無水時提供燃料將爆炸", + "gtceu.multiblock.large_boiler.heat_time_tooltip": "§7需要§f%d秒§7預熱", + "gtceu.multiblock.large_boiler.max_temperature": "最高溫度:%dK,蒸汽產量:%dmB/t", + "gtceu.multiblock.large_boiler.rate_tooltip": "§7每塊§1煤炭§7可以生產§f%dmB§7的蒸汽", + "gtceu.multiblock.large_boiler.steam_output": "蒸汽輸出:%s mB/t", + "gtceu.multiblock.large_boiler.temperature": "溫度:%sK / %sK", + "gtceu.multiblock.large_boiler.throttle": "節流:%d", + "gtceu.multiblock.large_boiler.throttle.tooltip": "鍋爐可以節流,以減少燃料消耗與蒸汽產出,並且不損失效率,不影響加熱時間。", + "gtceu.multiblock.large_boiler.throttle_modify": "修改節流:", + "gtceu.multiblock.large_chemical_reactor.description": "大型化學反應器能夠以 100% 的能效進行化學反應。超頻將使得處理速度與耗能提升 4 倍。該多方塊結構需要在中心位置的聚四氟乙烯管道方塊旁放置 1 個白銅線圈方塊。", + "gtceu.multiblock.large_combustion_engine.boost_disallowed": "§b升級你的能量輸出倉以啟用氧氣促燃", + "gtceu.multiblock.large_combustion_engine.description": "大型內燃引擎是一種產出§5EV§r能量的多方塊結構,工作方式與內燃發電機類似。", + "gtceu.multiblock.large_combustion_engine.liquid_oxygen_amount": "液氧存量:%smB", + "gtceu.multiblock.large_combustion_engine.liquid_oxygen_boosted": "§b液氧促燃中", + "gtceu.multiblock.large_combustion_engine.lubricant_amount": "潤滑油存量:%smB", + "gtceu.multiblock.large_combustion_engine.obstructed": "引擎進氣口受阻。", + "gtceu.multiblock.large_combustion_engine.oxygen_amount": "氧氣存量:%smB", + "gtceu.multiblock.large_combustion_engine.oxygen_boosted": "§b氧氣促燃中", + "gtceu.multiblock.large_combustion_engine.supply_liquid_oxygen_to_boost": "提供液氧來促燃", + "gtceu.multiblock.large_combustion_engine.supply_oxygen_to_boost": "提供氧氣來促燃", + "gtceu.multiblock.large_miner.done": "完成!", + "gtceu.multiblock.large_miner.errorradius": "§c工作中不能調整半徑!", + "gtceu.multiblock.large_miner.invfull": "儲存空間已滿!", + "gtceu.multiblock.large_miner.needsfluid": "需要鑽井液", + "gtceu.multiblock.large_miner.needspower": "需要能量!", + "gtceu.multiblock.large_miner.radius": "半徑:§a%d§r格", + "gtceu.multiblock.large_miner.steam": "需要蒸汽!", + "gtceu.multiblock.large_miner.vent": "排氣口受阻!", + "gtceu.multiblock.large_miner.working": "工作中……", + "gtceu.multiblock.large_turbine.description": "大型渦輪是一種使用蒸汽、燃氣或電漿轉動渦輪轉子來發電的多方塊結構。轉子效率和轉子轉速影響能量的輸出。", + "gtceu.multiblock.luv_fusion_reactor.description": "核融合反應爐MK-I是臺大型多方塊結構,用於融合元素形成更重的元素。它僅可使用LuV,ZPM或UV等級的能量輸入倉。每個能量輸入倉可增加10MEU的能量暫存,最大能量暫存為160MEU。", + "gtceu.multiblock.max_energy_per_tick": "最大功率:§a%s EU/t(%s§r)", + "gtceu.multiblock.max_energy_per_tick_amps": "最大功率:%s(%sA %s)", + "gtceu.multiblock.max_energy_per_tick_hover": "可用於執行配方或超頻的最大EU/t", + "gtceu.multiblock.max_recipe_tier": "最大配方等級:%s", + "gtceu.multiblock.max_recipe_tier_hover": "可執行配方的最大等級", + "gtceu.multiblock.monitor_screen.tooltip.0": "用螺絲起子右擊即可開啟GUI。", + "gtceu.multiblock.monitor_screen.tooltip.1": "數位介面覆蓋板的代理模式可託管機器的功能與介面(是的,你可以在螢幕上直接連線管道)。", + "gtceu.multiblock.monitor_screen.tooltip.2": "該螢幕也支援外掛。", + "gtceu.multiblock.multi_furnace.description": "工業熔爐是一種用於一次性燒製大量物品的多方塊結構。不同級別的線圈會提供速度增幅和能量效率增幅。每次運作的基礎燒製數量為32,且可以使用高等級的線圈增加燒製數量。", + "gtceu.multiblock.multi_furnace.heating_coil_discount": "加熱線圈增幅:%sx", + "gtceu.multiblock.multi_furnace.heating_coil_level": "加熱線圈等級:%s", + "gtceu.multiblock.multiple_recipemaps.header": "機器模式:", + "gtceu.multiblock.multiple_recipemaps.switch_message": "機器必須關閉才能切換模式!", + "gtceu.multiblock.multiple_recipemaps.tooltip": "使用螺絲起子右鍵控制器以更改機器模式。", + "gtceu.multiblock.multiple_recipemaps_recipes.tooltip": "機器模式:§e%s§r", + "gtceu.multiblock.network_switch.description": "網路交換機是個多方塊結構,可以接受任意數量的算力資料靶倉輸入,並從任意數量的算力資料來源倉輸出。對於需要更高算力的研究資料配方,網路交換機的存在是必要的,這是因為研究站只接受一個算力資料靶倉。當與HPCA連線時,HPCA必須具有橋接元件才可以令網路交換機接收其算力。", + "gtceu.multiblock.not_enough_energy": "警告:能量不足。", + "gtceu.multiblock.not_enough_energy_output": "警告:能量輸入/輸出倉等級過低!", + "gtceu.multiblock.ore_rig.drilled_ore_entry": " - %s", + "gtceu.multiblock.ore_rig.drilled_ores_list": "礦:", + "gtceu.multiblock.ore_rig.ore_amount": "鑽進速率:%s", + "gtceu.multiblock.output_line.0": "%s x §e%s§r(%ss/ea)", + "gtceu.multiblock.output_line.1": "%s x §e%s§r(%s/s)", + "gtceu.multiblock.output_line.2": "%s ≈ §e%s§r(%ss/ea)", + "gtceu.multiblock.output_line.3": "%s ≈ §e%s§r (%s/s)", + "gtceu.multiblock.page_switcher.io.both": "§5兼顧輸入/輸出", + "gtceu.multiblock.page_switcher.io.export": "§4輸出", + "gtceu.multiblock.page_switcher.io.import": "§2輸入", + "gtceu.multiblock.parallel": "同時處理至多%d個配方", + "gtceu.multiblock.parallel.exact": "同時處理%d個配方", + "gtceu.multiblock.parallelizable.tooltip": "透過平行控制倉讓機器同時處理多個相同配方。", + "gtceu.multiblock.pattern.clear_amount_1": "§6前方必須有1x1x1大小的空間§r", + "gtceu.multiblock.pattern.clear_amount_3": "§6前方必須有3x3x1大小的空間§r", + "gtceu.multiblock.pattern.error": "在%2$s處需要%1$s。", + "gtceu.multiblock.pattern.error.batteries": "§c必須使用同種電池§r", + "gtceu.multiblock.pattern.error.coils": "§c必須使用同種線圈方塊§r", + "gtceu.multiblock.pattern.error.filters": "§c必須使用同種過濾器§r", + "gtceu.multiblock.pattern.error.limited.0": "§c最多:%d個§r", + "gtceu.multiblock.pattern.error.limited.1": "§c最少:%d個§r", + "gtceu.multiblock.pattern.error.limited.2": "§c最多:每層%d個§r", + "gtceu.multiblock.pattern.error.limited.3": "§c最少:每層%d個§r", + "gtceu.multiblock.pattern.error.limited_exact": "§c精確:%d§r", + "gtceu.multiblock.pattern.error.limited_within": "§c最少%d個,最多%d個§r", + "gtceu.multiblock.pattern.location_end": "§c最末端§r", + "gtceu.multiblock.pattern.replaceable_air": "可為空氣", + "gtceu.multiblock.pattern.single": "§6僅可使用該種方塊§r", + "gtceu.multiblock.power_substation.average_in": "§7平均輸入:%s §7EU/t", + "gtceu.multiblock.power_substation.average_in_hover": "蓄能變電站內部的平均功率輸入", + "gtceu.multiblock.power_substation.average_out": "§7平均輸出:%s §7EU/t", + "gtceu.multiblock.power_substation.average_out_hover": "蓄能變電站內部的平均功率輸出", + "gtceu.multiblock.power_substation.capacity": "§7容量:%s §7EU", + "gtceu.multiblock.power_substation.passive_drain": "§7被動損失:%s §7EU/t", + "gtceu.multiblock.power_substation.stored": "§7儲存:%s §7EU", + "gtceu.multiblock.power_substation.time_days": "%s天", + "gtceu.multiblock.power_substation.time_forever": "永遠", + "gtceu.multiblock.power_substation.time_hours": "%s時", + "gtceu.multiblock.power_substation.time_minutes": "%s分", + "gtceu.multiblock.power_substation.time_seconds": "%s秒", + "gtceu.multiblock.power_substation.time_to_drain": "§7預計耗空時間:%s", + "gtceu.multiblock.power_substation.time_to_fill": "§7預計充滿時間:%s", + "gtceu.multiblock.power_substation.time_years": "%s年", + "gtceu.multiblock.power_substation.under_one_hour_left": "不到一小時就會完全耗光!", + "gtceu.multiblock.preview.rotate": "左鍵拖拽以旋轉", + "gtceu.multiblock.preview.select": "右擊方塊以檢視其他可選方塊", + "gtceu.multiblock.preview.zoom": "使用滑鼠滾輪或右鍵拖拽以縮放", + "gtceu.multiblock.primitive_blast_furnace.bronze.description": "土高爐是一種在遊戲前期用來生產鋼的多方塊結構。儘管它不是很快,卻能為你的發展提供鋼材。", + "gtceu.multiblock.primitive_water_pump.description": "原始水泵是一臺前蒸汽時代的多方塊設施,每秒進行一次水資源收集,每秒的收集量取決於其所處的生態域。水泵輸出倉以及 §8ULV§r 和 §7LV§r 的輸出倉均可用於該設施,輸出倉的等級越高,水資源的產出量也越高。產出量遵循的公式為:生態域係數 * 輸出倉倍數。", + "gtceu.multiblock.primitive_water_pump.extra1.0": "生態域係數:", + "gtceu.multiblock.primitive_water_pump.extra1.1": " 海洋,河流:1000 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.2": " 沼澤:800 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.3": " 叢林:350 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.4": " 覆雪生態域:300 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.5": " 平原,森林:250 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.6": " 針葉林:175 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.7": " 沙灘:170 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.8": " 其他:100 mB/s", + "gtceu.multiblock.primitive_water_pump.extra2.0": "輸出倍率:", + "gtceu.multiblock.primitive_water_pump.extra2.1": " 水泵倉:1x", + "gtceu.multiblock.primitive_water_pump.extra2.2": "§8ULV§r輸出倉:2x", + "gtceu.multiblock.primitive_water_pump.extra2.3": "§7LV§r輸出倉:4x", + "gtceu.multiblock.primitive_water_pump.extra2.4": "", + "gtceu.multiblock.primitive_water_pump.extra2.5": "當水泵所處的生態域下雨時,總產水量將增加50%%。", + "gtceu.multiblock.progress": "進度:%ss / %ss(%s%%)", + "gtceu.multiblock.progress_percent": "進度:%s%%", + "gtceu.multiblock.pyrolyse_oven.description": "熱解爐是一種用於將原木處理為木炭、雜酚油、灰燼或重油的多方塊結構。", + "gtceu.multiblock.pyrolyse_oven.speed": "處理速度:%s%%", + "gtceu.multiblock.require_steam_parts": "需要蒸汽倉與輸入/輸出匯流排(蒸汽)!", + "gtceu.multiblock.research_station.description": "研究站是個多方塊結構,用於研究更複雜的裝配線研究資料。任何需要資料球或資料模組的研究必須使用研究站而非掃描器來掃描。研究站需要計算工作單位(CWU/t)來進行工作,這由高效能運算陣列(HPCA)提供。", + "gtceu.multiblock.research_station.researching": "§6研究中…", + "gtceu.multiblock.running": "執行正常。", + "gtceu.multiblock.steam.duration_modifier": "處理耗時為基礎的§f1.5§7倍,不受物品數量影響。", + "gtceu.multiblock.steam.low_steam": "蒸汽不足,無法執行!", + "gtceu.multiblock.steam.steam_stored": "蒸汽:%s / %s mB", + "gtceu.multiblock.steam_grinder.description": "蒸汽時代的多方塊研磨機。需要至少14塊青銅機械方塊成型。僅可使用輸入/輸出匯流排(蒸汽),並且只能用蒸汽倉供給蒸汽。", + "gtceu.multiblock.steam_oven.description": "蒸汽時代的多方塊熔爐。需要至少6塊青銅機械方塊成型。僅可使用輸入/輸出匯流排(蒸汽),並且只能用蒸汽倉供給蒸汽。蒸汽倉必須放置於結構底層,數量至多為一個。", + "gtceu.multiblock.title": "多方塊結構", + "gtceu.multiblock.turbine.efficiency": "渦輪效率:%s%%", + "gtceu.multiblock.turbine.efficiency_tooltip": "轉子支架等級超過%s§r時,每級§7增加§f10%%效率,並翻倍輸出功率§7。", + "gtceu.multiblock.turbine.energy_per_tick": "能量輸出:%s/%s EU/t", + "gtceu.multiblock.turbine.energy_per_tick_maxed": "能量輸出:%s EU/t", + "gtceu.multiblock.turbine.fuel_amount": "燃料量:%smB(%s)", + "gtceu.multiblock.turbine.fuel_needed": "消耗量:%s / %s ticks", + "gtceu.multiblock.turbine.obstructed": "渦輪受阻", + "gtceu.multiblock.turbine.rotor_durability": "轉子耐久度:%s%%", + "gtceu.multiblock.turbine.rotor_speed": "轉子轉速:%s/%sRPM", + "gtceu.multiblock.universal.distinct": "匯流排隔離:", + "gtceu.multiblock.universal.distinct.info": "啟用時,每個物品匯流排將在配方識別中完全獨立。對於消耗材料相同,但是非消耗材料(模具、透鏡等)不同的配方來說作用顯著。", + "gtceu.multiblock.universal.distinct.no": "否", + "gtceu.multiblock.universal.distinct.yes": "是", + "gtceu.multiblock.universal.has_problems": "存在故障!", + "gtceu.multiblock.universal.has_problems_header": "在維修倉中修復以下問題:", + "gtceu.multiblock.universal.muffler_obstructed": "消音倉受阻!", + "gtceu.multiblock.universal.muffler_obstructed.tooltip": "消音倉口前方必須有一格空氣。", + "gtceu.multiblock.universal.no_problems": "無故障!", + "gtceu.multiblock.universal.problem.crowbar": "§7這東西不屬於這裡。(§a撬棍§7)", + "gtceu.multiblock.universal.problem.hard_hammer": "§7外殼有些凹痕。(§a鍛造錘§7)", + "gtceu.multiblock.universal.problem.screwdriver": "§7螺絲沒擰緊。(§a螺絲起子§7)", + "gtceu.multiblock.universal.problem.soft_mallet": "§7有什麼東西卡住了。(§a軟錘§7)", + "gtceu.multiblock.universal.problem.wire_cutter": "§7有幾根線燒焦了(§a剪線鉗§7)", + "gtceu.multiblock.universal.problem.wrench": "§7管道鬆動了。(§a扳手§7)", + "gtceu.multiblock.universal.rotor_obstructed": "轉子進氣口受阻!", + "gtceu.multiblock.uv_fusion_reactor.description": "核融合反應爐MK-III是臺大型多方塊結構,用於融合元素形成更重的元素。它僅可使用UV等級的能量輸入倉。每個能量輸入倉可增加40MEU的能量暫存,最大能量暫存為640MEU。", + "gtceu.multiblock.vacuum_freezer.description": "真空冷凍機是一種多方塊結構,主要用於將熱錠冷卻為成品錠。此外,它還可以凍結水等其他物質。", + "gtceu.multiblock.validation_failed": "輸入倉/輸出倉數量無效。", + "gtceu.multiblock.waiting": "警告:機器待機", + "gtceu.multiblock.work_paused": "暫停。", + "gtceu.multiblock.zpm_fusion_reactor.description": "核融合反應爐MK-II是臺大型多方塊結構,用於融合元素形成更重的元素。它僅可使用ZPM或UV等級的能量輸入倉。每個能量輸入倉可增加20MEU的能量暫存,最大能量暫存為320MEU。", + "gtceu.oc.tooltip.0": "最低:%s", + "gtceu.oc.tooltip.1": "左鍵增加超頻等級", + "gtceu.oc.tooltip.2": "右鍵降低超頻等級", + "gtceu.oc.tooltip.3": "中鍵重設超頻等級", + "gtceu.oc.tooltip.4": "按住Shift以無損超頻顯示", + "gtceu.ore_washer": "洗礦廠", + "gtceu.ownership.name.argonauts": "Argonauts公會", + "gtceu.ownership.name.ftb": "FTB團隊", + "gtceu.ownership.name.player": "玩家", + "gtceu.packer": "打包機", + "gtceu.part_sharing.disabled": "多方塊結構共享:§4禁止", + "gtceu.part_sharing.enabled": "多方塊結構共享:§a允許", + "gtceu.plasma_generator": "電漿燃料", + "gtceu.polarizer": "兩極磁化機", + "gtceu.primitive_blast_furnace": "土高爐", + "gtceu.pyrolyse_oven": "熱解爐", + "gtceu.recipe.amperage": "電流:%s", + "gtceu.recipe.category.arc_furnace_recycling": "電弧爐:電漿回收", + "gtceu.recipe.category.chem_dyes": "化學水浴機:化學染色", + "gtceu.recipe.category.extractor_recycling": "流體提取機:重熔回收", + "gtceu.recipe.category.ingot_molding": "合金爐:金屬成型", + "gtceu.recipe.category.macerator_recycling": "研磨機:粉碎回收", + "gtceu.recipe.category.ore_bathing": "化學水浴機:礦物處理", + "gtceu.recipe.category.ore_crushing": "研磨機:礦物處理", + "gtceu.recipe.category.ore_forging": "鍛造錘:礦物處理", + "gtceu.recipe.chance": "產出機率:%s + %s/電壓等級", + "gtceu.recipe.cleanroom": "需要%s", + "gtceu.recipe.cleanroom.display_name": "無塵室", + "gtceu.recipe.cleanroom_sterile.display_name": "無菌無塵室", + "gtceu.recipe.coil.tier": "線圈:%s", + "gtceu.recipe.computation_per_tick": "最小算力:%s CWU/t", + "gtceu.recipe.dimensions": "維度:%s", + "gtceu.recipe.duration": "耗時:%s 秒", + "gtceu.recipe.environmental_hazard": "§c區域內必須有%s", + "gtceu.recipe.environmental_hazard.reverse": "§c區域內必須沒有%s", + "gtceu.recipe.eu": "耗能功率:%s EU/t", + "gtceu.recipe.eu_inverted": "產能功率:%s EU/t", + "gtceu.recipe.eu_to_start": "啟動耗能:%sEU%s", + "gtceu.recipe.explosive": "爆炸物:%s", + "gtceu.recipe.max_eu": "最大功率:%s EU", + "gtceu.recipe.not_consumed": "不在加工中消耗", + "gtceu.recipe.research": "需要研究", + "gtceu.recipe.scan_for_research": "裝配線配方掃描", + "gtceu.recipe.temperature": "溫度:%sK", + "gtceu.recipe.total": "總計:%s EU", + "gtceu.recipe.total_computation": "算力:%s CWU", + "gtceu.recipe_logic.condition_fails": "條件不足", + "gtceu.recipe_logic.insufficient_fuel": "燃料不足", + "gtceu.recipe_logic.insufficient_in": "需要輸入", + "gtceu.recipe_logic.insufficient_out": "輸出堵塞", + "gtceu.recipe_logic.no_capabilities": "機器無功能", + "gtceu.recipe_logic.no_contents": "配方無內容", + "gtceu.recipe_memory_widget.tooltip.0": "§7左鍵點選自動輸入該配方至合成格", + "gtceu.recipe_memory_widget.tooltip.1": "§7按住Shift並點選以鎖定或解鎖該配方", + "gtceu.recipe_type.show_recipes": "檢視配方", + "gtceu.rei.group.potion_fluids": "藥水流體", + "gtceu.research_station": "研究站", + "gtceu.rock_breaker": "碎岩機", + "gtceu.scanner": "掃描器", + "gtceu.scanner.copy_stick_empty": "§o空快閃記憶體", + "gtceu.scanner.copy_stick_from": "§o要複製的快閃記憶體", + "gtceu.scanner.copy_stick_to": "§o快閃記憶體(已複製)", + "gtceu.sifter": "篩選機", + "gtceu.steam_boiler": "蒸汽鍋爐", + "gtceu.steam_turbine": "蒸汽渦輪", + "gtceu.subtitle.arc": "電弧爐:嗡——", + "gtceu.subtitle.assembler": "組裝機:運行中", + "gtceu.subtitle.bath": "化學水浴機:嘶嘶", + "gtceu.subtitle.boiler": "鍋爐:液體沸騰", + "gtceu.subtitle.centrifuge": "離心機:旋轉", + "gtceu.subtitle.chainsaw": "鏈鋸:拉動油門", + "gtceu.subtitle.chemical": "化學反應器:運行中", + "gtceu.subtitle.combustion": "內燃發電機:燃料燃燒", + "gtceu.subtitle.compressor": "壓縮機:擠壓", + "gtceu.subtitle.computation": "計算機:嗶嗶", + "gtceu.subtitle.cooling": "真空冷凍機:嗡——", + "gtceu.subtitle.cut": "切割機:嘶嘶叫", + "gtceu.subtitle.drill": "電鑽:嗡嗡", + "gtceu.subtitle.electrolyzer": "電解機:爆出火花", + "gtceu.subtitle.file": "銼:磨削", + "gtceu.subtitle.fire": "火:爆裂", + "gtceu.subtitle.forge_hammer": "鍛造錘:DUANG", + "gtceu.subtitle.furnace": "電爐:冶煉", + "gtceu.subtitle.jet_engine": "噴射背包:轟轟", + "gtceu.subtitle.macerator": "研磨機:破碎", + "gtceu.subtitle.metal_pipe": "流體管道:Destruction_Metal_Pole_L_Wave_2_0_0.wav", + "gtceu.subtitle.miner": "採礦機:開採", + "gtceu.subtitle.mixer": "攪拌機:攪動", + "gtceu.subtitle.mortar": "研缽:研磨", + "gtceu.subtitle.motor": "馬達:轉啊轉", + "gtceu.subtitle.plunger": "搋子:清理流體", + "gtceu.subtitle.portable_scanner": "便攜式掃描儀:掃描", + "gtceu.subtitle.portal_closing": "傳送門:關閉", + "gtceu.subtitle.portal_opening": "傳送門:開啟", + "gtceu.subtitle.replicator": "複製機:運行", + "gtceu.subtitle.saw": "鋸:切割", + "gtceu.subtitle.science": "化學反應器:科!學!", + "gtceu.subtitle.screwdriver": "螺絲刀:擰螺絲", + "gtceu.subtitle.soft_hammer": "軟錘:輕敲", + "gtceu.subtitle.spray_can": "噴漆罐:噴塗", + "gtceu.subtitle.sus": "唱片:你有嫌疑", + "gtceu.subtitle.turbine": "渦輪:呼嘯", + "gtceu.subtitle.wirecutter": "剪線鉗:剪斷", + "gtceu.subtitle.wrench": "扳手:嘎啦", + "gtceu.thermal_centrifuge": "熱力離心機", + "gtceu.tool.class.axe": "斧", + "gtceu.tool.class.butchery_knife": "屠刀", + "gtceu.tool.class.crowbar": "撬棍", + "gtceu.tool.class.drill": "電鑽", + "gtceu.tool.class.file": "銼", + "gtceu.tool.class.hammer": "錘", + "gtceu.tool.class.hoe": "鋤", + "gtceu.tool.class.knife": "刀", + "gtceu.tool.class.mallet": "軟錘", + "gtceu.tool.class.mining_hammer": "採礦錘", + "gtceu.tool.class.mortar": "研缽", + "gtceu.tool.class.pickaxe": "鎬", + "gtceu.tool.class.plunger": "搋子", + "gtceu.tool.class.rolling_pin": "擀麵棍", + "gtceu.tool.class.saw": "鋸", + "gtceu.tool.class.screwdriver": "螺絲起子", + "gtceu.tool.class.scythe": "鐮刀", + "gtceu.tool.class.shears": "剪刀", + "gtceu.tool.class.shovel": "鍬", + "gtceu.tool.class.spade": "鏟", + "gtceu.tool.class.sword": "劍", + "gtceu.tool.class.wire_cutter": "剪線鉗", + "gtceu.tool.class.wrench": "扳手", + "gtceu.tool_action.crowbar": "§8使用撬棍卸下覆蓋板", + "gtceu.tool_action.hammer": "§8使用鍛造錘消除聲響", + "gtceu.tool_action.screwdriver.access_covers": "§8使用螺絲起子訪問覆蓋板", + "gtceu.tool_action.screwdriver.auto_collapse": "§8使用螺絲起子開關物品堆疊自動合併", + "gtceu.tool_action.screwdriver.auto_output": "§8使用螺絲起子切換自動輸出", + "gtceu.tool_action.screwdriver.auto_output_covers": "§8使用螺絲起子設定允許從輸出端輸入或訪問覆蓋板", + "gtceu.tool_action.screwdriver.toggle_mode": "§8使用螺絲起子切換模式", + "gtceu.tool_action.screwdriver.toggle_mode_covers": "§8使用螺絲起子切換模式或訪問覆蓋板", + "gtceu.tool_action.show_tooltips": "§7按住§6SHIFT§7顯示工具資訊", + "gtceu.tool_action.soft_mallet.reset": "§8使用軟錘開關機器", + "gtceu.tool_action.soft_mallet.toggle_mode": "§8使用軟錘切換模式", + "gtceu.tool_action.tape": "§8使用膠帶維護機器", + "gtceu.tool_action.wire_cutter.connect": "§8使用剪線鉗連線/斷開電線", + "gtceu.tool_action.wrench.connect": "§8使用扳手連線/斷開管道,潛行可以阻止輸入", + "gtceu.tool_action.wrench.set_facing": "§8使用扳手設定朝向", + "gtceu.tooltip.fluid_pipe_hold_shift": "§7按住§6SHIFT§7以檢視流體容器詳情", + "gtceu.tooltip.hold_ctrl": "§7按住CTRL獲得更多資訊", + "gtceu.tooltip.hold_shift": "§7按住§6SHIFT§7獲得更多資訊", + "gtceu.tooltip.potion.each": "§r%4$s%%§7機率獲得§r%1$s %2$s§7(§r%3$s§7tick)", + "gtceu.tooltip.potion.header": "§6包含效果:", + "gtceu.tooltip.proxy_bind": "§f綁定到%s %s %s處的樣板供應倉", + "gtceu.tooltip.status.trinary.false": "假", + "gtceu.tooltip.status.trinary.true": "真", + "gtceu.tooltip.status.trinary.unknown": "未知", + "gtceu.tooltip.tool_fluid_hold_shift": "§7按住§6SHIFT§7以檢視流體容器及工具詳情", + "gtceu.top.allow_output_input": "允許輸入", + "gtceu.top.auto_output": "自動輸出", + "gtceu.top.buffer_bound_pos": "已綁定至 - X:%s;Y:%s;Z:%s", + "gtceu.top.buffer_not_bound": "尚未綁定至樣板供應倉", + "gtceu.top.cable_amperage": "電流:", + "gtceu.top.cable_voltage": "電壓:", + "gtceu.top.convert_eu": "轉換模式:§eEU§r ->§cFE§r", + "gtceu.top.convert_fe": "轉換模式:§cFE§r ->§eEU§r", + "gtceu.top.energy_consumption": "耗能", + "gtceu.top.energy_production": "產能", + "gtceu.top.energy_stored": " / %d EU", + "gtceu.top.exhaust_vent_blocked": "受阻", + "gtceu.top.exhaust_vent_direction": "排氣口:%s", + "gtceu.top.filter.label": "過濾:", + "gtceu.top.fluid_auto_output": "流體輸出:%s", + "gtceu.top.fuel_min_consume": "需要", + "gtceu.top.fuel_none": "無燃料", + "gtceu.top.invalid_structure": "結構不完整", + "gtceu.top.item_auto_output": "物品輸出:%s", + "gtceu.top.link_cover.color": "顏色:", + "gtceu.top.machine_mode": "機器模式:", + "gtceu.top.maintenance.crowbar": "這東西不屬於這兒", + "gtceu.top.maintenance.hard_hammer": "外殼有些凹痕", + "gtceu.top.maintenance.screwdriver": "螺絲沒擰緊", + "gtceu.top.maintenance.soft_mallet": "有什麼東西卡住了", + "gtceu.top.maintenance.wire_cutter": "有幾根線燒焦了", + "gtceu.top.maintenance.wrench": "管道鬆動了", + "gtceu.top.maintenance_broken": "需要維護", + "gtceu.top.maintenance_fixed": "無需維修", + "gtceu.top.mode.export": "輸出", + "gtceu.top.mode.import": "輸入", + "gtceu.top.obstructed_structure": "結構受阻", + "gtceu.top.primitive_pump_production": "產出:%s mB/s", + "gtceu.top.progress_computation": " / %s CWU", + "gtceu.top.progress_sec": " / %s s", + "gtceu.top.progress_tick": " / %s t", + "gtceu.top.proxies_bound": "遠端樣板供應倉綁定數量:%s", + "gtceu.top.recipe_output": "配方輸出:", + "gtceu.top.stained": "顏色:%s", + "gtceu.top.transform_down": "§a降壓§r %s", + "gtceu.top.transform_input": "§6輸入:§r %s", + "gtceu.top.transform_output": "§9輸出:§r %s", + "gtceu.top.transform_up": "§c升壓§r %s", + "gtceu.top.unit.fluid_buckets": "B", + "gtceu.top.unit.fluid_milibuckets": "mB", + "gtceu.top.unit.items": "物品", + "gtceu.top.valid_structure": "結構已成型", + "gtceu.top.working_disabled": "已暫停工作", + "gtceu.universal.clear_nbt_recipe.tooltip": "§c這將清除所有內容物!", + "gtceu.universal.kiloliters": "%s B", + "gtceu.universal.liters": "%s mB", + "gtceu.universal.tooltip.amperage_in": "§e輸入電流:§f%dA", + "gtceu.universal.tooltip.amperage_in_out": "§e輸入/輸出電流:§f%dA", + "gtceu.universal.tooltip.amperage_in_out_till": "§e輸入/輸出電流上限:§f%dA", + "gtceu.universal.tooltip.amperage_in_till": "§e輸入電流上限:§f%dA", + "gtceu.universal.tooltip.amperage_out": "§e輸出電流:§f%dA", + "gtceu.universal.tooltip.amperage_out_till": "§e輸出電流上限:§f%dA", + "gtceu.universal.tooltip.base_production_eut": "§e基礎產能功率:§f%d EU/t", + "gtceu.universal.tooltip.base_production_fluid": "§e基礎產出速率:§f%d mB/t", + "gtceu.universal.tooltip.chunk_mode": "區塊模式:", + "gtceu.universal.tooltip.deprecated": "§4§l警告:§r§4已棄用。將在未來版本中移除。§r", + "gtceu.universal.tooltip.energy_storage_capacity": "§c能量暫存:§r%d EU", + "gtceu.universal.tooltip.energy_tier_range": "§a適配電壓等級:§f%s§f-%s", + "gtceu.universal.tooltip.fluid_storage_capacity": "§9流體容量:§f%d mB", + "gtceu.universal.tooltip.fluid_storage_capacity_mult": "§9流體容量:§r共§f%d§7個流體槽,每個§f%dmB§7", + "gtceu.universal.tooltip.fluid_stored": "§2內部流體:%2$d mB §f%1$s", + "gtceu.universal.tooltip.fluid_transfer_rate": "§b傳輸速率:§f%d mB/t", + "gtceu.universal.tooltip.item_storage_capacity": "§6物品槽位數量:§f%d", + "gtceu.universal.tooltip.item_storage_total": "§6物品容量:§f%d物品", + "gtceu.universal.tooltip.item_stored": "§d內部物品:§f%2$d個%1$s", + "gtceu.universal.tooltip.item_transfer_rate": "§b傳輸速率:§f%d物品/s", + "gtceu.universal.tooltip.item_transfer_rate_stacks": "§b傳輸速率:§f%d組/s", + "gtceu.universal.tooltip.max_voltage_in": "§a最大輸入電壓:§f%d(%s§f)", + "gtceu.universal.tooltip.max_voltage_in_out": "§a最大輸入/輸出電壓:§f%d EU/t(%s§f)", + "gtceu.universal.tooltip.max_voltage_out": "§a最大輸出電壓:§f%d(%s§f)", + "gtceu.universal.tooltip.parallel": "§d最大平行:§f%d", + "gtceu.universal.tooltip.produces_fluid": "§e產出速率:§f%d mB/t", + "gtceu.universal.tooltip.requires_redstone": "§4需要紅石訊號", + "gtceu.universal.tooltip.silk_touch": "絲綢之觸:", + "gtceu.universal.tooltip.terrain_resist": "該機器不會在暴露於惡劣天氣時爆炸", + "gtceu.universal.tooltip.uses_per_hour_lubricant": "工作時消耗§f%d mB/hr§7§6潤滑油§7", + "gtceu.universal.tooltip.uses_per_op": "每次工作時消耗§f%d EU§7", + "gtceu.universal.tooltip.uses_per_second": "工作時消耗§f%d EU/s§7", + "gtceu.universal.tooltip.uses_per_tick": "工作時消耗§f%d EU/t§7", + "gtceu.universal.tooltip.uses_per_tick_steam": "工作時消耗§f%dmB/t§7蒸汽", + "gtceu.universal.tooltip.voltage_in": "§a輸入電壓:§f%d EU/t(%s§f)", + "gtceu.universal.tooltip.voltage_in_out": "§a輸入/輸出電壓:§f%d EU/t(%s§f)", + "gtceu.universal.tooltip.voltage_out": "§a輸出電壓:§f%d EU/t(%s§f)", + "gtceu.universal.tooltip.working_area": "§b工作範圍:§f%dx%d", + "gtceu.universal.tooltip.working_area_chunks": "§b工作範圍:§f%dx%d 區塊", + "gtceu.universal.tooltip.working_area_chunks_max": "§b最大工作範圍:§f%dx%d 區塊", + "gtceu.universal.tooltip.working_area_max": "§b最大工作範圍:§f%dx%d", + "gtceu.vacuum_freezer": "真空冷凍機", + "gtceu.wiremill": "線材軋機", + "gui.gtceu.refund_all.desc": "將原料送回ME網路", + "gui.gtceu.rename.desc": "重新命名樣板供應倉", + "gui.gtceu.share_inventory.desc.0": "與樣板供應倉的所有樣板共享物品!", + "gui.gtceu.share_inventory.desc.1": "儲存不消耗的催化劑,實現更高效的自動化", + "gui.gtceu.share_inventory.title": "共享物品庫存", + "gui.gtceu.share_tank.desc.0": "與樣板供應倉的所有樣板共享流體!", + "gui.gtceu.share_tank.title": "共享流體庫存", + "gui.widget.incrementButton.default_tooltip": "按住Shift,Ctrl鍵或同時按住這兩個鍵來改變數量", + "gui.widget.recipeProgressWidget.default_tooltip": "檢視配方", + "item.glass_lens": "玻璃透鏡(白色)", + "item.gtceu.activity_detector_cover": "活躍探測覆蓋板", + "item.gtceu.activity_detector_cover.tooltip": "§7作§f覆蓋板§7時依照§f機器活躍狀態§7發出紅石訊號。", + "item.gtceu.advanced_activity_detector_cover": "進階活躍狀態探測器", + "item.gtceu.advanced_activity_detector_cover.tooltip": "§7作§f覆蓋板§7時依照§f機器處理進度§7發出紅石訊號。", + "item.gtceu.advanced_electric_jetpack": "進階電力噴射背包", + "item.gtceu.advanced_energy_detector_cover": "進階能量探測覆蓋板", + "item.gtceu.advanced_energy_detector_cover.tooltip": "§7作§f覆蓋板§7時依照由§fRS鎖存器§7控制的§f能量狀態§7發出紅石訊號。", + "item.gtceu.advanced_fluid_detector_cover": "進階流體探測器", + "item.gtceu.advanced_fluid_detector_cover.tooltip": "作§f覆蓋板§7時依照由§fRS鎖存器§7控制的§f流體儲存狀態§7發出紅石訊號。", + "item.gtceu.advanced_fluid_voiding_cover": "進階流體銷毀覆蓋板", + "item.gtceu.advanced_fluid_voiding_cover.tooltip.0": "§7作§f覆蓋板§7時允許按數量銷毀§f流體§7。", + "item.gtceu.advanced_fluid_voiding_cover.tooltip.1": "加裝後使用§f軟錘§7啟用", + "item.gtceu.advanced_integrated_circuit": "進階積體電路", + "item.gtceu.advanced_integrated_circuit.tooltip.0": "§7更小也更強", + "item.gtceu.advanced_integrated_circuit.tooltip.1": "§6HV級電路", + "item.gtceu.advanced_item_detector_cover": "進階物品探測器", + "item.gtceu.advanced_item_detector_cover.tooltip": "作§f覆蓋板§7時依照由§fRS鎖存器§7控制的§f物品儲存狀態§7發出紅石訊號。", + "item.gtceu.advanced_item_voiding_cover": "進階物品銷毀覆蓋板", + "item.gtceu.advanced_item_voiding_cover.tooltip.0": "§7作§f覆蓋板§7時銷毀物品。", + "item.gtceu.advanced_item_voiding_cover.tooltip.1": "加裝後使用§f軟錘§7啟用", + "item.gtceu.advanced_nanomuscle_chestplate": "奈米肌體™進階套裝胸甲", + "item.gtceu.advanced_power_thruster": "進階電力推進器", + "item.gtceu.advanced_quarktech_chestplate": "夸克科技™進階套裝胸甲", + "item.gtceu.advanced_smd_capacitor": "高階貼片電容", + "item.gtceu.advanced_smd_capacitor.tooltip": "§7高階電子元件", + "item.gtceu.advanced_smd_diode": "高階貼片二極體", + "item.gtceu.advanced_smd_diode.tooltip": "§7高階電子元件", + "item.gtceu.advanced_smd_inductor": "高階貼片電感", + "item.gtceu.advanced_smd_inductor.tooltip": "§7高階電子元件", + "item.gtceu.advanced_smd_resistor": "高階貼片電阻", + "item.gtceu.advanced_smd_resistor.tooltip": "§7高階電子元件", + "item.gtceu.advanced_smd_transistor": "高階貼片電晶體", + "item.gtceu.advanced_smd_transistor.tooltip": "§7高階電子元件", + "item.gtceu.advanced_soc": "ASoC", + "item.gtceu.advanced_soc.tooltip": "§7先進系統級晶片", + "item.gtceu.advanced_soc_wafer": "ASoC晶圓", + "item.gtceu.advanced_soc_wafer.tooltip": "§7高階電路原料", + "item.gtceu.aluminium_fluid_cell": "鋁單元", + "item.gtceu.anvil_casting_mold": "鑄造模具(砧)", + "item.gtceu.anvil_casting_mold.tooltip": "§7用來製作砧的鑄造模具", + "item.gtceu.ash_dust": "灰燼", + "item.gtceu.axe_extruder_mold.tooltip": "§7用來製作斧的擠壓模具", + "item.gtceu.ball_casting_mold": "鑄造模具(球)", + "item.gtceu.ball_casting_mold.tooltip": "§7用來製作球的鑄造模具", + "item.gtceu.basaltic_mineral_sand_dust": "玄武岩礦砂", + "item.gtceu.basic_electronic_circuit": "基礎電子電路", + "item.gtceu.basic_electronic_circuit.tooltip.0": "§7你的第一塊電路", + "item.gtceu.basic_electronic_circuit.tooltip.1": "§cLV級電路", + "item.gtceu.basic_integrated_circuit": "基礎積體電路", + "item.gtceu.basic_integrated_circuit.tooltip.0": "§7更小也更強", + "item.gtceu.basic_integrated_circuit.tooltip.1": "§6LV級電路", + "item.gtceu.basic_tape": "膠帶", + "item.gtceu.basic_tape.tooltip": "強度不足,無法解決機械故障\n可以带走板條箱,且不丟失物品", + "item.gtceu.battery.charge_detailed": "%s/%sEU-%s級§7(剩餘供能時長:%s/%s%s§7)", + "item.gtceu.battery.charge_time": "§a最大供能時長:%s%s(%s)", + "item.gtceu.battery.charge_unit.hour": "時", + "item.gtceu.battery.charge_unit.minute": "分", + "item.gtceu.battery.charge_unit.second": "秒", + "item.gtceu.bentonite_dust": "膨潤土", + "item.gtceu.bio_chaff": "生物糠", + "item.gtceu.black_dye_spray_can": "噴漆罐(黑色)", + "item.gtceu.black_glass_lens": "玻璃透鏡(黑色)", + "item.gtceu.blacklight": "黑光燈", + "item.gtceu.blacklight.tooltip": "§7長波§d紫外線§7光源", + "item.gtceu.block_casting_mold": "鑄造模具(方塊)", + "item.gtceu.block_casting_mold.tooltip": "§7用來製作方塊的鑄造模具", + "item.gtceu.block_extruder_mold": "擠壓模具(方塊)", + "item.gtceu.block_extruder_mold.tooltip": "§7用來製作方塊的擠壓模具", + "item.gtceu.blue_dye_spray_can": "噴漆罐(藍色)", + "item.gtceu.blue_glass_lens": "玻璃透鏡(藍色)", + "item.gtceu.bolt_extruder_mold": "擠壓模具(螺栓)", + "item.gtceu.bolt_extruder_mold.tooltip": "§7用來製作螺栓的擠壓模具", + "item.gtceu.bone_dust": "骨粉", + "item.gtceu.borosilicate_glass_ingot": "硼矽玻璃條", + "item.gtceu.bottle.purple.drink.tooltip": "§7來點檸檬汽水,還是冰紅茶?我手裡這瓶可是紫色飲料!", + "item.gtceu.bottle_casting_mold": "鑄造模具(瓶子)", + "item.gtceu.bottle_casting_mold.tooltip": "§7用來製作瓶的鑄造模具", + "item.gtceu.bottle_extruder_mold": "擠壓模具(瓶子)", + "item.gtceu.bottle_extruder_mold.tooltip": "§7用來製作瓶子的擠壓模具", + "item.gtceu.brick_wooden_form": "木製磚模具", + "item.gtceu.brown_dye_spray_can": "噴漆罐(棕色)", + "item.gtceu.brown_glass_lens": "玻璃透鏡(棕色)", + "item.gtceu.bucket": "%s桶", + "item.gtceu.capacitor": "電容", + "item.gtceu.capacitor.tooltip": "§7基礎電子元件", + "item.gtceu.carbon_fiber_mesh": "碳纖維網", + "item.gtceu.carbon_fiber_plate": "碳纖維板", + "item.gtceu.carbon_fibers": "碳纖維", + "item.gtceu.casing_casting_mold.tooltip": "§7用來製作外殼的鑄造模具", + "item.gtceu.casing_extruder_mold.tooltip": "§7用來製作外殼的擠壓模具", + "item.gtceu.cassiterite_sand_dust": "錫石礦砂", + "item.gtceu.cell_extruder_mold": "擠壓模具(單元)", + "item.gtceu.cell_extruder_mold.tooltip": "§7用來製作單元的擠壓模具", + "item.gtceu.chemical_black_dye": "黑色化學染料", + "item.gtceu.chemical_blue_dye": "藍色化學染料", + "item.gtceu.chemical_brown_dye": "棕色化學染料", + "item.gtceu.chemical_cyan_dye": "青色化學染料", + "item.gtceu.chemical_gray_dye": "灰色化學染料", + "item.gtceu.chemical_green_dye": "綠色化學染料", + "item.gtceu.chemical_light_blue_dye": "淺藍色化學染料", + "item.gtceu.chemical_light_gray_dye": "淺灰色化學染料", + "item.gtceu.chemical_lime_dye": "淺綠色化學染料", + "item.gtceu.chemical_magenta_dye": "洋紅色化學染料", + "item.gtceu.chemical_orange_dye": "橙色化學染料", + "item.gtceu.chemical_pink_dye": "粉紅色化學染料", + "item.gtceu.chemical_purple_dye": "紫色化學染料", + "item.gtceu.chemical_red_dye": "紅色化學染料", + "item.gtceu.chemical_white_dye": "白色化學染料", + "item.gtceu.chemical_yellow_dye": "黃色化學染料", + "item.gtceu.chipped_glass_gem": "破碎的玻璃晶體", + "item.gtceu.chipped_sugar_gem": "小塊方糖", + "item.gtceu.circuit.integrated.gui": "§7程式設計電路設定", + "item.gtceu.coke_oven_brick": "焦爐磚", + "item.gtceu.compressed_clay": "壓縮黏土", + "item.gtceu.compressed_coke_clay": "壓縮焦黏土", + "item.gtceu.compressed_fireclay": "壓縮耐火黏土", + "item.gtceu.computer_monitor_cover": "電腦螢幕覆蓋板", + "item.gtceu.computer_monitor_cover.tooltip": "§7作§f覆蓋板§7時顯示§f資料§7。", + "item.gtceu.conveyor.module.tooltip": "§7作§f覆蓋板§7時以特定速率傳輸§f物品§7。", + "item.gtceu.cpu_chip": "CPU晶片", + "item.gtceu.cpu_chip.tooltip": "§7中央處理器", + "item.gtceu.cpu_wafer": "CPU晶圓", + "item.gtceu.cpu_wafer.tooltip": "§7中央處理器原料", + "item.gtceu.crushed_bentonite_ore": "精研膨潤土", + "item.gtceu.crushed_cassiterite_sand_ore": "粉碎錫石礦砂", + "item.gtceu.crushed_pitchblende_ore": "精研瀝青鈾礦", + "item.gtceu.crushed_talc_ore_ore": "精研滑石", + "item.gtceu.crystal_cpu": "晶體CPU", + "item.gtceu.crystal_cpu.tooltip": "§7晶體處理器", + "item.gtceu.crystal_processor": "晶體處理器", + "item.gtceu.crystal_processor.tooltip.0": "§7得益於晶體蝕刻技術", + "item.gtceu.crystal_processor.tooltip.1": "§9IV級電路", + "item.gtceu.crystal_processor_assembly": "晶體處理器叢集", + "item.gtceu.crystal_processor_assembly.tooltip.0": "§7得益於晶體蝕刻技術", + "item.gtceu.crystal_processor_assembly.tooltip.1": "§9LuV級電路", + "item.gtceu.crystal_processor_computer": "晶體處理器超級電腦", + "item.gtceu.crystal_processor_computer.tooltip.0": "§7得益於晶體蝕刻技術", + "item.gtceu.crystal_processor_computer.tooltip.1": "§9ZPM級電路", + "item.gtceu.crystal_processor_mainframe": "晶體處理器主機", + "item.gtceu.crystal_processor_mainframe.tooltip.0": "§7得益於晶體蝕刻技術", + "item.gtceu.crystal_processor_mainframe.tooltip.1": "§9UV級電路", + "item.gtceu.crystal_soc": "晶體SoC", + "item.gtceu.crystal_soc.tooltip": "§7晶體系統級晶片", + "item.gtceu.cyan_dye_spray_can": "噴漆罐(青色)", + "item.gtceu.cyan_glass_lens": "玻璃透鏡(青色)", + "item.gtceu.cylinder_casting_mold": "鑄造模具(圓柱)", + "item.gtceu.cylinder_casting_mold.tooltip": "§7用來製作圓柱的鑄造模具", + "item.gtceu.dark_ash_dust": "黑色灰燼", + "item.gtceu.data_module": "資料模組", + "item.gtceu.data_orb": "資料球", + "item.gtceu.data_orb.tooltip": " §7大容量的資料儲存器", + "item.gtceu.data_stick": "快閃記憶體", + "item.gtceu.data_stick.tooltip": "§7小容量的資料儲存器", + "item.gtceu.diamond_grinding_head": "鑽石研磨頭", + "item.gtceu.diode": "二極體", + "item.gtceu.diode.tooltip": "§7基礎電子元件", + "item.gtceu.dough": "麵團", + "item.gtceu.duct_tape": "布萊恩科技航空專用強化膠帶FAL-84型", + "item.gtceu.duct_tape.tooltip": "§7如果一卷修不好,那就再來一卷!", + "item.gtceu.dynamite": "炸藥", + "item.gtceu.electric.pump.tooltip": "§7作§f覆蓋板§7時以特定速率傳輸§f流體§7。", + "item.gtceu.electric_jetpack": "電力噴射背包", + "item.gtceu.empty_mold": "空模板", + "item.gtceu.empty_mold.tooltip": "§7用以製作鑄造模具與擠壓模具", + "item.gtceu.empty_spray_can": "空噴漆罐", + "item.gtceu.empty_spray_can.tooltip": "§7可充入各種顏色的噴劑", + "item.gtceu.empty_wooden_form": "空木製模具", + "item.gtceu.ender_fluid_link_cover": "終界流體連線", + "item.gtceu.ender_fluid_link_cover.tooltip": "§7作§f覆蓋板§7時利用§f無線§7§d終界§f連線§7傳輸§f流體§7。", + "item.gtceu.energium_dust": "能量粉", + "item.gtceu.energy_cluster": "能量簇", + "item.gtceu.energy_cluster.tooltip": "§7可充電電池", + "item.gtceu.energy_crystal": "能量水晶", + "item.gtceu.energy_crystal.tooltip": "§7可充電電池", + "item.gtceu.energy_detector_cover": "能量探測覆蓋板", + "item.gtceu.energy_detector_cover.tooltip": "§7作§f覆蓋板§7時依照§f能量儲量§7發出紅石訊號。", + "item.gtceu.energy_module": "能量模組", + "item.gtceu.energy_module.tooltip": "§7可充電電池", + "item.gtceu.engraved_crystal_chip": "蝕刻水晶晶片", + "item.gtceu.engraved_crystal_chip.tooltip": "§7晶體電路所需", + "item.gtceu.engraved_lapotron_crystal_chip": "蝕刻蘭波頓晶片", + "item.gtceu.epoxy_circuit_board": "環氧樹脂基板", + "item.gtceu.epoxy_circuit_board.tooltip": "§7進階電路基板", + "item.gtceu.epoxy_printed_circuit_board": "環氧樹脂印刷電路基板", + "item.gtceu.epoxy_printed_circuit_board.tooltip": "§7更高階的電路基板", + "item.gtceu.ev_battery_hull": "小型釩電池外殼", + "item.gtceu.ev_battery_hull.tooltip": "§7一個空的§5EV§7電池外殼", + "item.gtceu.ev_conveyor_module": "§5EV§r傳送帶", + "item.gtceu.ev_electric_motor": "§5EV§r電動馬達", + "item.gtceu.ev_electric_piston": "§5EV§r電力活塞", + "item.gtceu.ev_electric_pump": "§5EV§r電動泵", + "item.gtceu.ev_emitter": "§5EV§r發射器", + "item.gtceu.ev_field_generator": "§5EV§r力場發生器", + "item.gtceu.ev_fluid_regulator": "§5EV§r流體調節器", + "item.gtceu.ev_power_unit": "§5EV§r能量單元", + "item.gtceu.ev_robot_arm": "§5EV§r機械臂", + "item.gtceu.ev_sensor": "§5EV§r感測器", + "item.gtceu.ev_solar_panel": "超高壓太陽能板(§5EV§r)", + "item.gtceu.ev_vanadium_battery": "小型釩電池", + "item.gtceu.ev_vanadium_battery.tooltip": "§7可充電電池", + "item.gtceu.ev_voltage_coil": "超高壓線圈(§5EV§r)", + "item.gtceu.ev_voltage_coil.tooltip": "極限線圈", + "item.gtceu.exquisite_glass_gem": "精緻的玻璃晶體", + "item.gtceu.facade_cover": "覆蓋偽裝板", + "item.gtceu.facade_cover.tooltip.0": "§7可作為§f覆蓋板§7加裝的裝飾性外殼。", + "item.gtceu.facade_cover.tooltip.1": "§7使用三個鐵板與任意方塊合成", + "item.gtceu.face_mask": "面罩", + "item.gtceu.fertilizer": "肥料", + "item.gtceu.fiber_reinforced_circuit_board": "纖維強化電路基板", + "item.gtceu.fiber_reinforced_circuit_board.tooltip": "§7超級電路基板", + "item.gtceu.fiber_reinforced_printed_circuit_board": "纖維強化印刷電路基板", + "item.gtceu.fiber_reinforced_printed_circuit_board.tooltip": "§7更高階的電路基板", + "item.gtceu.file_extruder_mold.tooltip": "§7用來製作銼的擠壓模具", + "item.gtceu.fine_borosilicate_glass_wire": "硼矽玻璃纖維", + "item.gtceu.firebrick": "耐火磚", + "item.gtceu.firebrick.tooltip": "§7耐熱", + "item.gtceu.flawed_glass_gem": "有瑕的玻璃晶體", + "item.gtceu.flawed_sugar_gem": "小顆方糖", + "item.gtceu.flawless_glass_gem": "無瑕的玻璃晶體", + "item.gtceu.fluid.regulator.tooltip": "§7作§f覆蓋板§7時§7限制§f§f流體§7的流量。", + "item.gtceu.fluid_cell": "流體單元", + "item.gtceu.fluid_detector_cover": "流體探測覆蓋板", + "item.gtceu.fluid_detector_cover.tooltip": "§7作§f覆蓋板§7時依照§f流體儲量§7發出紅石訊號。", + "item.gtceu.fluid_filter": "流體過濾卡", + "item.gtceu.fluid_filter.tooltip.0": "§7作§f覆蓋板§7時過濾§流體§7的輸入/輸出。", + "item.gtceu.fluid_filter.tooltip.1": "§7亦可用於§f電動泵§7與§f流體調節器§7。", + "item.gtceu.fluid_tag_filter": "流體標籤過濾卡", + "item.gtceu.fluid_tag_filter.tooltip.0": "§7作§f覆蓋板§7時以§f流體標籤§7過濾§f流體§7的輸入/輸出。", + "item.gtceu.fluid_tag_filter.tooltip.1": "§7亦可用於§f電動泵§7與§f流體調節器§7。", + "item.gtceu.fluid_voiding_cover": "流體銷毀覆蓋板", + "item.gtceu.fluid_voiding_cover.tooltip.0": "§7作§f覆蓋板§7時允許銷毀§f流體§7。", + "item.gtceu.fluid_voiding_cover.tooltip.1": "§7加裝後使用§f軟錘§7啟用", + "item.gtceu.foam_sprayer.tooltip.0": "§7噴射建築泡沫", + "item.gtceu.foam_sprayer.tooltip.1": "右擊框架來給框架噴塗泡沫", + "item.gtceu.foam_sprayer.tooltip.2": "泡沫可以染色", + "item.gtceu.foil_extruder_mold": "擠壓模具(箔)", + "item.gtceu.foil_extruder_mold.tooltip": "§7用來製作箔的擠壓模具", + "item.gtceu.fullers_earth_dust": "漂白土", + "item.gtceu.garnet_sand_dust": "石榴石砂", + "item.gtceu.gear_casting_mold": "鑄造模具(齒輪)", + "item.gtceu.gear_casting_mold.small.tooltip": "§7用來製作小型齒輪的鑄造模具", + "item.gtceu.gear_casting_mold.tooltip": "§7用來製作齒輪的鑄造模具", + "item.gtceu.gear_extruder_mold": "擠壓模具(齒輪)", + "item.gtceu.gear_extruder_mold.tooltip": "§7用來製作齒輪的擠壓模具", + "item.gtceu.gear_small_extruder_mold.tooltip": "§7用來製作小型齒輪的擠壓模具", + "item.gtceu.gelled_toluene": "膠凝甲苯", + "item.gtceu.gelled_toluene.tooltip": "§7炸藥原料", + "item.gtceu.glass_gem": "玻璃晶體", + "item.gtceu.glass_plate": "玻璃板", + "item.gtceu.glass_tube": "玻璃管", + "item.gtceu.glass_vial": "玻璃試管", + "item.gtceu.glauconite_sand_dust": "海綠石砂", + "item.gtceu.good_electronic_circuit": "優質電子電路", + "item.gtceu.good_electronic_circuit.tooltip.0": "§7你的第二塊電路", + "item.gtceu.good_electronic_circuit.tooltip.1": "§cMV級電路", + "item.gtceu.good_integrated_circuit": "優質積體電路", + "item.gtceu.good_integrated_circuit.tooltip.0": "§7更小也更強", + "item.gtceu.good_integrated_circuit.tooltip.1": "§6MV級電路", + "item.gtceu.granitic_mineral_sand_dust": "花崗岩礦砂", + "item.gtceu.gravi_star": "重力之星", + "item.gtceu.gravi_star.tooltip": "§7終極地獄之星", + "item.gtceu.gravitation_engine_unit": "重力引擎單元", + "item.gtceu.gray_dye_spray_can": "噴漆罐(灰色)", + "item.gtceu.gray_glass_lens": "玻璃透鏡(灰色)", + "item.gtceu.green_dye_spray_can": "噴漆罐(綠色)", + "item.gtceu.green_glass_lens": "玻璃透鏡(綠色)", + "item.gtceu.hammer_extruder_mold.tooltip": "§7用來製作錘的擠壓模具", + "item.gtceu.hazmat_boots": "防護衣靴子", + "item.gtceu.hazmat_chestpiece": "防護衣胸甲", + "item.gtceu.hazmat_headpiece": "防護衣頭盔", + "item.gtceu.hazmat_leggings": "防護衣護腿", + "item.gtceu.highly_advanced_soc": "HASoC", + "item.gtceu.highly_advanced_soc.tooltip": "§7高度先進的系統級晶片", + "item.gtceu.highly_advanced_soc_wafer": "HASoC晶圓", + "item.gtceu.highly_advanced_soc_wafer.tooltip": "§7高度先進的電路原料", + "item.gtceu.hoe_extruder_mold.tooltip": "§7用來製作鋤的擠壓模具", + "item.gtceu.hpic_chip": "HPIC晶片", + "item.gtceu.hpic_chip.tooltip": "§7高功率積體電路", + "item.gtceu.hpic_wafer": "HPIC晶圓", + "item.gtceu.hpic_wafer.tooltip": "§7高功率積體電路原料", + "item.gtceu.huge_pipe_extruder_mold": "擠壓模具(巨型管道)", + "item.gtceu.hv_battery_hull": "大型電池外殼", + "item.gtceu.hv_battery_hull.tooltip": "§7一個空的§6HV§7電池外殼", + "item.gtceu.hv_cadmium_battery": "大型鎘電池", + "item.gtceu.hv_cadmium_battery.tooltip": "§7可充電電池", + "item.gtceu.hv_conveyor_module": "§6HV§r傳送帶", + "item.gtceu.hv_electric_motor": "§6HV§r電動馬達", + "item.gtceu.hv_electric_piston": "§6HV§r電力活塞", + "item.gtceu.hv_electric_pump": "§6HV§r電動泵", + "item.gtceu.hv_emitter": "§6HV§r發射器", + "item.gtceu.hv_field_generator": "§6HV§r力場發生器", + "item.gtceu.hv_fluid_regulator": "§6HV§r流體調節器", + "item.gtceu.hv_item_magnet": "§6HV§r物品磁鐵", + "item.gtceu.hv_lithium_battery": "大型鋰電池", + "item.gtceu.hv_lithium_battery.tooltip": "§7可充電電池", + "item.gtceu.hv_power_unit": "§6HV§r能量單元", + "item.gtceu.hv_robot_arm": "§6HV§r機械臂", + "item.gtceu.hv_sensor": "§6HV§r感測器", + "item.gtceu.hv_sodium_battery": "大型鈉電池", + "item.gtceu.hv_sodium_battery.tooltip": "§7可充電電池", + "item.gtceu.hv_solar_panel": "高壓太陽能板(§6HV§r)", + "item.gtceu.hv_voltage_coil": "高壓線圈(§6HV§r)", + "item.gtceu.hv_voltage_coil.tooltip": "高階線圈", + "item.gtceu.ice_dust": "碎冰", + "item.gtceu.ilc_chip": "IC晶片", + "item.gtceu.ilc_chip.tooltip": "§7整合邏輯電路", + "item.gtceu.ilc_wafer": "ILC晶圓", + "item.gtceu.ilc_wafer.tooltip": "§7積體電路原料", + "item.gtceu.impure_bentonite_dust": "含雜膨潤土", + "item.gtceu.impure_cassiterite_sand_dust": "含雜錫石礦砂", + "item.gtceu.impure_pitchblende_dust": "含雜瀝青鈾礦", + "item.gtceu.impure_rock_salt_dust": "含雜岩鹽", + "item.gtceu.impure_salt_dust": "含雜鹽", + "item.gtceu.impure_talc_dust": "含雜滑石", + "item.gtceu.inductor": "電感", + "item.gtceu.inductor.tooltip": "§7一個小線圈", + "item.gtceu.inert_metal_mixture_dust": "惰性金屬混合物", + "item.gtceu.infinite_water_cover": "無限水覆蓋板", + "item.gtceu.infinite_water_cover.tooltip": "§7作§f覆蓋板§7時為所附著的容器供§9水§7。", + "item.gtceu.ingot_casting_mold": "鑄造模具(錠)", + "item.gtceu.ingot_casting_mold.tooltip": "§7用來製作錠的鑄造模具", + "item.gtceu.ingot_extruder_mold": "擠壓模具(錠)", + "item.gtceu.ingot_extruder_mold.tooltip": "§7用來……等會,用熔爐不好嗎?", + "item.gtceu.invar_lighter": "殷鋼打火機", + "item.gtceu.iridium_metal_residue_dust": "銥金屬渣", + "item.gtceu.iron_minecart_wheels": "鐵礦車車輪", + "item.gtceu.item_detector_cover": "物品探測覆蓋板", + "item.gtceu.item_detector_cover.tooltip": "§7作§f覆蓋板§7時依照§f物品儲量§7發出紅石訊號。", + "item.gtceu.item_filter": "物品過濾卡", + "item.gtceu.item_filter.tooltip.0": "§7作§f覆蓋板§7時過濾§f物品§7的輸入/輸出。", + "item.gtceu.item_filter.tooltip.1": "§7亦可用於§f傳送帶§7與§f機械臂§7。", + "item.gtceu.item_smart_filter": "智慧物品過濾卡", + "item.gtceu.item_smart_filter.tooltip.0": "§7作§f覆蓋板§7時以§f機器的配方§7過濾§f物品§7的輸入/輸出。", + "item.gtceu.item_smart_filter.tooltip.1": "§7亦可用於§f傳送帶§7與§f機械臂§7。", + "item.gtceu.item_tag_filter": "物品標籤過濾卡", + "item.gtceu.item_tag_filter.tooltip.0": "§7作§f覆蓋板§7時以§f物品標籤§7過濾§f物品§7的輸入/輸出。", + "item.gtceu.item_tag_filter.tooltip.1": "§7亦可用於§f傳送帶§7與§f機械臂§7。", + "item.gtceu.item_voiding_cover": "物品銷毀覆蓋板", + "item.gtceu.item_voiding_cover.tooltip.0": "§7作§f覆蓋板§7時銷毀物品。", + "item.gtceu.item_voiding_cover.tooltip.1": "§7加裝後使用§f軟錘§7啟用", + "item.gtceu.iv_battery_hull": "中型釩電池外殼", + "item.gtceu.iv_battery_hull.tooltip": "§7一個空的§1IV§7電池外殼", + "item.gtceu.iv_conveyor_module": "§9IV§r傳送帶", + "item.gtceu.iv_electric_motor": "§9IV§r電動馬達", + "item.gtceu.iv_electric_piston": "§9IV§r電力活塞", + "item.gtceu.iv_electric_pump": "§9IV§r電動泵", + "item.gtceu.iv_emitter": "§9IV§r發射器", + "item.gtceu.iv_field_generator": "§9IV§r力場發生器", + "item.gtceu.iv_fluid_regulator": "§9IV§r流體調節器", + "item.gtceu.iv_power_unit": "§9IV§r能量單元", + "item.gtceu.iv_robot_arm": "§9IV§r機械臂", + "item.gtceu.iv_sensor": "§9IV§r感測器", + "item.gtceu.iv_solar_panel": "強導壓太陽能板(§9IV§r)", + "item.gtceu.iv_vanadium_battery": "中型釩電池", + "item.gtceu.iv_vanadium_battery.tooltip": "§7可充電電池", + "item.gtceu.iv_voltage_coil": "強導壓線圈(§9IV§r)", + "item.gtceu.iv_voltage_coil.tooltip": "精英線圈", + "item.gtceu.lapotron_crystal": "蘭波頓水晶", + "item.gtceu.lapotron_crystal.tooltip": "§7可充電電池", + "item.gtceu.lapotronic_energy_orb": "蘭波頓能量球", + "item.gtceu.lapotronic_energy_orb.tooltip": "§7可充電電池", + "item.gtceu.lapotronic_energy_orb_cluster": "蘭波頓能量球簇", + "item.gtceu.lapotronic_energy_orb_cluster.tooltip": "§7可充電電池", + "item.gtceu.large_pipe_extruder_mold": "擠壓模具(大型管道)", + "item.gtceu.light_blue_dye_spray_can": "噴漆罐(淺藍色)", + "item.gtceu.light_blue_glass_lens": "玻璃透鏡(淺藍色)", + "item.gtceu.light_gray_dye_spray_can": "噴漆罐(淺灰色)", + "item.gtceu.light_gray_glass_lens": "玻璃透鏡(淺灰色)", + "item.gtceu.lime_dye_spray_can": "噴漆罐(淺綠色)", + "item.gtceu.lime_glass_lens": "玻璃透鏡(淺綠色)", + "item.gtceu.liquid_fuel_jetpack": "液體燃料噴射背包", + "item.gtceu.long_treated_wood_rod": "長防腐木棍", + "item.gtceu.long_wood_rod": "長木棍", + "item.gtceu.lpic_chip": "LPIC晶片", + "item.gtceu.lpic_chip.tooltip": "§7低功率積體電路", + "item.gtceu.lpic_wafer": "LPIC晶圓", + "item.gtceu.lpic_wafer.tooltip": "§7低功率積體電路原料", + "item.gtceu.luv_battery_hull": "大型釩電池外殼", + "item.gtceu.luv_battery_hull.tooltip": "§7一個空的§dLuV§r電池外殼", + "item.gtceu.luv_conveyor_module": "§dLuV§r傳送帶", + "item.gtceu.luv_electric_motor": "§dLuV§r電動馬達", + "item.gtceu.luv_electric_piston": "§dLuV§r電力活塞", + "item.gtceu.luv_electric_pump": "§dLuV§r電動泵", + "item.gtceu.luv_emitter": "§dLuV§r發射器", + "item.gtceu.luv_field_generator": "§dLuV§r力場發生器", + "item.gtceu.luv_fluid_regulator": "§dLuV§r流體調節器", + "item.gtceu.luv_robot_arm": "§dLuV§r機械臂", + "item.gtceu.luv_sensor": "§dLuV§r感測器", + "item.gtceu.luv_solar_panel": "劇差壓太陽能板(§dLuV§r)", + "item.gtceu.luv_vanadium_battery": "大型釩電池", + "item.gtceu.luv_vanadium_battery.tooltip": "§7可充電電池", + "item.gtceu.luv_voltage_coil": "劇差壓線圈(§dLuV§r)", + "item.gtceu.luv_voltage_coil.tooltip": "大師線圈", + "item.gtceu.lv_battery_hull": "小型電池外殼", + "item.gtceu.lv_battery_hull.tooltip": "§7一個空的§7LV§7電池外殼", + "item.gtceu.lv_cadmium_battery": "小型鎘電池", + "item.gtceu.lv_cadmium_battery.tooltip": "§7可充電電池", + "item.gtceu.lv_conveyor_module": "§7LV§r傳送帶", + "item.gtceu.lv_electric_motor": "§7LV§r電動馬達", + "item.gtceu.lv_electric_piston": "§7LV§r電力活塞", + "item.gtceu.lv_electric_pump": "§7LV§r電動泵", + "item.gtceu.lv_emitter": "§7LV§r發射器", + "item.gtceu.lv_field_generator": "§7LV§r力場發生器", + "item.gtceu.lv_fluid_regulator": "§7LV§r流體調節器", + "item.gtceu.lv_item_magnet": "§7LV§r物品磁鐵", + "item.gtceu.lv_lithium_battery": "小型鋰電池", + "item.gtceu.lv_lithium_battery.tooltip": "§7可充電電池", + "item.gtceu.lv_power_unit": "§7LV§r能量單元", + "item.gtceu.lv_robot_arm": "§7LV§r機械臂", + "item.gtceu.lv_sensor": "§7LV§r感測器", + "item.gtceu.lv_sodium_battery": "小型鈉電池", + "item.gtceu.lv_sodium_battery.tooltip": "§7可充電電池", + "item.gtceu.lv_solar_panel": "低壓太陽能板(§7LV§r)", + "item.gtceu.lv_voltage_coil": "低壓線圈(§7LV§r)", + "item.gtceu.lv_voltage_coil.tooltip": "基礎線圈", + "item.gtceu.machine_controller.tooltip": "§7作§f覆蓋板§7時可以§f開/關§7機器。", + "item.gtceu.machine_controller_cover": "機器控制覆蓋板", + "item.gtceu.machine_memory_card": "機器記憶卡", + "item.gtceu.magenta_dye_spray_can": "噴漆罐(洋紅色)", + "item.gtceu.magenta_glass_lens": "玻璃透鏡(洋紅色)", + "item.gtceu.maintenance_detector_cover": "維護探測覆蓋板", + "item.gtceu.mask_filter": "防毒面具過濾罐", + "item.gtceu.matchbox": "火柴盒", + "item.gtceu.matches": "火柴", + "item.gtceu.max_battery": "終極電池", + "item.gtceu.max_battery.tooltip": "§7填滿就能通關Minecraft", + "item.gtceu.max_voltage_coil.tooltip": "至高線圈", + "item.gtceu.meat_dust": "肉末", + "item.gtceu.micro_processor": "微型處理器", + "item.gtceu.micro_processor.tooltip.0": "§7運算速度驚人!", + "item.gtceu.micro_processor.tooltip.1": "§eMV級電路", + "item.gtceu.micro_processor_assembly": "微型處理器叢集", + "item.gtceu.micro_processor_assembly.tooltip.0": "§7運算速度驚人!", + "item.gtceu.micro_processor_assembly.tooltip.1": "§eHV級電路", + "item.gtceu.micro_processor_computer": "微型處理器超級電腦", + "item.gtceu.micro_processor_computer.tooltip.0": "§7運算速度驚人!", + "item.gtceu.micro_processor_computer.tooltip.1": "§eEV級電路", + "item.gtceu.micro_processor_mainframe": "微型處理器主機", + "item.gtceu.micro_processor_mainframe.tooltip.0": "§7運算速度驚人!", + "item.gtceu.micro_processor_mainframe.tooltip.1": "§eIV級電路", + "item.gtceu.microchip_processor": "微晶片處理器", + "item.gtceu.microchip_processor.tooltip.0": "§7卓越的基礎電路", + "item.gtceu.microchip_processor.tooltip.1": "§eLV級電路", + "item.gtceu.mpic_chip": "MPIC晶片", + "item.gtceu.mpic_chip.tooltip": "§7功率積體電路", + "item.gtceu.mpic_wafer": "MPIC晶圓", + "item.gtceu.mpic_wafer.tooltip": "§7功率積體電路原料", + "item.gtceu.multilayer_fiber_reinforced_circuit_board": "多層纖維強化電路基板", + "item.gtceu.multilayer_fiber_reinforced_circuit_board.tooltip": "§7精英電路基板", + "item.gtceu.multilayer_fiber_reinforced_printed_circuit_board": "多層纖維強化印刷電路基板", + "item.gtceu.multilayer_fiber_reinforced_printed_circuit_board.tooltip": "§7精英級電路基板", + "item.gtceu.mv_battery_hull": "中型電池外殼", + "item.gtceu.mv_battery_hull.tooltip": "§7一個空的§bMV§7電池外殼", + "item.gtceu.mv_cadmium_battery": "中型鎘電池", + "item.gtceu.mv_cadmium_battery.tooltip": "§7可充電電池", + "item.gtceu.mv_conveyor_module": "§bMV§r傳送帶", + "item.gtceu.mv_electric_motor": "§bMV§r電動馬達", + "item.gtceu.mv_electric_piston": "§bMV§r電力活塞", + "item.gtceu.mv_electric_pump": "§bMV§r電動泵", + "item.gtceu.mv_emitter": "§bMV§r發射器", + "item.gtceu.mv_field_generator": "§bMV§r力場發生器", + "item.gtceu.mv_fluid_regulator": "§bMV§r流體調節器", + "item.gtceu.mv_lithium_battery": "中型鋰電池", + "item.gtceu.mv_lithium_battery.tooltip": "§7可充電電池", + "item.gtceu.mv_power_unit": "§bMV§r能量單元", + "item.gtceu.mv_robot_arm": "§bMV§r機械臂", + "item.gtceu.mv_sensor": "§bMV§r感測器", + "item.gtceu.mv_sodium_battery": "中型鈉電池", + "item.gtceu.mv_sodium_battery.tooltip": "§7可充電電池", + "item.gtceu.mv_solar_panel": "中壓太陽能板(§bMV§r)", + "item.gtceu.mv_voltage_coil": "中壓線圈(§bMV§r)", + "item.gtceu.mv_voltage_coil.tooltip": "優質線圈", + "item.gtceu.name_casting_mold": "鑄造模具(命名)", + "item.gtceu.name_casting_mold.tooltip": "§7用來在衝壓機床中為物品命名的鑄造模具(用鐵砧重新命名鑄造模具)", + "item.gtceu.nan_certificate": "不再是菜鳥的證明", + "item.gtceu.nan_certificate.tooltip": "已接受挑戰!", + "item.gtceu.nand_chip": "NAND晶片", + "item.gtceu.nand_chip.tooltip.0": "§7卓越的簡單電路", + "item.gtceu.nand_chip.tooltip.1": "§6ULV級電路", + "item.gtceu.nand_memory_chip": "NAND儲存器晶片", + "item.gtceu.nand_memory_chip.tooltip": "§7與非邏輯閘", + "item.gtceu.nand_memory_wafer": "NAND儲存器晶圓", + "item.gtceu.nand_memory_wafer.tooltip": "§7邏輯閘原料", + "item.gtceu.nano_cpu_chip": "奈米CPU晶片", + "item.gtceu.nano_cpu_chip.tooltip": "§7奈米中央處理器", + "item.gtceu.nano_cpu_wafer": "奈米CPU晶圓", + "item.gtceu.nano_cpu_wafer.tooltip": "§7奈米電路原料", + "item.gtceu.nano_processor": "奈米處理器", + "item.gtceu.nano_processor.tooltip.0": "§7比小更小", + "item.gtceu.nano_processor.tooltip.1": "§bHV級電路", + "item.gtceu.nano_processor_assembly": "奈米處理器叢集", + "item.gtceu.nano_processor_assembly.tooltip.0": "§7比小更小", + "item.gtceu.nano_processor_assembly.tooltip.1": "§bEV級電路", + "item.gtceu.nano_processor_computer": "奈米處理器超級電腦", + "item.gtceu.nano_processor_computer.tooltip.0": "§7比小更小", + "item.gtceu.nano_processor_computer.tooltip.1": "§bIV級電路", + "item.gtceu.nano_processor_mainframe": "奈米處理器主機", + "item.gtceu.nano_processor_mainframe.tooltip.0": "§7比小更小", + "item.gtceu.nano_processor_mainframe.tooltip.1": "§bLuV級電路", + "item.gtceu.nano_saber": "奈米劍", + "item.gtceu.nano_saber.tooltip": "§7嚐嚐龍神之劍!", + "item.gtceu.nanomuscle_boots": "奈米肌體™套裝靴子", + "item.gtceu.nanomuscle_chestplate": "奈米肌體™套裝胸甲", + "item.gtceu.nanomuscle_helmet": "奈米肌體™套裝頭盔", + "item.gtceu.nanomuscle_leggings": "奈米肌體™套裝護腿", + "item.gtceu.naquadah_boule": "矽岩摻雜的單晶矽", + "item.gtceu.naquadah_boule.tooltip": "§7電路原料", + "item.gtceu.naquadah_wafer": "矽岩摻雜的晶圓", + "item.gtceu.naquadah_wafer.tooltip": "§7電路原料", + "item.gtceu.neuro_processing_unit": "神經處理單元", + "item.gtceu.neuro_processing_unit.tooltip": "§7神經CPU", + "item.gtceu.neutron_reflector": "銥中子反射板", + "item.gtceu.neutron_reflector.tooltip": "§7堅不可摧", + "item.gtceu.neutronium_boule": "中子素摻雜的單晶矽", + "item.gtceu.neutronium_boule.tooltip": "§7電路原料", + "item.gtceu.neutronium_wafer": "中子素摻雜的晶圓", + "item.gtceu.neutronium_wafer.tooltip": "§7電路原料", + "item.gtceu.nightvision_goggles": "夜視鏡", + "item.gtceu.nor_memory_chip": "NOR儲存器晶片", + "item.gtceu.nor_memory_chip.tooltip": "§7或非邏輯閘", + "item.gtceu.nor_memory_wafer": "NOR儲存器晶圓", + "item.gtceu.nor_memory_wafer.tooltip": "§7邏輯閘原料", + "item.gtceu.normal_pipe_extruder_mold": "擠壓模具(普通管道)", + "item.gtceu.nugget_casting_mold": "鑄造模具(粒)", + "item.gtceu.nugget_casting_mold.tooltip": "§7用來製作粒的鑄造模具", + "item.gtceu.opv_conveyor_module": "§9§lOpV§r傳送帶", + "item.gtceu.opv_electric_motor": "§9§lOpV§r電動馬達", + "item.gtceu.opv_electric_piston": "§9§lOpV§r電力活塞", + "item.gtceu.opv_electric_pump": "§9§lOpV§r電動泵", + "item.gtceu.opv_emitter": "§9OpV§r發射器", + "item.gtceu.opv_field_generator": "§9§lOpV§r力場發生器", + "item.gtceu.opv_fluid_regulator": "§9§lOpV§r流體調節器", + "item.gtceu.opv_robot_arm": "§9§lOpV§r機械臂", + "item.gtceu.opv_sensor": "§9§lOpV§r感測器", + "item.gtceu.opv_voltage_coil.tooltip": "傳奇線圈", + "item.gtceu.orange_dye_spray_can": "噴漆罐(橙色)", + "item.gtceu.orange_glass_lens": "玻璃透鏡(橙色)", + "item.gtceu.palladium_raw_dust": "粗鈀粉", + "item.gtceu.paper_dust": "紙屑", + "item.gtceu.paracetamol_pill": "對乙醯氨基酚藥片", + "item.gtceu.petri_dish": "培養皿", + "item.gtceu.petri_dish.tooltip": "§7用來培育細胞", + "item.gtceu.phenolic_circuit_board": "酚醛樹脂電路基板", + "item.gtceu.phenolic_circuit_board.tooltip": "§7更好的基板", + "item.gtceu.phenolic_printed_circuit_board": "酚醛樹脂印刷電路基板", + "item.gtceu.phenolic_printed_circuit_board.tooltip": "§7優質電路基板", + "item.gtceu.phosphorus_boule": "磷摻雜的單晶矽", + "item.gtceu.phosphorus_boule.tooltip": "§7電路原料", + "item.gtceu.phosphorus_wafer": "磷摻雜的晶圓", + "item.gtceu.phosphorus_wafer.tooltip": "§7電路原料", + "item.gtceu.pickaxe_extruder_mold.tooltip": "§7用來製作鎬的擠壓模具", + "item.gtceu.pill_casting_mold": "鑄造模具(藥片)", + "item.gtceu.pink_dye_spray_can": "噴漆罐(粉紅色)", + "item.gtceu.pink_glass_lens": "玻璃透鏡(粉紅色)", + "item.gtceu.pipe.huge_extruder_mold.tooltip": "§7用來製作佔據整個方塊的管道的擠壓模具", + "item.gtceu.pipe.large_extruder_mold.tooltip": "§7用來製作大型管道的擠壓模具", + "item.gtceu.pipe.normal_extruder_mold.tooltip": "§7用來製作管道的擠壓模具", + "item.gtceu.pipe.small_extruder_mold.tooltip": "§7用來製作小型管道的擠壓模具", + "item.gtceu.pipe.tiny_extruder_mold.tooltip": "§7用來製作微型管道的擠壓模具", + "item.gtceu.pitchblende_dust": "瀝青鈾礦", + "item.gtceu.plant_ball": "植物球", + "item.gtceu.plastic_circuit_board": "塑膠電路基板", + "item.gtceu.plastic_circuit_board.tooltip": "§7更好的基板", + "item.gtceu.plastic_printed_circuit_board": "塑膠印刷電路基板", + "item.gtceu.plastic_printed_circuit_board.tooltip": "§7優質電路基板", + "item.gtceu.plate_casting_mold": "鑄造模具(板)", + "item.gtceu.plate_casting_mold.tooltip": "§7用來製作板的鑄造模具", + "item.gtceu.plate_extruder_mold": "擠壓模具(板)", + "item.gtceu.plate_extruder_mold.tooltip": "§7用來製作板的擠壓模具", + "item.gtceu.platinum_group_sludge_dust": "鉑系礦泥", + "item.gtceu.platinum_lighter": "鉑打火機", + "item.gtceu.platinum_raw_dust": "粗鉑粉", + "item.gtceu.platinum_sludge_residue_dust": "鉑泥渣", + "item.gtceu.portable_debug_scanner": "行動式掃描器", + "item.gtceu.portable_scanner": "行動式掃描器", + "item.gtceu.power_thruster": "電力推進器", + "item.gtceu.programmed_circuit": "程式設計電路", + "item.gtceu.programmed_circuit.tooltip.0": "右擊開啟設定頁面", + "item.gtceu.programmed_circuit.tooltip.1": "潛行右擊有虛擬電路槽的", + "item.gtceu.programmed_circuit.tooltip.2": "機器,將其設定為本電路", + "item.gtceu.programmed_circuit.tooltip.3": "的值。", + "item.gtceu.prospector.hv": "進階探礦儀(§6HV§r)", + "item.gtceu.prospector.luv": "超級探礦儀(§dLuV§r)", + "item.gtceu.prospector.lv": "探礦儀(§7LV§r)", + "item.gtceu.pure_bentonite_dust": "純淨膨潤土", + "item.gtceu.pure_cassiterite_sand_dust": "純淨錫石礦砂", + "item.gtceu.pure_pitchblende_dust": "純淨瀝青鈾礦", + "item.gtceu.pure_rock_salt_dust": "純淨岩鹽", + "item.gtceu.pure_salt_dust": "純淨鹽", + "item.gtceu.pure_talc_dust": "純淨滑石", + "item.gtceu.purified_bentonite_ore": "純淨膨潤土", + "item.gtceu.purified_cassiterite_sand_ore": "純淨錫石礦砂", + "item.gtceu.purified_pitchblende_ore": "純淨瀝青鈾礦", + "item.gtceu.purified_talc_ore": "純淨滑石", + "item.gtceu.purple_drink": "紫色飲料", + "item.gtceu.purple_dye_spray_can": "噴漆罐(紫色)", + "item.gtceu.purple_glass_lens": "玻璃透鏡(紫色)", + "item.gtceu.qbit_cpu_chip": "量子位CPU晶片", + "item.gtceu.qbit_cpu_chip.tooltip": "§7量子位中央處理器", + "item.gtceu.qbit_cpu_wafer": "量子位CPU晶圓", + "item.gtceu.qbit_cpu_wafer.tooltip": "§7量子位電路原料", + "item.gtceu.quantum_eye": "量子之眼", + "item.gtceu.quantum_eye.tooltip": "§7改良的終界之眼", + "item.gtceu.quantum_processor": "量子處理器", + "item.gtceu.quantum_processor.tooltip.0": "§7量子計算終成現實!", + "item.gtceu.quantum_processor.tooltip.1": "§aEV級電路", + "item.gtceu.quantum_processor_assembly": "量子處理器叢集", + "item.gtceu.quantum_processor_assembly.tooltip.0": "§7量子計算終成現實!", + "item.gtceu.quantum_processor_assembly.tooltip.1": "§aIV級電路", + "item.gtceu.quantum_processor_computer": "量子處理器超級電腦", + "item.gtceu.quantum_processor_computer.tooltip.0": "§7量子計算終成現實!", + "item.gtceu.quantum_processor_computer.tooltip.1": "§aLuV級電路", + "item.gtceu.quantum_processor_mainframe": "量子處理器主機", + "item.gtceu.quantum_processor_mainframe.tooltip.0": "§7量子計算終成現實!", + "item.gtceu.quantum_processor_mainframe.tooltip.1": "§aZPM級電路", + "item.gtceu.quantum_star": "量子之星", + "item.gtceu.quantum_star.tooltip": "§7改良的地獄之星", + "item.gtceu.quarktech_boots": "夸克科技™套裝靴子", + "item.gtceu.quarktech_chestplate": "夸克科技™套裝胸甲", + "item.gtceu.quarktech_helmet": "夸克科技™套裝頭盔", + "item.gtceu.quarktech_leggings": "夸克科技™套裝護腿", + "item.gtceu.quartz_sand_dust": "石英砂", + "item.gtceu.rad_away_pill": "消輻寧™藥片", + "item.gtceu.ram_chip": "RAM晶片", + "item.gtceu.ram_chip.tooltip": "§7隨機存取儲存器", + "item.gtceu.ram_wafer": "RAM晶圓", + "item.gtceu.ram_wafer.tooltip": "§7記憶體原料", + "item.gtceu.rare_earth_dust": "稀土", + "item.gtceu.rarest_metal_mixture_dust": "稀有金屬混合物", + "item.gtceu.raw_crystal_chip": "晶體晶片原料", + "item.gtceu.raw_crystal_chip.tooltip": "§7晶體處理器原料", + "item.gtceu.raw_crystal_chip_parts": "晶體晶片部件原料", + "item.gtceu.raw_crystal_chip_parts.tooltip": "§7晶體處理器部件原料", + "item.gtceu.red_dye_spray_can": "噴漆罐(紅色)", + "item.gtceu.red_glass_lens": "玻璃透鏡(紅色)", + "item.gtceu.refined_bentonite_ore": "精煉膨潤土", + "item.gtceu.refined_cassiterite_sand_ore": "精煉錫石礦砂", + "item.gtceu.refined_pitchblende_ore": "精煉瀝青鈾礦", + "item.gtceu.refined_talc_ore": "精煉滑石", + "item.gtceu.resin_circuit_board": "覆膜電路基板", + "item.gtceu.resin_circuit_board.tooltip": "§7電路的基底", + "item.gtceu.resin_printed_circuit_board": "覆膜印刷電路基板", + "item.gtceu.resin_printed_circuit_board.tooltip": "§7基礎電路基板", + "item.gtceu.resistor": "電阻", + "item.gtceu.resistor.tooltip": "§7基礎電子元件", + "item.gtceu.ring_extruder_mold": "擠壓模具(環)", + "item.gtceu.ring_extruder_mold.tooltip": "§7用來製作環的擠壓模具", + "item.gtceu.robot.arm.tooltip": "作§f覆蓋板§7時限制§f物品§7到特定數量。", + "item.gtceu.rock_salt_dust": "岩鹽", + "item.gtceu.rod_extruder_mold": "擠壓模具(桿)", + "item.gtceu.rod_extruder_mold.tooltip": "§7用來製作桿的擠壓模具", + "item.gtceu.rod_long_extruder_mold.tooltip": "§7用來製作長桿的擠壓模具", + "item.gtceu.rotor_casting_mold": "鑄造模具(轉子)", + "item.gtceu.rotor_casting_mold.tooltip": "§7用來製作轉子的鑄造模具", + "item.gtceu.rotor_extruder_mold": "擠壓模具(轉子)", + "item.gtceu.rotor_extruder_mold.tooltip": "§7用來製作轉子的擠壓模具", + "item.gtceu.rubber_boat": "橡膠木船", + "item.gtceu.rubber_chest_boat": "儲物箱橡膠木船", + "item.gtceu.rubber_gloves": "橡膠手套", + "item.gtceu.salt_dust": "鹽", + "item.gtceu.saw_extruder_mold.tooltip": "§7用來製作鋸的擠壓模具", + "item.gtceu.shovel_extruder_mold.tooltip": "§7用來製作鍬的擠壓模具", + "item.gtceu.shutter_module_cover": "扇板", + "item.gtceu.shutter_module_cover.tooltip": "§7作§f覆蓋板§7時§f阻止§7機器側面的任何§f傳輸§7行為。", + "item.gtceu.silicon_boule": "單晶矽", + "item.gtceu.silicon_boule.tooltip": "§7電路原料", + "item.gtceu.silicon_wafer": "矽晶圓", + "item.gtceu.silicon_wafer.tooltip": "§7電路原料", + "item.gtceu.simple_soc": "簡易SoC", + "item.gtceu.simple_soc.tooltip": "§7簡易系統級晶片", + "item.gtceu.simple_soc_wafer": "簡易SoC晶圓", + "item.gtceu.simple_soc_wafer.tooltip": "§7簡易電路原料", + "item.gtceu.small_ash_dust": "小堆灰燼", + "item.gtceu.small_basaltic_mineral_sand_dust": "小堆玄武岩礦砂", + "item.gtceu.small_bentonite_dust": "小堆膨潤土", + "item.gtceu.small_blaze_dust": "小堆烈焰粉", + "item.gtceu.small_bone_dust": "小堆骨粉", + "item.gtceu.small_cassiterite_sand_dust": "小堆錫石礦砂", + "item.gtceu.small_dark_ash_dust": "小堆黑色灰燼", + "item.gtceu.small_fullers_earth_dust": "小堆漂白土", + "item.gtceu.small_garnet_sand_dust": "小堆石榴石砂", + "item.gtceu.small_gear_casting_mold": "鑄造模具(小型齒輪)", + "item.gtceu.small_gear_extruder_mold": "擠壓模具(小型齒輪)", + "item.gtceu.small_glauconite_sand_dust": "小堆海綠石砂", + "item.gtceu.small_granitic_mineral_sand_dust": "小堆花崗岩礦砂", + "item.gtceu.small_gunpowder_dust": "小堆火藥", + "item.gtceu.small_ice_dust": "小堆碎冰", + "item.gtceu.small_inert_metal_mixture_dust": "小堆惰性金屬混合物", + "item.gtceu.small_iridium_metal_residue_dust": "小堆銥金屬渣", + "item.gtceu.small_meat_dust": "小堆肉末", + "item.gtceu.small_palladium_raw_dust": "小堆粗鈀粉", + "item.gtceu.small_paper_dust": "小堆紙屑", + "item.gtceu.small_pipe_extruder_mold": "擠壓模具(小型管道)", + "item.gtceu.small_pitchblende_dust": "小堆瀝青鈾礦", + "item.gtceu.small_platinum_group_sludge_dust": "小堆鉑系礦泥", + "item.gtceu.small_platinum_raw_dust": "小堆粗鉑粉", + "item.gtceu.small_platinum_sludge_residue_dust": "小堆鉑泥渣", + "item.gtceu.small_quartz_sand_dust": "小堆石英砂", + "item.gtceu.small_rare_earth_dust": "小堆稀土", + "item.gtceu.small_rarest_metal_mixture_dust": "小堆稀有金屬混合物", + "item.gtceu.small_rock_salt_dust": "小堆岩鹽", + "item.gtceu.small_salt_dust": "小堆鹽", + "item.gtceu.small_sugar_dust": "小堆糖", + "item.gtceu.small_talc_dust": "小堆滑石", + "item.gtceu.small_treated_wood_dust": "小堆防腐木漿", + "item.gtceu.small_wheat_dust": "小堆麵粉", + "item.gtceu.small_wood_dust": "小堆木漿", + "item.gtceu.smd_capacitor": "貼片電容", + "item.gtceu.smd_capacitor.tooltip": "§7電子元件", + "item.gtceu.smd_diode": "貼片二極體", + "item.gtceu.smd_diode.tooltip": "§7電子元件", + "item.gtceu.smd_inductor": "貼片電感", + "item.gtceu.smd_inductor.tooltip": "§7電子元件", + "item.gtceu.smd_resistor": "貼片電阻", + "item.gtceu.smd_resistor.tooltip": "§7電子元件", + "item.gtceu.smd_transistor": "貼片電晶體", + "item.gtceu.smd_transistor.tooltip": "§7電子元件", + "item.gtceu.soc": "SoC", + "item.gtceu.soc.tooltip": "§7系統級晶片", + "item.gtceu.soc_wafer": "SoC晶圓", + "item.gtceu.soc_wafer.tooltip": "§7基礎電路原料", + "item.gtceu.solar_panel": "太陽能板", + "item.gtceu.solar_panel.tooltip.0": "§7願太陽與你同在。", + "item.gtceu.solar_panel.tooltip.1": "§7作§f覆蓋板§7時利用§e太陽§7生產§f能量§7。", + "item.gtceu.solvent_spray_can": "噴漆罐(溶劑)", + "item.gtceu.stainless_steel_fluid_cell": "不鏽鋼單元", + "item.gtceu.steel_fluid_cell": "鋼單元", + "item.gtceu.steel_minecart_wheels": "鋼礦車車輪", + "item.gtceu.stem_cells": "幹細胞", + "item.gtceu.stem_cells.tooltip": "§7智慧原料", + "item.gtceu.sticky_resin": "黏性樹脂", + "item.gtceu.storage_cover": "儲存覆蓋板", + "item.gtceu.sugar_gem": "方糖", + "item.gtceu.sus_record": "音樂唱片", + "item.gtceu.sus_record.desc": "可疑!", + "item.gtceu.sword_extruder_mold.tooltip": "§7用來製作劍刃的擠壓模具", + "item.gtceu.tag_filter.tooltip.0": "§7作§f覆蓋板§7時以§f礦物詞典§7過濾§f物品§7的輸入/輸出。", + "item.gtceu.tag_filter.tooltip.1": "§7亦可用於§f傳送帶§7與§f機械臂§7。", + "item.gtceu.talc_dust": "滑石", + "item.gtceu.tantalum_capacitor": "鉭電容", + "item.gtceu.terminal": "終端", + "item.gtceu.terminal.tooltip": "潛行右擊多方塊控制器以自動搭建此多方塊結構", + "item.gtceu.tiny_ash_dust": "小撮灰燼", + "item.gtceu.tiny_basaltic_mineral_sand_dust": "小撮玄武岩礦砂", + "item.gtceu.tiny_bentonite_dust": "小撮膨潤土", + "item.gtceu.tiny_blaze_dust": "小撮烈焰粉", + "item.gtceu.tiny_bone_dust": "小撮骨粉", + "item.gtceu.tiny_cassiterite_sand_dust": "小撮錫石礦砂", + "item.gtceu.tiny_dark_ash_dust": "小撮黑色灰燼", + "item.gtceu.tiny_fullers_earth_dust": "小撮漂白土", + "item.gtceu.tiny_garnet_sand_dust": "小撮石榴石砂", + "item.gtceu.tiny_glauconite_sand_dust": "小撮海綠石砂", + "item.gtceu.tiny_granitic_mineral_sand_dust": "小撮花崗岩礦砂", + "item.gtceu.tiny_gunpowder_dust": "小撮火藥", + "item.gtceu.tiny_ice_dust": "小撮碎冰", + "item.gtceu.tiny_inert_metal_mixture_dust": "小撮惰性金屬混合物", + "item.gtceu.tiny_iridium_metal_residue_dust": "小撮銥金屬渣", + "item.gtceu.tiny_meat_dust": "小撮肉末", + "item.gtceu.tiny_palladium_raw_dust": "小撮粗鈀粉", + "item.gtceu.tiny_paper_dust": "小撮紙屑", + "item.gtceu.tiny_pipe_extruder_mold": "擠壓模具(微型管道)", + "item.gtceu.tiny_pitchblende_dust": "小撮瀝青鈾礦", + "item.gtceu.tiny_platinum_group_sludge_dust": "小撮鉑系礦泥", + "item.gtceu.tiny_platinum_raw_dust": "小撮粗鉑粉", + "item.gtceu.tiny_platinum_sludge_residue_dust": "小撮鉑泥渣", + "item.gtceu.tiny_quartz_sand_dust": "小撮石英砂", + "item.gtceu.tiny_rare_earth_dust": "小撮稀土", + "item.gtceu.tiny_rarest_metal_mixture_dust": "小撮稀有金屬混合物", + "item.gtceu.tiny_rock_salt_dust": "小撮岩鹽", + "item.gtceu.tiny_salt_dust": "小撮鹽", + "item.gtceu.tiny_sugar_dust": "小撮糖", + "item.gtceu.tiny_talc_dust": "小撮滑石", + "item.gtceu.tiny_treated_wood_dust": "小撮防腐木漿", + "item.gtceu.tiny_wheat_dust": "小撮麵粉", + "item.gtceu.tiny_wood_dust": "小撮木漿", + "item.gtceu.titanium_fluid_cell": "鈦單元", + "item.gtceu.tool.aoe.columns": "行", + "item.gtceu.tool.aoe.layers": "層", + "item.gtceu.tool.aoe.rows": "列", + "item.gtceu.tool.axe": "%s斧", + "item.gtceu.tool.behavior.aoe_mining": "§5作用範圍:§f%sx%sx%s", + "item.gtceu.tool.behavior.block_rotation": "§2精械師傅:§f旋轉方塊", + "item.gtceu.tool.behavior.crop_harvesting": "§a莊稼收割:§f收穫成熟的作物", + "item.gtceu.tool.behavior.damage_boost": "§4傷害增益:§f對%s造成額外傷害", + "item.gtceu.tool.behavior.grass_path": "§e園林策劃:§f製造草徑", + "item.gtceu.tool.behavior.ground_tilling": "§e耕地農夫:§f耕耘土地", + "item.gtceu.tool.behavior.plunger": "§9水管工人:§f清除流體", + "item.gtceu.tool.behavior.rail_rotation": "§e鐵路技工:§f旋轉軌道", + "item.gtceu.tool.behavior.relocate_mining": "§2磁力吸引:§f採掘的方塊進入物品欄", + "item.gtceu.tool.behavior.remove_wax": "§6清潔試劑:§f脫蠟", + "item.gtceu.tool.behavior.scrape": "§b拋光工藝:§f除鏽", + "item.gtceu.tool.behavior.shield_disable": "§c野獸蠻攻:§f無視盾牌", + "item.gtceu.tool.behavior.silk_ice": "§b切冰利刃:§f絲綢之觸採集冰塊", + "item.gtceu.tool.behavior.strip_log": "§5林業工匠:§f剝去原木的表皮", + "item.gtceu.tool.behavior.torch_place": "§e洞窟探客:§f右擊放置火把", + "item.gtceu.tool.behavior.tree_felling": "§4伐木好手:§f連鎖砍樹", + "item.gtceu.tool.butchery_knife": "%s屠刀", + "item.gtceu.tool.butchery_knife.tooltip": "§8攻擊速度較慢", + "item.gtceu.tool.buzzsaw": "%s圓鋸(§7LV§r)", + "item.gtceu.tool.buzzsaw.tooltip": "§8並不適合用來採掘方塊", + "item.gtceu.tool.crowbar": "%s撬棍", + "item.gtceu.tool.crowbar.tooltip": "§8卸下覆蓋板", + "item.gtceu.tool.ev_drill": "%s電鑽(§5EV§r)", + "item.gtceu.tool.file": "%s銼", + "item.gtceu.tool.hammer": "%s鍛造錘", + "item.gtceu.tool.hammer.tooltip": "§8錘碎而非採掘方塊", + "item.gtceu.tool.harvest_level.0": "§8木", + "item.gtceu.tool.harvest_level.1": "§7石頭", + "item.gtceu.tool.harvest_level.2": "§a鐵", + "item.gtceu.tool.harvest_level.3": "§b鑽石", + "item.gtceu.tool.harvest_level.4": "§d獄髓", + "item.gtceu.tool.harvest_level.5": "§9鏗鈾", + "item.gtceu.tool.harvest_level.6": "§c中子素", + "item.gtceu.tool.hoe": "%s鋤", + "item.gtceu.tool.hv_chainsaw": "%s鏈鋸(§6HV§r)", + "item.gtceu.tool.hv_drill": "%s電鑽(§6HV§r)", + "item.gtceu.tool.hv_wirecutter": "%s剪線鉗(§6HV§r)", + "item.gtceu.tool.hv_wrench": "%s扳手(§6HV§r)", + "item.gtceu.tool.hv_wrench.tooltip": "§8按住左鍵以拆卸機器", + "item.gtceu.tool.iv_drill": "%s電鑽(§9IV§r)", + "item.gtceu.tool.iv_wirecutter": "%s剪線鉗(§9IV§r)", + "item.gtceu.tool.iv_wrench": "%s扳手(§9IV§r)", + "item.gtceu.tool.iv_wrench.tooltip": "§8按住左鍵以拆卸機器", + "item.gtceu.tool.knife": "%s刀", + "item.gtceu.tool.lighter.platinum.tooltip": "§7上面刻著一位知名的惡作劇大師", + "item.gtceu.tool.lv_chainsaw": "%s鏈鋸(§7LV§r)", + "item.gtceu.tool.lv_drill": "%s電鑽(§7LV§r)", + "item.gtceu.tool.lv_screwdriver": "%s螺絲起子(§7LV§r)", + "item.gtceu.tool.lv_screwdriver.tooltip": "§8調整覆蓋板和機器", + "item.gtceu.tool.lv_wirecutter": "%s剪線鉗(§7LV§r)", + "item.gtceu.tool.lv_wrench": "%s扳手(§7LV§r)", + "item.gtceu.tool.lv_wrench.tooltip": "§8按住左鍵以拆卸機器", + "item.gtceu.tool.mallet": "%s軟錘", + "item.gtceu.tool.mallet.tooltip.0": "§8潛行以在當前配方完成後暫停機器。", + "item.gtceu.tool.mallet.tooltip.1": "§8關/開機", + "item.gtceu.tool.matchbox.tooltip": "§7別把它當成玩具車了", + "item.gtceu.tool.mining_hammer": "%s採礦錘", + "item.gtceu.tool.mining_hammer.tooltip": "§8一次性開採大片區域(除非你蹲下)", + "item.gtceu.tool.mortar": "%s研缽", + "item.gtceu.tool.mv_chainsaw": "%s鏈鋸(§bMV§r)", + "item.gtceu.tool.mv_drill": "%s電鑽(§bMV§r)", + "item.gtceu.tool.pickaxe": "%s鎬", + "item.gtceu.tool.plunger": "%s搋子", + "item.gtceu.tool.plunger.tooltip": "§8從機器中抽除流體", + "item.gtceu.tool.replace_tool_head": "在合成欄用新的工具頭替換", + "item.gtceu.tool.rolling_pin": "%s擀麵棍", + "item.gtceu.tool.saw": "%s鋸", + "item.gtceu.tool.screwdriver": "%s螺絲起子", + "item.gtceu.tool.screwdriver.tooltip": "§8調整覆蓋板和機器", + "item.gtceu.tool.scythe": "%s鐮刀", + "item.gtceu.tool.scythe.tooltip": "§8因為鐮刀(scythe)沒有意義(sense)", + "item.gtceu.tool.shears": "%s剪刀", + "item.gtceu.tool.shovel": "%s鍬", + "item.gtceu.tool.spade": "%s鏟", + "item.gtceu.tool.spade.tooltip": "§8一次性開採大片區域(除非你蹲下)", + "item.gtceu.tool.sword": "%s劍", + "item.gtceu.tool.tooltip.attack_damage": "§c攻擊傷害§r:%s", + "item.gtceu.tool.tooltip.attack_speed": "§9攻擊速度§r:%s", + "item.gtceu.tool.tooltip.crafting_uses": "§a合成耐久度§r:%s", + "item.gtceu.tool.tooltip.general_uses": "§b耐久度§r:%s", + "item.gtceu.tool.tooltip.harvest_level": "§e採掘等級:%s", + "item.gtceu.tool.tooltip.harvest_level_extra": "§e採掘等級:%s§f(%s§f)", + "item.gtceu.tool.tooltip.max_uses": "§e最大耐久度§r:%s", + "item.gtceu.tool.tooltip.mining_speed": "§d採掘速度§r:%s", + "item.gtceu.tool.tooltip.repair_info": "§8按住SHIFT顯示修復詳情", + "item.gtceu.tool.tooltip.repair_material": "§8修復材料§r:§f§a%s", + "item.gtceu.tool.usable_as": "§8可用作§r:§f%s", + "item.gtceu.tool.wire_cutter": "%s剪線鉗", + "item.gtceu.tool.wrench": "%s扳手", + "item.gtceu.tool.wrench.tooltip": "§8按住左鍵以拆卸機器", + "item.gtceu.transistor": "電晶體", + "item.gtceu.transistor.tooltip": "§7基礎電子元件", + "item.gtceu.treated_wood_boat": "防腐木船", + "item.gtceu.treated_wood_bolt": "短防腐木棍", + "item.gtceu.treated_wood_chest_boat": "儲物箱防腐木船", + "item.gtceu.treated_wood_dust": "防腐木漿", + "item.gtceu.treated_wood_plate": "防腐木材", + "item.gtceu.treated_wood_rod": "防腐木棍", + "item.gtceu.tungsten_grinding_head": "鎢研磨頭", + "item.gtceu.tungsten_steel_fluid_cell": "鎢鋼單元", + "item.gtceu.turbine_rotor": "渦輪轉子", + "item.gtceu.turbine_rotor.tooltip": "供渦輪機使用的渦輪轉子", + "item.gtceu.uev_conveyor_module": "§aUEV§r傳送帶", + "item.gtceu.uev_electric_motor": "§aUEV§r電動馬達", + "item.gtceu.uev_electric_piston": "§aUEV§r電力活塞", + "item.gtceu.uev_electric_pump": "§aUEV§r電動泵", + "item.gtceu.uev_emitter": "§aUEV§r發射器", + "item.gtceu.uev_field_generator": "§aUEV§r力場發生器", + "item.gtceu.uev_fluid_regulator": "§aUEV§r流體調節器", + "item.gtceu.uev_robot_arm": "§aUEV§r機械臂", + "item.gtceu.uev_sensor": "§aUEV§r感測器", + "item.gtceu.uev_voltage_coil.tooltip": "超凡線圈", + "item.gtceu.uhpic_chip": "UHPIC晶片", + "item.gtceu.uhpic_chip.tooltip": "§7超高功率積體電路", + "item.gtceu.uhpic_wafer": "UHPIC晶圓", + "item.gtceu.uhpic_wafer.tooltip": "§7超高功率積體電路原料", + "item.gtceu.uhv_conveyor_module": "§4UHV§r傳送帶", + "item.gtceu.uhv_electric_motor": "§4UHV§r電動馬達", + "item.gtceu.uhv_electric_piston": "§4UHV§r電力活塞", + "item.gtceu.uhv_electric_pump": "§4UHV§r電動泵", + "item.gtceu.uhv_emitter": "§4UHV§r發射器", + "item.gtceu.uhv_field_generator": "§4UHV§r力場發生器", + "item.gtceu.uhv_fluid_regulator": "§4UHV§r流體調節器", + "item.gtceu.uhv_robot_arm": "§4UHV§r機械臂", + "item.gtceu.uhv_sensor": "§4UHV§r感測器", + "item.gtceu.uhv_voltage_coil.tooltip": "極致線圈", + "item.gtceu.uiv_conveyor_module": "§2UIV§r傳送帶", + "item.gtceu.uiv_electric_motor": "§2UIV§r電動馬達", + "item.gtceu.uiv_electric_piston": "§2UIV§r電力活塞", + "item.gtceu.uiv_electric_pump": "§2UIV§r電動泵", + "item.gtceu.uiv_emitter": "§2UIV§r發射器", + "item.gtceu.uiv_field_generator": "§2UIV§r力場發生器", + "item.gtceu.uiv_fluid_regulator": "§2UIV§r流體調節器", + "item.gtceu.uiv_robot_arm": "§2UIV§r機械臂", + "item.gtceu.uiv_sensor": "§2UIV§r感測器", + "item.gtceu.uiv_voltage_coil.tooltip": "瘋狂線圈", + "item.gtceu.ulpic_chip": "ULPIC晶片", + "item.gtceu.ulpic_chip.tooltip": "§7超低功率積體電路", + "item.gtceu.ulpic_wafer": "ULPIC晶圓", + "item.gtceu.ulpic_wafer.tooltip": "§7超低功率積體電路原料", + "item.gtceu.ulv_solar_panel": "超低壓太陽能板(§8ULV§r)", + "item.gtceu.ulv_tantalum_battery.tooltip": "§7可充電電池", + "item.gtceu.ulv_voltage_coil": "超低壓線圈(§8ULV§r)", + "item.gtceu.ulv_voltage_coil.tooltip": "初級線圈", + "item.gtceu.universal_fluid_cell": "通用單元", + "item.gtceu.uv_battery_hull": "大型超能矽岩電池外殼", + "item.gtceu.uv_battery_hull.tooltip": "§7一個空的§3UV§7電池外殼", + "item.gtceu.uv_conveyor_module": "§3UV§r傳送帶", + "item.gtceu.uv_electric_motor": "§3UV§r電動馬達", + "item.gtceu.uv_electric_piston": "§3UV§r電力活塞", + "item.gtceu.uv_electric_pump": "§3UV§r電動泵", + "item.gtceu.uv_emitter": "§3UV§r發射器", + "item.gtceu.uv_field_generator": "§3UV§r力場發生器", + "item.gtceu.uv_fluid_regulator": "§3UV§r流體調節器", + "item.gtceu.uv_naquadria_battery": "大型超能矽岩電池", + "item.gtceu.uv_naquadria_battery.tooltip": "§7可充電電池", + "item.gtceu.uv_robot_arm": "§3UV§r機械臂", + "item.gtceu.uv_sensor": "§3UV§r感測器", + "item.gtceu.uv_solar_panel": "極限壓太陽能板(§3UV§r)", + "item.gtceu.uv_voltage_coil": "極限壓線圈(§3UV§r)", + "item.gtceu.uv_voltage_coil.tooltip": "終極線圈", + "item.gtceu.uxv_conveyor_module": "§eUXV§r傳送帶", + "item.gtceu.uxv_electric_motor": "§eUXV§r電動馬達", + "item.gtceu.uxv_electric_piston": "§eUXV§r電力活塞", + "item.gtceu.uxv_electric_pump": "§eUXV§r§r電動泵", + "item.gtceu.uxv_emitter": "§eUXV§r發射器", + "item.gtceu.uxv_field_generator": "§eUXV§r力場發生器", + "item.gtceu.uxv_fluid_regulator": "§eUXV§r流體調節器", + "item.gtceu.uxv_robot_arm": "§eUXV§r機械臂", + "item.gtceu.uxv_sensor": "§eUXV§r感測器", + "item.gtceu.uxv_voltage_coil.tooltip": "史詩線圈", + "item.gtceu.vacuum_tube": "真空管", + "item.gtceu.vacuum_tube.tooltip.0": "§7技術上是二極體", + "item.gtceu.vacuum_tube.tooltip.1": "§cULV等級", + "item.gtceu.wetware_circuit_board": "溼件電路基板", + "item.gtceu.wetware_circuit_board.tooltip": "§7維生之板", + "item.gtceu.wetware_printed_circuit_board": "溼件印刷電路基板", + "item.gtceu.wetware_printed_circuit_board.tooltip": "§7維生之板", + "item.gtceu.wetware_processor": "溼件處理器", + "item.gtceu.wetware_processor.tooltip.0": "§7祂在看我嗎?", + "item.gtceu.wetware_processor.tooltip.1": "§4LuV級電路", + "item.gtceu.wetware_processor_assembly": "溼件處理器叢集", + "item.gtceu.wetware_processor_assembly.tooltip.0": "§7可以玩Minecraft", + "item.gtceu.wetware_processor_assembly.tooltip.1": "§4ZPM級電路", + "item.gtceu.wetware_processor_computer": "溼件處理器超級電腦", + "item.gtceu.wetware_processor_computer.tooltip.0": "§7肉體與機器的終極結合", + "item.gtceu.wetware_processor_computer.tooltip.1": "§4UV級電路", + "item.gtceu.wetware_processor_mainframe": "溼件處理器主機", + "item.gtceu.wetware_processor_mainframe.tooltip.0": "§7千載獨步,惟公一人", + "item.gtceu.wetware_processor_mainframe.tooltip.1": "§4UHV級電路", + "item.gtceu.wheat_dust": "麵粉", + "item.gtceu.white_dye_spray_can": "噴漆罐(白色)", + "item.gtceu.wire_extruder_mold": "擠壓模具(導線)", + "item.gtceu.wire_extruder_mold.tooltip": "§7用來製作導線的擠壓模具", + "item.gtceu.wood_bolt": "短木棍", + "item.gtceu.wood_dust": "木漿", + "item.gtceu.wood_plate": "木板", + "item.gtceu.yellow_dye_spray_can": "噴漆罐(黃色)", + "item.gtceu.yellow_glass_lens": "玻璃透鏡(黃色)", + "item.gtceu.zero_point_module": "零點模組", + "item.gtceu.zpm_battery_hull": "中型超能矽岩電池外殼", + "item.gtceu.zpm_battery_hull.tooltip": "§7一個空的§fZPM§7電池外殼", + "item.gtceu.zpm_conveyor_module": "§cZPM§r傳送帶", + "item.gtceu.zpm_electric_motor": "§cZPM§r電動馬達", + "item.gtceu.zpm_electric_piston": "§cZPM§r電力活塞", + "item.gtceu.zpm_electric_pump": "§cZPM§r電動泵", + "item.gtceu.zpm_emitter": "§cZPM§r發射器", + "item.gtceu.zpm_field_generator": "§cZPM§r力場發生器", + "item.gtceu.zpm_fluid_regulator": "§cZPM§r流體調節器", + "item.gtceu.zpm_naquadria_battery": "中型超能矽岩電池", + "item.gtceu.zpm_naquadria_battery.tooltip": "§7可充電電池", + "item.gtceu.zpm_robot_arm": "§cZPM§r機械臂", + "item.gtceu.zpm_sensor": "§cZPM§r感測器", + "item.gtceu.zpm_solar_panel": "零點壓太陽能板(§cZPM§r)", + "item.gtceu.zpm_voltage_coil": "零點壓線圈(§cZPM§r)", + "item.gtceu.zpm_voltage_coil.tooltip": "超級線圈", + "item.invalid.name": "無效物品", + "item.netherrack_nether_quartz": "地獄石英礦", + "item.toggle.advanced.info.tooltip": "§8<按住Shift查閱已儲存設定資訊>", + "itemGroup.gtceu.decoration": "格雷科技 | 裝飾方塊", + "itemGroup.gtceu.item": "格雷科技 | 物品", + "itemGroup.gtceu.machine": "格雷科技 | 機器", + "itemGroup.gtceu.material_block": "格雷科技 | 材料-方塊", + "itemGroup.gtceu.material_fluid": "格雷科技 | 材料-流體容器", + "itemGroup.gtceu.material_item": "格雷科技 | 材料-物品", + "itemGroup.gtceu.material_pipe": "格雷科技 | 材料-管道", + "itemGroup.gtceu.tool": "格雷科技 | 工具", + "ldlib.gui.editor.group.widget.gtm_container": "GTM容器小部件", + "ldlib.gui.editor.register.editor.gtceu.mui": "機器UI專案", + "ldlib.gui.editor.register.editor.gtceu.rtui": "配方型別UI專案", + "ldlib.gui.editor.register.editor.gtceu.template_tab": "模板", + "ldlib.gui.editor.register.widget.container.gtm_fluid_slot": "GTM流體槽位", + "ldlib.gui.editor.register.widget.container.gtm_item_slot": "GTM物品槽位", + "ldlib.gui.editor.register.widget.container.gtm_phantom_fluid_slot": "GTM幻影流體槽位", + "ldlib.gui.editor.register.widget.container.gtm_phantom_item_slot": "GTM幻影物品槽位", + "mataarmor.hud.supply_mode": "供能模式:%s", + "material.gtceu.acetic_acid": "乙酸", + "material.gtceu.acetic_anhydride": "乙酸酐", + "material.gtceu.acetone": "丙酮", + "material.gtceu.acidic_enriched_naquadah_solution": "酸性富集矽岩溶液", + "material.gtceu.acidic_naquadria_solution": "酸性超能矽岩溶液", + "material.gtceu.acidic_osmium_solution": "酸性鋨溶液", + "material.gtceu.actinium": "錒", + "material.gtceu.activated_carbon": "活性炭", + "material.gtceu.agar": "瓊脂", + "material.gtceu.air": "空氣", + "material.gtceu.allyl_chloride": "烯丙基氯", + "material.gtceu.almandine": "鐵鋁榴石", + "material.gtceu.aluminium": "鋁", + "material.gtceu.aluminium_sulfite": "亞硫酸鋁", + "material.gtceu.alunite": "明礬石", + "material.gtceu.americium": "鋂", + "material.gtceu.amethyst": "紫水晶", + "material.gtceu.aminophenol": "氨基苯酚", + "material.gtceu.ammonia": "氨", + "material.gtceu.ammonium_chloride": "氯化銨", + "material.gtceu.ammonium_formate": "甲酸銨", + "material.gtceu.andesite": "安山岩", + "material.gtceu.andradite": "鈣鐵榴石", + "material.gtceu.annealed_copper": "退火銅", + "material.gtceu.antimony": "銻", + "material.gtceu.antimony_trifluoride": "三氟化銻", + "material.gtceu.antimony_trioxide": "三氧化二銻", + "material.gtceu.apatite": "磷灰石", + "material.gtceu.aqua_regia": "王水", + "material.gtceu.argon": "氬", + "material.gtceu.arsenic": "砷", + "material.gtceu.arsenic_trioxide": "三氧化二砷", + "material.gtceu.asbestos": "石棉", + "material.gtceu.ash": "灰燼", + "material.gtceu.astatine": "砈", + "material.gtceu.bacteria": "細菌", + "material.gtceu.bacterial_sludge": "細菌漿液", + "material.gtceu.barite": "重晶石", + "material.gtceu.barium": "鋇", + "material.gtceu.barium_sulfide": "硫化鋇", + "material.gtceu.basalt": "玄武岩", + "material.gtceu.basaltic_mineral_sand": "玄武岩礦砂", + "material.gtceu.bastnasite": "氟碳鑭鈰", + "material.gtceu.battery_alloy": "電池合金", + "material.gtceu.bauxite": "鋁土", + "material.gtceu.bauxite_slag": "鋁土礦渣", + "material.gtceu.bauxite_sludge": "鋁土泥渣", + "material.gtceu.bauxite_slurry": "鋁土漿液", + "material.gtceu.bentonite": "膨潤土", + "material.gtceu.benzene": "苯", + "material.gtceu.berkelium": "鉳", + "material.gtceu.beryllium": "鈹", + "material.gtceu.bio_diesel": "生物柴油", + "material.gtceu.biomass": "生物質", + "material.gtceu.biotite": "黑雲母", + "material.gtceu.biphenyl": "聯苯", + "material.gtceu.bismuth": "鉍", + "material.gtceu.bismuth_bronze": "鉍青銅", + "material.gtceu.bisphenol_a": "雙酚A", + "material.gtceu.black_bronze": "黑青銅", + "material.gtceu.black_dye": "黑色染料", + "material.gtceu.black_steel": "黑鋼", + "material.gtceu.blackstone": "黑石", + "material.gtceu.blaze": "烈焰", + "material.gtceu.blue_alloy": "藍色合金", + "material.gtceu.blue_dye": "藍色染料", + "material.gtceu.blue_steel": "藍鋼", + "material.gtceu.blue_topaz": "藍黃玉", + "material.gtceu.bohrium": "𨨏", + "material.gtceu.bone": "骨頭", + "material.gtceu.borax": "硼砂", + "material.gtceu.bornite": "斑銅", + "material.gtceu.boron": "硼", + "material.gtceu.borosilicate_glass": "硼矽玻璃", + "material.gtceu.brass": "黃銅", + "material.gtceu.brick": "磚", + "material.gtceu.bromine": "溴", + "material.gtceu.bronze": "青銅", + "material.gtceu.brown_dye": "棕色染料", + "material.gtceu.butadiene": "丁二烯", + "material.gtceu.butane": "丁烷", + "material.gtceu.butene": "丁烯", + "material.gtceu.butyraldehyde": "丁醛", + "material.gtceu.cadmium": "鎘", + "material.gtceu.caesium": "銫", + "material.gtceu.calcite": "方解石", + "material.gtceu.calcium": "鈣", + "material.gtceu.calcium_carbonate": "碳酸鈣", + "material.gtceu.calcium_chloride": "氯化鈣", + "material.gtceu.calcium_ferrocyanide": "亞鐵氰化鈣", + "material.gtceu.calcium_hydroxide": "氫氧化鈣", + "material.gtceu.calcium_phosphide": "磷化鈣", + "material.gtceu.californium": "鉲", + "material.gtceu.caprolactam": "己內醯胺", + "material.gtceu.carbon": "碳", + "material.gtceu.carbon_dioxide": "二氧化碳", + "material.gtceu.carbon_monoxide": "一氧化碳", + "material.gtceu.cassiterite": "錫石", + "material.gtceu.cassiterite_sand": "錫石礦砂", + "material.gtceu.cerium": "鈰", + "material.gtceu.certus_quartz": "賽特斯石英", + "material.gtceu.cetane_boosted_diesel": "高十六烷值柴油", + "material.gtceu.chalcocite": "輝銅", + "material.gtceu.chalcopyrite": "黃銅", + "material.gtceu.charcoal": "木炭", + "material.gtceu.charcoal_byproducts": "木炭副產物", + "material.gtceu.chlorine": "氯", + "material.gtceu.chlorobenzene": "氯苯", + "material.gtceu.chloroform": "氯仿", + "material.gtceu.chloromethane": "氯甲烷", + "material.gtceu.chromite": "鉻鐵", + "material.gtceu.chromium": "鉻", + "material.gtceu.chromium_trioxide": "三氧化鉻", + "material.gtceu.cinnabar": "硃砂", + "material.gtceu.clay": "黏土", + "material.gtceu.coal": "煤炭", + "material.gtceu.coal_gas": "煤氣", + "material.gtceu.coal_tar": "煤焦油", + "material.gtceu.cobalt": "鈷", + "material.gtceu.cobalt_brass": "鈷黃銅", + "material.gtceu.cobalt_oxide": "氧化鈷", + "material.gtceu.cobaltite": "輝鈷", + "material.gtceu.cocoa": "可可", + "material.gtceu.coke": "焦煤", + "material.gtceu.collagen": "膠原", + "material.gtceu.concrete": "混凝土", + "material.gtceu.construction_foam": "建築泡沫", + "material.gtceu.cooperite": "謝爾頓", + "material.gtceu.copernicium": "鎶", + "material.gtceu.copper": "銅", + "material.gtceu.cracked_bauxite_slurry": "裂解鋁土漿液", + "material.gtceu.creosote": "雜酚油", + "material.gtceu.cumene": "異丙苯", + "material.gtceu.cupric_oxide": "氧化銅", + "material.gtceu.cupronickel": "白銅", + "material.gtceu.curium": "鋦", + "material.gtceu.cyan_dye": "青色染料", + "material.gtceu.cyclohexane": "環己烷", + "material.gtceu.cyclohexanone_oxime": "環己酮肟", + "material.gtceu.damascus_steel": "大馬士革鋼", + "material.gtceu.dark_ash": "黑色灰燼", + "material.gtceu.darmstadtium": "鐽", + "material.gtceu.decalcified_bauxite_sludge": "脫鈣鋁土泥渣", + "material.gtceu.deepslate": "深板岩", + "material.gtceu.depleted_uranium_hexafluoride": "枯竭六氟化鈾", + "material.gtceu.deuterium": "氘", + "material.gtceu.diaminobenzidine": "二氨基聯苯胺", + "material.gtceu.diamond": "鑽石", + "material.gtceu.diatomite": "矽藻土", + "material.gtceu.dichlorobenzene": "二氯苯", + "material.gtceu.dichlorobenzidine": "二氯聯苯胺", + "material.gtceu.dichloroethane": "二氯乙烷", + "material.gtceu.diesel": "柴油", + "material.gtceu.diethylenetriamine": "二乙烯三胺", + "material.gtceu.diethylenetriamine_pentaacetonitrile": "二乙烯三胺五乙腈", + "material.gtceu.diethylenetriaminepentaacetic_acid": "二乙烯三胺五乙酸", + "material.gtceu.diluted_hydrochloric_acid": "稀鹽酸", + "material.gtceu.diluted_sulfuric_acid": "稀硫酸", + "material.gtceu.dimethylamine": "二甲胺", + "material.gtceu.dimethylbenzene": "二甲苯", + "material.gtceu.dimethyldichlorosilane": "二甲基二氯矽烷", + "material.gtceu.dimethylhydrazine": "二甲基肼", + "material.gtceu.dinitrogen_tetroxide": "四氧化二氮", + "material.gtceu.diorite": "閃長岩", + "material.gtceu.diphenyl_isophthalate": "間苯二甲酸二苯酯", + "material.gtceu.dissolved_calcium_acetate": "乙酸鈣溶液", + "material.gtceu.distilled_water": "蒸餾水", + "material.gtceu.drilling_fluid": "鑽井液", + "material.gtceu.dubnium": "𨧀", + "material.gtceu.duranium": "鏗鈾", + "material.gtceu.dysprosium": "鏑", + "material.gtceu.echo_shard": "回聲碎片", + "material.gtceu.einsteinium": "鑀", + "material.gtceu.electrotine": "藍石", + "material.gtceu.electrum": "琥珀金", + "material.gtceu.emerald": "綠寶石", + "material.gtceu.ender_air": "終界空氣", + "material.gtceu.ender_eye": "終界之眼", + "material.gtceu.ender_pearl": "終界珍珠", + "material.gtceu.endstone": "終界石", + "material.gtceu.enriched_bacterial_sludge": "富集細菌漿液", + "material.gtceu.enriched_naquadah": "富集矽岩", + "material.gtceu.enriched_naquadah_solution": "富集矽岩溶液", + "material.gtceu.enriched_naquadah_sulfate": "硫酸富集矽岩", + "material.gtceu.enriched_naquadah_trinium_europium_duranide": "富集矽岩凱金銪鏗鈾合金", + "material.gtceu.enriched_naquadah_waste": "富集矽岩廢液", + "material.gtceu.enriched_uranium_hexafluoride": "富集六氟化鈾", + "material.gtceu.epichlorohydrin": "環氧氯丙烷", + "material.gtceu.epoxy": "環氧樹脂", + "material.gtceu.erbium": "鉺", + "material.gtceu.ethane": "乙烷", + "material.gtceu.ethanol": "乙醇", + "material.gtceu.ethenone": "乙烯酮", + "material.gtceu.ethyl_tertbutyl_ether": "乙基叔丁基醚", + "material.gtceu.ethylbenzene": "乙苯", + "material.gtceu.ethylene": "乙烯", + "material.gtceu.europium": "銪", + "material.gtceu.fermented_biomass": "發酵生物質", + "material.gtceu.fermium": "鐨", + "material.gtceu.ferrite_mixture": "鐵氧體混合物", + "material.gtceu.ferrosilite": "鐵輝石", + "material.gtceu.fireclay": "耐火黏土", + "material.gtceu.fish_oil": "魚油", + "material.gtceu.flerovium": "鈇", + "material.gtceu.flint": "燧石", + "material.gtceu.fluorine": "氟", + "material.gtceu.fluoroantimonic_acid": "氟銻酸", + "material.gtceu.formaldehyde": "甲醛", + "material.gtceu.formamide": "甲醯胺", + "material.gtceu.formic_acid": "甲酸", + "material.gtceu.francium": "鍅", + "material.gtceu.fullers_earth": "漂白土", + "material.gtceu.gadolinium": "釓", + "material.gtceu.galena": "方鉛", + "material.gtceu.gallium": "鎵", + "material.gtceu.gallium_arsenide": "砷化鎵", + "material.gtceu.gallium_sulfide": "硫化鎵", + "material.gtceu.garnet_sand": "石榴石砂", + "material.gtceu.garnierite": "矽鎂鎳", + "material.gtceu.gasoline": "汽油", + "material.gtceu.gelatin": "明膠", + "material.gtceu.gelatin_mixture": "明膠混合物", + "material.gtceu.germanium": "鍺", + "material.gtceu.glass": "玻璃", + "material.gtceu.glauconite_sand": "海綠石砂", + "material.gtceu.glowstone": "螢石", + "material.gtceu.glue": "膠水", + "material.gtceu.glycerol": "甘油", + "material.gtceu.glyceryl_trinitrate": "硝酸甘油", + "material.gtceu.glycolonitrile": "乙腈", + "material.gtceu.goethite": "針鐵", + "material.gtceu.gold": "金", + "material.gtceu.granite": "花崗岩", + "material.gtceu.granite_red": "紅花崗岩", + "material.gtceu.granitic_mineral_sand": "花崗岩礦砂", + "material.gtceu.graphene": "石墨烯", + "material.gtceu.graphite": "石墨", + "material.gtceu.gray_dye": "灰色染料", + "material.gtceu.green_dye": "綠色染料", + "material.gtceu.green_sapphire": "綠色藍寶石", + "material.gtceu.green_sapphire_slurry": "綠色藍寶石漿液", + "material.gtceu.grossular": "鈣鋁榴石", + "material.gtceu.gunpowder": "火藥", + "material.gtceu.gypsum": "石膏", + "material.gtceu.hafnium": "鉿", + "material.gtceu.hassium": "𨭆", + "material.gtceu.hastelloy_c_276": "哈斯特洛依合金 C-276", + "material.gtceu.hastelloy_x": "哈斯特洛依合金-X", + "material.gtceu.heavy_fuel": "重燃油", + "material.gtceu.helium": "氦", + "material.gtceu.helium_3": "氦-3", + "material.gtceu.hematite": "赤鐵", + "material.gtceu.high_octane_gasoline": "高辛烷值汽油", + "material.gtceu.holmium": "鈥", + "material.gtceu.hsla_steel": "HSLA鋼", + "material.gtceu.hsse": "高速鋼-E", + "material.gtceu.hssg": "高速鋼-G", + "material.gtceu.hsss": "高速鋼-S", + "material.gtceu.hydro_cracked_butadiene": "加氫裂解丁二烯", + "material.gtceu.hydro_cracked_butane": "加氫裂解丁烷", + "material.gtceu.hydro_cracked_butene": "加氫裂解丁烯", + "material.gtceu.hydro_cracked_ethane": "加氫裂解乙烷", + "material.gtceu.hydro_cracked_ethylene": "加氫裂解乙烯", + "material.gtceu.hydro_cracked_propane": "加氫裂解丙烷", + "material.gtceu.hydro_cracked_propene": "加氫裂解丙烯", + "material.gtceu.hydrochloric_acid": "鹽酸", + "material.gtceu.hydrofluoric_acid": "氫氟酸", + "material.gtceu.hydrogen": "氫", + "material.gtceu.hydrogen_cyanide": "氰化氫", + "material.gtceu.hydrogen_peroxide": "過氧化氫", + "material.gtceu.hydrogen_sulfide": "硫化氫", + "material.gtceu.hypochlorous_acid": "次氯酸", + "material.gtceu.ice": "冰", + "material.gtceu.ilmenite": "鈦鐵", + "material.gtceu.ilmenite_slag": "鈦鐵礦渣", + "material.gtceu.impure_enriched_naquadah_solution": "含雜富集矽岩溶液", + "material.gtceu.impure_naquadria_solution": "含雜超能矽岩溶液", + "material.gtceu.incoloy_ma_956": "耐熱鉻鐵合金 MA-956", + "material.gtceu.indium": "銦", + "material.gtceu.indium_concentrate": "銦富集溶液", + "material.gtceu.indium_gallium_phosphide": "磷化銦鎵", + "material.gtceu.indium_phosphide": "磷化銦", + "material.gtceu.indium_tin_barium_titanium_cuprate": "銦錫鋇鈦銅氧合金", + "material.gtceu.inert_metal_mixture": "惰性金屬混合物", + "material.gtceu.invar": "殷鋼", + "material.gtceu.iodine": "碘", + "material.gtceu.iridium": "銥", + "material.gtceu.iridium_chloride": "氯化銥", + "material.gtceu.iridium_metal_residue": "銥金屬渣", + "material.gtceu.iron": "鐵", + "material.gtceu.iron_ii_chloride": "氯化亞鐵", + "material.gtceu.iron_iii_chloride": "氯化鐵", + "material.gtceu.isoprene": "異戊二烯", + "material.gtceu.kanthal": "坎塔爾合金", + "material.gtceu.krypton": "氪", + "material.gtceu.kyanite": "藍晶石", + "material.gtceu.lanthanum": "鑭", + "material.gtceu.lapis": "青金石", + "material.gtceu.lapotron": "蘭波頓", + "material.gtceu.lava": "熔岩", + "material.gtceu.lawrencium": "鐒", + "material.gtceu.lazurite": "藍金石", + "material.gtceu.lead": "鉛", + "material.gtceu.lead_zinc_solution": "鉛鋅溶液", + "material.gtceu.lepidolite": "鋰雲母", + "material.gtceu.light_blue_dye": "淺藍色染料", + "material.gtceu.light_fuel": "輕燃油", + "material.gtceu.light_gray_dye": "淺灰色染料", + "material.gtceu.lightly_hydro_cracked_gas": "輕度加氫裂解煉油氣", + "material.gtceu.lightly_hydro_cracked_heavy_fuel": "輕度加氫裂解重燃油", + "material.gtceu.lightly_hydro_cracked_light_fuel": "輕度加氫裂解輕燃油", + "material.gtceu.lightly_hydro_cracked_naphtha": "輕度加氫裂解石腦油", + "material.gtceu.lightly_steam_cracked_gas": "輕度蒸汽裂解煉油氣", + "material.gtceu.lightly_steam_cracked_heavy_fuel": "輕度蒸汽裂解重燃油", + "material.gtceu.lightly_steam_cracked_light_fuel": "輕度蒸汽裂解輕燃油", + "material.gtceu.lightly_steam_cracked_naphtha": "輕度蒸汽裂解石腦油", + "material.gtceu.lime_dye": "淺綠色染料", + "material.gtceu.liquid_air": "液態空氣", + "material.gtceu.liquid_ender_air": "液態終界空氣", + "material.gtceu.liquid_nether_air": "液態地獄空氣", + "material.gtceu.lithium": "鋰", + "material.gtceu.lithium_chloride": "氯化鋰", + "material.gtceu.livermorium": "鉝", + "material.gtceu.lpg": "液化石油氣", + "material.gtceu.lubricant": "潤滑油", + "material.gtceu.lutetium": "鎦", + "material.gtceu.magenta_dye": "洋紅色染料", + "material.gtceu.magnalium": "鎂鋁合金", + "material.gtceu.magnesia": "氧化鎂", + "material.gtceu.magnesite": "菱鎂", + "material.gtceu.magnesium": "鎂", + "material.gtceu.magnesium_chloride": "氯化鎂", + "material.gtceu.magnesium_diboride": "二硼化鎂", + "material.gtceu.magnetic_iron": "磁化鐵", + "material.gtceu.magnetic_neodymium": "磁化釹", + "material.gtceu.magnetic_samarium": "磁化釤", + "material.gtceu.magnetic_steel": "磁化鋼", + "material.gtceu.magnetite": "磁鐵", + "material.gtceu.malachite": "孔雀石", + "material.gtceu.manganese": "錳", + "material.gtceu.manganese_phosphide": "磷化錳", + "material.gtceu.maraging_steel_300": "麻時效鋼-300", + "material.gtceu.marble": "大理石", + "material.gtceu.massicot": "鉛黃", + "material.gtceu.mc_guffium_239": "麥高芬-239", + "material.gtceu.meat": "肉", + "material.gtceu.meitnerium": "䥑", + "material.gtceu.mendelevium": "鍆", + "material.gtceu.mercury": "汞", + "material.gtceu.mercury_barium_calcium_cuprate": "汞鋇鈣銅氧化物", + "material.gtceu.metal_mixture": "金屬混合物", + "material.gtceu.methane": "甲烷", + "material.gtceu.methanol": "甲醇", + "material.gtceu.methyl_acetate": "乙酸甲酯", + "material.gtceu.mica": "雲母", + "material.gtceu.milk": "牛奶", + "material.gtceu.mirabilite": "芒硝", + "material.gtceu.molybdenite": "輝鉬", + "material.gtceu.molybdenum": "鉬", + "material.gtceu.molybdenum_disilicide": "二矽化鉬", + "material.gtceu.monazite": "獨居石", + "material.gtceu.monochloramine": "氯胺", + "material.gtceu.moscovium": "鏌", + "material.gtceu.mutagen": "誘變劑", + "material.gtceu.naphtha": "石腦油", + "material.gtceu.naphthalene": "萘", + "material.gtceu.naquadah": "矽岩", + "material.gtceu.naquadah_alloy": "矽岩合金", + "material.gtceu.naquadria": "超能矽岩", + "material.gtceu.naquadria_solution": "超能矽岩溶液", + "material.gtceu.naquadria_sulfate": "硫酸超能矽岩", + "material.gtceu.naquadria_waste": "超能矽岩廢液", + "material.gtceu.natural_gas": "天然氣", + "material.gtceu.neodymium": "釹", + "material.gtceu.neon": "氖", + "material.gtceu.neptunium": "錼", + "material.gtceu.nether_air": "地獄空氣", + "material.gtceu.nether_quartz": "地獄石英", + "material.gtceu.nether_star": "地獄之星", + "material.gtceu.netherite": "獄髓", + "material.gtceu.netherrack": "地獄岩", + "material.gtceu.neutronium": "中子素", + "material.gtceu.nichrome": "鎳鉻合金", + "material.gtceu.nickel": "鎳", + "material.gtceu.nickel_zinc_ferrite": "鎳鋅鐵氧體", + "material.gtceu.nihonium": "鉨", + "material.gtceu.niobium": "鈮", + "material.gtceu.niobium_nitride": "氮化鈮", + "material.gtceu.niobium_titanium": "鈮鈦合金", + "material.gtceu.nitration_mixture": "硝酸混酸", + "material.gtceu.nitric_acid": "硝酸", + "material.gtceu.nitric_oxide": "一氧化氮", + "material.gtceu.nitrobenzene": "硝基苯", + "material.gtceu.nitrochlorobenzene": "硝基氯苯", + "material.gtceu.nitrogen": "氮", + "material.gtceu.nitrogen_dioxide": "二氧化氮", + "material.gtceu.nitrosyl_chloride": "亞硝醯氯", + "material.gtceu.nitrous_oxide": "一氧化二氮", + "material.gtceu.nobelium": "鍩", + "material.gtceu.obsidian": "黑曜石", + "material.gtceu.octane": "辛烷", + "material.gtceu.oganesson": "鿫", + "material.gtceu.oil": "石油", + "material.gtceu.oil_heavy": "重油", + "material.gtceu.oil_light": "輕油", + "material.gtceu.oil_medium": "原油", + "material.gtceu.oilsands": "油砂", + "material.gtceu.olivine": "橄欖石", + "material.gtceu.opal": "貓眼石", + "material.gtceu.orange_dye": "橙色染料", + "material.gtceu.osmiridium": "銥鋨合金", + "material.gtceu.osmium": "鋨", + "material.gtceu.osmium_tetroxide": "四氧化鋨", + "material.gtceu.oxygen": "氧", + "material.gtceu.palladium": "鈀", + "material.gtceu.palladium_raw": "粗鈀", + "material.gtceu.paper": "紙", + "material.gtceu.paracetamol": "對乙醯氨基酚", + "material.gtceu.pcb_coolant": "多氯聯苯冷卻液 ", + "material.gtceu.pentlandite": "鎳黃鐵", + "material.gtceu.perlite": "珍珠岩", + "material.gtceu.phenol": "苯酚", + "material.gtceu.phosphate": "磷酸鹽", + "material.gtceu.phosphoric_acid": "磷酸", + "material.gtceu.phosphorus": "磷", + "material.gtceu.phosphorus_pentoxide": "五氧化二磷", + "material.gtceu.phthalic_acid": "鄰苯二甲酸", + "material.gtceu.pink_dye": "粉紅色染料", + "material.gtceu.pitchblende": "瀝青鈾", + "material.gtceu.platinum": "鉑", + "material.gtceu.platinum_group_sludge": "鉑系礦泥", + "material.gtceu.platinum_raw": "粗鉑", + "material.gtceu.platinum_sludge_residue": "鉑泥渣", + "material.gtceu.plutonium": "鈽", + "material.gtceu.plutonium_241": "鈽-241", + "material.gtceu.pollucite": "銫榴石", + "material.gtceu.polonium": "釙", + "material.gtceu.polybenzimidazole": "聚苯並咪唑", + "material.gtceu.polycaprolactam": "聚己內醯胺", + "material.gtceu.polychlorinated_biphenyl": "多氯聯苯", + "material.gtceu.polydimethylsiloxane": "聚二甲基矽氧烷", + "material.gtceu.polyethylene": "聚乙烯", + "material.gtceu.polyphenylene_sulfide": "聚苯硫醚", + "material.gtceu.polytetrafluoroethylene": "聚四氟乙烯", + "material.gtceu.polyvinyl_acetate": "聚乙酸乙烯酯", + "material.gtceu.polyvinyl_butyral": "聚乙烯醇縮丁醛", + "material.gtceu.polyvinyl_chloride": "聚氯乙烯", + "material.gtceu.potash": "鉀鹼", + "material.gtceu.potassium": "鉀", + "material.gtceu.potassium_carbonate": "碳酸鉀", + "material.gtceu.potassium_cyanide": "氰化鉀", + "material.gtceu.potassium_dichromate": "重鉻酸鉀", + "material.gtceu.potassium_feldspar": "鉀長石", + "material.gtceu.potassium_ferrocyanide": "亞鐵氰化鉀", + "material.gtceu.potassium_hydroxide": "氫氧化鉀", + "material.gtceu.potassium_iodide": "碘化鉀", + "material.gtceu.potassium_sulfate": "硫酸鉀", + "material.gtceu.potin": "粗青銅合金", + "material.gtceu.powellite": "鉬鈣", + "material.gtceu.praseodymium": "鐠", + "material.gtceu.promethium": "鉕", + "material.gtceu.propane": "丙烷", + "material.gtceu.propene": "丙烯", + "material.gtceu.protactinium": "鏷", + "material.gtceu.prussian_blue": "普魯士藍", + "material.gtceu.purple_dye": "紫色染料", + "material.gtceu.pyrite": "黃鐵", + "material.gtceu.pyrochlore": "燒綠石", + "material.gtceu.pyrolusite": "軟錳", + "material.gtceu.pyrope": "鎂鋁榴石", + "material.gtceu.quartz_sand": "石英砂", + "material.gtceu.quartzite": "石英岩", + "material.gtceu.quicklime": "生石灰", + "material.gtceu.rad_away": "消輻寧", + "material.gtceu.radium": "鐳", + "material.gtceu.radon": "氡", + "material.gtceu.rare_earth": "稀土", + "material.gtceu.rarest_metal_mixture": "稀有金屬混合物", + "material.gtceu.raw_gasoline": "粗汽油", + "material.gtceu.raw_growth_medium": "培養基原液", + "material.gtceu.raw_rubber": "生橡膠", + "material.gtceu.raw_styrene_butadiene_rubber": "生丁苯橡膠", + "material.gtceu.realgar": "雄黃", + "material.gtceu.red_alloy": "紅色合金", + "material.gtceu.red_dye": "紅色染料", + "material.gtceu.red_garnet": "紅石榴石", + "material.gtceu.red_steel": "紅鋼", + "material.gtceu.redrock": "紅岩", + "material.gtceu.redstone": "紅石", + "material.gtceu.refinery_gas": "煉油氣", + "material.gtceu.reinforced_epoxy_resin": "強化環氧樹脂", + "material.gtceu.rhenium": "錸", + "material.gtceu.rhodium": "銠", + "material.gtceu.rhodium_plated_palladium": "鍍銠鈀", + "material.gtceu.rhodium_sulfate": "硫酸銠", + "material.gtceu.rock_salt": "岩鹽", + "material.gtceu.rocket_fuel": "火箭燃料", + "material.gtceu.roentgenium": "錀", + "material.gtceu.rose_gold": "玫瑰金", + "material.gtceu.rtm_alloy": "釕鎢鉬合金", + "material.gtceu.rubber": "橡膠", + "material.gtceu.rubidium": "銣", + "material.gtceu.ruby": "紅寶石", + "material.gtceu.ruby_slurry": "紅寶石漿液", + "material.gtceu.ruridit": "釕銥合金", + "material.gtceu.ruthenium": "釕", + "material.gtceu.ruthenium_tetroxide": "四氧化釕", + "material.gtceu.ruthenium_trinium_americium_neutronate": "釕凱金鋂中子素氧化物", + "material.gtceu.rutherfordium": "鑪", + "material.gtceu.rutile": "金紅石", + "material.gtceu.salt": "鹽", + "material.gtceu.salt_water": "鹽水", + "material.gtceu.saltpeter": "硝石", + "material.gtceu.samarium": "釤", + "material.gtceu.samarium_iron_arsenic_oxide": "釤鐵砷氧化物", + "material.gtceu.sapphire": "藍寶石", + "material.gtceu.sapphire_slurry": "藍寶石漿液", + "material.gtceu.scandium": "鈧", + "material.gtceu.scheelite": "白鎢", + "material.gtceu.sculk": "伏聆", + "material.gtceu.seaborgium": "𨭎", + "material.gtceu.seed_oil": "種子油", + "material.gtceu.selenium": "硒", + "material.gtceu.severely_hydro_cracked_gas": "重度加氫裂解煉油氣", + "material.gtceu.severely_hydro_cracked_heavy_fuel": "重度加氫裂解重燃油", + "material.gtceu.severely_hydro_cracked_light_fuel": "重度加氫裂解輕燃油", + "material.gtceu.severely_hydro_cracked_naphtha": "重度加氫裂解石腦油", + "material.gtceu.severely_steam_cracked_gas": "重度蒸汽裂解煉油氣", + "material.gtceu.severely_steam_cracked_heavy_fuel": "重度蒸汽裂解重燃油", + "material.gtceu.severely_steam_cracked_light_fuel": "重度蒸汽裂解輕燃油", + "material.gtceu.severely_steam_cracked_naphtha": "重度蒸汽裂解石腦油", + "material.gtceu.silicon": "矽", + "material.gtceu.silicon_dioxide": "二氧化矽", + "material.gtceu.silicone_rubber": "矽橡膠", + "material.gtceu.silver": "銀", + "material.gtceu.soapstone": "皂石", + "material.gtceu.soda_ash": "純鹼", + "material.gtceu.sodalite": "方鈉石", + "material.gtceu.sodium": "鈉", + "material.gtceu.sodium_bicarbonate": "碳酸氫鈉", + "material.gtceu.sodium_bisulfate": "硫酸氫鈉", + "material.gtceu.sodium_hydroxide": "氫氧化鈉", + "material.gtceu.sodium_nitrite": "亞硝酸鈉", + "material.gtceu.sodium_persulfate": "過硫酸鈉", + "material.gtceu.sodium_potassium": "鈉鉀合金", + "material.gtceu.sodium_sulfide": "硫化鈉", + "material.gtceu.soldering_alloy": "焊錫", + "material.gtceu.spessartine": "錳鋁榴石", + "material.gtceu.sphalerite": "閃鋅", + "material.gtceu.spodumene": "鋰輝石", + "material.gtceu.stainless_steel": "不鏽鋼", + "material.gtceu.steam": "蒸汽", + "material.gtceu.steam_cracked_butadiene": "蒸汽裂解丁二烯", + "material.gtceu.steam_cracked_butane": "蒸汽裂解丁烷", + "material.gtceu.steam_cracked_butene": "蒸汽裂解丁烯", + "material.gtceu.steam_cracked_ethane": "蒸汽裂解乙烷", + "material.gtceu.steam_cracked_ethylene": "蒸汽裂解乙烯", + "material.gtceu.steam_cracked_propane": "蒸汽裂解丙烷", + "material.gtceu.steam_cracked_propene": "蒸汽裂解丙烯", + "material.gtceu.steel": "鋼", + "material.gtceu.stellite_100": "司太立-100", + "material.gtceu.sterilized_growth_medium": "無菌培養基", + "material.gtceu.sterling_silver": "標準純銀", + "material.gtceu.stibnite": "輝銻", + "material.gtceu.stone": "石頭", + "material.gtceu.strontium": "鍶", + "material.gtceu.styrene": "苯乙烯", + "material.gtceu.styrene_butadiene_rubber": "丁苯橡膠", + "material.gtceu.sugar": "糖", + "material.gtceu.sulfur": "硫", + "material.gtceu.sulfur_dioxide": "二氧化硫", + "material.gtceu.sulfur_trioxide": "三氧化硫", + "material.gtceu.sulfuric_acid": "硫酸", + "material.gtceu.sulfuric_copper_solution": "硫酸銅溶液", + "material.gtceu.sulfuric_gas": "含硫煉油氣", + "material.gtceu.sulfuric_heavy_fuel": "含硫重燃油", + "material.gtceu.sulfuric_light_fuel": "含硫輕燃油", + "material.gtceu.sulfuric_naphtha": "含硫石腦油", + "material.gtceu.sulfuric_nickel_solution": "硫酸鎳溶液", + "material.gtceu.talc": "滑石", + "material.gtceu.tantalite": "鉭鐵", + "material.gtceu.tantalum": "鉭", + "material.gtceu.tantalum_carbide": "碳化鉭", + "material.gtceu.technetium": "鎝", + "material.gtceu.tellurium": "碲", + "material.gtceu.tennessine": "鿬", + "material.gtceu.terbium": "鋱", + "material.gtceu.tetrafluoroethylene": "四氟乙烯", + "material.gtceu.tetrahedrite": "黝銅", + "material.gtceu.tetranitromethane": "四硝基甲烷", + "material.gtceu.thallium": "鉈", + "material.gtceu.thorium": "釷", + "material.gtceu.thulium": "銩", + "material.gtceu.tin": "錫", + "material.gtceu.tin_alloy": "錫鐵合金", + "material.gtceu.titanium": "鈦", + "material.gtceu.titanium_carbide": "碳化鈦", + "material.gtceu.titanium_tetrachloride": "四氯化鈦", + "material.gtceu.titanium_trifluoride": "三氟化鈦", + "material.gtceu.titanium_tungsten_carbide": "碳化鈦鎢", + "material.gtceu.toluene": "甲苯", + "material.gtceu.topaz": "黃玉", + "material.gtceu.treated_wood": "防腐木", + "material.gtceu.tricalcium_phosphate": "磷酸三鈣", + "material.gtceu.trinium": "凱金", + "material.gtceu.trinium_sulfide": "硫化凱金", + "material.gtceu.tritanium": "三鈦", + "material.gtceu.tritium": "氚", + "material.gtceu.trona": "天然鹼", + "material.gtceu.tungstate": "鎢酸鋰", + "material.gtceu.tungsten": "鎢", + "material.gtceu.tungsten_carbide": "碳化鎢", + "material.gtceu.tungsten_steel": "鎢鋼", + "material.gtceu.tungstic_acid": "鎢酸", + "material.gtceu.ultimet": "哈氏合金", + "material.gtceu.uraninite": "晶質鈾", + "material.gtceu.uranium": "鈾", + "material.gtceu.uranium_235": "鈾-235", + "material.gtceu.uranium_hexafluoride": "六氟化鈾", + "material.gtceu.uranium_rhodium_dinaquadide": "鈾銠矽岩合金", + "material.gtceu.uranium_triplatinum": "三鉑化鈾", + "material.gtceu.uu_matter": "UU物質", + "material.gtceu.uvarovite": "鈣鉻榴石", + "material.gtceu.vanadium": "釩", + "material.gtceu.vanadium_gallium": "釩鎵合金", + "material.gtceu.vanadium_magnetite": "釩磁鐵", + "material.gtceu.vanadium_steel": "釩鋼", + "material.gtceu.vinyl_acetate": "乙酸乙烯酯", + "material.gtceu.vinyl_chloride": "氯乙烯", + "material.gtceu.water": "水", + "material.gtceu.watertight_steel": "防水鋼", + "material.gtceu.wax": "蠟", + "material.gtceu.wheat": "小麥", + "material.gtceu.white_dye": "白色染料", + "material.gtceu.wood": "木", + "material.gtceu.wood_gas": "木煤氣", + "material.gtceu.wood_tar": "木焦油", + "material.gtceu.wood_vinegar": "木醋酸", + "material.gtceu.wrought_iron": "鍛鐵", + "material.gtceu.wulfenite": "鉬鉛", + "material.gtceu.xenon": "氙", + "material.gtceu.yellow_dye": "黃色染料", + "material.gtceu.yellow_garnet": "黃石榴石", + "material.gtceu.yellow_limonite": "黃褐鐵", + "material.gtceu.ytterbium": "鐿", + "material.gtceu.yttrium": "釔", + "material.gtceu.yttrium_barium_cuprate": "釔鋇銅氧化物", + "material.gtceu.zeolite": "沸石", + "material.gtceu.zeron_100": "賽龍-100", + "material.gtceu.zinc": "鋅", + "material.gtceu.zinc_sulfide": "硫化鋅", + "material.gtceu.zincite": "紅鋅", + "material.gtceu.zirconium": "鋯", + "message.gtceu.new_veins.amount": "勘探到%d條新礦脈!", + "message.gtceu.new_veins.name": "勘探到%s!", + "metaarmor.energy_share.disable": "能量供給:工具充能已禁用", + "metaarmor.energy_share.enable": "能量供給:工具充能已啟用", + "metaarmor.energy_share.error": "能量供給:§c能量不足,無法為工具充能!", + "metaarmor.energy_share.tooltip": "供能模式:%s", + "metaarmor.energy_share.tooltip.guide": "手持物品並潛行右擊以更換模式", + "metaarmor.hud.energy_lvl": "能量儲存:%s", + "metaarmor.hud.engine_enabled": "引擎已啟用:%s", + "metaarmor.hud.fuel_lvl": "燃料儲存:%s", + "metaarmor.hud.gravi_engine": "重力引擎:%s", + "metaarmor.hud.hover_mode": "懸浮模式:%s", + "metaarmor.hud.status.disabled": "§c關", + "metaarmor.hud.status.enabled": "§a開", + "metaarmor.jetpack.emergency_hover_mode": "緊急懸浮模式已啟用!", + "metaarmor.jetpack.flight.disable": "噴射背包:飛行已停用", + "metaarmor.jetpack.flight.enable": "噴射背包:飛行已啟用", + "metaarmor.jetpack.hover.disable": "噴射背包:懸浮模式已禁用", + "metaarmor.jetpack.hover.enable": "噴射背包:懸浮模式已啟用", + "metaarmor.message.nightvision.disabled": "§b夜視:§c關閉", + "metaarmor.message.nightvision.enabled": "§b夜視:§a開啟", + "metaarmor.message.nightvision.error": "§c能量不足!", + "metaarmor.nms.boosted_jump.disabled": "奈米肌體™套裝:跳躍提升已停用", + "metaarmor.nms.boosted_jump.enabled": "奈米肌體™套裝:跳躍提升已啟用", + "metaarmor.nms.nightvision.disabled": "奈米肌體™套裝:夜視已禁用", + "metaarmor.nms.nightvision.enabled": "奈米肌體™套裝:夜視已啟用", + "metaarmor.nms.nightvision.error": "奈米肌體™套裝:§c能量不足!", + "metaarmor.nms.share.disable": "奈米肌體™套裝:供能模式已禁用", + "metaarmor.nms.share.enable": "奈米肌體™套裝:供能模式已啟用", + "metaarmor.nms.share.error": "奈米肌體™套裝:§c能量不足,無法供能!", + "metaarmor.qts.nightvision.disabled": "夸克科技™套裝:夜視已禁用", + "metaarmor.qts.nightvision.enabled": "夸克科技™套裝:夜視已啟用", + "metaarmor.qts.nightvision.error": "夸克科技™套裝:§c能量不足!", + "metaarmor.qts.share.disable": "夸克科技™套裝:供能模式已禁用", + "metaarmor.qts.share.enable": "夸克科技™套裝:供能模式已啟用", + "metaarmor.qts.share.error": "夸克科技™套裝:§c能量不足,無法供能!", + "metaarmor.tooltip.autoeat": "使用物品欄中的食物補充飽食度", + "metaarmor.tooltip.breath": "補充氧氣條", + "metaarmor.tooltip.burning": "消除燃燒傷害", + "metaarmor.tooltip.falldamage": "消除摔落傷害", + "metaarmor.tooltip.freezing": "防止寒冷侵襲", + "metaarmor.tooltip.jump": "提升跳躍高度與距離", + "metaarmor.tooltip.potions": "消除負面效果", + "metaarmor.tooltip.speed": "提升奔跑速度", + "metaarmor.tooltip.stepassist": "提供步行輔助", + "metaitem.behavior.mode_switch.current_mode": "模式:%s", + "metaitem.behavior.mode_switch.mode_switched": "§e模式設定為:%s", + "metaitem.behavior.mode_switch.tooltip": "潛行右擊以切換模式", + "metaitem.clipboard.tooltip": "可以在上面書寫(無需任何書寫工具)。手持右鍵在牆面上放置,潛行右擊取下。", + "metaitem.cover.digital.mode.energy.disabled": "點選以啟用能量模式", + "metaitem.cover.digital.mode.energy.enabled": "已啟用能量模式", + "metaitem.cover.digital.mode.fluid.disabled": "點選以啟用流體模式", + "metaitem.cover.digital.mode.fluid.enabled": "已啟用流體模式", + "metaitem.cover.digital.mode.item.disabled": "點選以啟用物品模式", + "metaitem.cover.digital.mode.item.enabled": "已啟用物品模式", + "metaitem.cover.digital.mode.machine.disabled": "點選以啟用機器模式", + "metaitem.cover.digital.mode.machine.enabled": "已啟用機器模式", + "metaitem.cover.digital.mode.proxy.disabled": "點選以啟用代理模式", + "metaitem.cover.digital.mode.proxy.enabled": "已啟用代理模式", + "metaitem.cover.digital.tooltip": "§7作§f覆蓋板§7時透過§f能量線纜f7將機器連線到§f中央監視器§7。", + "metaitem.cover.digital.wireless.tooltip.0": "§7作§f覆蓋板§7時§f將機器§f無線§7接入§f中央監控器§7。", + "metaitem.cover.digital.wireless.tooltip.1": "§f手持右擊中央監控器§7來進行遠端綁定。", + "metaitem.cover.digital.wireless.tooltip.2": "§f手持並潛行右擊§7則可移除現有綁定。", + "metaitem.cover.digital.wireless.tooltip.3": "§a綁定至:§f%s", + "metaitem.crushed.tooltip.purify": "右擊裝水的鍋釜以清洗", + "metaitem.debug_scanner.tooltip": "三錄儀", + "metaitem.dust.tooltip.purify": "右擊裝水的鍋釜以清洗", + "metaitem.electric.discharge_mode.disabled": "§e釋能模式已禁用", + "metaitem.electric.discharge_mode.enabled": "§e釋能模式已啟用", + "metaitem.electric.discharge_mode.tooltip": "潛行右擊以開關釋能模式", + "metaitem.generic.electric_item.stored": "%d/%d EU(%s)", + "metaitem.generic.electric_item.tooltip": "%d/%d EU - %s電壓", + "metaitem.generic.fluid_container.tooltip": "%d/%dmB %s", + "metaitem.int_circuit.configuration": "設定:%d", + "metaitem.liquid_fuel_jetpack.tooltip": "利用內燃發電機的燃料來提供推進動力", + "metaitem.machine_configuration.mode": "§a設定模式:§r%s", + "metaitem.plugin.proxy.tooltips.1": "(請將螢幕調整為代理模式)", + "metaitem.plugin.tooltips.1": "可為螢幕安裝外掛以實現更多功能。", + "metaitem.prospector.mode.bedrock_ore": "§b基岩礦勘探模式§r", + "metaitem.prospector.mode.fluid": "§b流體勘探模式§r", + "metaitem.prospector.mode.ores": "§a礦探勘模式§r", + "metaitem.prospector.tooltip.modes": "可用模式:", + "metaitem.prospector.tooltip.radius": "掃描半徑:%s", + "metaitem.record.sus.tooltip": "§7Leonz - Among Us Drip", + "metaitem.terminal.tooltip": "工欲善其事,必先利其器。", + "metaitem.terminal.tooltip.creative": "§b創造模式", + "metaitem.terminal.tooltip.hardware": "§a硬體:%d", + "metaitem.tool.tooltip.durability": "§f耐久度:§a%d / %d", + "metaitem.tool.tooltip.primary_material": "§f材料:§e%s", + "metaitem.tool.tooltip.rotor.efficiency": "渦輪效率:§9%d%%", + "metaitem.tool.tooltip.rotor.power": "渦輪產能:§9%d%%", + "metaitem.tricorder_scanner.tooltip": "三錄儀", + "monitor.gui.title.argb": "ARGB:", + "monitor.gui.title.back": "返回", + "monitor.gui.title.config": "設定", + "monitor.gui.title.plugin": "外掛:", + "monitor.gui.title.scale": "尺寸:", + "monitor.gui.title.slot": "槽位:", + "ore.spawnlocation.name": "礦物生成資訊", + "recipe.capability.eu.name": "GTCEu能量", + "recipe.capability.fluid.name": "流體", + "recipe.capability.item.name": "物品", + "recipe.condition.adjacent_block.tooltip": "水平相鄰方塊應為", + "recipe.condition.biome.tooltip": "生態域:%s", + "recipe.condition.daytime.day.tooltip": "白天才能運作", + "recipe.condition.daytime.night.tooltip": "夜晚才能運作", + "recipe.condition.dimension.tooltip": "維度:%s", + "recipe.condition.dimension_marker.tooltip": "維度:", + "recipe.condition.eu_to_start.tooltip": "啟動耗能:%d%s", + "recipe.condition.gamestage.locked_stage": "鎖定階段:%s", + "recipe.condition.gamestage.unlocked_stage": "解鎖階段:%s", + "recipe.condition.pos_y.tooltip": "Y軸高度:%d <= Y <= %d", + "recipe.condition.quest.completed.tooltip": "完成任務:%s", + "recipe.condition.quest.not_completed.tooltip": "未完成任務:%s", + "recipe.condition.rain.tooltip": "雨量:%d", + "recipe.condition.rock_breaker.tooltip": "水平相鄰方塊需要為流體源", + "recipe.condition.steam_vent.tooltip": "清潔蒸汽排氣口", + "recipe.condition.thunder.tooltip": "雷級:%d", + "tagprefix.andesite": "安山岩%s礦", + "tagprefix.basalt": "玄武岩%s礦", + "tagprefix.blackstone": "黑石%s礦", + "tagprefix.block": "%s方塊", + "tagprefix.bolt": "%s螺栓", + "tagprefix.buzz_saw_blade": "%s圓鋸鋸片", + "tagprefix.cable_gt_double": "2x%s線纜", + "tagprefix.cable_gt_hex": "16x%s線纜", + "tagprefix.cable_gt_octal": "8x%s線纜", + "tagprefix.cable_gt_quadruple": "4x%s線纜", + "tagprefix.cable_gt_single": "1x%s線纜", + "tagprefix.chainsaw_head": "%s鏈鋸頭", + "tagprefix.chipped_gem": "破碎的%s", + "tagprefix.crushed_ore": "粉碎%s礦", + "tagprefix.deepslate": "深板岩%s礦", + "tagprefix.dense_plate": "緻密%s板", + "tagprefix.diorite": "閃長岩%s礦", + "tagprefix.door": "%s門", + "tagprefix.double_plate": "雙層%s板", + "tagprefix.drill_head": "%s鑽頭", + "tagprefix.dust": "%s粉", + "tagprefix.dye": "%s染料", + "tagprefix.endstone": "終界石%s礦", + "tagprefix.exquisite_gem": "精緻的%s", + "tagprefix.fence": "%s柵欄", + "tagprefix.fence_gate": "%s柵欄門", + "tagprefix.fine_wire": "細%s導線", + "tagprefix.flawed_gem": "有瑕的%s", + "tagprefix.flawless_gem": "無瑕的%s", + "tagprefix.foil": "%s箔", + "tagprefix.frame": "%s框架", + "tagprefix.gear": "%s齒輪", + "tagprefix.gem": "%s", + "tagprefix.granite": "花崗岩%s礦", + "tagprefix.gravel": "沙礫%s礦", + "tagprefix.hot_ingot": "熱%s錠", + "tagprefix.impure_dust": "含雜%s粉", + "tagprefix.ingot": "%s錠", + "tagprefix.lens": "%s透鏡", + "tagprefix.log": "%s原木", + "tagprefix.long_rod": "長%s桿", + "tagprefix.marble": "大理岩%s礦", + "tagprefix.netherrack": "地獄岩%s礦", + "tagprefix.nugget": "%s粒", + "tagprefix.null": "%s Null", + "tagprefix.pipe_huge_fluid": "巨型%s流體管道", + "tagprefix.pipe_huge_item": "巨型%s物品管道", + "tagprefix.pipe_huge_restrictive": "巨型加固%s物品管道", + "tagprefix.pipe_large_fluid": "大型%s流體管道", + "tagprefix.pipe_large_item": "大型%s物品管道", + "tagprefix.pipe_large_restrictive": "大型加固%s物品管道", + "tagprefix.pipe_nonuple_fluid": "九重%s流體管道", + "tagprefix.pipe_normal_fluid": "普通%s流體管道", + "tagprefix.pipe_normal_item": "普通%s物品管道", + "tagprefix.pipe_normal_restrictive": "普通加固%s物品管道", + "tagprefix.pipe_quadruple_fluid": "四重%s流體管道", + "tagprefix.pipe_small_fluid": "小型%s流體管道", + "tagprefix.pipe_small_item": "小型%s物品管道", + "tagprefix.pipe_small_restrictive": "小型加固%s物品管道", + "tagprefix.pipe_tiny_fluid": "微型%s流體管道", + "tagprefix.planks": "%s木材", + "tagprefix.plate": "%s板", + "tagprefix.polymer.dense_plate": "緻密%s片", + "tagprefix.polymer.double_plate": "雙層%s片", + "tagprefix.polymer.dust": "%s末", + "tagprefix.polymer.foil": "薄%s片", + "tagprefix.polymer.ingot": "%s條", + "tagprefix.polymer.nugget": "%s顆粒", + "tagprefix.polymer.plate": "%s片", + "tagprefix.polymer.small_dust": "小堆%s末", + "tagprefix.polymer.tiny_dust": "小撮%s末", + "tagprefix.pure_dust": "潔淨%s粉", + "tagprefix.purified_ore": "純淨%s礦", + "tagprefix.raw": "%s原礦", + "tagprefix.raw_ore_block": "%s原礦方塊", + "tagprefix.red_granite": "紅花崗岩%s礦", + "tagprefix.red_sand": "紅沙%s礦", + "tagprefix.refined_ore": "精煉%s礦", + "tagprefix.ring": "%s環", + "tagprefix.rock": "%s", + "tagprefix.rod": "%s桿", + "tagprefix.rotor": "%s轉子", + "tagprefix.round": "%s滾珠", + "tagprefix.sand": "沙子%s礦", + "tagprefix.screw": "%s螺絲", + "tagprefix.screwdriver_tip": "%s螺絲起子頭", + "tagprefix.slab": "%s半磚", + "tagprefix.small_dust": "小堆%s粉", + "tagprefix.small_gear": "小型%s齒輪", + "tagprefix.small_spring": "小型%s彈簧", + "tagprefix.spring": "%s彈簧", + "tagprefix.stairs": "%s階梯", + "tagprefix.stone": "%s礦", + "tagprefix.surface_rock": "地表岩石(%s)", + "tagprefix.tiny_dust": "小撮%s粉", + "tagprefix.tuff": "凝灰岩%s礦", + "tagprefix.turbine_blade": "%s渦輪扇葉", + "tagprefix.wire_cutter_head": "%s剪線鉗鉗頭", + "tagprefix.wire_gt_double": "2x%s導線", + "tagprefix.wire_gt_hex": "16x%s導線", + "tagprefix.wire_gt_octal": "8x%s導線", + "tagprefix.wire_gt_quadruple": "4x%s導線", + "tagprefix.wire_gt_single": "1x%s導線", + "tagprefix.wrench_tip": "%s扳手頂", + "tile.gtceu.brittle_charcoal.name": "脆木炭塊", + "tile.gtceu.brittle_charcoal.tooltip.0": "產自木炭堆點火器。", + "tile.gtceu.brittle_charcoal.tooltip.1": "採掘以獲得木炭。", + "tile.gtceu.foam.name": "建築泡沫", + "tile.gtceu.petrified_foam.name": "石化建築泡沫", + "tile.gtceu.reinforced_foam.name": "強化建築泡沫", + "tile.gtceu.reinforced_stone.name": "防爆石", + "tile.gtceu.seal.name": "密封方塊" } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/advanced_computer_casing.json b/src/main/resources/assets/gtceu/models/block/advanced_computer_casing.json index 5d35756bd3f..49bf95d3bf1 100644 --- a/src/main/resources/assets/gtceu/models/block/advanced_computer_casing.json +++ b/src/main/resources/assets/gtceu/models/block/advanced_computer_casing.json @@ -1,53 +1,10 @@ { - "parent": "block/block", - "render_type": "cutout_mipped", - "textures": { - "particle": "gtceu:block/casings/hpca/advanced_computer_casing/side", - "down": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", - "up": "gtceu:block/casings/hpca/advanced_computer_casing/top", - "north": "gtceu:block/casings/hpca/advanced_computer_casing/front", - "east": "gtceu:block/casings/hpca/advanced_computer_casing/side", - "south": "gtceu:block/casings/hpca/advanced_computer_casing/back", - "west": "gtceu:block/casings/hpca/advanced_computer_casing/side" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [ - 16, - 16, - 16 - ], - "faces": { - "down": { - "texture": "#down", - "cullface": "down" - }, - "up": { - "texture": "#up", - "cullface": "up" - }, - "north": { - "texture": "#north", - "cullface": "north" - }, - "south": { - "texture": "#south", - "cullface": "south" - }, - "west": { - "texture": "#west", - "cullface": "west" - }, - "east": { - "texture": "#east", - "cullface": "east" - } - } + "parent": "gtceu:block/computer_casing", + "textures": { + "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", + "top": "gtceu:block/casings/hpca/advanced_computer_casing/top", + "front": "gtceu:block/casings/hpca/advanced_computer_casing/front", + "back": "gtceu:block/casings/hpca/advanced_computer_casing/back", + "side": "gtceu:block/casings/hpca/advanced_computer_casing/side" } - ] } diff --git a/src/main/resources/assets/gtceu/models/block/computer_casing.json b/src/main/resources/assets/gtceu/models/block/computer_casing.json index e027e68848a..c1546bd79c7 100644 --- a/src/main/resources/assets/gtceu/models/block/computer_casing.json +++ b/src/main/resources/assets/gtceu/models/block/computer_casing.json @@ -1,53 +1,13 @@ { - "parent": "block/block", - "render_type": "cutout_mipped", - "textures": { - "particle": "gtceu:block/casings/hpca/computer_casing/side", - "down": "gtceu:block/casings/hpca/computer_casing/bottom", - "up": "gtceu:block/casings/hpca/computer_casing/top", - "north": "gtceu:block/casings/hpca/computer_casing/front", - "east": "gtceu:block/casings/hpca/computer_casing/side", - "south": "gtceu:block/casings/hpca/computer_casing/back", - "west": "gtceu:block/casings/hpca/computer_casing/side" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [ - 16, - 16, - 16 - ], - "faces": { - "down": { - "texture": "#down", - "cullface": "down" - }, - "up": { - "texture": "#up", - "cullface": "up" - }, - "north": { - "texture": "#north", - "cullface": "north" - }, - "south": { - "texture": "#south", - "cullface": "south" - }, - "west": { - "texture": "#west", - "cullface": "west" - }, - "east": { - "texture": "#east", - "cullface": "east" - } - } + "parent": "block/orientable_with_bottom", + "textures": { + "particle": "#side", + "south": "#back", + + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "top": "gtceu:block/casings/hpca/computer_casing/top", + "front": "gtceu:block/casings/hpca/computer_casing/front", + "back": "gtceu:block/casings/hpca/computer_casing/back", + "side": "gtceu:block/casings/hpca/computer_casing/side" } - ] } diff --git a/src/main/resources/assets/gtceu/models/block/cube/all.json b/src/main/resources/assets/gtceu/models/block/cube/all.json deleted file mode 100644 index 4f327969df6..00000000000 --- a/src/main/resources/assets/gtceu/models/block/cube/all.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "parent": "gtceu:block/cube/default", - "textures": { - "particle": "#all", - "down": "#all", - "up": "#all", - "north": "#all", - "east": "#all", - "south": "#all", - "west": "#all" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/cube/default.json b/src/main/resources/assets/gtceu/models/block/cube/default.json deleted file mode 100644 index c39a262831b..00000000000 --- a/src/main/resources/assets/gtceu/models/block/cube/default.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/voltage/max/side", - "down": "gtceu:block/casings/voltage/lv/bottom", - "up": "gtceu:block/casings/voltage/lv/top", - "north": "gtceu:block/casings/voltage/lv/side", - "east": "gtceu:block/casings/voltage/lv/side", - "south": "gtceu:block/casings/voltage/lv/side", - "west": "gtceu:block/casings/voltage/lv/side" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [ - 16, - 16, - 16 - ], - "faces": { - "down": { - "texture": "#down", - "cullface": "down" - }, - "up": { - "texture": "#up", - "cullface": "up" - }, - "north": { - "texture": "#north", - "cullface": "north" - }, - "south": { - "texture": "#south", - "cullface": "south" - }, - "west": { - "texture": "#west", - "cullface": "west" - }, - "east": { - "texture": "#east", - "cullface": "east" - } - } - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/cube/tinted/all_0.json b/src/main/resources/assets/gtceu/models/block/cube/tinted/all_0.json index d9165e3d512..a6928effd69 100644 --- a/src/main/resources/assets/gtceu/models/block/cube/tinted/all_0.json +++ b/src/main/resources/assets/gtceu/models/block/cube/tinted/all_0.json @@ -1,51 +1,16 @@ { - "parent": "block/block", - "textures": { - "particle": "#all" - }, + "parent": "block/cube_all", "elements": [ { - "from": [ - 0, - 0, - 0 - ], - "to": [ - 16, - 16, - 16 - ], + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], "faces": { - "down": { - "texture": "#all", - "cullface": "down", - "tintindex": 0 - }, - "up": { - "texture": "#all", - "cullface": "up", - "tintindex": 0 - }, - "north": { - "texture": "#all", - "cullface": "north", - "tintindex": 0 - }, - "south": { - "texture": "#all", - "cullface": "south", - "tintindex": 0 - }, - "west": { - "texture": "#all", - "cullface": "west", - "tintindex": 0 - }, - "east": { - "texture": "#all", - "cullface": "east", - "tintindex": 0 - } + "down": { "texture": "#all", "cullface": "down", "tintindex": 0 }, + "up": { "texture": "#all", "cullface": "up", "tintindex": 0 }, + "north": { "texture": "#all", "cullface": "north", "tintindex": 0 }, + "south": { "texture": "#all", "cullface": "south", "tintindex": 0 }, + "west": { "texture": "#all", "cullface": "west", "tintindex": 0 }, + "east": { "texture": "#all", "cullface": "east", "tintindex": 0 } } } ] diff --git a/src/main/resources/assets/gtceu/models/block/cube/tinted/default.json b/src/main/resources/assets/gtceu/models/block/cube/tinted/default.json index 60d9dbba2b7..2917cbaf09d 100644 --- a/src/main/resources/assets/gtceu/models/block/cube/tinted/default.json +++ b/src/main/resources/assets/gtceu/models/block/cube/tinted/default.json @@ -1,57 +1,16 @@ { - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/voltage/max/side", - "down": "gtceu:block/casings/voltage/lv/bottom", - "up": "gtceu:block/casings/voltage/lv/top", - "north": "gtceu:block/casings/voltage/lv/side", - "east": "gtceu:block/casings/voltage/lv/side", - "south": "gtceu:block/casings/voltage/lv/side", - "west": "gtceu:block/casings/voltage/lv/side" - }, + "parent": "block/cube", "elements": [ { - "from": [ - 0, - 0, - 0 - ], - "to": [ - 16, - 16, - 16 - ], + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], "faces": { - "down": { - "texture": "#down", - "cullface": "down", - "tintindex": 1 - }, - "up": { - "texture": "#up", - "cullface": "up", - "tintindex": 1 - }, - "north": { - "texture": "#north", - "cullface": "north", - "tintindex": 1 - }, - "south": { - "texture": "#south", - "cullface": "south", - "tintindex": 1 - }, - "west": { - "texture": "#west", - "cullface": "west", - "tintindex": 1 - }, - "east": { - "texture": "#east", - "cullface": "east", - "tintindex": 1 - } + "down": { "texture": "#down", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#up", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#north", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#south", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#west", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#east", "cullface": "east", "tintindex": 1 } } } ] diff --git a/src/main/resources/assets/gtceu/models/block/cube/uvlock.json b/src/main/resources/assets/gtceu/models/block/cube/uvlock.json deleted file mode 100644 index c39a262831b..00000000000 --- a/src/main/resources/assets/gtceu/models/block/cube/uvlock.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/voltage/max/side", - "down": "gtceu:block/casings/voltage/lv/bottom", - "up": "gtceu:block/casings/voltage/lv/top", - "north": "gtceu:block/casings/voltage/lv/side", - "east": "gtceu:block/casings/voltage/lv/side", - "south": "gtceu:block/casings/voltage/lv/side", - "west": "gtceu:block/casings/voltage/lv/side" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [ - 16, - 16, - 16 - ], - "faces": { - "down": { - "texture": "#down", - "cullface": "down" - }, - "up": { - "texture": "#up", - "cullface": "up" - }, - "north": { - "texture": "#north", - "cullface": "north" - }, - "south": { - "texture": "#south", - "cullface": "south" - }, - "west": { - "texture": "#west", - "cullface": "west" - }, - "east": { - "texture": "#east", - "cullface": "east" - } - } - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/cube/uvlock_all.json b/src/main/resources/assets/gtceu/models/block/cube/uvlock_all.json deleted file mode 100644 index 4f327969df6..00000000000 --- a/src/main/resources/assets/gtceu/models/block/cube/uvlock_all.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "parent": "gtceu:block/cube/default", - "textures": { - "particle": "#all", - "down": "#all", - "up": "#all", - "north": "#all", - "east": "#all", - "south": "#all", - "west": "#all" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/cube_2_layer/default.json b/src/main/resources/assets/gtceu/models/block/cube_2_layer/default.json index 4dc6b40f32d..2306d471186 100644 --- a/src/main/resources/assets/gtceu/models/block/cube_2_layer/default.json +++ b/src/main/resources/assets/gtceu/models/block/cube_2_layer/default.json @@ -5,25 +5,26 @@ "from": [ 0, 0, 0 ], "to": [ 16, 16, 16 ], "faces": { - "down": { "texture": "#bot_down", "cullface": "down" }, - "up": { "texture": "#bot_up", "cullface": "up" }, + "down": { "texture": "#bot_down", "cullface": "down" }, + "up": { "texture": "#bot_up", "cullface": "up" }, "north": { "texture": "#bot_north", "cullface": "north" }, "south": { "texture": "#bot_south", "cullface": "south" }, - "west": { "texture": "#bot_west", "cullface": "west" }, - "east": { "texture": "#bot_east", "cullface": "east" } + "west": { "texture": "#bot_west", "cullface": "west" }, + "east": { "texture": "#bot_east", "cullface": "east" } } }, { "from": [ 0, 0, 0 ], "to": [ 16, 16, 16 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { - "down": { "texture": "#top_down", "cullface": "down" }, - "up": { "texture": "#top_up", "cullface": "up" }, + "down": { "texture": "#top_down", "cullface": "down" }, + "up": { "texture": "#top_up", "cullface": "up" }, "north": { "texture": "#top_north", "cullface": "north" }, "south": { "texture": "#top_south", "cullface": "south" }, - "west": { "texture": "#top_west", "cullface": "west" }, - "east": { "texture": "#top_east", "cullface": "east" } + "west": { "texture": "#top_west", "cullface": "west" }, + "east": { "texture": "#top_east", "cullface": "east" } } } ] diff --git a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/all.json b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/all.json new file mode 100644 index 00000000000..e3a1c303a1e --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/all.json @@ -0,0 +1,11 @@ +{ + "parent": "gtceu:block/cube_2_layer/tinted_bot/all_bot", + "textures": { + "top_down": "#top_all", + "top_up": "#top_all", + "top_north": "#top_all", + "top_south": "#top_all", + "top_west": "#top_all", + "top_east": "#top_all" + } +} diff --git a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/all_bot.json b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/all_bot.json new file mode 100644 index 00000000000..18bdb01448d --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/all_bot.json @@ -0,0 +1,12 @@ +{ + "parent": "gtceu:block/cube_2_layer/tinted_bot/default", + "textures": { + "particle": "#bot_all", + "bot_down": "#bot_all", + "bot_up": "#bot_all", + "bot_north": "#bot_all", + "bot_south": "#bot_all", + "bot_west": "#bot_all", + "bot_east": "#bot_all" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/bottom_top.json b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/bottom_top.json new file mode 100644 index 00000000000..6eed860f8b3 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/bottom_top.json @@ -0,0 +1,19 @@ +{ + "parent": "gtceu:block/cube_2_layer/tinted_bot/default", + "textures": { + "particle": "#bot_side", + "bot_down": "#bot_bottom", + "bot_up": "#bot_top", + "bot_north": "#bot_side", + "bot_south": "#bot_side", + "bot_west": "#bot_side", + "bot_east": "#bot_side", + + "top_down": "#top_bottom", + "top_up": "#top_top", + "top_north": "#top_side", + "top_south": "#top_side", + "top_west": "#top_side", + "top_east": "#top_side" + } +} diff --git a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/default.json b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/default.json index fe98148afe0..3fde5752616 100644 --- a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/default.json +++ b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/default.json @@ -5,25 +5,24 @@ "from": [ 0, 0, 0 ], "to": [ 16, 16, 16 ], "faces": { - "down": { "texture": "#bot_down", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#bot_up", "cullface": "up", "tintindex": 1 }, + "down": { "texture": "#bot_down", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#bot_up", "cullface": "up", "tintindex": 1 }, "north": { "texture": "#bot_north", "cullface": "north", "tintindex": 1 }, "south": { "texture": "#bot_south", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#bot_west", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#bot_east", "cullface": "east", "tintindex": 1 } + "west": { "texture": "#bot_west", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#bot_east", "cullface": "east", "tintindex": 1 } } }, { "from": [ 0, 0, 0 ], "to": [ 16, 16, 16 ], - "shade": false, "faces": { - "down": { "texture": "#top_down", "cullface": "down" }, - "up": { "texture": "#top_up", "cullface": "up" }, + "down": { "texture": "#top_down", "cullface": "down" }, + "up": { "texture": "#top_up", "cullface": "up" }, "north": { "texture": "#top_north", "cullface": "north" }, "south": { "texture": "#top_south", "cullface": "south" }, - "west": { "texture": "#top_west", "cullface": "west" }, - "east": { "texture": "#top_east", "cullface": "east" } + "west": { "texture": "#top_west", "cullface": "west" }, + "east": { "texture": "#top_east", "cullface": "east" } } } ] diff --git a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_both/all_translucent.json b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_both/all_translucent.json index d2f223fc4f0..a2988df0385 100644 --- a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_both/all_translucent.json +++ b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_both/all_translucent.json @@ -1,19 +1,4 @@ { - "parent": "gtceu:block/cube_2_layer/tinted_both/default", - "render_type": "translucent", - "textures": { - "particle": "#bot_all", - "bot_down": "#bot_all", - "bot_up": "#bot_all", - "bot_north": "#bot_all", - "bot_east": "#bot_all", - "bot_south": "#bot_all", - "bot_west": "#bot_all", - "top_down": "#top_all", - "top_up": "#top_all", - "top_north": "#top_all", - "top_east": "#top_all", - "top_south": "#top_all", - "top_west": "#top_all" - } + "parent": "gtceu:block/cube_2_layer/tinted_both/all", + "render_type": "translucent" } diff --git a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_both/default.json b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_both/default.json index de14939ca31..717264cccc3 100644 --- a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_both/default.json +++ b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_both/default.json @@ -5,25 +5,24 @@ "from": [ 0, 0, 0 ], "to": [ 16, 16, 16 ], "faces": { - "down": { "texture": "#bot_down", "cullface": "down", "tintindex": 0 }, - "up": { "texture": "#bot_up", "cullface": "up", "tintindex": 0 }, + "down": { "texture": "#bot_down", "cullface": "down", "tintindex": 0 }, + "up": { "texture": "#bot_up", "cullface": "up", "tintindex": 0 }, "north": { "texture": "#bot_north", "cullface": "north", "tintindex": 0 }, "south": { "texture": "#bot_south", "cullface": "south", "tintindex": 0 }, - "west": { "texture": "#bot_west", "cullface": "west", "tintindex": 0 }, - "east": { "texture": "#bot_east", "cullface": "east", "tintindex": 0 } + "west": { "texture": "#bot_west", "cullface": "west", "tintindex": 0 }, + "east": { "texture": "#bot_east", "cullface": "east", "tintindex": 0 } } }, { "from": [ 0, 0, 0 ], "to": [ 16, 16, 16 ], - "shade": false, "faces": { - "down": { "texture": "#top_down", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#top_up", "cullface": "up", "tintindex": 1 }, + "down": { "texture": "#top_down", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top_up", "cullface": "up", "tintindex": 1 }, "north": { "texture": "#top_north", "cullface": "north", "tintindex": 1 }, "south": { "texture": "#top_south", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#top_west", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#top_east", "cullface": "east", "tintindex": 1 } + "west": { "texture": "#top_west", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#top_east", "cullface": "east", "tintindex": 1 } } } ] diff --git a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_top/all.json b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_top/all.json deleted file mode 100644 index 9aedc97dd77..00000000000 --- a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_top/all.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "parent": "gtceu:block/cube_2_layer/tinted_top/all_top", - "textures": { - "bot_down": "#bot_all", - "bot_up": "#bot_all", - "bot_north": "#bot_all", - "bot_south": "#bot_all", - "bot_west": "#bot_all", - "bot_east": "#bot_all" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_top/all_top.json b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_top/all_top.json deleted file mode 100644 index bb3bed40272..00000000000 --- a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_top/all_top.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "parent": "gtceu:block/cube_2_layer/tinted_top/default", - "textures": { - "top_down": "#top_all", - "top_up": "#top_all", - "top_north": "#top_all", - "top_south": "#top_all", - "top_west": "#top_all", - "top_east": "#top_all" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_top/default.json b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_top/default.json deleted file mode 100644 index 72d2cf53732..00000000000 --- a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_top/default.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "parent": "block/block", - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "texture": "#bot_down", "cullface": "down" }, - "up": { "texture": "#bot_up", "cullface": "up" }, - "north": { "texture": "#bot_north", "cullface": "north" }, - "south": { "texture": "#bot_south", "cullface": "south" }, - "west": { "texture": "#bot_west", "cullface": "west" }, - "east": { "texture": "#bot_east", "cullface": "east" } - } - }, - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "shade": false, - "faces": { - "down": { "texture": "#top_down", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#top_up", "cullface": "up", "tintindex": 1 }, - "north": { "texture": "#top_north", "cullface": "north", "tintindex": 1 }, - "south": { "texture": "#top_south", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#top_west", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#top_east", "cullface": "east", "tintindex": 1 } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_top/orientable.json b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_top/orientable.json deleted file mode 100644 index 2b98ec83ef7..00000000000 --- a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_top/orientable.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "parent": "gtceu:block/cube_2_layer/tinted_top/default", - "textures": { - "bot_down": "#bot_bottom", - "bot_up": "#bot_top", - "bot_north": "#bot_side", - "bot_south": "#bot_side", - "bot_west": "#bot_side", - "bot_east": "#bot_side", - "top_down": "#top_bottom", - "top_up": "#top_top", - "top_north": "#top_front", - "top_south": "#top_side", - "top_west": "#top_side", - "top_east": "#top_side" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/fire_box_active.json b/src/main/resources/assets/gtceu/models/block/fire_box_active.json index bb104c4559e..79d1f6059ab 100644 --- a/src/main/resources/assets/gtceu/models/block/fire_box_active.json +++ b/src/main/resources/assets/gtceu/models/block/fire_box_active.json @@ -1,34 +1,32 @@ { "parent": "block/block", "textures": { - "top": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", - "bottom": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", - "side": "gtceu:block/casings/firebox/machine_casing_firebox_bronze", "active_side": "gtceu:block/casings/firebox/machine_casing_firebox_bloom", - "particle": "#bottom" + "particle": "#side" }, "elements": [ { - "from": [-0.001, -0.001, -0.001], - "to": [ 16.001, 16.001, 16.001 ], + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], "faces": { - "up": { "texture": "#top", "cullface": "up" }, - "down": { "texture": "#bottom", "cullface": "down" }, - "north": { "texture": "#side", "cullface": "north" }, - "south": { "texture": "#side", "cullface": "south" }, - "west": { "texture": "#side", "cullface": "west" }, - "east": { "texture": "#side", "cullface": "east" } + "up": { "texture": "#top", "cullface": "up" }, + "down": { "texture": "#bottom", "cullface": "down" }, + "north": { "texture": "#side", "cullface": "north" }, + "south": { "texture": "#side", "cullface": "south" }, + "west": { "texture": "#side", "cullface": "west" }, + "east": { "texture": "#side", "cullface": "east" } } }, { - "from": [-0.002, -0.002, -0.002], - "to": [ 16.002, 16.002, 16.002 ], + "from": [ -0.001, 0, -0.001 ], + "to": [ 16.001, 16, 16.001 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { - "north": { "texture": "#active_side", "cullface": "north", "tintindex": -101, "emissivity": 15}, - "south": { "texture": "#active_side", "cullface": "south", "tintindex": -101, "emissivity": 15}, - "west": { "texture": "#active_side", "cullface": "west", "tintindex": -101, "emissivity": 15}, - "east": { "texture": "#active_side", "cullface": "east", "tintindex": -101, "emissivity": 15} + "north": { "texture": "#active_side", "cullface": "north", "tintindex": -101 }, + "south": { "texture": "#active_side", "cullface": "south", "tintindex": -101 }, + "west": { "texture": "#active_side", "cullface": "west", "tintindex": -101 }, + "east": { "texture": "#active_side", "cullface": "east", "tintindex": -101 } } } ] diff --git a/src/main/resources/assets/gtceu/models/block/hermetic_casing.json b/src/main/resources/assets/gtceu/models/block/hermetic_casing.json index efe74b783e7..be6096202e1 100644 --- a/src/main/resources/assets/gtceu/models/block/hermetic_casing.json +++ b/src/main/resources/assets/gtceu/models/block/hermetic_casing.json @@ -2,42 +2,29 @@ "parent": "block/block", "textures": { "particle": "#bot_side", - "bot_down": "#bot_bottom", - "bot_up": "#bot_top", - "bot_north": "#bot_side", - "bot_east": "#bot_side", - "bot_south": "#bot_side", - "bot_west": "#bot_side", - "top_down": "gtceu:block/void", - "top_up": "gtceu:block/void", - "top_north": "#top_side", - "top_east": "#top_side", - "top_south": "#top_side", - "top_west": "#top_side" + "top_side": "gtceu:block/casings/hermetic_casing/hermetic_casing_overlay" }, "elements": [ { "from": [ 0, 0, 0 ], "to": [ 16, 16, 16 ], "faces": { - "down": { "texture": "#bot_down", "cullface": "down" }, - "up": { "texture": "#bot_up", "cullface": "up" }, - "north": { "texture": "#bot_north", "cullface": "north", "tintindex": 1 }, - "south": { "texture": "#bot_south", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#bot_west", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#bot_east", "cullface": "east", "tintindex": 1 } + "down": { "texture": "#bot_bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#bot_top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#bot_side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#bot_side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#bot_side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#bot_side", "cullface": "east", "tintindex": 1 } } }, { "from": [ 0, 0, 0 ], "to": [ 16, 16, 16 ], "faces": { - "down": { "texture": "#top_down", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#top_up", "cullface": "up", "tintindex": 1 }, - "north": { "texture": "#top_north", "cullface": "north" }, - "south": { "texture": "#top_south", "cullface": "south" }, - "west": { "texture": "#top_west", "cullface": "west" }, - "east": { "texture": "#top_east", "cullface": "east" } + "north": { "texture": "#top_side", "cullface": "north" }, + "south": { "texture": "#top_side", "cullface": "south" }, + "west": { "texture": "#top_side", "cullface": "west" }, + "east": { "texture": "#top_side", "cullface": "east" } } } ] diff --git a/src/main/resources/assets/gtceu/models/block/machine/block_breaker_machine.json b/src/main/resources/assets/gtceu/models/block/machine/block_breaker_machine.json deleted file mode 100644 index dd77cbbcd45..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/block_breaker_machine.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/voltage/lv/side", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "side": "gtceu:block/casings/voltage/lv/side", - "front": "gtceu:block/machines/rock_crusher/overlay_front" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, - "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, - "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } - } - }, - { - "from": [0, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#front", "cullface": "north", "tintindex": 2} - } - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/buffer.json b/src/main/resources/assets/gtceu/models/block/machine/buffer.json deleted file mode 100644 index 6abc0a82782..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/buffer.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/voltage/lv/side", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "side": "gtceu:block/casings/voltage/lv/side", - "overlay_all": "gtceu:block/overlay/machine/overlay_buffer", - "emissive_all": "gtceu:block/overlay/machine/overlay_buffer_emissive" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, - "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, - "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } - } - }, - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "north": { "texture": "#overlay_all", "cullface": "north" }, - "south": { "texture": "#overlay_all", "cullface": "south" }, - "up": { "texture": "#overlay_all", "cullface": "up" }, - "down": { "texture": "#overlay_all", "cullface": "down" }, - "west": { "texture": "#overlay_all", "cullface": "west" }, - "east": { "texture": "#overlay_all", "cullface": "east" } - } - }, - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "north": { "texture": "#emissive_all", "cullface": "north", "tintindex": -101, "emissivity": 15 }, - "south": { "texture": "#emissive_all", "cullface": "south", "tintindex": -101, "emissivity": 15 }, - "up": { "texture": "#emissive_all", "cullface": "up", "tintindex": -101, "emissivity": 15 }, - "down": { "texture": "#emissive_all", "cullface": "down", "tintindex": -101, "emissivity": 15 }, - "west": { "texture": "#emissive_all", "cullface": "west", "tintindex": -101, "emissivity": 15 }, - "east": { "texture": "#emissive_all", "cullface": "east", "tintindex": -101, "emissivity": 15 } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/crate/metal_crate.json b/src/main/resources/assets/gtceu/models/block/machine/crate/metal_crate.json deleted file mode 100644 index 19c87a32124..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/crate/metal_crate.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "gtceu:block/cube/tinted/all", - "textures": { - "all": "gtceu:block/storage/crates/metal_crate" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/crate/wooden_crate.json b/src/main/resources/assets/gtceu/models/block/machine/crate/wooden_crate.json deleted file mode 100644 index 75e17d22657..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/crate/wooden_crate.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "gtceu:block/cube/all", - "textures": { - "all": "gtceu:block/storage/crates/wooden_crate" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/creative_chest.json b/src/main/resources/assets/gtceu/models/block/machine/creative_chest.json deleted file mode 100644 index b6378022fda..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/creative_chest.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "overlay_screen": "gtceu:block/overlay/machine/overlay_screen_glass", - "overlay_qchest": "gtceu:block/overlay/machine/overlay_creativecontainer_emissive", - "bottom": "gtceu:block/casings/voltage/max/bottom", - "top": "gtceu:block/casings/voltage/max/top", - "particle": "gtceu:block/casings/voltage/max/side", - "side": "gtceu:block/casings/voltage/max/side" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "east": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "east", "tintindex": 1}, - "south": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "south", "tintindex": 1}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west", "tintindex": 1}, - "up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up", "tintindex": 1}, - "down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down", "tintindex": 1} - } - }, - { - "from": [2, 2, 1], - "to": [14, 14, 1], - "shade": false, - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#overlay_screen", "cullface": "north"} - } - }, - { - "from": [4, 10, 1], - "to": [9, 12, 1], - "shade": false, - "faces": { - "north": {"uv": [4, 4, 12, 7], "texture": "#overlay_qchest", "cullface": "north", "tintindex": -101, "emissivity": 15} - } - }, - { - "from": [2, 0, 0], - "to": [14, 2, 0], - "faces": { - "north": {"uv": [2, 14, 14, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [2, 14, 0], - "to": [14, 16, 0], - "faces": { - "north": {"uv": [2, 0, 14, 2], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [14, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 2, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [0, 0, 0], - "to": [2, 16, 0], - "faces": { - "north": {"uv": [14, 0, 16, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [2, 2, 0], - "to": [2, 14, 15], - "faces": { - "east": {"uv": [1, 2, 16, 14], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [2, 14, 0], - "to": [14, 14, 15], - "faces": { - "down": {"uv": [14, 1, 2, 16], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [2, 2, 0], - "to": [14, 2, 15], - "faces": { - "up": {"uv": [2, 0, 14, 15], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [14, 2, 0], - "to": [14, 14, 15], - "faces": { - "west": {"uv": [0, 2, 15, 14], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [2, 2, 15], - "to": [14, 14, 15], - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#side", "tintindex": 1 } - } - } - ], - "groups": [ - 0, - 1, - 2, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [3, 4, 5, 6] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [7, 8, 9, 10, 11] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/creative_computation_provider.json b/src/main/resources/assets/gtceu/models/block/machine/creative_computation_provider.json deleted file mode 100644 index 8007fdb8783..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/creative_computation_provider.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/voltage/max/side", - "bot_bottom": "gtceu:block/casings/voltage/max/bottom", - "bot_top": "gtceu:block/casings/voltage/max/top", - "bot_side": "gtceu:block/casings/voltage/max/side", - "top_all": "gtceu:block/overlay/machine/overlay_data_hatch_optical", - "emissive_all": "gtceu:block/overlay/machine/overlay_data_hatch_optical_emissive" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "texture": "#bot_bottom", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#bot_top", "cullface": "up", "tintindex": 1 }, - "north": { "texture": "#bot_side", "cullface": "north", "tintindex": 1 }, - "south": { "texture": "#bot_side", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#bot_side", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#bot_side", "cullface": "east", "tintindex": 1 } - } - }, - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "shade": false, - "faces": { - "down": { "texture": "#top_all", "cullface": "down" }, - "up": { "texture": "#top_all", "cullface": "up" }, - "north": { "texture": "#top_all", "cullface": "north" }, - "south": { "texture": "#top_all", "cullface": "south" }, - "west": { "texture": "#top_all", "cullface": "west" }, - "east": { "texture": "#top_all", "cullface": "east" } - } - }, - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "shade": false, - "faces": { - "down": { "texture": "#emissive_all", "cullface": "down", "tintindex": -101, "emissivity": 15 }, - "up": { "texture": "#emissive_all", "cullface": "up", "tintindex": -101, "emissivity": 15 }, - "north": { "texture": "#emissive_all", "cullface": "north", "tintindex": -101, "emissivity": 15 }, - "south": { "texture": "#emissive_all", "cullface": "south", "tintindex": -101, "emissivity": 15 }, - "west": { "texture": "#emissive_all", "cullface": "west", "tintindex": -101, "emissivity": 15 }, - "east": { "texture": "#emissive_all", "cullface": "east", "tintindex": -101, "emissivity": 15 } - } - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/creative_energy.json b/src/main/resources/assets/gtceu/models/block/machine/creative_energy.json deleted file mode 100644 index a05a11ab441..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/creative_energy.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/voltage/max/side", - "bot_down": "gtceu:block/casings/voltage/max/bottom", - "bot_up": "gtceu:block/casings/voltage/max/top", - "bot_north": "gtceu:block/casings/voltage/max/side", - "bot_east": "gtceu:block/casings/voltage/max/side", - "bot_south": "gtceu:block/casings/voltage/max/side", - "bot_west": "gtceu:block/casings/voltage/max/side", - "top_down": "gtceu:block/overlay/machine/overlay_energy_emitter", - "top_up": "gtceu:block/overlay/machine/overlay_energy_emitter", - "top_north": "gtceu:block/overlay/machine/overlay_energy_emitter", - "top_east": "gtceu:block/overlay/machine/overlay_energy_emitter", - "top_south": "gtceu:block/overlay/machine/overlay_energy_emitter", - "top_west": "gtceu:block/overlay/machine/overlay_energy_emitter" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "texture": "#bot_down", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#bot_up", "cullface": "up", "tintindex": 1 }, - "north": { "texture": "#bot_north", "cullface": "north", "tintindex": 1 }, - "south": { "texture": "#bot_south", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#bot_west", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#bot_east", "cullface": "east", "tintindex": 1 } - } - }, - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "shade": false, - "faces": { - "down": { "texture": "#top_down", "cullface": "down" }, - "up": { "texture": "#top_up", "cullface": "up" }, - "north": { "texture": "#top_north", "cullface": "north" }, - "south": { "texture": "#top_south", "cullface": "south" }, - "west": { "texture": "#top_west", "cullface": "west" }, - "east": { "texture": "#top_east", "cullface": "east" } - } - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/creative_tank.json b/src/main/resources/assets/gtceu/models/block/machine/creative_tank.json deleted file mode 100644 index 6b92021f781..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/creative_tank.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "overlay_screen": "gtceu:block/overlay/machine/overlay_screen_glass", - "overlay_qchest": "gtceu:block/overlay/machine/overlay_creativecontainer_emissive", - "bottom": "gtceu:block/casings/voltage/max/bottom", - "top": "gtceu:block/casings/voltage/max/top", - "particle": "gtceu:block/casings/voltage/max/side", - "side": "gtceu:block/casings/voltage/max/side" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "east": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "east", "tintindex": 1}, - "south": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "south", "tintindex": 1}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west", "tintindex": 1}, - "up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up", "tintindex": 1}, - "down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down", "tintindex": 1} - } - }, - { - "from": [2, 2, 1], - "to": [14, 14, 1], - "shade": false, - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#overlay_screen", "cullface": "north"} - } - }, - { - "from": [4, 10, 1], - "to": [9, 12, 1], - "shade": false, - "faces": { - "north": {"uv": [4, 4, 12, 7], "texture": "#overlay_qchest", "cullface": "north", "tintindex": -101, "emissivity": 15} - } - }, - { - "from": [2, 0, 0], - "to": [14, 2, 0], - "faces": { - "north": {"uv": [2, 14, 14, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [2, 14, 0], - "to": [14, 16, 0], - "faces": { - "north": {"uv": [2, 0, 14, 2], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [14, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 2, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [0, 0, 0], - "to": [2, 16, 0], - "faces": { - "north": {"uv": [14, 0, 16, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [2, 2, 0], - "to": [2, 14, 15], - "faces": { - "east": {"uv": [1, 2, 16, 14], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [2, 14, 0], - "to": [14, 14, 15], - "faces": { - "down": {"uv": [14, 1, 2, 16], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [2, 2, 0], - "to": [14, 2, 15], - "faces": { - "up": {"uv": [2, 0, 14, 15], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [14, 2, 0], - "to": [14, 14, 15], - "faces": { - "west": {"uv": [0, 2, 15, 14], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [2, 2, 15], - "to": [14, 14, 15], - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#side", "tintindex": 1 } - } - } - ], - "groups": [ - 0, - 1, - 2, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [3, 4, 5, 6] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [7, 8, 9, 10, 11] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_16a.json b/src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_16a.json deleted file mode 100644 index 376c5d7004b..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_16a.json +++ /dev/null @@ -1,144 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "gearbox": "gtceu:block/machines/gearbox", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "particle": "gtceu:block/casings/voltage/lv/side", - "side": "gtceu:block/casings/voltage/lv/side" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "east": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "east", "tintindex": 1}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west", "tintindex": 1}, - "up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up", "tintindex": 1}, - "down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down", "tintindex": 1} - } - }, - { - "from": [2, 0, 0], - "to": [14, 2, 0], - "faces": { - "north": {"uv": [2, 14, 14, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [2, 14, 0], - "to": [14, 16, 0], - "faces": { - "north": {"uv": [2, 0, 14, 2], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [14, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 2, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [0, 0, 0], - "to": [2, 16, 0], - "faces": { - "north": {"uv": [14, 0, 16, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [2, 0, 16], - "to": [14, 2, 16], - "faces": { - "south": {"uv": [2, 14, 14, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 14, 16], - "to": [14, 16, 16], - "faces": { - "south": {"uv": [2, 0, 14, 2], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [14, 0, 16], - "to": [16, 16, 16], - "faces": { - "south": {"uv": [14, 0, 16, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [0, 0, 16], - "to": [2, 16, 16], - "faces": { - "south": {"uv": [0, 0, 2, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "name": "Core", - "from": [1, 1, 2], - "to": [15, 15, 14], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#gearbox"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#gearbox"} - } - }, - { - "from": [2, 2, 0], - "to": [2, 14, 16], - "faces": { - "east": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 14, 0], - "to": [14, 14, 16], - "faces": { - "down": {"uv": [14, 0, 2, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 2, 0], - "to": [14, 2, 16], - "faces": { - "up": {"uv": [2, 0, 14, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [14, 2, 0], - "to": [14, 14, 16], - "faces": { - "west": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - } - ], - "groups": [ - 0, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [1, 2, 3, 4] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [] - }, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [5, 6, 7, 8] - }, - 9, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [10, 11, 12, 13] - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_2a.json b/src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_2a.json deleted file mode 100644 index 376c5d7004b..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_2a.json +++ /dev/null @@ -1,144 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "gearbox": "gtceu:block/machines/gearbox", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "particle": "gtceu:block/casings/voltage/lv/side", - "side": "gtceu:block/casings/voltage/lv/side" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "east": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "east", "tintindex": 1}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west", "tintindex": 1}, - "up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up", "tintindex": 1}, - "down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down", "tintindex": 1} - } - }, - { - "from": [2, 0, 0], - "to": [14, 2, 0], - "faces": { - "north": {"uv": [2, 14, 14, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [2, 14, 0], - "to": [14, 16, 0], - "faces": { - "north": {"uv": [2, 0, 14, 2], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [14, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 2, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [0, 0, 0], - "to": [2, 16, 0], - "faces": { - "north": {"uv": [14, 0, 16, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [2, 0, 16], - "to": [14, 2, 16], - "faces": { - "south": {"uv": [2, 14, 14, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 14, 16], - "to": [14, 16, 16], - "faces": { - "south": {"uv": [2, 0, 14, 2], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [14, 0, 16], - "to": [16, 16, 16], - "faces": { - "south": {"uv": [14, 0, 16, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [0, 0, 16], - "to": [2, 16, 16], - "faces": { - "south": {"uv": [0, 0, 2, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "name": "Core", - "from": [1, 1, 2], - "to": [15, 15, 14], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#gearbox"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#gearbox"} - } - }, - { - "from": [2, 2, 0], - "to": [2, 14, 16], - "faces": { - "east": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 14, 0], - "to": [14, 14, 16], - "faces": { - "down": {"uv": [14, 0, 2, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 2, 0], - "to": [14, 2, 16], - "faces": { - "up": {"uv": [2, 0, 14, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [14, 2, 0], - "to": [14, 14, 16], - "faces": { - "west": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - } - ], - "groups": [ - 0, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [1, 2, 3, 4] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [] - }, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [5, 6, 7, 8] - }, - 9, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [10, 11, 12, 13] - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_32a.json b/src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_32a.json deleted file mode 100644 index 376c5d7004b..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_32a.json +++ /dev/null @@ -1,144 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "gearbox": "gtceu:block/machines/gearbox", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "particle": "gtceu:block/casings/voltage/lv/side", - "side": "gtceu:block/casings/voltage/lv/side" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "east": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "east", "tintindex": 1}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west", "tintindex": 1}, - "up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up", "tintindex": 1}, - "down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down", "tintindex": 1} - } - }, - { - "from": [2, 0, 0], - "to": [14, 2, 0], - "faces": { - "north": {"uv": [2, 14, 14, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [2, 14, 0], - "to": [14, 16, 0], - "faces": { - "north": {"uv": [2, 0, 14, 2], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [14, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 2, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [0, 0, 0], - "to": [2, 16, 0], - "faces": { - "north": {"uv": [14, 0, 16, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [2, 0, 16], - "to": [14, 2, 16], - "faces": { - "south": {"uv": [2, 14, 14, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 14, 16], - "to": [14, 16, 16], - "faces": { - "south": {"uv": [2, 0, 14, 2], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [14, 0, 16], - "to": [16, 16, 16], - "faces": { - "south": {"uv": [14, 0, 16, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [0, 0, 16], - "to": [2, 16, 16], - "faces": { - "south": {"uv": [0, 0, 2, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "name": "Core", - "from": [1, 1, 2], - "to": [15, 15, 14], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#gearbox"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#gearbox"} - } - }, - { - "from": [2, 2, 0], - "to": [2, 14, 16], - "faces": { - "east": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 14, 0], - "to": [14, 14, 16], - "faces": { - "down": {"uv": [14, 0, 2, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 2, 0], - "to": [14, 2, 16], - "faces": { - "up": {"uv": [2, 0, 14, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [14, 2, 0], - "to": [14, 14, 16], - "faces": { - "west": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - } - ], - "groups": [ - 0, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [1, 2, 3, 4] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [] - }, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [5, 6, 7, 8] - }, - 9, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [10, 11, 12, 13] - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_8a.json b/src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_8a.json deleted file mode 100644 index 376c5d7004b..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_8a.json +++ /dev/null @@ -1,144 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "gearbox": "gtceu:block/machines/gearbox", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "particle": "gtceu:block/casings/voltage/lv/side", - "side": "gtceu:block/casings/voltage/lv/side" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "east": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "east", "tintindex": 1}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west", "tintindex": 1}, - "up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up", "tintindex": 1}, - "down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down", "tintindex": 1} - } - }, - { - "from": [2, 0, 0], - "to": [14, 2, 0], - "faces": { - "north": {"uv": [2, 14, 14, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [2, 14, 0], - "to": [14, 16, 0], - "faces": { - "north": {"uv": [2, 0, 14, 2], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [14, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 2, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [0, 0, 0], - "to": [2, 16, 0], - "faces": { - "north": {"uv": [14, 0, 16, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [2, 0, 16], - "to": [14, 2, 16], - "faces": { - "south": {"uv": [2, 14, 14, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 14, 16], - "to": [14, 16, 16], - "faces": { - "south": {"uv": [2, 0, 14, 2], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [14, 0, 16], - "to": [16, 16, 16], - "faces": { - "south": {"uv": [14, 0, 16, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [0, 0, 16], - "to": [2, 16, 16], - "faces": { - "south": {"uv": [0, 0, 2, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "name": "Core", - "from": [1, 1, 2], - "to": [15, 15, 14], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#gearbox"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#gearbox"} - } - }, - { - "from": [2, 2, 0], - "to": [2, 14, 16], - "faces": { - "east": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 14, 0], - "to": [14, 14, 16], - "faces": { - "down": {"uv": [14, 0, 2, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 2, 0], - "to": [14, 2, 16], - "faces": { - "up": {"uv": [2, 0, 14, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [14, 2, 0], - "to": [14, 14, 16], - "faces": { - "west": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - } - ], - "groups": [ - 0, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [1, 2, 3, 4] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [] - }, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [5, 6, 7, 8] - }, - 9, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [10, 11, 12, 13] - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/fisher_machine.json b/src/main/resources/assets/gtceu/models/block/machine/fisher_machine.json deleted file mode 100644 index 955e6909185..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/fisher_machine.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/voltage/lv/side", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "side": "gtceu:block/casings/voltage/lv/side", - "screen": "gtceu:block/overlay/machine/overlay_screen", - "screen_emissive": "gtceu:block/overlay/machine/overlay_qtank_emissive" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, - "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, - "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } - } - }, - { - "from": [0, 16, 0], - "to": [16, 16, 16], - "faces": { - "up": {"texture": "#screen", "cullface": "up" } - } - }, - { - "from": [0, 16, 0], - "to": [16, 16, 16], - "faces": { - "up": {"texture": "#screen_emissive", "cullface": "up", "tintindex": -101, "emissivity": 15 } - } - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/hull_machine.json b/src/main/resources/assets/gtceu/models/block/machine/hull_machine.json deleted file mode 100644 index 739d027b983..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/hull_machine.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/voltage/lv/side", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "side": "gtceu:block/casings/voltage/lv/side" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, - "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, - "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } - } - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/kinetic_electric_machine.json b/src/main/resources/assets/gtceu/models/block/machine/kinetic_electric_machine.json deleted file mode 100644 index 6c10dcaa713..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/kinetic_electric_machine.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "gearbox": "gtceu:block/machines/gearbox", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "particle": "gtceu:block/casings/voltage/lv/side", - "side": "gtceu:block/casings/voltage/lv/side" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "north", "tintindex": 1}, - "south": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "south", "tintindex": 1}, - "up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up", "tintindex": 1}, - "down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down", "tintindex": 1} - } - }, - { - "name": "Core", - "from": [2, 2, 2], - "to": [14, 14, 14], - "faces": { - "east": {"uv": [0, 0, 16, 16], "texture": "#gearbox"}, - "west": {"uv": [0, 0, 16, 16], "texture": "#gearbox"} - } - }, - { - "from": [0, 0, 0], - "to": [0, 16, 2], - "faces": { - "west": {"uv": [0, 0, 2, 16], "texture": "#side", "cullface": "west", "tintindex": 1} - } - }, - { - "from": [0, 0, 14], - "to": [0, 16, 16], - "faces": { - "west": {"uv": [14, 0, 16, 16], "texture": "#side", "cullface": "west", "tintindex": 1} - } - }, - { - "from": [0, 14, 2], - "to": [0, 16, 14], - "faces": { - "west": {"uv": [2, 0, 14, 2], "texture": "#side", "cullface": "west", "tintindex": 1} - } - }, - { - "from": [0, 0, 2], - "to": [0, 2, 14], - "faces": { - "west": {"uv": [2, 14, 14, 16], "texture": "#side", "cullface": "west", "tintindex": 1} - } - }, - { - "from": [16, 0, 2], - "to": [16, 2, 14], - "faces": { - "east": {"uv": [2, 14, 14, 16], "texture": "#side", "cullface": "east", "tintindex": 1} - } - }, - { - "from": [16, 14, 2], - "to": [16, 16, 14], - "faces": { - "east": {"uv": [2, 0, 14, 2], "texture": "#side", "cullface": "east", "tintindex": 1} - } - }, - { - "from": [16, 0, 14], - "to": [16, 16, 16], - "faces": { - "east": {"uv": [0, 0, 2, 16], "texture": "#side", "cullface": "east", "tintindex": 1} - } - }, - { - "from": [16, 0, 0], - "to": [16, 16, 2], - "faces": { - "east": {"uv": [14, 0, 16, 16], "texture": "#side", "cullface": "east", "tintindex": 1} - } - }, - { - "from": [0, 2, 2], - "to": [16, 2, 14], - "faces": { - "up": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [0, 14, 2], - "to": [16, 14, 14], - "faces": { - "down": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [0, 2, 2], - "to": [16, 14, 2], - "faces": { - "south": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [0, 2, 14], - "to": [16, 14, 14], - "faces": { - "north": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - } - ], - "groups": [ - 0, - 1, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [2, 3, 4, 5] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [6, 7, 8, 9] - }, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [10, 11, 12, 13] - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/large_miner_active.json b/src/main/resources/assets/gtceu/models/block/machine/large_miner_active.json new file mode 100644 index 00000000000..a947b062dd7 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/large_miner_active.json @@ -0,0 +1,53 @@ +{ + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#all", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#all", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#all", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#all", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#all", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#all", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.002, -0.002, -0.002 ], + "to": [ 16.002, 16.002, 16.002 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_front", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_back", "cullface": "south" }, + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_top", "cullface": "up" }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_bottom", "cullface": "down" }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay_side", "cullface": "west" }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_side", "cullface": "east" } + } + }, + { + "from": [ -0.004, -0.004, -0.004 ], + "to": [ 16.004, 16.004, 16.004 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_front_emissive", "cullface": "north", "tintindex": -101 }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_back_emissive", "cullface": "south", "tintindex": -101 }, + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_top_emissive", "cullface": "up", "tintindex": -101 }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_bottom_emissive", "cullface": "down", "tintindex": -101 }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay_side_emissive", "cullface": "west", "tintindex": -101 }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_side_emissive", "cullface": "east", "tintindex": -101 } + } + }, + { + "from": [ 0, 0, 16 ], + "to": [ 16, -16, 32 ], + "faces": { + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_pipe", "cullface": "down" } + } + } + ] +} diff --git a/src/main/resources/assets/gtceu/models/block/machine/ld_fluid_endpoint_machine.json b/src/main/resources/assets/gtceu/models/block/machine/ld_fluid_endpoint_machine.json deleted file mode 100644 index 16b9fbd0ff3..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/ld_fluid_endpoint_machine.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/voltage/lv/side", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "side": "gtceu:block/casings/voltage/lv/side", - "overlay_bottom": "gtceu:block/pipe/ld_fluid_pipe/overlay_bottom", - "overlay_left": "gtceu:block/pipe/ld_fluid_pipe/overlay_left", - "overlay_right": "gtceu:block/pipe/ld_fluid_pipe/overlay_right", - "overlay_top": "gtceu:block/pipe/ld_fluid_pipe/overlay_top", - "overlay_pipe_in": "gtceu:block/overlay/machine/overlay_pipe_in", - "overlay_fluid_hatch_in": "gtceu:block/overlay/machine/overlay_fluid_hatch_input", - "overlay_fluid_hatch_out": "gtceu:block/overlay/machine/overlay_fluid_hatch_output", - "overlay_pipe_out": "gtceu:block/overlay/machine/overlay_pipe_out" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, - "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, - "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } - } - }, - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_pipe_in", "cullface": "north", "tintindex": 2}, - "south": {"uv": [0, 0, 16, 16], "texture": "#overlay_pipe_out", "cullface": "south", "tintindex": 2}, - "up": {"uv": [0, 0, 16, 16], "texture": "#overlay_top", "cullface": "up", "tintindex": 2}, - "down": {"uv": [0, 0, 16, 16], "texture": "#overlay_bottom", "cullface": "down", "tintindex": 2}, - "west": {"uv": [0, 0, 16, 16], "texture": "#overlay_left", "cullface": "west", "tintindex": 2}, - "east": {"uv": [0, 0, 16, 16], "texture": "#overlay_right", "cullface": "east", "tintindex": 2} - } - }, - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_fluid_hatch_in", "cullface": "north", "tintindex": 2}, - "south": {"uv": [0, 0, 16, 16], "texture": "#overlay_fluid_hatch_out", "cullface": "south", "tintindex": 2} - } - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/ld_item_endpoint_machine.json b/src/main/resources/assets/gtceu/models/block/machine/ld_item_endpoint_machine.json deleted file mode 100644 index adb45939a88..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/ld_item_endpoint_machine.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/voltage/lv/side", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "side": "gtceu:block/casings/voltage/lv/side", - "overlay_bottom": "gtceu:block/pipe/ld_item_pipe/overlay_bottom", - "overlay_left": "gtceu:block/pipe/ld_item_pipe/overlay_left", - "overlay_right": "gtceu:block/pipe/ld_item_pipe/overlay_right", - "overlay_top": "gtceu:block/pipe/ld_item_pipe/overlay_top", - "overlay_pipe_in": "gtceu:block/overlay/machine/overlay_pipe_in", - "overlay_item_hatch_in": "gtceu:block/overlay/machine/overlay_item_hatch_input", - "overlay_item_hatch_out": "gtceu:block/overlay/machine/overlay_item_hatch_output", - "overlay_pipe_out": "gtceu:block/overlay/machine/overlay_pipe_out" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, - "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, - "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } - } - }, - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_pipe_in", "cullface": "north", "tintindex": 2}, - "south": {"uv": [0, 0, 16, 16], "texture": "#overlay_pipe_out", "cullface": "south", "tintindex": 2}, - "up": {"uv": [0, 0, 16, 16], "texture": "#overlay_top", "cullface": "up", "tintindex": 2}, - "down": {"uv": [0, 0, 16, 16], "texture": "#overlay_bottom", "cullface": "down", "tintindex": 2}, - "west": {"uv": [0, 0, 16, 16], "texture": "#overlay_left", "cullface": "west", "tintindex": 2}, - "east": {"uv": [0, 0, 16, 16], "texture": "#overlay_right", "cullface": "east", "tintindex": 2} - } - }, - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_item_hatch_in", "cullface": "north", "tintindex": 2}, - "south": {"uv": [0, 0, 16, 16], "texture": "#overlay_item_hatch_out", "cullface": "south", "tintindex": 2} - } - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/long_distance_fluid_pipeline_endpoint.json b/src/main/resources/assets/gtceu/models/block/machine/long_distance_fluid_pipeline_endpoint.json new file mode 100644 index 00000000000..ebe181e7dca --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/long_distance_fluid_pipeline_endpoint.json @@ -0,0 +1,10 @@ +{ + "parent": "gtceu:block/machine/template/pipeline_endpoint_machine", + "textures": { + "overlay": "gtceu:block/pipe/ld_fluid_pipe/overlay", + "overlay_emissive": "gtceu:block/pipe/ld_fluid_pipe/overlay_emissive", + + "hatch_in": "gtceu:block/overlay/machine/overlay_fluid_hatch_input", + "hatch_out": "gtceu:block/overlay/machine/overlay_fluid_hatch_output" + } +} diff --git a/src/main/resources/assets/gtceu/models/block/machine/long_distance_item_pipeline_endpoint.json b/src/main/resources/assets/gtceu/models/block/machine/long_distance_item_pipeline_endpoint.json new file mode 100644 index 00000000000..6e0d92c73c9 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/long_distance_item_pipeline_endpoint.json @@ -0,0 +1,10 @@ +{ + "parent": "gtceu:block/machine/template/pipeline_endpoint_machine", + "textures": { + "overlay": "gtceu:block/pipe/ld_item_pipe/overlay", + "overlay_emissive": "gtceu:block/pipe/ld_item_pipe/overlay_emissive", + + "hatch_in": "gtceu:block/overlay/machine/overlay_item_hatch_input", + "hatch_out": "gtceu:block/overlay/machine/overlay_item_hatch_output" + } +} diff --git a/src/main/resources/assets/gtceu/models/block/machine/metal_drum.json b/src/main/resources/assets/gtceu/models/block/machine/metal_drum.json deleted file mode 100644 index 4e5fddb2c64..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/metal_drum.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "parent": "gtceu:block/cube_2_layer/tinted_bot/default", - "textures": { - "particle": "gtceu:block/storage/drums/drum/side", - "bot_down": "gtceu:block/storage/drums/drum/bottom", - "bot_up": "gtceu:block/storage/drums/drum/top", - "bot_north": "gtceu:block/storage/drums/drum/side", - "bot_east": "gtceu:block/storage/drums/drum/side", - "bot_south": "gtceu:block/storage/drums/drum/side", - "bot_west": "gtceu:block/storage/drums/drum/side", - "top_down": "gtceu:block/storage/drums/drum_top/bottom", - "top_up": "gtceu:block/storage/drums/drum_top/top", - "top_north": "gtceu:block/storage/drums/drum_top/side", - "top_east": "gtceu:block/storage/drums/drum_top/side", - "top_south": "gtceu:block/storage/drums/drum_top/side", - "top_west": "gtceu:block/storage/drums/drum_top/side" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/auto_maintenance_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/auto_maintenance_hatch.json new file mode 100644 index 00000000000..8313c9ee31c --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/auto_maintenance_hatch.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_maintenance_full_auto", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_maintenance_full_auto_emissive" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/cleaning_maintenance_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/cleaning_maintenance_hatch.json new file mode 100644 index 00000000000..be641ecadb9 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/cleaning_maintenance_hatch.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_maintenance_cleaning", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_maintenance_cleaning_emissive" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/coke_oven_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/coke_oven_hatch.json index b98c415786b..4de29d786ad 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/coke_oven_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/coke_oven_hatch.json @@ -1,30 +1,30 @@ { - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "gtceu:block/casings/solid/machine_coke_bricks", - "2": "gtceu:block/overlay/machine/overlay_hatch", - "particle": "gtceu:block/casings/solid/machine_coke_bricks" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"texture": "#1", "cullface": "north"}, - "east": {"texture": "#1", "cullface": "east"}, - "south": {"texture": "#1", "cullface": "south"}, - "west": {"texture": "#1", "cullface": "west"}, - "up": {"texture": "#1", "cullface": "up"}, - "down": {"texture": "#1", "cullface": "down"} - } - }, - { - "from": [0, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"texture": "#2", "cullface": "north"} - } - } - ] + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "particle": "#all", + "all": "gtceu:block/casings/solid/machine_coke_bricks", + "overlay": "gtceu:block/overlay/machine/overlay_hatch" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "north": { "texture": "#all", "cullface": "north" }, + "east": { "texture": "#all", "cullface": "east" }, + "south": { "texture": "#all", "cullface": "south" }, + "west": { "texture": "#all", "cullface": "west" }, + "up": { "texture": "#all", "cullface": "up" }, + "down": { "texture": "#all", "cullface": "down" } + } + }, + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 0 ], + "faces": { + "north": { "texture": "#overlay", "cullface": "north" } + } + } + ] } diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/computation_data_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/computation_data_hatch.json index b43a7e5775c..6590ae7d5cd 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/computation_data_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/computation_data_hatch.json @@ -1,7 +1,7 @@ { - "parent": "gtceu:block/overlay/front_emissive", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_data_hatch_optical", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_data_hatch_optical_emissive" - } + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_data_hatch_optical", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_data_hatch_optical_emissive" + } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/computer_monitor.json b/src/main/resources/assets/gtceu/models/block/machine/part/computer_monitor.json new file mode 100644 index 00000000000..73c914a3038 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/computer_monitor.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/overlay/front_all", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_monitor" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/configurable_maintenance_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/configurable_maintenance_hatch.json new file mode 100644 index 00000000000..38920d6e068 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/configurable_maintenance_hatch.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/overlay/2_layer/front", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_maintenance_configurable", + "overlay_2": "gtceu:block/void" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/data_access_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/data_access_hatch.json index c9acf427257..2f1a86d4807 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/data_access_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/data_access_hatch.json @@ -1,7 +1,7 @@ { - "parent": "gtceu:block/overlay/front_emissive", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_data_hatch", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_data_hatch_emissive" - } + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_data_hatch", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_data_hatch_emissive" + } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/data_access_hatch_creative.json b/src/main/resources/assets/gtceu/models/block/machine/part/data_access_hatch_creative.json index c01f0e74438..e6fd7bb232e 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/data_access_hatch_creative.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/data_access_hatch_creative.json @@ -1,7 +1,7 @@ { - "parent": "gtceu:block/overlay/front_emissive", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_data_hatch_creative", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_data_hatch_creative_emissive" - } + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_data_hatch_creative", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_data_hatch_creative_emissive" + } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/dual_hatch.export.json b/src/main/resources/assets/gtceu/models/block/machine/part/dual_hatch.export.json deleted file mode 100644 index af8de97cd8a..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/dual_hatch.export.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_emissive", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_hatch", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_dual_hatch" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/dual_hatch.import.json b/src/main/resources/assets/gtceu/models/block/machine/part/dual_hatch.import.json deleted file mode 100644 index 932c4733354..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/dual_hatch.import.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_emissive", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_hatch", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_dual_hatch" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/dual_input_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/dual_input_hatch.json new file mode 100644 index 00000000000..9531074ca92 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/dual_input_hatch.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_pipe", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_dual_hatch" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/dual_output_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/dual_output_hatch.json new file mode 100644 index 00000000000..9531074ca92 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/dual_output_hatch.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_pipe", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_dual_hatch" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input.json deleted file mode 100644 index 4c70d125060..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/tinted/front_2", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_2a_in", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input_16a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input_16a.json deleted file mode 100644 index 0408e48e593..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input_16a.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/tinted/front_2", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_16a_in", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input_4a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input_4a.json deleted file mode 100644 index bf7829f7b2a..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input_4a.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/tinted/front_2", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_4a_in", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input_64a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input_64a.json deleted file mode 100644 index eab2b5af883..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input_64a.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/tinted/front_2", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_64a_in", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output.json deleted file mode 100644 index f1906442ae1..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/tinted/front_2", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_2a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output_16a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output_16a.json deleted file mode 100644 index 6755eddb8c0..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output_16a.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/tinted/front_2", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_16a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output_4a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output_4a.json deleted file mode 100644 index 049199482b0..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output_4a.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/tinted/front_2", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_4a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output_64a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output_64a.json deleted file mode 100644 index 6c945db68d7..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output_64a.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/tinted/front_2", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_64a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch.json new file mode 100644 index 00000000000..5931befe7c9 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch.json @@ -0,0 +1,45 @@ +{ + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "overlay_tint": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_in": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_tint", "cullface": "north", "tintindex": 2 } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in", "cullface": "north" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in_emissive", "cullface": "north" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_16a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_16a.json new file mode 100644 index 00000000000..a999c1576e6 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_16a.json @@ -0,0 +1,45 @@ +{ + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "overlay_tint": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_in": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_tint", "cullface": "north", "tintindex": 2 } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in", "cullface": "north" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in_emissive", "cullface": "north" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_4a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_4a.json new file mode 100644 index 00000000000..dde0d7be917 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_4a.json @@ -0,0 +1,45 @@ +{ + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "overlay_tint": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_in": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_tint", "cullface": "north", "tintindex": 2 } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in", "cullface": "north" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in_emissive", "cullface": "north" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_64a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_64a.json new file mode 100644 index 00000000000..aa9f019bcf6 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_64a.json @@ -0,0 +1,45 @@ +{ + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "overlay_tint": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "overlay_in": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_in_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_tint", "cullface": "north", "tintindex": 2 } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in", "cullface": "north" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in_emissive", "cullface": "north" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch.json new file mode 100644 index 00000000000..fd733b7b6c2 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch.json @@ -0,0 +1,45 @@ +{ + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "overlay_tint": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_in": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_out_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_tint", "cullface": "north", "tintindex": 2 } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in", "cullface": "north" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_emissive", "cullface": "north" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_16a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_16a.json new file mode 100644 index 00000000000..2955f4fa761 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_16a.json @@ -0,0 +1,45 @@ +{ + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "overlay_tint": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_in": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_tint", "cullface": "north", "tintindex": 2 } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in", "cullface": "north" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_emissive", "cullface": "north" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_4a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_4a.json new file mode 100644 index 00000000000..7f84a0143f1 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_4a.json @@ -0,0 +1,45 @@ +{ + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "overlay_tint": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_in": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_tint", "cullface": "north", "tintindex": 2 } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in", "cullface": "north" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_emissive", "cullface": "north" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_64a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_64a.json new file mode 100644 index 00000000000..95e582f2955 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_64a.json @@ -0,0 +1,45 @@ +{ + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "overlay_tint": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "overlay_in": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_tint", "cullface": "north", "tintindex": 2 } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in", "cullface": "north" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_emissive", "cullface": "north" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export.json b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export.json deleted file mode 100644 index 37188edccb4..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_emissive", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_hatch", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export_4x.json b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export_4x.json deleted file mode 100644 index e911846d6e6..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export_4x.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_emissive", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_hatch", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export_9x.json b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export_9x.json deleted file mode 100644 index 84f44e6c892..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export_9x.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_emissive", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_hatch", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import.json b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import.json deleted file mode 100644 index 7e144fc3f39..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_emissive", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_hatch", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import_4x.json b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import_4x.json deleted file mode 100644 index 6c4ae2e0e5b..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import_4x.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_emissive", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_hatch", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import_9x.json b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import_9x.json deleted file mode 100644 index d8d6f405a6d..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import_9x.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_emissive", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_hatch", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_passthrough_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_passthrough_hatch.json index 49e6c6c4b62..32aff8650d3 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_passthrough_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_passthrough_hatch.json @@ -1,28 +1,51 @@ { - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "overlay_pipe_in": "gtceu:block/overlay/machine/overlay_pipe_in", - "overlay_fluid_hatch_input": "gtceu:block/overlay/machine/overlay_fluid_hatch_input", - "overlay_fluid_hatch_output": "gtceu:block/overlay/machine/overlay_fluid_hatch_output", - "overlay_pipe_out": "gtceu:block/overlay/machine/overlay_pipe_out" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_pipe_in", "cullface": "north"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#overlay_pipe_out", "cullface": "south"} - } - }, - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_fluid_hatch_input", "cullface": "north"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#overlay_fluid_hatch_output", "cullface": "south"} - } - } - ] + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe", + "overlay_pipe_in": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_fluid_hatch_input": "gtceu:block/overlay/machine/overlay_fluid_hatch_input", + "overlay_fluid_hatch_output": "gtceu:block/overlay/machine/overlay_fluid_hatch_output", + "overlay_pipe_out": "gtceu:block/overlay/machine/overlay_pipe_out_emissive" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_pipe", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_pipe", "cullface": "south" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_pipe_in", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_pipe_out", "cullface": "south" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_fluid_hatch_input", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_fluid_hatch_output", "cullface": "south" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/hull.json b/src/main/resources/assets/gtceu/models/block/machine/part/hull.json index d8b4d48e684..c906ffa153f 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/hull.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/hull.json @@ -1,7 +1,7 @@ { - "parent": "gtceu:block/overlay/tinted/front_2", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted" - } + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted" + } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/item_bus.export.json b/src/main/resources/assets/gtceu/models/block/machine/part/item_bus.export.json deleted file mode 100644 index 242d015714a..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/item_bus.export.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_emissive", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_hatch", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/item_bus.import.json b/src/main/resources/assets/gtceu/models/block/machine/part/item_bus.import.json deleted file mode 100644 index 5655760e9ba..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/item_bus.import.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_emissive", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_hatch", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/item_passthrough_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/item_passthrough_hatch.json index c908aed222f..5f8e4612daa 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/item_passthrough_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/item_passthrough_hatch.json @@ -1,28 +1,51 @@ { - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "overlay_pipe_in": "gtceu:block/overlay/machine/overlay_pipe_in", - "overlay_item_hatch_input": "gtceu:block/overlay/machine/overlay_item_hatch_input", - "overlay_item_hatch_output": "gtceu:block/overlay/machine/overlay_item_hatch_output", - "overlay_pipe_out": "gtceu:block/overlay/machine/overlay_pipe_out" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_pipe_in", "cullface": "north"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#overlay_pipe_out", "cullface": "south"} - } - }, - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_item_hatch_input", "cullface": "north"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#overlay_item_hatch_output", "cullface": "south"} - } - } - ] + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe", + "overlay_pipe_in": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "overlay_item_hatch_input": "gtceu:block/overlay/machine/overlay_item_hatch_input", + "overlay_item_hatch_output": "gtceu:block/overlay/machine/overlay_item_hatch_output", + "overlay_pipe_out": "gtceu:block/overlay/machine/overlay_pipe_out_emissive" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_pipe", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_pipe", "cullface": "south" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_pipe_in", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_pipe_out", "cullface": "south" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_item_hatch_input", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_item_hatch_output", "cullface": "south" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/kinetic_input_box.json b/src/main/resources/assets/gtceu/models/block/machine/part/kinetic_input_box.json deleted file mode 100644 index 0fb707de57e..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/kinetic_input_box.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", - "gearbox": "gtceu:block/machines/gearbox", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "particle": "gtceu:block/casings/voltage/lv/side", - "side": "gtceu:block/casings/voltage/lv/side" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "east": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "east", "tintindex": 1}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west", "tintindex": 1}, - "up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up", "tintindex": 1}, - "down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down", "tintindex": 1} - } - }, - { - "from": [2, 0, 0], - "to": [14, 2, 0], - "faces": { - "north": {"uv": [2, 14, 14, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [2, 14, 0], - "to": [14, 16, 0], - "faces": { - "north": {"uv": [2, 0, 14, 2], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [14, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 2, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [0, 0, 0], - "to": [2, 16, 0], - "faces": { - "north": {"uv": [14, 0, 16, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [2, 0, 16], - "to": [14, 2, 16], - "faces": { - "south": {"uv": [2, 14, 14, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 14, 16], - "to": [14, 16, 16], - "faces": { - "south": {"uv": [2, 0, 14, 2], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [14, 0, 16], - "to": [16, 16, 16], - "faces": { - "south": {"uv": [14, 0, 16, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [0, 0, 16], - "to": [2, 16, 16], - "faces": { - "south": {"uv": [0, 0, 2, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "name": "Core", - "from": [1, 1, 2], - "to": [15, 15, 14], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#gearbox"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#gearbox"} - } - }, - { - "name": "Core", - "from": [1, 1, 2], - "to": [15, 15, 14], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#overlay"} - } - }, - { - "from": [2, 2, 0], - "to": [2, 14, 16], - "faces": { - "east": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 14, 0], - "to": [14, 14, 16], - "faces": { - "down": {"uv": [14, 0, 2, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 2, 0], - "to": [14, 2, 16], - "faces": { - "up": {"uv": [2, 0, 14, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [14, 2, 0], - "to": [14, 14, 16], - "faces": { - "west": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - } - ], - "groups": [ - 0, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [1, 2, 3, 4] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [] - }, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [5, 6, 7, 8] - }, - 9, - 10, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [11, 12, 13, 14] - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/kinetic_output_box.json b/src/main/resources/assets/gtceu/models/block/machine/part/kinetic_output_box.json deleted file mode 100644 index ca0aafa82f8..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/kinetic_output_box.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", - "gearbox": "gtceu:block/machines/gearbox", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "particle": "gtceu:block/casings/voltage/lv/side", - "side": "gtceu:block/casings/voltage/lv/side" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "east": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "east", "tintindex": 1}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west", "tintindex": 1}, - "up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up", "tintindex": 1}, - "down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down", "tintindex": 1} - } - }, - { - "from": [2, 0, 0], - "to": [14, 2, 0], - "faces": { - "north": {"uv": [2, 14, 14, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [2, 14, 0], - "to": [14, 16, 0], - "faces": { - "north": {"uv": [2, 0, 14, 2], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [14, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 2, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [0, 0, 0], - "to": [2, 16, 0], - "faces": { - "north": {"uv": [14, 0, 16, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [2, 0, 16], - "to": [14, 2, 16], - "faces": { - "south": {"uv": [2, 14, 14, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 14, 16], - "to": [14, 16, 16], - "faces": { - "south": {"uv": [2, 0, 14, 2], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [14, 0, 16], - "to": [16, 16, 16], - "faces": { - "south": {"uv": [14, 0, 16, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [0, 0, 16], - "to": [2, 16, 16], - "faces": { - "south": {"uv": [0, 0, 2, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "name": "Core", - "from": [1, 1, 2], - "to": [15, 15, 14], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#gearbox"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#gearbox"} - } - }, - { - "name": "Core", - "from": [1, 1, 2], - "to": [15, 15, 14], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#overlay"} - } - }, - { - "from": [2, 2, 0], - "to": [2, 14, 16], - "faces": { - "east": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 14, 0], - "to": [14, 14, 16], - "faces": { - "down": {"uv": [14, 0, 2, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 2, 0], - "to": [14, 2, 16], - "faces": { - "up": {"uv": [2, 0, 14, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [14, 2, 0], - "to": [14, 14, 16], - "faces": { - "west": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - } - ], - "groups": [ - 0, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [1, 2, 3, 4] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [] - }, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [5, 6, 7, 8] - }, - 9, - 10, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [11, 12, 13, 14] - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/laser_hatch.source.json b/src/main/resources/assets/gtceu/models/block/machine/part/laser_hatch.source.json deleted file mode 100644 index c3d15d16657..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/laser_hatch.source.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/tinted/front_2", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_laser_source", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_laser_tinted" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/laser_hatch.target.json b/src/main/resources/assets/gtceu/models/block/machine/part/laser_hatch.target.json deleted file mode 100644 index c372e303fce..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/laser_hatch.target.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/tinted/front_2", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_laser_target", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_laser_tinted" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/laser_source_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/laser_source_hatch.json new file mode 100644 index 00000000000..a8ef933babf --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/laser_source_hatch.json @@ -0,0 +1,46 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "overlay_laser": "gtceu:block/overlay/machine/overlay_laser_base", + "overlay_laser_source": "gtceu:block/overlay/machine/overlay_laser_source", + "overlay_laser_source_emissive": "gtceu:block/overlay/machine/overlay_laser_source_emissive" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_laser", "cullface": "north" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_laser_source", "cullface": "north" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_laser_source_emissive", "cullface": "north" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/laser_target_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/laser_target_hatch.json new file mode 100644 index 00000000000..cf63be221a6 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/laser_target_hatch.json @@ -0,0 +1,46 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "overlay_laser": "gtceu:block/overlay/machine/overlay_laser_base", + "overlay_laser_target": "gtceu:block/overlay/machine/overlay_laser_target", + "overlay_laser_target_emissive": "gtceu:block/overlay/machine/overlay_laser_target_emissive" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_laser", "cullface": "north" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_laser_target", "cullface": "north" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_laser_target_emissive", "cullface": "north" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/maintenance.cleaning.json b/src/main/resources/assets/gtceu/models/block/machine/part/maintenance.cleaning.json deleted file mode 100644 index 22aecd984d0..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/maintenance.cleaning.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_emissive", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_maintenance_cleaning", - "overlay": "gtceu:block/overlay/machine/overlay_maintenance_cleaning", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_maintenance_cleaning_emissive" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/maintenance.configurable.json b/src/main/resources/assets/gtceu/models/block/machine/part/maintenance.configurable.json deleted file mode 100644 index 89420df6344..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/maintenance.configurable.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_maintenance_configurable", - "overlay": "gtceu:block/overlay/machine/overlay_maintenance_configurable" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/maintenance.full_auto.json b/src/main/resources/assets/gtceu/models/block/machine/part/maintenance.full_auto.json deleted file mode 100644 index 120284326b9..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/maintenance.full_auto.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_emissive", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_maintenance_full_auto", - "overlay": "gtceu:block/overlay/machine/overlay_maintenance_full_auto", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_maintenance_full_auto_emissive" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/maintenance.json b/src/main/resources/assets/gtceu/models/block/machine/part/maintenance.json deleted file mode 100644 index 268a3b2d47d..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/maintenance.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_maintenance", - "overlay": "gtceu:block/overlay/machine/overlay_maintenance" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/maintenance_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/maintenance_hatch.json new file mode 100644 index 00000000000..7be8d05ebd9 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/maintenance_hatch.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/overlay/2_layer/front", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_maintenance", + "overlay_2": "gtceu:block/void" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/me_fluid_hatch.export.json b/src/main/resources/assets/gtceu/models/block/machine/part/me_fluid_hatch.export.json deleted file mode 100644 index fe4b978fcc5..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/me_fluid_hatch.export.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "particle": "#overlay_fluid_hatch", - "overlay_fluid_hatch": "gtceu:block/overlay/appeng/me_output_hatch" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_fluid_hatch", "cullface": "north", "tintindex": -101, "emissivity": 15} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/me_fluid_hatch.import.json b/src/main/resources/assets/gtceu/models/block/machine/part/me_fluid_hatch.import.json deleted file mode 100644 index 8c2ae2e7862..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/me_fluid_hatch.import.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "particle": "#overlay_fluid_hatch", - "overlay_fluid_hatch": "gtceu:block/overlay/appeng/me_input_hatch" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_fluid_hatch", "cullface": "north", "tintindex": -101, "emissivity": 15} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/me_item_bus.export.json b/src/main/resources/assets/gtceu/models/block/machine/part/me_item_bus.export.json deleted file mode 100644 index a9d17c398bf..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/me_item_bus.export.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "particle": "#overlay_item_hatch", - "overlay_item_hatch": "gtceu:block/overlay/appeng/me_output_bus" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_item_hatch", "cullface": "north", "tintindex": -101, "emissivity": 15} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/me_item_bus.import.json b/src/main/resources/assets/gtceu/models/block/machine/part/me_item_bus.import.json deleted file mode 100644 index fa2ae2bd4f8..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/me_item_bus.import.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "particle": "#overlay_item_hatch", - "overlay_item_hatch": "gtceu:block/overlay/appeng/me_input_bus" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_item_hatch", "cullface": "north", "tintindex": -101, "emissivity": 15} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/me_pattern_buffer.json b/src/main/resources/assets/gtceu/models/block/machine/part/me_pattern_buffer.json deleted file mode 100644 index 6d7a0e0cb8b..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/me_pattern_buffer.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front", - "textures": { - "overlay": "gtceu:block/overlay/appeng/me_buffer_hatch" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/me_pattern_buffer_proxy.json b/src/main/resources/assets/gtceu/models/block/machine/part/me_pattern_buffer_proxy.json deleted file mode 100644 index d28abf39960..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/me_pattern_buffer_proxy.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front", - "textures": { - "overlay": "gtceu:block/overlay/appeng/me_buffer_hatch_proxy" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/muffler_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/muffler_hatch.json index 9658351086b..492b3a5f74e 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/muffler_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/muffler_hatch.json @@ -1,6 +1,6 @@ { - "parent": "gtceu:block/overlay/front", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_muffler" - } + "parent": "gtceu:block/overlay/front", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_muffler" + } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/object_holder.json b/src/main/resources/assets/gtceu/models/block/machine/part/object_holder.json deleted file mode 100644 index 860efa12b65..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/object_holder.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front", - "textures": { - "overlay": "gtceu:block/machines/object_holder/overlay_front" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/object_holder_active.json b/src/main/resources/assets/gtceu/models/block/machine/part/object_holder_active.json deleted file mode 100644 index bcbb9e60e93..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/object_holder_active.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front", - "textures": { - "overlay": "gtceu:block/machines/object_holder/overlay_front_active" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/optical_data_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/optical_data_hatch.json index 2cbd271bc2d..6590ae7d5cd 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/optical_data_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/optical_data_hatch.json @@ -1,7 +1,7 @@ { - "parent": "gtceu:block/overlay/front_emissive", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_data_hatch_optical", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_data_hatch_optical_emissive" - } + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_data_hatch_optical", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_data_hatch_optical_emissive" + } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/pump_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/pump_hatch.json index c517f0a9e2d..f47920c6990 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/pump_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/pump_hatch.json @@ -1,23 +1,11 @@ { - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/pump_deck/side", - "top": "gtceu:block/casings/pump_deck/top", - "bot": "gtceu:block/casings/pump_deck/bottom", - "side": "gtceu:block/casings/pump_deck/side" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"texture": "#side", "cullface": "north"}, - "east": {"texture": "#side", "cullface": "east"}, - "south": {"texture": "#side", "cullface": "south"}, - "west": {"texture": "#side", "cullface": "west"}, - "up": {"texture": "#top", "cullface": "up"}, - "down": {"texture": "#bot", "cullface": "down"} - } + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", + "textures": { + "bottom": "gtceu:block/casings/pump_deck/bottom", + "top": "gtceu:block/casings/pump_deck/top", + "side": "#top", + + "overlay": "gtceu:block/overlay/machine/overlay_pipe", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch" } - ] -} +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/steam_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/steam_hatch.json index 40169d3aa40..9c101a18276 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/steam_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/steam_hatch.json @@ -1,6 +1,6 @@ { - "parent": "gtceu:block/overlay/front", - "textures": { - "overlay": "gtceu:block/cover/overlay_pump" - } + "parent": "gtceu:block/overlay/front", + "textures": { + "overlay": "gtceu:block/cover/pump" + } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/pump_machine.json b/src/main/resources/assets/gtceu/models/block/machine/pump_machine.json deleted file mode 100644 index 1a19a1d9eb1..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/pump_machine.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/voltage/lv/side", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "side": "gtceu:block/casings/voltage/lv/side", - "screen": "gtceu:block/overlay/machine/overlay_screen", - "screen_emissive": "gtceu:block/overlay/machine/overlay_screen_emissive", - "hatch": "gtceu:block/overlay/machine/overlay_hatch", - "pump": "gtceu:block/overlay/machine/overlay_adv_pump" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, - "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, - "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } - } - }, - { - "from": [0, 16, 0], - "to": [16, 16, 16], - "faces": { - "up": {"texture": "#screen", "cullface": "up" } - } - }, - { - "from": [0, 16, 0], - "to": [16, 16, 16], - "faces": { - "up": {"texture": "#screen_emissive", "cullface": "up", "tintindex": -101, "emissivity": 15 } - } - }, - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "down": {"texture": "#hatch", "cullface": "down" }, - "west": {"texture": "#pump", "cullface": "west" }, - "east": {"texture": "#pump", "cullface": "east" }, - "south": {"texture": "#pump", "cullface": "south" } - } - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/quantum_chest.json b/src/main/resources/assets/gtceu/models/block/machine/quantum_chest.json deleted file mode 100644 index daa9024b5e9..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/quantum_chest.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "overlay_screen": "gtceu:block/overlay/machine/overlay_screen_glass", - "overlay_qchest": "gtceu:block/overlay/machine/overlay_qchest_emissive", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "particle": "gtceu:block/casings/voltage/lv/side", - "side": "gtceu:block/casings/voltage/lv/side" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "east": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "east", "tintindex": 1}, - "south": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "south", "tintindex": 1}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west", "tintindex": 1}, - "up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up", "tintindex": 1}, - "down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down", "tintindex": 1} - } - }, - { - "from": [2, 2, 1], - "to": [14, 14, 1], - "shade": false, - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#overlay_screen", "cullface": "north"} - } - }, - { - "from": [4, 10, 1], - "to": [9, 12, 1], - "shade": false, - "faces": { - "north": {"uv": [4, 4, 12, 7], "texture": "#overlay_qchest", "cullface": "north", "tintindex": -101, "emissivity": 15} - } - }, - { - "from": [2, 0, 0], - "to": [14, 2, 0], - "faces": { - "north": {"uv": [2, 14, 14, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [2, 14, 0], - "to": [14, 16, 0], - "faces": { - "north": {"uv": [2, 0, 14, 2], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [14, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 2, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [0, 0, 0], - "to": [2, 16, 0], - "faces": { - "north": {"uv": [14, 0, 16, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [2, 2, 0], - "to": [2, 14, 15], - "faces": { - "east": {"uv": [1, 2, 16, 14], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [2, 14, 0], - "to": [14, 14, 15], - "faces": { - "down": {"uv": [14, 1, 2, 16], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [2, 2, 0], - "to": [14, 2, 15], - "faces": { - "up": {"uv": [2, 0, 14, 15], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [14, 2, 0], - "to": [14, 14, 15], - "faces": { - "west": {"uv": [0, 2, 15, 14], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [2, 2, 15], - "to": [14, 14, 15], - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#side", "tintindex": 1 } - } - } - ], - "groups": [ - 0, - 1, - 2, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [3, 4, 5, 6] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [7, 8, 9, 10, 11] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/quantum_tank.json b/src/main/resources/assets/gtceu/models/block/machine/quantum_tank.json deleted file mode 100644 index d9ece8b6c75..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/quantum_tank.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "overlay_screen": "gtceu:block/overlay/machine/overlay_screen_glass", - "overlay_qchest": "gtceu:block/overlay/machine/overlay_qtank_emissive", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "particle": "gtceu:block/casings/voltage/lv/side", - "side": "gtceu:block/casings/voltage/lv/side" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "east": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "east", "tintindex": 1}, - "south": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "south", "tintindex": 1}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west", "tintindex": 1}, - "up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up", "tintindex": 1}, - "down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down", "tintindex": 1} - } - }, - { - "from": [2, 2, 1], - "to": [14, 14, 1], - "shade": false, - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#overlay_screen", "cullface": "north"} - } - }, - { - "from": [4, 10, 1], - "to": [9, 12, 1], - "shade": false, - "faces": { - "north": {"uv": [4, 4, 12, 7], "texture": "#overlay_qchest", "cullface": "north", "tintindex": -101, "emissivity": 15} - } - }, - { - "from": [2, 0, 0], - "to": [14, 2, 0], - "faces": { - "north": {"uv": [2, 14, 14, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [2, 14, 0], - "to": [14, 16, 0], - "faces": { - "north": {"uv": [2, 0, 14, 2], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [14, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 2, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [0, 0, 0], - "to": [2, 16, 0], - "faces": { - "north": {"uv": [14, 0, 16, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [2, 2, 0], - "to": [2, 14, 15], - "faces": { - "east": {"uv": [1, 2, 16, 14], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [2, 14, 0], - "to": [14, 14, 15], - "faces": { - "down": {"uv": [14, 1, 2, 16], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [2, 2, 0], - "to": [14, 2, 15], - "faces": { - "up": {"uv": [2, 0, 14, 15], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [14, 2, 0], - "to": [14, 14, 15], - "faces": { - "west": {"uv": [0, 2, 15, 14], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [2, 2, 15], - "to": [14, 14, 15], - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#side", "tintindex": 1 } - } - } - ], - "groups": [ - 0, - 1, - 2, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [3, 4, 5, 6] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [7, 8, 9, 10, 11] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/crate/metal_crate.json b/src/main/resources/assets/gtceu/models/block/machine/template/crate/metal_crate.json new file mode 100644 index 00000000000..4b0b29981a3 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/crate/metal_crate.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/cube/tinted/all", + "textures": { + "all": "gtceu:block/storage/crates/metal_crate" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/crate/metal_crate_taped.json b/src/main/resources/assets/gtceu/models/block/machine/template/crate/metal_crate_taped.json new file mode 100644 index 00000000000..1cc7fb6889f --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/crate/metal_crate_taped.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/cube_2_layer/tinted_bot/all", + "textures": { + "bot_all": "gtceu:block/storage/crates/metal_crate", + "top_all": "gtceu:block/overlay/machine/overlay_crate_taped" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/crate/wooden_crate.json b/src/main/resources/assets/gtceu/models/block/machine/template/crate/wooden_crate.json new file mode 100644 index 00000000000..1e697968bcc --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/crate/wooden_crate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "gtceu:block/storage/crates/wooden_crate" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/crate/wooden_crate_taped.json b/src/main/resources/assets/gtceu/models/block/machine/template/crate/wooden_crate_taped.json new file mode 100644 index 00000000000..e562e128aa8 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/crate/wooden_crate_taped.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/cube_2_layer/all", + "textures": { + "bot_all": "gtceu:block/storage/crates/wooden_crate", + "top_all": "gtceu:block/overlay/machine/overlay_crate_taped" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/cube_all/sided.json b/src/main/resources/assets/gtceu/models/block/machine/template/cube_all/sided.json new file mode 100644 index 00000000000..a4207c7ec17 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/cube_all/sided.json @@ -0,0 +1,56 @@ +{ + "parent": "gtceu:block/cube/tinted/all", + "textures": { + "overlay_front": "gtceu:block/void", + "overlay_back": "gtceu:block/void", + "overlay_top": "gtceu:block/void", + "overlay_bottom": "gtceu:block/void", + "overlay_side": "gtceu:block/void", + + "overlay_front_emissive": "gtceu:block/void", + "overlay_back_emissive": "gtceu:block/void", + "overlay_top_emissive": "gtceu:block/void", + "overlay_bottom_emissive": "gtceu:block/void", + "overlay_side_emissive": "gtceu:block/void" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#all", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#all", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#all", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#all", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#all", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#all", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_front", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_back", "cullface": "south" }, + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_top", "cullface": "up" }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_bottom", "cullface": "down" }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay_side", "cullface": "west" }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_side", "cullface": "east" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_front_emissive", "cullface": "north", "tintindex": -101 }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_back_emissive", "cullface": "south", "tintindex": -101 }, + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_top_emissive", "cullface": "up", "tintindex": -101 }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_bottom_emissive", "cullface": "down", "tintindex": -101 }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay_side_emissive", "cullface": "west", "tintindex": -101 }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_side_emissive", "cullface": "east", "tintindex": -101 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/cube_all/single.json b/src/main/resources/assets/gtceu/models/block/machine/template/cube_all/single.json new file mode 100644 index 00000000000..32a368a1993 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/cube_all/single.json @@ -0,0 +1,16 @@ +{ + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "overlay_front": "#overlay", + "overlay_back": "#overlay", + "overlay_top": "#overlay", + "overlay_bottom": "#overlay", + "overlay_side": "#overlay", + + "overlay_front_emissive": "#overlay_emissive", + "overlay_back_emissive": "#overlay_emissive", + "overlay_top_emissive": "#overlay_emissive", + "overlay_bottom_emissive": "#overlay_emissive", + "overlay_side_emissive": "#overlay_emissive" + } +} diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/drum/metal_drum.json b/src/main/resources/assets/gtceu/models/block/machine/template/drum/metal_drum.json new file mode 100644 index 00000000000..9b47e81a72e --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/drum/metal_drum.json @@ -0,0 +1,11 @@ +{ + "parent": "gtceu:block/cube_2_layer/tinted_bot/bottom_top", + "textures": { + "bot_bottom": "gtceu:block/storage/drums/drum/bottom", + "bot_top": "gtceu:block/storage/drums/drum/top", + "bot_side": "gtceu:block/storage/drums/drum/side", + "top_bottom": "gtceu:block/storage/drums/drum_top/bottom", + "top_top": "gtceu:block/storage/drums/drum_top/top", + "top_side": "gtceu:block/storage/drums/drum_top/side" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/drum/wooden_drum.json b/src/main/resources/assets/gtceu/models/block/machine/template/drum/wooden_drum.json new file mode 100644 index 00000000000..358b88e44bf --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/drum/wooden_drum.json @@ -0,0 +1,8 @@ +{ + "parent": "block/cube_bottom_top", + "textures": { + "bottom": "gtceu:block/storage/drums/wooden_drum/bottom", + "top": "gtceu:block/storage/drums/wooden_drum/top", + "side": "gtceu:block/storage/drums/wooden_drum/side" + } +} diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/generator_machine.json b/src/main/resources/assets/gtceu/models/block/machine/template/generator_machine.json new file mode 100644 index 00000000000..15ede585e4a --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/generator_machine.json @@ -0,0 +1,61 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "overlay_energy_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_energy_tint": "gtceu:block/overlay/machine/overlay_energy_1a_tinted" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_front", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_back", "cullface": "south" }, + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_top", "cullface": "up" }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_bottom", "cullface": "down" }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay_side", "cullface": "west" }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_side", "cullface": "east" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_front_emissive", "cullface": "north", "tintindex": -101 }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_back_emissive", "cullface": "south", "tintindex": -101 }, + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_top_emissive", "cullface": "up", "tintindex": -101 }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_bottom_emissive", "cullface": "down", "tintindex": -101 }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay_side_emissive", "cullface": "west", "tintindex": -101 }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_side_emissive", "cullface": "east", "tintindex": -101 } + } + }, + { + "from": [ 0, 0, -0.03 ], + "to": [ 16, 16, -0.03 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_energy_io", "cullface": "north" } + } + }, + { + "from": [ 0, 0, -0.04 ], + "to": [ 16, 16, -0.04 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_energy_tint", "cullface": "north", "tintindex": 2 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine.json b/src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine.json new file mode 100644 index 00000000000..29f956e853a --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine.json @@ -0,0 +1,36 @@ +{ + "parent": "gtceu:block/overlay/front", + "textures": { + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], + "faces": { + "north": { "texture": "#overlay_pipe", "cullface": "north" } + } + }, + { + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "texture": "#overlay", "cullface": "north" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine_color_ring.json b/src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine_color_ring.json new file mode 100644 index 00000000000..4ebf302f607 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine_color_ring.json @@ -0,0 +1,45 @@ +{ + "parent": "gtceu:block/machine/template/part/hatch_machine", + "textures": { + "overlay_color": "gtceu:block/overlay/machine/overlay_color" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], + "faces": { + "north": { "texture": "#overlay_pipe", "cullface": "north" } + } + }, + { + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ 0, 0, -0.03 ], + "to": [ 16, 16, -0.03 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "texture": "#overlay_color", "cullface": "north", "tintindex": 9 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine_emissive.json b/src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine_emissive.json new file mode 100644 index 00000000000..8310a3f292f --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine_emissive.json @@ -0,0 +1,42 @@ +{ + "parent": "gtceu:block/machine/template/part/hatch_machine", + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], + "faces": { + "north": { "texture": "#overlay_pipe", "cullface": "north" } + } + }, + { + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ 0, 0, -0.03 ], + "to": [ 16, 16, -0.03 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine_emissive_color_ring.json b/src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine_emissive_color_ring.json new file mode 100644 index 00000000000..92b4f71d6b6 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine_emissive_color_ring.json @@ -0,0 +1,51 @@ +{ + "parent": "gtceu:block/machine/template/part/hatch_machine_color_ring", + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], + "faces": { + "north": { "texture": "#overlay_pipe", "cullface": "north" } + } + }, + { + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ 0, 0, -0.03 ], + "to": [ 16, 16, -0.03 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101 } + } + }, + { + "from": [ 0, 0, -0.04 ], + "to": [ 16, 16, -0.04 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "texture": "#overlay_color", "cullface": "north", "tintindex": 9 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/part/hpca_part_machine.json b/src/main/resources/assets/gtceu/models/block/machine/template/part/hpca_part_machine.json new file mode 100644 index 00000000000..11bed4ecebb --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/part/hpca_part_machine.json @@ -0,0 +1,33 @@ +{ + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down" }, + "up": { "texture": "#top", "cullface": "up" }, + "north": { "texture": "#front", "cullface": "north" }, + "south": { "texture": "#back", "cullface": "south" }, + "west": { "texture": "#side", "cullface": "west" }, + "east": { "texture": "#side", "cullface": "east" } + } + }, + { + "from": [ -0.002, -0.002, -0.002 ], + "to": [ 16.002, 16.002, -0.002 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ -0.004, -0.004, -0.004 ], + "to": [ 16.004, 16.004, -0.004 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/pipeline_endpoint_machine.json b/src/main/resources/assets/gtceu/models/block/machine/template/pipeline_endpoint_machine.json new file mode 100644 index 00000000000..473f06c3bcd --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/pipeline_endpoint_machine.json @@ -0,0 +1,69 @@ +{ + "parent": "block/block", + "textures": { + "particle": "#side", + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "top": "gtceu:block/casings/voltage/lv/top", + "side": "gtceu:block/casings/voltage/lv/side", + + "pipe": "gtceu:block/overlay/machine/overlay_pipe", + "pipe_in": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "pipe_out": "gtceu:block/overlay/machine/overlay_pipe_out_emissive" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#pipe_in", "rotation": 0, "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#pipe_out", "rotation": 0, "cullface": "south" }, + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay", "rotation": 0, "cullface": "up" }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay", "rotation": 180, "cullface": "down" }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay", "rotation": 90, "cullface": "west" }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay", "rotation": 270, "cullface": "east" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#pipe", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#pipe", "cullface": "south" } + } + }, + { + "from": [ -0.03, -0.03, -0.03 ], + "to": [ 16.03, 16.03, 16.03 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "rotation": 0, "cullface": "up", "tintindex": -101 }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "rotation": 180, "cullface": "down", "tintindex": -101 }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "rotation": 90, "cullface": "west", "tintindex": -101 }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "rotation": 270, "cullface": "east", "tintindex": -101 }, + "north": { "uv": [0, 0, 16, 16], "texture": "#pipe_in", "cullface": "north", "tintindex": -101 }, + "south": { "uv": [0, 0, 16, 16], "texture": "#pipe_out", "cullface": "south", "tintindex": -101 } + } + }, + { + "from": [ -0.03, -0.03, -0.03 ], + "to": [ 16.03, 16.03, 16.03 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#hatch_in", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#hatch_out", "cullface": "south" } + } + } + ] +} diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/pump_machine.json b/src/main/resources/assets/gtceu/models/block/machine/template/pump_machine.json new file mode 100644 index 00000000000..fb5c39bd191 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/pump_machine.json @@ -0,0 +1,48 @@ +{ + "parent": "block/block", + "textures": { + "particle": "#side", + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "top": "gtceu:block/casings/voltage/lv/top", + "side": "gtceu:block/casings/voltage/lv/side", + + "screen": "gtceu:block/overlay/machine/overlay_screen", + "screen_emissive": "gtceu:block/overlay/machine/overlay_screen_emissive", + "hatch": "gtceu:block/overlay/machine/overlay_hatch", + "pump": "gtceu:block/overlay/machine/overlay_adv_pump" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "up": { "uv": [0, 0, 16, 16], "texture": "#screen", "cullface": "up" }, + "down": { "uv": [0, 0, 16, 16], "texture": "#hatch", "cullface": "down" }, + "west": { "uv": [0, 0, 16, 16], "texture": "#pump", "cullface": "west" }, + "east": { "uv": [0, 0, 16, 16], "texture": "#pump", "cullface": "east" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#pump", "cullface": "south" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "up": { "uv": [0, 0, 16, 16], "texture": "#screen_emissive", "cullface": "up", "tintindex": -101 } + } + } + ] +} diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/quantum/creative_container.json b/src/main/resources/assets/gtceu/models/block/machine/template/quantum/creative_container.json new file mode 100644 index 00000000000..78d757bce06 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/quantum/creative_container.json @@ -0,0 +1,10 @@ +{ + "parent": "gtceu:block/machine/template/quantum/quantum_container", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "top": "gtceu:block/casings/voltage/max/top", + "side": "gtceu:block/casings/voltage/max/side", + + "overlay_container": "gtceu:block/overlay/machine/overlay_creativecontainer_emissive" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/quantum/quantum_chest.json b/src/main/resources/assets/gtceu/models/block/machine/template/quantum/quantum_chest.json new file mode 100644 index 00000000000..8d2fd9fcb5d --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/quantum/quantum_chest.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/machine/template/quantum/quantum_container", + "textures": { + "overlay_container": "gtceu:block/overlay/machine/overlay_qchest_emissive" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/quantum/quantum_container.json b/src/main/resources/assets/gtceu/models/block/machine/template/quantum/quantum_container.json new file mode 100644 index 00000000000..2283de5dd84 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/quantum/quantum_container.json @@ -0,0 +1,117 @@ +{ + "parent": "gtceu:block/cube/tinted/bottom_top", + "textures": { + "particle": "#side", + "overlay_screen": "gtceu:block/overlay/machine/overlay_screen_glass" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 } + } + }, + { + "from": [ 2, 2, 1 ], + "to": [ 14, 14, 1 ], + "shade": false, + "faces": { + "north": { "uv": [2, 2, 14, 14], "texture": "#overlay_screen", "cullface": "north" } + } + }, + { + "from": [ 4, 10, 1 ], + "to": [ 9, 12, 1 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [4, 4, 12, 7], "texture": "#overlay_container", "cullface": "north", "tintindex": -101 } + } + }, + { + "from": [ 2, 0, 0 ], + "to": [ 14, 2, 0 ], + "faces": { + "north": { "uv": [2, 14, 14, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } + } + }, + { + "from": [ 2, 14, 0 ], + "to": [ 14, 16, 0 ], + "faces": { + "north": { "uv": [2, 0, 14, 2], "texture": "#side", "cullface": "north", "tintindex": 1 } + } + }, + { + "from": [ 14, 0, 0 ], + "to": [ 16, 16, 0 ], + "faces": { + "north": { "uv": [0, 0, 2, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } + } + }, + { + "from": [ 0, 0, 0 ], + "to": [ 2, 16, 0 ], + "faces": { + "north": { "uv": [14, 0, 16, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } + } + }, + { + "from": [ 2, 2, 0 ], + "to": [ 2, 14, 15 ], + "faces": { + "east": { "uv": [1, 2, 16, 14], "texture": "#side", "tintindex": 1 } + } + }, + { + "from": [ 2, 14, 0 ], + "to": [ 14, 14, 15 ], + "faces": { + "down": { "uv": [14, 1, 2, 16], "texture": "#side", "tintindex": 1 } + } + }, + { + "from": [ 2, 2, 0 ], + "to": [ 14, 2, 15 ], + "faces": { + "up": { "uv": [2, 0, 14, 15], "texture": "#side", "tintindex": 1 } + } + }, + { + "from": [ 14, 2, 0 ], + "to": [ 14, 14, 15 ], + "faces": { + "west": { "uv": [0, 2, 15, 14], "texture": "#side", "tintindex": 1 } + } + }, + { + "from": [ 2, 2, 15 ], + "to": [ 14, 14, 15 ], + "faces": { + "north": { "uv": [2, 2, 14, 14], "texture": "#side", "tintindex": 1 } + } + } + ], + "groups": [ + 0, + 1, + 2, + { + "name": "screen", + "origin": [0, 0, 0], + "color": 0, + "children": [3, 4, 5, 6] + }, + { + "name": "inside", + "origin": [8, 8, 8], + "color": 0, + "children": [7, 8, 9, 10, 11] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/quantum/quantum_tank.json b/src/main/resources/assets/gtceu/models/block/machine/template/quantum/quantum_tank.json new file mode 100644 index 00000000000..2bc7b415215 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/quantum/quantum_tank.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/machine/template/quantum/quantum_container", + "textures": { + "overlay_container": "gtceu:block/overlay/machine/overlay_qtank_emissive" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/block.json b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/block.json new file mode 100644 index 00000000000..df13d812144 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/block.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/overlay/front", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_rotor_holder" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/overlay.json b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/overlay.json new file mode 100644 index 00000000000..a4eb5f3e105 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/overlay.json @@ -0,0 +1,23 @@ +{ + "parent": "block/block", + "textures": { + "base": "gtceu:block/multiblock/large_turbine/base_bg", + "ring": "gtceu:block/multiblock/large_turbine/base_ring" + }, + "elements": [ + { + "from": [ -16, -16, -0.008 ], + "to": [ 32, 32, -0.008 ], + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#ring", "cullface": "north" } + } + }, + { + "from": [ -16, -16, -0.012 ], + "to": [ 32, 32, -0.012 ], + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#base", "cullface": "north" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_idle.json b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_idle.json new file mode 100644 index 00000000000..86f9240fadb --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_idle.json @@ -0,0 +1,15 @@ +{ + "parent": "block/block", + "textures": { + "rotor": "gtceu:block/multiblock/large_turbine/rotor_idle" + }, + "elements": [ + { + "from": [ -16, -16, -0.016 ], + "to": [ 32, 32, -0.016 ], + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#rotor", "cullface": "north", "tintindex": 2 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_idle_emissive.json b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_idle_emissive.json new file mode 100644 index 00000000000..ca4e53c8b58 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_idle_emissive.json @@ -0,0 +1,14 @@ +{ + "parent": "gtceu:block/machine/template/rotor_holder/rotor_idle", + "elements": [ + { + "from": [ -16, -16, -0.016 ], + "to": [ 32, 32, -0.016 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#rotor", "cullface": "north", "tintindex": -103 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_spinning.json b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_spinning.json new file mode 100644 index 00000000000..0acb60d5e12 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_spinning.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/machine/template/rotor_holder/rotor_idle", + "textures": { + "rotor": "gtceu:block/multiblock/large_turbine/rotor_spinning" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_spinning_emissive.json b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_spinning_emissive.json new file mode 100644 index 00000000000..44c6dd4f150 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_spinning_emissive.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive", + "textures": { + "rotor": "gtceu:block/multiblock/large_turbine/rotor_spinning" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/sided/sided.json b/src/main/resources/assets/gtceu/models/block/machine/template/sided/sided.json new file mode 100644 index 00000000000..7ac3bd3a2b6 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/sided/sided.json @@ -0,0 +1,56 @@ +{ + "parent": "gtceu:block/cube/tinted/bottom_top", + "textures": { + "overlay_front": "gtceu:block/void", + "overlay_back": "gtceu:block/void", + "overlay_top": "gtceu:block/void", + "overlay_bottom": "gtceu:block/void", + "overlay_side": "gtceu:block/void", + + "overlay_front_emissive": "gtceu:block/void", + "overlay_back_emissive": "gtceu:block/void", + "overlay_top_emissive": "gtceu:block/void", + "overlay_bottom_emissive": "gtceu:block/void", + "overlay_side_emissive": "gtceu:block/void" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_front", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_back", "cullface": "south" }, + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_top", "cullface": "up" }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_bottom", "cullface": "down" }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay_side", "cullface": "west" }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_side", "cullface": "east" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_front_emissive", "cullface": "north", "tintindex": -101 }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_back_emissive", "cullface": "south", "tintindex": -101 }, + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_top_emissive", "cullface": "up", "tintindex": -101 }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_bottom_emissive", "cullface": "down", "tintindex": -101 }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay_side_emissive", "cullface": "west", "tintindex": -101 }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_side_emissive", "cullface": "east", "tintindex": -101 } + } + } + ] +} diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/sided/single.json b/src/main/resources/assets/gtceu/models/block/machine/template/sided/single.json new file mode 100644 index 00000000000..9245521218c --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/sided/single.json @@ -0,0 +1,16 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "overlay_front": "#overlay", + "overlay_back": "#overlay", + "overlay_top": "#overlay", + "overlay_bottom": "#overlay", + "overlay_side": "#overlay", + + "overlay_front_emissive": "#overlay_emissive", + "overlay_back_emissive": "#overlay_emissive", + "overlay_top_emissive": "#overlay_emissive", + "overlay_bottom_emissive": "#overlay_emissive", + "overlay_side_emissive": "#overlay_emissive" + } +} diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/transformer_like_machine.json b/src/main/resources/assets/gtceu/models/block/machine/template/transformer_like_machine.json new file mode 100644 index 00000000000..aeb94496198 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/transformer_like_machine.json @@ -0,0 +1,69 @@ +{ + "parent": "gtceu:block/cube/tinted/bottom_top", + "textures": { + "particle": "#side", + + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "top": "gtceu:block/casings/voltage/lv/top", + "side": "gtceu:block/casings/voltage/lv/side", + + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", + "overlay_out_tinted": "gtceu:block/void" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in_io", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_io", "cullface": "south" }, + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_io", "cullface": "up" }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_io", "cullface": "down" }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_io", "cullface": "west" }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_io", "cullface": "east" } + } + }, + { + "from": [ -0.04, -0.04, -0.04 ], + "to": [ 16.04, 16.04, 16.04 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in_io_emissive", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_io_emissive", "cullface": "south" }, + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_io_emissive", "cullface": "up" }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_io_emissive", "cullface": "down" }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_io_emissive", "cullface": "west" }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_io_emissive", "cullface": "east" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in_tinted", "cullface": "north", "tintindex": 2 }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_tinted", "cullface": "south", "tintindex": 3 }, + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_tinted", "cullface": "up", "tintindex": 3 }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_tinted", "cullface": "down", "tintindex": 3 }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_tinted", "cullface": "west", "tintindex": 3 }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_tinted", "cullface": "east", "tintindex": 3 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/wooden_drum.json b/src/main/resources/assets/gtceu/models/block/machine/wooden_drum.json deleted file mode 100644 index 501e208f99c..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/wooden_drum.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "parent": "gtceu:block/cube/default", - "textures": { - "particle": "gtceu:block/storage/drums/wooden_drum/side", - "down": "gtceu:block/storage/drums/wooden_drum/bottom", - "up": "gtceu:block/storage/drums/wooden_drum/top", - "north": "gtceu:block/storage/drums/wooden_drum/side", - "east": "gtceu:block/storage/drums/wooden_drum/side", - "south": "gtceu:block/storage/drums/wooden_drum/side", - "west": "gtceu:block/storage/drums/wooden_drum/side" - } -} diff --git a/src/main/resources/assets/gtceu/models/block/material_sets/dull/block.json b/src/main/resources/assets/gtceu/models/block/material_sets/dull/block.json index b72c2a18c89..f3e2aec258c 100644 --- a/src/main/resources/assets/gtceu/models/block/material_sets/dull/block.json +++ b/src/main/resources/assets/gtceu/models/block/material_sets/dull/block.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/cube_2_layer/tinted_both/all", + "parent": "gtceu:block/cube_2_layer/tinted_both/all_translucent", "textures": { "bot_all": "gtceu:block/material_sets/dull/block", "top_all": "gtceu:block/material_sets/dull/block_secondary" diff --git a/src/main/resources/assets/gtceu/models/block/material_sets/fine/block.json b/src/main/resources/assets/gtceu/models/block/material_sets/fine/block.json index 81993fb655a..f0ea3273608 100644 --- a/src/main/resources/assets/gtceu/models/block/material_sets/fine/block.json +++ b/src/main/resources/assets/gtceu/models/block/material_sets/fine/block.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/cube_2_layer/tinted_both/all", + "parent": "gtceu:block/cube_2_layer/tinted_both/all_translucent", "textures": { "bot_all": "gtceu:block/material_sets/fine/block", "top_all": "gtceu:block/material_sets/fine/block_secondary" diff --git a/src/main/resources/assets/gtceu/models/block/miner_pipe.json b/src/main/resources/assets/gtceu/models/block/miner_pipe.json index 3f9e57f58b2..7f3fd5602c6 100644 --- a/src/main/resources/assets/gtceu/models/block/miner_pipe.json +++ b/src/main/resources/assets/gtceu/models/block/miner_pipe.json @@ -1,7 +1,7 @@ { "parent": "block/block", "textures": { - "particle": "gtceu:block/pipe/miner_pipe", + "particle": "#side", "side": "gtceu:block/pipe/miner_pipe", "end": "gtceu:block/pipe/pipe_normal_in" }, @@ -10,12 +10,12 @@ "from": [4, 0, 4], "to": [12, 16, 12], "faces": { - "up": {"texture": "#end", "cullface": "up"}, - "down": {"texture": "#end", "cullface": "down"}, - "north": {"texture": "#side", "cullface": "north"}, - "south": {"texture": "#side", "cullface": "south"}, - "west": {"texture": "#side", "cullface": "west"}, - "east": {"texture": "#side", "cullface": "east"} + "up": { "texture": "#end", "cullface": "up" }, + "down": { "texture": "#end", "cullface": "down" }, + "north": { "texture": "#side" }, + "south": { "texture": "#side" }, + "west": { "texture": "#side" }, + "east": { "texture": "#side" } } } ] diff --git a/src/main/resources/assets/gtceu/models/block/ore_emissive.json b/src/main/resources/assets/gtceu/models/block/ore_emissive.json index 546ea95ec3f..b8b1206ad39 100644 --- a/src/main/resources/assets/gtceu/models/block/ore_emissive.json +++ b/src/main/resources/assets/gtceu/models/block/ore_emissive.json @@ -1,4 +1,5 @@ { + "parent": "block/block", "loader": "forge:composite", "textures": { @@ -18,24 +19,24 @@ "from": [0, 0, 0 ], "to": [16, 16, 16], "faces": { - "down": { "texture": "#layer0", "cullface": "down", "tintindex": -101 }, - "up": { "texture": "#layer0", "cullface": "up", "tintindex": -101 }, + "down": { "texture": "#layer0", "cullface": "down", "tintindex": -101 }, + "up": { "texture": "#layer0", "cullface": "up", "tintindex": -101 }, "north": { "texture": "#layer0", "cullface": "north", "tintindex": -101 }, "south": { "texture": "#layer0", "cullface": "south", "tintindex": -101 }, - "west": { "texture": "#layer0", "cullface": "west", "tintindex": -101 }, - "east": { "texture": "#layer0", "cullface": "east", "tintindex": -101 } + "west": { "texture": "#layer0", "cullface": "west", "tintindex": -101 }, + "east": { "texture": "#layer0", "cullface": "east", "tintindex": -101 } } }, { "from": [0, 0, 0 ], "to": [16, 16, 16], "faces": { - "down": { "texture": "#layer1", "cullface": "down", "tintindex": -111 }, - "up": { "texture": "#layer1", "cullface": "up", "tintindex": -111 }, - "north": { "texture": "#layer1", "cullface": "north", "tintindex": -111 }, - "south": { "texture": "#layer1", "cullface": "south", "tintindex": -111 }, - "west": { "texture": "#layer1", "cullface": "west", "tintindex": -111 }, - "east": { "texture": "#layer1", "cullface": "east", "tintindex": -111 } + "down": { "texture": "#layer1", "cullface": "down", "tintindex": -102 }, + "up": { "texture": "#layer1", "cullface": "up", "tintindex": -102 }, + "north": { "texture": "#layer1", "cullface": "north", "tintindex": -102 }, + "south": { "texture": "#layer1", "cullface": "south", "tintindex": -102 }, + "west": { "texture": "#layer1", "cullface": "west", "tintindex": -102 }, + "east": { "texture": "#layer1", "cullface": "east", "tintindex": -102 } } } ] @@ -44,37 +45,5 @@ "item_render_order": [ "base_stone", "ore_texture" - ], - "display": { - "gui": { - "rotation": [ 30, 225, 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, 0, 0 ], - "translation": [ 0, 0, 0], - "scale":[ 0.5, 0.5, 0.5 ] - }, - "thirdperson_righthand": { - "rotation": [ 75, 45, 0 ], - "translation": [ 0, 2.5, 0], - "scale": [ 0.375, 0.375, 0.375 ] - }, - "firstperson_righthand": { - "rotation": [ 0, 45, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 0.40, 0.40, 0.40 ] - }, - "firstperson_lefthand": { - "rotation": [ 0, 225, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 0.40, 0.40, 0.40 ] - } - } + ] } diff --git a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front.json b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front.json new file mode 100644 index 00000000000..32333528901 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front.json @@ -0,0 +1,31 @@ +{ + "parent": "gtceu:block/overlay/front", + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_2", "cullface": "north" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive.json new file mode 100644 index 00000000000..16f56a31538 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive.json @@ -0,0 +1,33 @@ +{ + "parent": "gtceu:block/overlay/front_emissive", + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive_color_ring.json new file mode 100644 index 00000000000..1a08e92a41d --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive_color_ring.json @@ -0,0 +1,45 @@ +{ + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "overlay_color": "gtceu:block/overlay/machine/overlay_color" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101 } + } + }, + { + "from": [ 0, 0, -0.03 ], + "to": [ 16, 16, -0.03 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_color", "cullface": "north", "tintindex": 9 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/tinted/front.json b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/tinted/front.json new file mode 100644 index 00000000000..7a0289f65d4 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/tinted/front.json @@ -0,0 +1,31 @@ +{ + "parent": "gtceu:block/overlay/front", + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_tinted", "cullface": "north", "tintindex": 2 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/top_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/top_emissive.json new file mode 100644 index 00000000000..69cacb2a5ae --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/top_emissive.json @@ -0,0 +1,33 @@ +{ + "parent": "gtceu:block/overlay/top_emissive", + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ 0, 16.01, 0 ], + "to": [ 16, 16.01, 16 ], + "faces": { + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "up" } + } + }, + { + "from": [ 0, 16.02, 0 ], + "to": [ 16, 16.02, 16 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "up", "tintindex": -101 } + } + } + ] +} diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front.json b/src/main/resources/assets/gtceu/models/block/overlay/front.json index 6403eecf85f..07d8a9cefaa 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/front.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/front.json @@ -1,12 +1,23 @@ { - "credit": "Made with Blockbench", - "parent": "block/block", + "parent": "gtceu:block/cube/tinted/bottom_top", "elements": [ { - "from": [-0.001, -0.001, -0.001], - "to": [16.001, 16.001, 0], + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } } ] diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front_all.json b/src/main/resources/assets/gtceu/models/block/overlay/front_all.json new file mode 100644 index 00000000000..5f89a979bf0 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/front_all.json @@ -0,0 +1,24 @@ +{ + "parent": "gtceu:block/cube/tinted/all", + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#all", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#all", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#all", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#all", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#all", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#all", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/front_color_ring.json new file mode 100644 index 00000000000..aa1ecaf36af --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/front_color_ring.json @@ -0,0 +1,36 @@ +{ + "parent": "gtceu:block/overlay/front", + "textures": { + "overlay_color": "gtceu:block/overlay/machine/overlay_color" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_color", "cullface": "north", "tintindex": 9 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/front_emissive.json index e09f2d78bcf..c820c629195 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/front_emissive.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/front_emissive.json @@ -1,19 +1,25 @@ { - "credit": "Made with Blockbench", - "parent": "block/block", + "parent": "gtceu:block/cube/tinted/bottom_top", "elements": [ { - "from": [-0.001, -0.001, -0.001], - "to": [16, 16, 0], + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north"} + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } } }, { - "from": [-0.001, -0.001, -0.001], - "to": [16, 16, 0], + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101, "emissivity": 15} + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101 } } } ] diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front_emissive_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/front_emissive_color_ring.json new file mode 100644 index 00000000000..189e32be404 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/front_emissive_color_ring.json @@ -0,0 +1,38 @@ +{ + "parent": "gtceu:block/overlay/front_emissive", + "textures": { + "overlay_color": "gtceu:block/overlay/machine/overlay_color" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101 } + } + }, + { + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_color", "cullface": "north", "tintindex": 9 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front.json b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front.json new file mode 100644 index 00000000000..6de9477e886 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front.json @@ -0,0 +1,19 @@ +{ + "parent": "gtceu:block/overlay/only/front", + "elements": [ + { + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_2", "cullface": "north" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive.json new file mode 100644 index 00000000000..2b56f4ff3d2 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive.json @@ -0,0 +1,21 @@ +{ + "parent": "gtceu:block/overlay/only/front_emissive", + "elements": [ + { + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive_color_ring.json new file mode 100644 index 00000000000..17c37e3f125 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive_color_ring.json @@ -0,0 +1,33 @@ +{ + "parent": "gtceu:block/overlay/only/2_layer/front_emissive", + "textures": { + "overlay_color": "gtceu:block/overlay/machine/overlay_color" + }, + "elements": [ + { + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101 } + } + }, + { + "from": [ 0, 0, -0.03 ], + "to": [ 16, 16, -0.03 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_color", "cullface": "north", "tintindex": 9 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/front.json b/src/main/resources/assets/gtceu/models/block/overlay/only/front.json new file mode 100644 index 00000000000..e671cebe65b --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/front.json @@ -0,0 +1,12 @@ +{ + "parent": "block/block", + "elements": [ + { + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/front_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/only/front_color_ring.json new file mode 100644 index 00000000000..12e2093e7ab --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/front_color_ring.json @@ -0,0 +1,24 @@ +{ + "parent": "gtceu:block/overlay/only/front", + "textures": { + "overlay_color": "gtceu:block/overlay/machine/overlay_color" + }, + "elements": [ + { + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_color", "cullface": "north", "tintindex": 9 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive.json new file mode 100644 index 00000000000..aea6c3ed2a5 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive.json @@ -0,0 +1,14 @@ +{ + "parent": "block/block", + "elements": [ + { + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive_color_ring.json new file mode 100644 index 00000000000..660210b722e --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive_color_ring.json @@ -0,0 +1,26 @@ +{ + "parent": "gtceu:block/overlay/only/front_emissive", + "textures": { + "overlay_color": "gtceu:block/overlay/machine/overlay_color" + }, + "elements": [ + { + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101 } + } + }, + { + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_color", "cullface": "north", "tintindex": 9 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/tinted/front_2.json b/src/main/resources/assets/gtceu/models/block/overlay/tinted/front_2.json deleted file mode 100644 index be898cd09d8..00000000000 --- a/src/main/resources/assets/gtceu/models/block/overlay/tinted/front_2.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "elements": [ - { - "from": [-0.001, -0.001, -0.001], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north"} - } - }, - { - "from": [0, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_tinted", "cullface": "north", "tintindex": 2 } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/top_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/top_emissive.json new file mode 100644 index 00000000000..58f703ae352 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/top_emissive.json @@ -0,0 +1,26 @@ +{ + "parent": "gtceu:block/cube/tinted/bottom_top", + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ 0, 16.01, 0 ], + "to": [ 16, 16.01, 16 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "up", "tintindex": -101 } + } + } + ] +} diff --git a/src/main/resources/assets/gtceu/models/block/variant/assembly_line.json b/src/main/resources/assets/gtceu/models/block/variant/assembly_line.json index 2b3fb311837..50ae842ddbc 100644 --- a/src/main/resources/assets/gtceu/models/block/variant/assembly_line.json +++ b/src/main/resources/assets/gtceu/models/block/variant/assembly_line.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/cube/all", + "parent": "block/cube_all", "textures": { "all": "gtceu:block/casings/mechanic/machine_casing_assembly_line" } diff --git a/src/main/resources/assets/gtceu/models/block/variant/electrolytic_cell.json b/src/main/resources/assets/gtceu/models/block/variant/electrolytic_cell.json index 1f1790141bd..a660c6932bf 100644 --- a/src/main/resources/assets/gtceu/models/block/variant/electrolytic_cell.json +++ b/src/main/resources/assets/gtceu/models/block/variant/electrolytic_cell.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/cube/all", + "parent": "block/cube_all", "textures": { "all": "gtceu:block/casings/unique/electrolytic_cell" } diff --git a/src/main/resources/assets/gtceu/models/block/variant/electrolytic_cell_active.json b/src/main/resources/assets/gtceu/models/block/variant/electrolytic_cell_active.json index ad77a8bfd89..adc47ecd277 100644 --- a/src/main/resources/assets/gtceu/models/block/variant/electrolytic_cell_active.json +++ b/src/main/resources/assets/gtceu/models/block/variant/electrolytic_cell_active.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/cube/all", + "parent": "block/cube_all", "textures": { "all": "gtceu:block/casings/unique/electrolytic_cell_active" } diff --git a/src/main/resources/assets/gtceu/models/block/variant/engine_intake.json b/src/main/resources/assets/gtceu/models/block/variant/engine_intake.json index 334891c24f7..99604a8dfae 100644 --- a/src/main/resources/assets/gtceu/models/block/variant/engine_intake.json +++ b/src/main/resources/assets/gtceu/models/block/variant/engine_intake.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/cube/all", + "parent": "block/cube_all", "textures": { "all": "gtceu:block/casings/pipe/machine_casing_engine_intake" } diff --git a/src/main/resources/assets/gtceu/models/block/variant/engine_intake_active.json b/src/main/resources/assets/gtceu/models/block/variant/engine_intake_active.json index 52f52e55c27..bc13793388a 100644 --- a/src/main/resources/assets/gtceu/models/block/variant/engine_intake_active.json +++ b/src/main/resources/assets/gtceu/models/block/variant/engine_intake_active.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/cube/all", + "parent": "block/cube_all", "textures": { "all": "gtceu:block/casings/pipe/machine_casing_engine_intake_active" } diff --git a/src/main/resources/assets/gtceu/models/block/variant/extreme_engine_intake.json b/src/main/resources/assets/gtceu/models/block/variant/extreme_engine_intake.json index d96c2ed6a93..8e555361144 100644 --- a/src/main/resources/assets/gtceu/models/block/variant/extreme_engine_intake.json +++ b/src/main/resources/assets/gtceu/models/block/variant/extreme_engine_intake.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/cube/all", + "parent": "block/cube_all", "textures": { "all": "gtceu:block/casings/pipe/machine_casing_extreme_engine_intake" } diff --git a/src/main/resources/assets/gtceu/models/block/variant/extreme_engine_intake_active.json b/src/main/resources/assets/gtceu/models/block/variant/extreme_engine_intake_active.json index 23a00b27ea8..c82e1f5a8ac 100644 --- a/src/main/resources/assets/gtceu/models/block/variant/extreme_engine_intake_active.json +++ b/src/main/resources/assets/gtceu/models/block/variant/extreme_engine_intake_active.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/cube/all", + "parent": "block/cube_all", "textures": { "all": "gtceu:block/casings/pipe/machine_casing_extreme_engine_intake_active" } diff --git a/src/main/resources/assets/gtceu/models/block/variant/heat_vent.json b/src/main/resources/assets/gtceu/models/block/variant/heat_vent.json index 9dcf52de8ec..131ff9f94e8 100644 --- a/src/main/resources/assets/gtceu/models/block/variant/heat_vent.json +++ b/src/main/resources/assets/gtceu/models/block/variant/heat_vent.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/cube/all", + "parent": "block/cube_all", "textures": { "all": "gtceu:block/casings/unique/heat_vent" } diff --git a/src/main/resources/assets/gtceu/models/item/armor/boots.json b/src/main/resources/assets/gtceu/models/item/armor/boots.json new file mode 100644 index 00000000000..caf4a411921 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/boots.json @@ -0,0 +1,68 @@ +{ + "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "gtceu:item/armor/trimmed/boots_quartz_trim", + "predicate": { + "trim_type": 0.1 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_iron_trim", + "predicate": { + "trim_type": 0.2 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_netherite_trim", + "predicate": { + "trim_type": 0.3 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_redstone_trim", + "predicate": { + "trim_type": 0.4 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_copper_trim", + "predicate": { + "trim_type": 0.5 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_gold_trim", + "predicate": { + "trim_type": 0.6 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_emerald_trim", + "predicate": { + "trim_type": 0.7 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_diamond_trim", + "predicate": { + "trim_type": 0.8 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_lapis_trim", + "predicate": { + "trim_type": 0.9 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_amethyst_trim", + "predicate": { + "trim_type": 1.0 + } + } + ], + "textures": { + "layer0": "gtceu:item/armor/boots" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/chestplate.json b/src/main/resources/assets/gtceu/models/item/armor/chestplate.json new file mode 100644 index 00000000000..ff217abcf35 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/chestplate.json @@ -0,0 +1,68 @@ +{ + "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "gtceu:item/armor/trimmed/chestplate_quartz_trim", + "predicate": { + "trim_type": 0.1 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_iron_trim", + "predicate": { + "trim_type": 0.2 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_netherite_trim", + "predicate": { + "trim_type": 0.3 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_redstone_trim", + "predicate": { + "trim_type": 0.4 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_copper_trim", + "predicate": { + "trim_type": 0.5 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_gold_trim", + "predicate": { + "trim_type": 0.6 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_emerald_trim", + "predicate": { + "trim_type": 0.7 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_diamond_trim", + "predicate": { + "trim_type": 0.8 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_lapis_trim", + "predicate": { + "trim_type": 0.9 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_amethyst_trim", + "predicate": { + "trim_type": 1.0 + } + } + ], + "textures": { + "layer0": "gtceu:item/armor/chestplate" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/helmet.json b/src/main/resources/assets/gtceu/models/item/armor/helmet.json new file mode 100644 index 00000000000..6e3d5c3efb4 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/helmet.json @@ -0,0 +1,68 @@ +{ + "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "gtceu:item/armor/trimmed/helmet_quartz_trim", + "predicate": { + "trim_type": 0.1 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_iron_trim", + "predicate": { + "trim_type": 0.2 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_netherite_trim", + "predicate": { + "trim_type": 0.3 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_redstone_trim", + "predicate": { + "trim_type": 0.4 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_copper_trim", + "predicate": { + "trim_type": 0.5 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_gold_trim", + "predicate": { + "trim_type": 0.6 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_emerald_trim", + "predicate": { + "trim_type": 0.7 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_diamond_trim", + "predicate": { + "trim_type": 0.8 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_lapis_trim", + "predicate": { + "trim_type": 0.9 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_amethyst_trim", + "predicate": { + "trim_type": 1.0 + } + } + ], + "textures": { + "layer0": "gtceu:item/armor/helmet" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/leggings.json b/src/main/resources/assets/gtceu/models/item/armor/leggings.json new file mode 100644 index 00000000000..6ee6a5ac71e --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/leggings.json @@ -0,0 +1,68 @@ +{ + "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "gtceu:item/armor/trimmed/leggings_quartz_trim", + "predicate": { + "trim_type": 0.1 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_iron_trim", + "predicate": { + "trim_type": 0.2 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_netherite_trim", + "predicate": { + "trim_type": 0.3 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_redstone_trim", + "predicate": { + "trim_type": 0.4 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_copper_trim", + "predicate": { + "trim_type": 0.5 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_gold_trim", + "predicate": { + "trim_type": 0.6 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_emerald_trim", + "predicate": { + "trim_type": 0.7 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_diamond_trim", + "predicate": { + "trim_type": 0.8 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_lapis_trim", + "predicate": { + "trim_type": 0.9 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_amethyst_trim", + "predicate": { + "trim_type": 1.0 + } + } + ], + "textures": { + "layer0": "gtceu:item/armor/leggings" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_amethyst_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_amethyst_trim.json new file mode 100644 index 00000000000..25d16818453 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_amethyst_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_amethyst" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_copper_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_copper_trim.json new file mode 100644 index 00000000000..9f4c71ebd96 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_copper_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_copper" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_diamond_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_diamond_trim.json new file mode 100644 index 00000000000..6ea0a1c0222 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_diamond_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_diamond" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_emerald_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_emerald_trim.json new file mode 100644 index 00000000000..b15e8d80836 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_emerald_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_emerald" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_gold_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_gold_trim.json new file mode 100644 index 00000000000..8880c5a66f0 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_gold_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_gold" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_iron_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_iron_trim.json new file mode 100644 index 00000000000..de0f2b79f18 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_iron_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_iron" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_lapis_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_lapis_trim.json new file mode 100644 index 00000000000..8ce74625dbb --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_lapis_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_lapis" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_netherite_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_netherite_trim.json new file mode 100644 index 00000000000..d869b31d15a --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_netherite_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_netherite" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_quartz_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_quartz_trim.json new file mode 100644 index 00000000000..0dcdfa4814a --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_quartz_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_quartz" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_redstone_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_redstone_trim.json new file mode 100644 index 00000000000..e4fbfce9ee4 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_redstone_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_redstone" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_amethyst_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_amethyst_trim.json new file mode 100644 index 00000000000..78d0cf6cf0a --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_amethyst_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_amethyst" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_copper_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_copper_trim.json new file mode 100644 index 00000000000..fcf381af88b --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_copper_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_copper" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_diamond_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_diamond_trim.json new file mode 100644 index 00000000000..6def9114201 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_diamond_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_diamond" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_emerald_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_emerald_trim.json new file mode 100644 index 00000000000..18ee353632f --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_emerald_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_emerald" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_gold_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_gold_trim.json new file mode 100644 index 00000000000..c05c67c2dc2 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_gold_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_gold" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_iron_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_iron_trim.json new file mode 100644 index 00000000000..a31e2fa111d --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_iron_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_iron" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_lapis_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_lapis_trim.json new file mode 100644 index 00000000000..462bd53c69e --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_lapis_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_lapis" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_netherite_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_netherite_trim.json new file mode 100644 index 00000000000..6bc6a74f240 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_netherite_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_netherite" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_quartz_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_quartz_trim.json new file mode 100644 index 00000000000..3eb4cb6bda1 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_quartz_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_quartz" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_redstone_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_redstone_trim.json new file mode 100644 index 00000000000..5e48b9c2e2a --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_redstone_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_redstone" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_trim.json new file mode 100644 index 00000000000..a31e2fa111d --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_iron" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_amethyst_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_amethyst_trim.json new file mode 100644 index 00000000000..1b15271bba8 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_amethyst_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_amethyst" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_copper_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_copper_trim.json new file mode 100644 index 00000000000..6a2a49f8fbc --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_copper_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_copper" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_diamond_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_diamond_trim.json new file mode 100644 index 00000000000..9c1ebe3e92a --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_diamond_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_diamond" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_emerald_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_emerald_trim.json new file mode 100644 index 00000000000..d784a90311e --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_emerald_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_emerald" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_gold_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_gold_trim.json new file mode 100644 index 00000000000..999ce64c164 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_gold_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_gold" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_iron_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_iron_trim.json new file mode 100644 index 00000000000..ab469002334 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_iron_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_iron" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_lapis_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_lapis_trim.json new file mode 100644 index 00000000000..a58ca08f05b --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_lapis_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_lapis" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_netherite_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_netherite_trim.json new file mode 100644 index 00000000000..5ccaee60d70 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_netherite_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_netherite" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_quartz_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_quartz_trim.json new file mode 100644 index 00000000000..bb73b1d52e5 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_quartz_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_quartz" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_redstone_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_redstone_trim.json new file mode 100644 index 00000000000..a7297780124 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_redstone_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_redstone" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_amethyst_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_amethyst_trim.json new file mode 100644 index 00000000000..ba591e9d89b --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_amethyst_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_amethyst" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_copper_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_copper_trim.json new file mode 100644 index 00000000000..111a7c16445 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_copper_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_copper" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_diamond_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_diamond_trim.json new file mode 100644 index 00000000000..5a35a6afa74 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_diamond_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_diamond" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_emerald_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_emerald_trim.json new file mode 100644 index 00000000000..6375b5ea9f6 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_emerald_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_emerald" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_gold_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_gold_trim.json new file mode 100644 index 00000000000..922984b1e2b --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_gold_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_gold" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_iron_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_iron_trim.json new file mode 100644 index 00000000000..a8dfdf244fe --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_iron_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_iron" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_lapis_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_lapis_trim.json new file mode 100644 index 00000000000..eeae6c4baf4 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_lapis_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_lapis" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_netherite_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_netherite_trim.json new file mode 100644 index 00000000000..4ecf36097ca --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_netherite_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_netherite" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_quartz_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_quartz_trim.json new file mode 100644 index 00000000000..fdf13010303 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_quartz_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_quartz" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_redstone_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_redstone_trim.json new file mode 100644 index 00000000000..dfb4cd01b99 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_redstone_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_redstone" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/facade_cover.json b/src/main/resources/assets/gtceu/models/item/facade_cover.json new file mode 100644 index 00000000000..1df4ba3e6e7 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/facade_cover.json @@ -0,0 +1,53 @@ +{ + "loader": "gtceu:facade", + "default_model": { + "parent": "block/block", + "textures": { + "side": "gtceu:block/material_sets/dull/wire_side", + "cover": "minecraft:block/stone" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 1 ], + "faces": { + "down": { "texture": "#side", "cullface": "down" }, + "up": { "texture": "#side", "cullface": "up" }, + "north": { "texture": "#cover", "cullface": "north" }, + "south": { "texture": "#side", "cullface": "south" }, + "west": { "texture": "#side", "cullface": "west" }, + "east": { "texture": "#side", "cullface": "east" } + } + } + ], + "display": { + "firstperson_righthand": { + "rotation": [ 0, 135, 0 ], + "translation": [ 0, 0, 0 ], + "scale": [ 0.4, 0.4, 0.4 ] + }, + "firstperson_lefthand": { + "rotation": [ 0, 315, 0 ], + "translation": [ 0, 0, 0 ], + "scale": [ 0.40, 0.40, 0.40 ] + } + } + }, + "display": { + "firstperson_righthand": { + "rotation": [ 0, 135, 0 ], + "translation": [ 0, 2, 0 ], + "scale": [ 0.4, 0.4, 0.4 ] + }, + "firstperson_lefthand": { + "rotation": [ 0, 315, 0 ], + "translation": [ 0, 2, 0 ], + "scale": [ 0.40, 0.40, 0.40 ] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [-4, 2, 0], + "scale": [0.7, 0.7, 0.7] + } + } +} diff --git a/src/main/resources/assets/gtceu/models/item/invar_lighter.json b/src/main/resources/assets/gtceu/models/item/invar_lighter.json index a777fd4faf2..5f1d62453d8 100644 --- a/src/main/resources/assets/gtceu/models/item/invar_lighter.json +++ b/src/main/resources/assets/gtceu/models/item/invar_lighter.json @@ -1,7 +1,7 @@ { "parent": "item/generated", "textures": { - "layer0": "gtceu:items/invar_lighter" + "layer0": "gtceu:item/invar_lighter" }, "overrides": [ { diff --git a/src/main/resources/assets/gtceu/models/item/material_sets/bright/ingot_double.json b/src/main/resources/assets/gtceu/models/item/material_sets/bright/ingot_double.json index 53d5565a325..171a8f42ad1 100644 --- a/src/main/resources/assets/gtceu/models/item/material_sets/bright/ingot_double.json +++ b/src/main/resources/assets/gtceu/models/item/material_sets/bright/ingot_double.json @@ -1,6 +1,8 @@ { - "parent": "gtceu:item/material_sets/bright/ingot", + "parent": "item/generated", "textures": { - "layer3": "gtceu:item/material_sets/dull/ingot_double_overlay" + "layer0": "gtceu:item/material_sets/bright/ingot_double", + "layer1": "gtceu:item/material_sets/bright/ingot_double_secondary", + "layer2": "gtceu:item/material_sets/bright/ingot_double_overlay" } } diff --git a/src/main/resources/assets/gtceu/models/item/material_sets/dull/ingot_double.json b/src/main/resources/assets/gtceu/models/item/material_sets/dull/ingot_double.json index a10ca09d785..ac6af3f85ce 100644 --- a/src/main/resources/assets/gtceu/models/item/material_sets/dull/ingot_double.json +++ b/src/main/resources/assets/gtceu/models/item/material_sets/dull/ingot_double.json @@ -1,6 +1,8 @@ { - "parent": "gtceu:item/material_sets/dull/ingot", + "parent": "item/generated", "textures": { - "layer3": "gtceu:item/material_sets/dull/ingot_double_overlay" + "layer0": "gtceu:item/material_sets/dull/ingot_double", + "layer1": "gtceu:item/material_sets/dull/ingot_double_secondary", + "layer2": "gtceu:item/material_sets/dull/ingot_double_overlay" } } diff --git a/src/main/resources/assets/gtceu/models/item/material_sets/metallic/ingot_double.json b/src/main/resources/assets/gtceu/models/item/material_sets/metallic/ingot_double.json index c94b4641717..ced1eda1be4 100644 --- a/src/main/resources/assets/gtceu/models/item/material_sets/metallic/ingot_double.json +++ b/src/main/resources/assets/gtceu/models/item/material_sets/metallic/ingot_double.json @@ -1,6 +1,8 @@ { - "parent": "gtceu:item/material_sets/metallic/ingot", + "parent": "item/generated", "textures": { - "layer3": "gtceu:item/material_sets/metallic/ingot_double_overlay" + "layer0": "gtceu:item/material_sets/metallic/ingot_double", + "layer1": "gtceu:item/material_sets/metallic/ingot_double_secondary", + "layer2": "gtceu:item/material_sets/metallic/ingot_double_overlay" } } diff --git a/src/main/resources/assets/gtceu/models/item/material_sets/shiny/ingot_double.json b/src/main/resources/assets/gtceu/models/item/material_sets/shiny/ingot_double.json index 589469e92a8..422c0df1009 100644 --- a/src/main/resources/assets/gtceu/models/item/material_sets/shiny/ingot_double.json +++ b/src/main/resources/assets/gtceu/models/item/material_sets/shiny/ingot_double.json @@ -1,6 +1,8 @@ { - "parent": "gtceu:item/material_sets/shiny/ingot", + "parent": "item/generated", "textures": { - "layer3": "gtceu:item/material_sets/shiny/ingot_double_overlay" + "layer0": "gtceu:item/material_sets/shiny/ingot_double", + "layer1": "gtceu:item/material_sets/shiny/ingot_double_secondary", + "layer2": "gtceu:item/material_sets/shiny/ingot_double_overlay" } } diff --git a/src/main/resources/assets/gtceu/models/item/platinum_lighter.json b/src/main/resources/assets/gtceu/models/item/platinum_lighter.json index fb1913edac6..2b01e7f817c 100644 --- a/src/main/resources/assets/gtceu/models/item/platinum_lighter.json +++ b/src/main/resources/assets/gtceu/models/item/platinum_lighter.json @@ -1,7 +1,7 @@ { "parent": "item/generated", "textures": { - "layer0": "gtceu:items/platinum_lighter" + "layer0": "gtceu:item/platinum_lighter" }, "overrides": [ { diff --git a/src/main/resources/assets/gtceu/shaders/compass_background.fsh b/src/main/resources/assets/gtceu/shaders/compass_background.fsh deleted file mode 100644 index 0312d1fdccc..00000000000 --- a/src/main/resources/assets/gtceu/shaders/compass_background.fsh +++ /dev/null @@ -1,222 +0,0 @@ -#version 150 - -uniform vec2 iResolution; -uniform float iTime; -uniform vec2 iMouse; - -uniform vec4 baseTexture; -uniform vec4 topTexture; -uniform vec4 sideTexture; -uniform vec4 frontTexture; -uniform vec4 backTexture; - -uniform sampler2D BLOCK_ATLAS; - -in vec2 texCoord; - -out vec4 fragColor; - -const float pi = 3.14159; - -mat3 xrot(float t) -{ - return mat3(1.0, 0.0, 0.0, - 0.0, cos(t), -sin(t), - 0.0, sin(t), cos(t)); -} - -mat3 yrot(float t) -{ - return mat3(cos(t), 0.0, -sin(t), - 0.0, 1.0, 0.0, - sin(t), 0.0, cos(t)); -} - -mat3 zrot(float t) -{ - return mat3(cos(t), -sin(t), 0.0, - sin(t), cos(t), 0.0, - 0.0, 0.0, 1.0); -} - -float sphereDistance(vec3 pos) -{ - return length(pos) - 0.6; -} - -float sdBox( vec3 p, vec3 b ) -{ - vec3 d = abs(p) - b; - return min(max(d.x,max(d.y,d.z)),0.0) + - length(max(d,0.0)); -} - -float planeDistance(vec3 pos) -{ - vec3 origin = vec3(0.0, -2, 0.0); - vec3 normal = vec3(0.0, 1.0, 0.0); - vec3 delta = pos - origin; - float prod = dot(delta, normal); - return prod; -} - - -float cubeSDF(vec3 p) { - // If d.x < 0, then -1 < p.x < 1, and same logic applies to p.y, p.z - // So if all components of d are negative, then p is inside the unit cube - vec3 d = abs(p) - vec3(0.4,0.4,0.4); - - // Assuming p is inside the cube, how far is it from the surface? - // Result will be negative or zero. - float insideDistance = min(max(d.x, max(d.y, d.z)), 0.0); - - // Assuming p is outside the cube, how far is it from the surface? - // Result will be positive or zero. - float outsideDistance = length(max(d, 0.0)); - - return insideDistance + outsideDistance; -} - -float map(vec3 pos) -{ - - vec3 rpos = (pos - vec3(0.0,0.5,0.0)); - rpos *= yrot(pi*0.25+iTime * .5); - return min(cubeSDF(rpos), planeDistance(pos)); -} - -vec3 normal(vec3 p) -{ - vec3 o = vec3(0.01, 0.0, 0.0); - vec3 n = vec3(0.0); - n.x = map(p+o) - map(p-o); - n.y = map(p+o.zxy) - map(p-o.zyx); - n.z = map(p+o.yzx) - map(p-o.yzx); - return normalize(n); -} - -float trace(vec3 o, vec3 r) -{ - float t = 0.0; - for (int i = 0; i < 32; ++i) { - vec3 pos = o + r * t; - float d = map(pos); - if (d < 0.001) { - return t; - } - t += d; - } - return t; -} - -vec2 ltrace(vec3 o, vec3 r) -{ - /* http://iquilezles.org/www/articles/rmshadows/rmshadows.htm */ - float t = 0.0; - float md = 1000.0; - float lt = 0.0; - for (int i = 0; i < 32; ++i) { - vec3 pos = o + r * t; - float d = map(pos); - md = min(md, 16.0*d/t); - t += min(d, 0.1); /* <-- you need to clamp the distance for it to work :) */ - } - return vec2(t,clamp(md,0.0,1.0)); -} - -float light(vec3 world, vec3 sn, vec3 lpos) -{ - vec3 ldel = world + sn * 0.01 - lpos; - float ldist = length(ldel); - ldel /= ldist; - vec2 lt = ltrace(lpos, ldel); - float lm = 1.0; - if (lt.x < ldist) { - lm = lt.y; - } - float lp = max(dot(ldel, -sn), 0.0); - float fl = lp * lm / (1.0 + ldist * ldist * 0.1); - return fl; -} - -vec2 uvMapping(vec4 uvs, vec2 uv) { - // uvs(u0, v0, u1, v1) - return vec2(uvs.x + (uvs.z - uvs.x) * uv.x, uvs.y + (uvs.w - uvs.y) * uv.y); -} - -void mainImage( out vec4 fragColor, in vec2 fragCoord ) { - vec2 uv = fragCoord.xy / iResolution.xy * 2.0 - 1.0; - uv.x *= iResolution.x / iResolution.y; - - vec3 ray = normalize(vec3(uv, 1.3)); - ray *= xrot(pi*0.27); - - mat3 rotr = mat3(1.0);//yrot(iTime); - vec2 mp = iMouse.xy / iResolution.xy; - // mp.y += 0.5; - rotr = xrot(-mp.y) * yrot(-mp.x*3.0); - - ray *= rotr; - vec3 origin = vec3(0.0, 0.0, -1.4) * rotr; - origin.y += 2.0; - - float t = trace(origin, ray); - vec3 world = origin + ray * t; - - vec3 rpos = (world - vec3(0.0,0.5,0.0)); - rpos *= yrot(pi*0.25+iTime * .5); - float cubeD = cubeSDF(rpos); - - vec3 bg = vec3(0.1); - - if(cubeD < 0.1) { - float dx = min(abs(rpos.x - 0.4), abs(rpos.x + 0.4)); - float dy = min(abs(rpos.y - 0.4), abs(rpos.y + 0.4)); - float dz = min(abs(rpos.z - 0.4), abs(rpos.z + 0.4)); - - if (rpos.y >= 0.4) { // top - vec2 _uv = vec2((rpos.x + 0.4) / 0.8, (rpos.z + 0.4) / 0.8); - bg = texture(BLOCK_ATLAS, uvMapping(baseTexture, _uv)).rgb; - vec4 overlay = texture(BLOCK_ATLAS, uvMapping(topTexture, _uv)); - bg = mix(bg, overlay.rgb, overlay.a); - } else if (abs(rpos.x) >= 0.4) { // side - vec2 _uv = vec2((rpos.z + 0.4) / 0.8, (rpos.y + 0.4) / 0.8); - bg = texture(BLOCK_ATLAS, uvMapping(baseTexture, _uv)).rgb; - vec4 overlay = texture(BLOCK_ATLAS, uvMapping(sideTexture, _uv)); - bg = mix(bg, overlay.rgb, overlay.a); - } else if (rpos.z >= 0.4) { // back - vec2 _uv = vec2((rpos.x + 0.4) / 0.8, (rpos.y + 0.4) / 0.8); - bg = texture(BLOCK_ATLAS, uvMapping(baseTexture, _uv)).rgb; - vec4 overlay = texture(BLOCK_ATLAS, uvMapping(backTexture, _uv)); - bg = mix(bg, overlay.rgb, overlay.a); - } else { // front - vec2 _uv = vec2(1. - (rpos.x + 0.4) / 0.8, (rpos.y + 0.4) / 0.8); - bg = texture(BLOCK_ATLAS, uvMapping(baseTexture, _uv)).rgb; - vec4 overlay = texture(BLOCK_ATLAS, uvMapping(frontTexture, _uv)); - bg = mix(bg, overlay.rgb, overlay.a); - } - } - - vec3 sn = normal(world); - float fd = map(world); - - float la = light(world, sn, vec3(-2.0, 1.5, 0.0)); - float lb = light(world, sn, vec3(2.0, 1.5, 0.0)); - - - float fog = 1.0 / (1.0 + t * t * 0.01 + fd * 5.0); - - vec3 diff = bg; - float dp = max(dot(ray,-sn),0.0); - - vec3 rc = diff * dp; - rc += la * abs(sin(vec3(1.0, 0.5, 0.3) + iTime * 0.2) - 0.2); - rc += lb * abs(sin(vec3(0.0, 0.5, 0.7) + iTime * 0.2) + 0.2); - - rc *= fog; - fragColor = vec4(rc, 1.0); -} - -void main() { - mainImage(fragColor, vec2(texCoord.x * iResolution.x, texCoord.y * iResolution.y)); -} diff --git a/src/main/resources/assets/gtceu/textures/block/cable/wire.png b/src/main/resources/assets/gtceu/textures/block/cable/wire.png deleted file mode 100644 index e00d21e78a9..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/cable/wire.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/casings/signs/blank_32.png b/src/main/resources/assets/gtceu/textures/block/casings/signs/blank_32.png deleted file mode 100644 index f048339668b..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/casings/signs/blank_32.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/casings/signs/blank_64.png b/src/main/resources/assets/gtceu/textures/block/casings/signs/blank_64.png deleted file mode 100644 index 338dd7ce620..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/casings/signs/blank_64.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/casings/solid/machine_casing_palladium_substation.png b/src/main/resources/assets/gtceu/textures/block/casings/solid/machine_casing_palladium_substation.png index ec56c9556c5..553fe0c74d0 100644 Binary files a/src/main/resources/assets/gtceu/textures/block/casings/solid/machine_casing_palladium_substation.png and b/src/main/resources/assets/gtceu/textures/block/casings/solid/machine_casing_palladium_substation.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/casings/solid/machine_casing_palladium_substation_ctm.png b/src/main/resources/assets/gtceu/textures/block/casings/solid/machine_casing_palladium_substation_ctm.png index 3d3bb89804f..2e881bbd6e7 100644 Binary files a/src/main/resources/assets/gtceu/textures/block/casings/solid/machine_casing_palladium_substation_ctm.png and b/src/main/resources/assets/gtceu/textures/block/casings/solid/machine_casing_palladium_substation_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_activity_detector.png b/src/main/resources/assets/gtceu/textures/block/cover/activity_detector.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_activity_detector.png rename to src/main/resources/assets/gtceu/textures/block/cover/activity_detector.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_activity_detector_advanced.png b/src/main/resources/assets/gtceu/textures/block/cover/activity_detector_advanced.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_activity_detector_advanced.png rename to src/main/resources/assets/gtceu/textures/block/cover/activity_detector_advanced.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_activity_detector_advanced_emissive.png b/src/main/resources/assets/gtceu/textures/block/cover/activity_detector_advanced_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_activity_detector_advanced_emissive.png rename to src/main/resources/assets/gtceu/textures/block/cover/activity_detector_advanced_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_activity_detector_advanced_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/cover/activity_detector_advanced_emissive.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_activity_detector_advanced_emissive.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/cover/activity_detector_advanced_emissive.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_activity_detector_emissive.png b/src/main/resources/assets/gtceu/textures/block/cover/activity_detector_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_activity_detector_emissive.png rename to src/main/resources/assets/gtceu/textures/block/cover/activity_detector_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_activity_detector_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/cover/activity_detector_emissive.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_activity_detector_emissive.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/cover/activity_detector_emissive.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_arm.png b/src/main/resources/assets/gtceu/textures/block/cover/arm.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_arm.png rename to src/main/resources/assets/gtceu/textures/block/cover/arm.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_arm_emissive.png b/src/main/resources/assets/gtceu/textures/block/cover/arm_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_arm_emissive.png rename to src/main/resources/assets/gtceu/textures/block/cover/arm_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_arm_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/cover/arm_emissive.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_arm_emissive.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/cover/arm_emissive.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_arm_inverted.png b/src/main/resources/assets/gtceu/textures/block/cover/arm_inverted.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_arm_inverted.png rename to src/main/resources/assets/gtceu/textures/block/cover/arm_inverted.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_arm_inverted_emissive.png b/src/main/resources/assets/gtceu/textures/block/cover/arm_inverted_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_arm_inverted_emissive.png rename to src/main/resources/assets/gtceu/textures/block/cover/arm_inverted_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_arm_inverted_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/cover/arm_inverted_emissive.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_arm_inverted_emissive.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/cover/arm_inverted_emissive.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_display.png b/src/main/resources/assets/gtceu/textures/block/cover/computer_monitor.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_display.png rename to src/main/resources/assets/gtceu/textures/block/cover/computer_monitor.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_conveyor.png b/src/main/resources/assets/gtceu/textures/block/cover/conveyor.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_conveyor.png rename to src/main/resources/assets/gtceu/textures/block/cover/conveyor.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_conveyor_emissive.png b/src/main/resources/assets/gtceu/textures/block/cover/conveyor_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_conveyor_emissive.png rename to src/main/resources/assets/gtceu/textures/block/cover/conveyor_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_conveyor_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/cover/conveyor_emissive.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_conveyor_emissive.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/cover/conveyor_emissive.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_conveyor_inverted.png b/src/main/resources/assets/gtceu/textures/block/cover/conveyor_inverted.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_conveyor_inverted.png rename to src/main/resources/assets/gtceu/textures/block/cover/conveyor_inverted.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_conveyor_inverted_emissive.png b/src/main/resources/assets/gtceu/textures/block/cover/conveyor_inverted_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_conveyor_inverted_emissive.png rename to src/main/resources/assets/gtceu/textures/block/cover/conveyor_inverted_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_conveyor_inverted_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/cover/conveyor_inverted_emissive.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_conveyor_inverted_emissive.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/cover/conveyor_inverted_emissive.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/cover/cover_pump_inverted.png b/src/main/resources/assets/gtceu/textures/block/cover/cover_pump_inverted.png deleted file mode 100644 index 1c3fa70ae0e..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/cover/cover_pump_inverted.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_crafting.png b/src/main/resources/assets/gtceu/textures/block/cover/crafting.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_crafting.png rename to src/main/resources/assets/gtceu/textures/block/cover/crafting.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_display_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/cover/display_emissive.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_display_emissive.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/cover/display_emissive.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_ender_fluid_link.png b/src/main/resources/assets/gtceu/textures/block/cover/ender_fluid_link.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_ender_fluid_link.png rename to src/main/resources/assets/gtceu/textures/block/cover/ender_fluid_link.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_ender_fluid_link.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/cover/ender_fluid_link.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_ender_fluid_link.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/cover/ender_fluid_link.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_ender_fluid_link_emissive.png b/src/main/resources/assets/gtceu/textures/block/cover/ender_fluid_link_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_ender_fluid_link_emissive.png rename to src/main/resources/assets/gtceu/textures/block/cover/ender_fluid_link_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_ender_fluid_link_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/cover/ender_fluid_link_emissive.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_ender_fluid_link_emissive.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/cover/ender_fluid_link_emissive.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_energy_detector.png b/src/main/resources/assets/gtceu/textures/block/cover/energy_detector.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_energy_detector.png rename to src/main/resources/assets/gtceu/textures/block/cover/energy_detector.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_energy_detector_advanced.png b/src/main/resources/assets/gtceu/textures/block/cover/energy_detector_advanced.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_energy_detector_advanced.png rename to src/main/resources/assets/gtceu/textures/block/cover/energy_detector_advanced.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_filter.png b/src/main/resources/assets/gtceu/textures/block/cover/filter.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_filter.png rename to src/main/resources/assets/gtceu/textures/block/cover/filter.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_fluid_detector.png b/src/main/resources/assets/gtceu/textures/block/cover/fluid_detector.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_fluid_detector.png rename to src/main/resources/assets/gtceu/textures/block/cover/fluid_detector.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_fluid_detector_advanced.png b/src/main/resources/assets/gtceu/textures/block/cover/fluid_detector_advanced.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_fluid_detector_advanced.png rename to src/main/resources/assets/gtceu/textures/block/cover/fluid_detector_advanced.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_fluid_filter.png b/src/main/resources/assets/gtceu/textures/block/cover/fluid_filter.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_fluid_filter.png rename to src/main/resources/assets/gtceu/textures/block/cover/fluid_filter.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_fluid_voiding.png b/src/main/resources/assets/gtceu/textures/block/cover/fluid_voiding.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_fluid_voiding.png rename to src/main/resources/assets/gtceu/textures/block/cover/fluid_voiding.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_fluid_voiding.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/cover/fluid_voiding.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_fluid_voiding.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/cover/fluid_voiding.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_fluid_voiding_advanced.png b/src/main/resources/assets/gtceu/textures/block/cover/fluid_voiding_advanced.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_fluid_voiding_advanced.png rename to src/main/resources/assets/gtceu/textures/block/cover/fluid_voiding_advanced.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_fluid_voiding_advanced.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/cover/fluid_voiding_advanced.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_fluid_voiding_advanced.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/cover/fluid_voiding_advanced.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_fluid_voiding_advanced_emissive.png b/src/main/resources/assets/gtceu/textures/block/cover/fluid_voiding_advanced_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_fluid_voiding_advanced_emissive.png rename to src/main/resources/assets/gtceu/textures/block/cover/fluid_voiding_advanced_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_infinite_water.png b/src/main/resources/assets/gtceu/textures/block/cover/infinite_water.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_infinite_water.png rename to src/main/resources/assets/gtceu/textures/block/cover/infinite_water.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_infinite_water_emissive.png b/src/main/resources/assets/gtceu/textures/block/cover/infinite_water_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_infinite_water_emissive.png rename to src/main/resources/assets/gtceu/textures/block/cover/infinite_water_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_infinite_water_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/cover/infinite_water_emissive.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_infinite_water_emissive.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/cover/infinite_water_emissive.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_item_detector.png b/src/main/resources/assets/gtceu/textures/block/cover/item_detector.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_item_detector.png rename to src/main/resources/assets/gtceu/textures/block/cover/item_detector.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_item_detector_advanced.png b/src/main/resources/assets/gtceu/textures/block/cover/item_detector_advanced.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_item_detector_advanced.png rename to src/main/resources/assets/gtceu/textures/block/cover/item_detector_advanced.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_item_filter.png b/src/main/resources/assets/gtceu/textures/block/cover/item_filter.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_item_filter.png rename to src/main/resources/assets/gtceu/textures/block/cover/item_filter.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_item_voiding.png b/src/main/resources/assets/gtceu/textures/block/cover/item_voiding.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_item_voiding.png rename to src/main/resources/assets/gtceu/textures/block/cover/item_voiding.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_item_voiding.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/cover/item_voiding.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_item_voiding.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/cover/item_voiding.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_item_voiding_advanced.png b/src/main/resources/assets/gtceu/textures/block/cover/item_voiding_advanced.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_item_voiding_advanced.png rename to src/main/resources/assets/gtceu/textures/block/cover/item_voiding_advanced.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_item_voiding_advanced.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/cover/item_voiding_advanced.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_item_voiding_advanced.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/cover/item_voiding_advanced.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_item_voiding_advanced_emissive.png b/src/main/resources/assets/gtceu/textures/block/cover/item_voiding_advanced_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_item_voiding_advanced_emissive.png rename to src/main/resources/assets/gtceu/textures/block/cover/item_voiding_advanced_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_controller.png b/src/main/resources/assets/gtceu/textures/block/cover/machine_controller.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_controller.png rename to src/main/resources/assets/gtceu/textures/block/cover/machine_controller.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_maintenance_detector.png b/src/main/resources/assets/gtceu/textures/block/cover/maintenance_detector.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_maintenance_detector.png rename to src/main/resources/assets/gtceu/textures/block/cover/maintenance_detector.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_ore_dictionary_filter.png b/src/main/resources/assets/gtceu/textures/block/cover/ore_dictionary_filter.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_ore_dictionary_filter.png rename to src/main/resources/assets/gtceu/textures/block/cover/ore_dictionary_filter.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_display_emissive.png b/src/main/resources/assets/gtceu/textures/block/cover/overlay_display_emissive.png deleted file mode 100644 index 39f7ce433dd..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/cover/overlay_display_emissive.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_pump_inverted.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/cover/overlay_pump_inverted.png.mcmeta deleted file mode 100644 index dfae8cae16a..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/cover/overlay_pump_inverted.png.mcmeta +++ /dev/null @@ -1,5 +0,0 @@ -{ - "animation":{ - "frametime":1 - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_pump.png b/src/main/resources/assets/gtceu/textures/block/cover/pump.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_pump.png rename to src/main/resources/assets/gtceu/textures/block/cover/pump.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/cover_pump_inverted.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/cover/pump.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/cover_pump_inverted.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/cover/pump.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_pump_inverted.png b/src/main/resources/assets/gtceu/textures/block/cover/pump_inverted.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_pump_inverted.png rename to src/main/resources/assets/gtceu/textures/block/cover/pump_inverted.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_pump.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/cover/pump_inverted.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_pump.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/cover/pump_inverted.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_screen.png b/src/main/resources/assets/gtceu/textures/block/cover/screen.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_screen.png rename to src/main/resources/assets/gtceu/textures/block/cover/screen.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_shutter.png b/src/main/resources/assets/gtceu/textures/block/cover/shutter.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_shutter.png rename to src/main/resources/assets/gtceu/textures/block/cover/shutter.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_smart_item_filter.png b/src/main/resources/assets/gtceu/textures/block/cover/smart_item_filter.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_smart_item_filter.png rename to src/main/resources/assets/gtceu/textures/block/cover/smart_item_filter.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_solar_panel.png b/src/main/resources/assets/gtceu/textures/block/cover/solar_panel.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_solar_panel.png rename to src/main/resources/assets/gtceu/textures/block/cover/solar_panel.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/storage_cover.png b/src/main/resources/assets/gtceu/textures/block/cover/storage.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/storage_cover.png rename to src/main/resources/assets/gtceu/textures/block/cover/storage.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/wireless_transmitter.png b/src/main/resources/assets/gtceu/textures/block/cover/wireless_transmitter.png new file mode 100644 index 00000000000..68ddbb87707 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/cover/wireless_transmitter.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/machines/block_breaker/overlay_front.png b/src/main/resources/assets/gtceu/textures/block/machines/block_breaker/overlay_front.png new file mode 100644 index 00000000000..4e9f186fb16 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/machines/block_breaker/overlay_front.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/machines/block_breaker/overlay_front_active.png b/src/main/resources/assets/gtceu/textures/block/machines/block_breaker/overlay_front_active.png new file mode 100644 index 00000000000..c7bba50036d Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/machines/block_breaker/overlay_front_active.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/machines/rock_crusher/overlay_front_active_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/machines/block_breaker/overlay_front_active.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/machines/rock_crusher/overlay_front_active_emissive.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/machines/block_breaker/overlay_front_active.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in.png b/src/main/resources/assets/gtceu/textures/block/machines/high_pressure_steam_miner/overlay_bottom.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in.png rename to src/main/resources/assets/gtceu/textures/block/machines/high_pressure_steam_miner/overlay_bottom.png diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_4x.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/machines/high_pressure_steam_miner/overlay_bottom.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_4x.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/machines/high_pressure_steam_miner/overlay_bottom.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/machines/high_pressure_steam_miner/overlay_down.mcmeta b/src/main/resources/assets/gtceu/textures/block/machines/high_pressure_steam_miner/overlay_down.mcmeta deleted file mode 100644 index f201982c039..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/machines/high_pressure_steam_miner/overlay_down.mcmeta +++ /dev/null @@ -1,5 +0,0 @@ -{ - "animation": { - "frametime": 8 - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/machines/high_pressure_steam_miner/overlay_down.png b/src/main/resources/assets/gtceu/textures/block/machines/high_pressure_steam_miner/overlay_down.png deleted file mode 100644 index bfcdac5e840..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/machines/high_pressure_steam_miner/overlay_down.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/machines/rock_crusher/overlay_front_active_emissive.png b/src/main/resources/assets/gtceu/textures/block/machines/rock_crusher/overlay_front_active_emissive.png deleted file mode 100644 index 44b9733d765..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/machines/rock_crusher/overlay_front_active_emissive.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/machines/rock_crusher/overlay_front_emissive.png b/src/main/resources/assets/gtceu/textures/block/machines/rock_crusher/overlay_front_emissive.png deleted file mode 100644 index a8007019883..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/machines/rock_crusher/overlay_front_emissive.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/machines/steam_miner/overlay_bottom.png b/src/main/resources/assets/gtceu/textures/block/machines/steam_miner/overlay_bottom.png new file mode 100644 index 00000000000..a4a42bbc305 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/machines/steam_miner/overlay_bottom.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_9x.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/machines/steam_miner/overlay_bottom.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_9x.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/machines/steam_miner/overlay_bottom.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/machines/steam_miner/overlay_down.mcmeta b/src/main/resources/assets/gtceu/textures/block/machines/steam_miner/overlay_down.mcmeta deleted file mode 100644 index f201982c039..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/machines/steam_miner/overlay_down.mcmeta +++ /dev/null @@ -1,5 +0,0 @@ -{ - "animation": { - "frametime": 8 - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/machines/steam_miner/overlay_down.png b/src/main/resources/assets/gtceu/textures/block/machines/steam_miner/overlay_down.png deleted file mode 100644 index bfcdac5e840..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/machines/steam_miner/overlay_down.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/central_monitor/overlay_front.png b/src/main/resources/assets/gtceu/textures/block/multiblock/central_monitor/overlay_front.png new file mode 100644 index 00000000000..d6fcdf974a8 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/multiblock/central_monitor/overlay_front.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/central_monitor/overlay_front_active.png b/src/main/resources/assets/gtceu/textures/block/multiblock/central_monitor/overlay_front_active.png new file mode 100644 index 00000000000..d6fcdf974a8 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/multiblock/central_monitor/overlay_front_active.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/central_monitor/overlay_front_active_emissive.png b/src/main/resources/assets/gtceu/textures/block/multiblock/central_monitor/overlay_front_active_emissive.png new file mode 100644 index 00000000000..a556f63bc84 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/multiblock/central_monitor/overlay_front_active_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/central_monitor/overlay_front_active_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/multiblock/central_monitor/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 00000000000..3de4a0bdd81 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/multiblock/central_monitor/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 8 + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front.png b/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front.png index 729e656da01..8a0a9134784 100644 Binary files a/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front.png and b/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active.png b/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active.png index cad1bcaa2bb..173f15cda60 100644 Binary files a/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active.png and b/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active.png.mcmeta deleted file mode 100644 index cfcef74876f..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active.png.mcmeta +++ /dev/null @@ -1,10 +0,0 @@ -{ - "animation": { - "frametime": 16, - "frames": [ - 0, - 1, - 2 - ] - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active_emissive.png b/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active_emissive.png index 76c223417d8..4ed7c8ec02a 100644 Binary files a/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active_emissive.png and b/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active_emissive.png.mcmeta deleted file mode 100644 index cfcef74876f..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active_emissive.png.mcmeta +++ /dev/null @@ -1,10 +0,0 @@ -{ - "animation": { - "frametime": 16, - "frames": [ - 0, - 1, - 2 - ] - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_emissive.png b/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_emissive.png index 0486a073200..e1ea0b2d792 100644 Binary files a/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_emissive.png and b/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_paused.png b/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_paused.png index 901e9e1e126..bca74d28f46 100644 Binary files a/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_paused.png and b/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_paused.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_paused_emissive.png b/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_paused_emissive.png index f18b9aa3899..9335e01fc4a 100644 Binary files a/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_paused_emissive.png and b/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_paused_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/1.png b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/1.png deleted file mode 100644 index df9f3e57253..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/1.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/1.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/1.png.mcmeta deleted file mode 100644 index d746756cbd1..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/1.png.mcmeta +++ /dev/null @@ -1,3 +0,0 @@ -{ - "animation":{} -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/2.png b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/2.png deleted file mode 100644 index ee079ef35c9..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/2.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/2.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/2.png.mcmeta deleted file mode 100644 index d746756cbd1..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/2.png.mcmeta +++ /dev/null @@ -1,3 +0,0 @@ -{ - "animation":{} -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/3.png b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/3.png deleted file mode 100644 index c9f52b917d2..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/3.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/3.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/3.png.mcmeta deleted file mode 100644 index d746756cbd1..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/3.png.mcmeta +++ /dev/null @@ -1,3 +0,0 @@ -{ - "animation":{} -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/4.png b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/4.png deleted file mode 100644 index 18454909b2a..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/4.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/4.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/4.png.mcmeta deleted file mode 100644 index d746756cbd1..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/4.png.mcmeta +++ /dev/null @@ -1,3 +0,0 @@ -{ - "animation":{} -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/5.png b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/5.png deleted file mode 100644 index 56f764cbc0c..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/5.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/5.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/5.png.mcmeta deleted file mode 100644 index d746756cbd1..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/5.png.mcmeta +++ /dev/null @@ -1,3 +0,0 @@ -{ - "animation":{} -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/6.png b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/6.png deleted file mode 100644 index 3df3a772d89..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/6.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/6.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/6.png.mcmeta deleted file mode 100644 index d746756cbd1..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/6.png.mcmeta +++ /dev/null @@ -1,3 +0,0 @@ -{ - "animation":{} -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/7.png b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/7.png deleted file mode 100644 index 8bfcd362cf2..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/7.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/7.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/7.png.mcmeta deleted file mode 100644 index d746756cbd1..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/7.png.mcmeta +++ /dev/null @@ -1,3 +0,0 @@ -{ - "animation":{} -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/8.png b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/8.png deleted file mode 100644 index 1ce120cb4be..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/8.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/8.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/8.png.mcmeta deleted file mode 100644 index d746756cbd1..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/8.png.mcmeta +++ /dev/null @@ -1,3 +0,0 @@ -{ - "animation":{} -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/9.png b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/9.png deleted file mode 100644 index e266d08ea9d..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/9.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/9.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/9.png.mcmeta deleted file mode 100644 index d746756cbd1..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/9.png.mcmeta +++ /dev/null @@ -1,3 +0,0 @@ -{ - "animation":{} -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/template_bottom.png b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/template_bottom.png deleted file mode 100644 index 54ba1bcf4dd..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/template_bottom.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/template_middle.png b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/template_middle.png deleted file mode 100644 index 406833439e1..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/template_middle.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/template_top.png b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/template_top.png deleted file mode 100644 index 6d6008e7d80..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/template_top.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/converter/converter_native_in_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/converter/converter_native_in_emissive.png new file mode 100644 index 00000000000..d240dc7dc20 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/overlay/converter/converter_native_in_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/converter/converter_native_out_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/converter/converter_native_out_emissive.png new file mode 100644 index 00000000000..5021c3ded3b Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/overlay/converter/converter_native_out_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_color.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_color.png new file mode 100644 index 00000000000..2a6ce1e2d93 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_color.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_16a_in_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_16a_in_emissive.png new file mode 100644 index 00000000000..4d46ee2b4b5 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_16a_in_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_16a_out_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_16a_out_emissive.png new file mode 100644 index 00000000000..fe23a50e341 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_16a_out_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_1a_in_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_1a_in_emissive.png new file mode 100644 index 00000000000..b1331e3a8fc Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_1a_in_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_1a_out_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_1a_out_emissive.png new file mode 100644 index 00000000000..98660060112 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_1a_out_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_2a_in_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_2a_in_emissive.png new file mode 100644 index 00000000000..98497a55f29 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_2a_in_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_2a_out_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_2a_out_emissive.png new file mode 100644 index 00000000000..2b6cc57bf97 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_2a_out_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_4a_in_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_4a_in_emissive.png new file mode 100644 index 00000000000..c23df489c59 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_4a_in_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_4a_out_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_4a_out_emissive.png new file mode 100644 index 00000000000..93770a2ba11 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_4a_out_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_64a_in_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_64a_in_emissive.png new file mode 100644 index 00000000000..1671526e24e Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_64a_in_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_64a_out_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_64a_out_emissive.png new file mode 100644 index 00000000000..c2eefe8a32f Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_64a_out_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_8a_in_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_8a_in_emissive.png new file mode 100644 index 00000000000..8dff5f8a46b Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_8a_in_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_8a_out_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_8a_out_emissive.png new file mode 100644 index 00000000000..7ca311b8966 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_8a_out_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_laser_base.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_laser_base.png new file mode 100644 index 00000000000..28665dfc079 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_laser_base.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_laser_source_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_laser_source_emissive.png new file mode 100644 index 00000000000..659c3648627 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_laser_source_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_laser_target_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_laser_target_emissive.png new file mode 100644 index 00000000000..69dcb38e5ce Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_laser_target_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_monitor.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_monitor.png new file mode 100644 index 00000000000..af74a983e27 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_monitor.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_monitor.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_monitor.png.mcmeta new file mode 100644 index 00000000000..38c2c75c408 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_monitor.png.mcmeta @@ -0,0 +1,5 @@ +{ + "ldlib": { + "connection": "gtceu:block/overlay/machine/overlay_monitor_ctm" + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_monitor_ctm.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_monitor_ctm.png new file mode 100644 index 00000000000..1e6e270cc34 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_monitor_ctm.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_4x.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_4x.png index 59719f94887..8bd50cf86d6 100644 Binary files a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_4x.png and b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_4x.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_9x.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_9x.png index 8b7dac7d74d..33a51f76810 100644 Binary files a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_9x.png and b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_9x.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_4x.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_4x.png deleted file mode 100644 index 297f1f8278e..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_4x.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_9x.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_9x.png deleted file mode 100644 index 058102ef7ae..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_9x.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_emissive.png new file mode 100644 index 00000000000..06a1f67952d Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_emissive.png.mcmeta new file mode 100644 index 00000000000..ceecb036fa8 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out.png deleted file mode 100644 index 7f94b1fb0c7..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_4x.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_4x.png deleted file mode 100644 index 1d1d6de93fd..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_4x.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_4x.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_4x.png.mcmeta deleted file mode 100644 index 97596ba8176..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_4x.png.mcmeta +++ /dev/null @@ -1,5 +0,0 @@ -{ - "animation":{ - "frametime":2 - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_9x.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_9x.png deleted file mode 100644 index c6a450497f0..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_9x.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_9x.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_9x.png.mcmeta deleted file mode 100644 index 97596ba8176..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_9x.png.mcmeta +++ /dev/null @@ -1,5 +0,0 @@ -{ - "animation":{ - "frametime":2 - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_emissive.png new file mode 100644 index 00000000000..0844c5b70f9 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_emissive.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_emissive.png.mcmeta new file mode 100644 index 00000000000..ceecb036fa8 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_bottom.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_bottom.png rename to src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay.png diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_bottom_emissive.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_bottom_emissive.png rename to src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_bottom.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_emissive.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_bottom.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_emissive.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_left.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_left.png deleted file mode 100644 index a192fba21b3..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_left.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_left_emissive.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_left_emissive.png deleted file mode 100644 index 3af03260f81..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_left_emissive.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_right.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_right.png deleted file mode 100644 index 45c8dfb1b37..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_right.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_right.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_right.png.mcmeta deleted file mode 100644 index 53a9815890b..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_right.png.mcmeta +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ldlib": { - "emissive": true - }, - "shimmer": { - "bloom": true - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_right_emissive.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_right_emissive.png deleted file mode 100644 index 8cd0e6223a7..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_right_emissive.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_top.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_top.png deleted file mode 100644 index d8f9dec87d5..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_top.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_top.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_top.png.mcmeta deleted file mode 100644 index 53a9815890b..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_top.png.mcmeta +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ldlib": { - "emissive": true - }, - "shimmer": { - "bloom": true - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_top_emissive.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_top_emissive.png deleted file mode 100644 index a3221b27ab2..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_top_emissive.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_top.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_top.png rename to src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay.png diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_bottom.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_bottom.png deleted file mode 100644 index 0a76b666148..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_bottom.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_bottom.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_bottom.png.mcmeta deleted file mode 100644 index 53a9815890b..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_bottom.png.mcmeta +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ldlib": { - "emissive": true - }, - "shimmer": { - "bloom": true - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_bottom_emissive.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_bottom_emissive.png rename to src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_left.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_emissive.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_left.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_emissive.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_left.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_left.png deleted file mode 100644 index 69789efda0b..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_left.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_left.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_left.png.mcmeta deleted file mode 100644 index 53a9815890b..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_left.png.mcmeta +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ldlib": { - "emissive": true - }, - "shimmer": { - "bloom": true - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_left_emissive.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_left_emissive.png deleted file mode 100644 index 17a3b18585a..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_left_emissive.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_right.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_right.png deleted file mode 100644 index fd255ffdf74..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_right.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_right.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_right.png.mcmeta deleted file mode 100644 index 53a9815890b..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_right.png.mcmeta +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ldlib": { - "emissive": true - }, - "shimmer": { - "bloom": true - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_right_emissive.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_right_emissive.png deleted file mode 100644 index 8119bcb1985..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_right_emissive.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_top.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_top.png.mcmeta deleted file mode 100644 index 53a9815890b..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_top.png.mcmeta +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ldlib": { - "emissive": true - }, - "shimmer": { - "bloom": true - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_top_emissive.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_top_emissive.png deleted file mode 100644 index ad64e30ea3f..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_top_emissive.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/pipe_non_side.png b/src/main/resources/assets/gtceu/textures/block/pipe/pipe_non_side.png new file mode 100644 index 00000000000..18778e9f979 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/pipe/pipe_non_side.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/pipe_quad_side.png b/src/main/resources/assets/gtceu/textures/block/pipe/pipe_quad_side.png new file mode 100644 index 00000000000..929eb623702 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/block/pipe/pipe_quad_side.png differ diff --git a/src/main/resources/assets/gtceu/textures/block/storage/rubber_planks.png b/src/main/resources/assets/gtceu/textures/block/storage/rubber_planks.png deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/src/main/resources/assets/gtceu/textures/block/storage/safe/newsafe.png b/src/main/resources/assets/gtceu/textures/block/storage/safe/newsafe.png deleted file mode 100644 index c496ca7dd09..00000000000 Binary files a/src/main/resources/assets/gtceu/textures/block/storage/safe/newsafe.png and /dev/null differ diff --git a/src/main/resources/assets/gtceu/textures/capes/ace_cape.png b/src/main/resources/assets/gtceu/textures/capes/ace_cape.png new file mode 100644 index 00000000000..24e335230b6 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/capes/ace_cape.png differ diff --git a/src/main/resources/assets/gtceu/textures/capes/agender_cape.png b/src/main/resources/assets/gtceu/textures/capes/agender_cape.png new file mode 100644 index 00000000000..934674a4fee Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/capes/agender_cape.png differ diff --git a/src/main/resources/assets/gtceu/textures/capes/aromantic_cape.png b/src/main/resources/assets/gtceu/textures/capes/aromantic_cape.png new file mode 100644 index 00000000000..912e2fafa06 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/capes/aromantic_cape.png differ diff --git a/src/main/resources/assets/gtceu/textures/capes/bi_cape.png b/src/main/resources/assets/gtceu/textures/capes/bi_cape.png new file mode 100644 index 00000000000..eb73c935475 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/capes/bi_cape.png differ diff --git a/src/main/resources/assets/gtceu/textures/capes/debug_cape.png b/src/main/resources/assets/gtceu/textures/capes/debug_cape.png new file mode 100644 index 00000000000..594e0d2d360 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/capes/debug_cape.png differ diff --git a/src/main/resources/assets/gtceu/textures/capes/genderfluid_cape.png b/src/main/resources/assets/gtceu/textures/capes/genderfluid_cape.png new file mode 100644 index 00000000000..53e87bb46f7 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/capes/genderfluid_cape.png differ diff --git a/src/main/resources/assets/gtceu/textures/capes/genderqueer_cape.png b/src/main/resources/assets/gtceu/textures/capes/genderqueer_cape.png new file mode 100644 index 00000000000..5faefcd172b Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/capes/genderqueer_cape.png differ diff --git a/src/main/resources/assets/gtceu/textures/capes/greencape.png b/src/main/resources/assets/gtceu/textures/capes/green_cape.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/capes/greencape.png rename to src/main/resources/assets/gtceu/textures/capes/green_cape.png diff --git a/src/main/resources/assets/gtceu/textures/capes/gregtechcape.png b/src/main/resources/assets/gtceu/textures/capes/gregtech_cape.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/capes/gregtechcape.png rename to src/main/resources/assets/gtceu/textures/capes/gregtech_cape.png diff --git a/src/main/resources/assets/gtceu/textures/capes/intersex_cape.png b/src/main/resources/assets/gtceu/textures/capes/intersex_cape.png new file mode 100644 index 00000000000..6b77f30fde8 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/capes/intersex_cape.png differ diff --git a/src/main/resources/assets/gtceu/textures/capes/lesbian_cape.png b/src/main/resources/assets/gtceu/textures/capes/lesbian_cape.png new file mode 100644 index 00000000000..d70c3e786aa Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/capes/lesbian_cape.png differ diff --git a/src/main/resources/assets/gtceu/textures/capes/nonbinary_cape.png b/src/main/resources/assets/gtceu/textures/capes/nonbinary_cape.png new file mode 100644 index 00000000000..d8e4d53dd99 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/capes/nonbinary_cape.png differ diff --git a/src/main/resources/assets/gtceu/textures/capes/pan_cape.png b/src/main/resources/assets/gtceu/textures/capes/pan_cape.png new file mode 100644 index 00000000000..18f904012b9 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/capes/pan_cape.png differ diff --git a/src/main/resources/assets/gtceu/textures/capes/rainbow_cape.png b/src/main/resources/assets/gtceu/textures/capes/rainbow_cape.png new file mode 100644 index 00000000000..b7599e47538 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/capes/rainbow_cape.png differ diff --git a/src/main/resources/assets/gtceu/textures/capes/redcape.png b/src/main/resources/assets/gtceu/textures/capes/red_cape.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/capes/redcape.png rename to src/main/resources/assets/gtceu/textures/capes/red_cape.png diff --git a/src/main/resources/assets/gtceu/textures/capes/trans_cape.png b/src/main/resources/assets/gtceu/textures/capes/trans_cape.png new file mode 100644 index 00000000000..40932a9d223 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/capes/trans_cape.png differ diff --git a/src/main/resources/assets/gtceu/textures/capes/yellowcape.png b/src/main/resources/assets/gtceu/textures/capes/yellow_cape.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/capes/yellowcape.png rename to src/main/resources/assets/gtceu/textures/capes/yellow_cape.png diff --git a/src/main/resources/assets/gtceu/textures/gui/progress_bar/progress_bar_compress_bronze.png b/src/main/resources/assets/gtceu/textures/gui/progress_bar/progress_bar_compress_bronze.png index caa326fa089..15e51038619 100644 Binary files a/src/main/resources/assets/gtceu/textures/gui/progress_bar/progress_bar_compress_bronze.png and b/src/main/resources/assets/gtceu/textures/gui/progress_bar/progress_bar_compress_bronze.png differ diff --git a/src/main/resources/assets/gtceu/textures/gui/progress_bar/progress_bar_compress_steel.png b/src/main/resources/assets/gtceu/textures/gui/progress_bar/progress_bar_compress_steel.png index a1ad6ae43e2..9799c7817cc 100644 Binary files a/src/main/resources/assets/gtceu/textures/gui/progress_bar/progress_bar_compress_steel.png and b/src/main/resources/assets/gtceu/textures/gui/progress_bar/progress_bar_compress_steel.png differ diff --git a/src/main/resources/assets/gtceu/textures/gui/widget/button_batch.png b/src/main/resources/assets/gtceu/textures/gui/widget/button_batch.png new file mode 100644 index 00000000000..aede89d9b91 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/gui/widget/button_batch.png differ diff --git a/src/main/resources/assets/gtceu/textures/gui/widget/button_check.png b/src/main/resources/assets/gtceu/textures/gui/widget/button_check.png new file mode 100644 index 00000000000..7c3435aefb9 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/gui/widget/button_check.png differ diff --git a/src/main/resources/assets/gtceu/textures/gui/widget/button_list.png b/src/main/resources/assets/gtceu/textures/gui/widget/button_list.png new file mode 100644 index 00000000000..59194f43ccd Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/gui/widget/button_list.png differ diff --git a/src/main/resources/assets/gtceu/textures/item/armor/boots.png b/src/main/resources/assets/gtceu/textures/item/armor/boots.png new file mode 100644 index 00000000000..e96092450e6 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/item/armor/boots.png differ diff --git a/src/main/resources/assets/gtceu/textures/item/armor/chestplate.png b/src/main/resources/assets/gtceu/textures/item/armor/chestplate.png new file mode 100644 index 00000000000..bab56132b9b Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/item/armor/chestplate.png differ diff --git a/src/main/resources/assets/gtceu/textures/item/armor/helmet.png b/src/main/resources/assets/gtceu/textures/item/armor/helmet.png new file mode 100644 index 00000000000..085dd585e5a Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/item/armor/helmet.png differ diff --git a/src/main/resources/assets/gtceu/textures/item/armor/leggings.png b/src/main/resources/assets/gtceu/textures/item/armor/leggings.png new file mode 100644 index 00000000000..5ea16729f49 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/item/armor/leggings.png differ diff --git a/src/main/resources/assets/gtceu/textures/item/image_module.png b/src/main/resources/assets/gtceu/textures/item/image_module.png new file mode 100644 index 00000000000..8b532f20234 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/item/image_module.png differ diff --git a/src/main/resources/assets/gtceu/textures/item/text_module.png b/src/main/resources/assets/gtceu/textures/item/text_module.png new file mode 100644 index 00000000000..ad997f1a0ab Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/item/text_module.png differ diff --git a/src/main/resources/assets/gtceu/textures/item/digital_interface_cover.png b/src/main/resources/assets/gtceu/textures/item/wireless_transmitter_cover.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/item/digital_interface_cover.png rename to src/main/resources/assets/gtceu/textures/item/wireless_transmitter_cover.png diff --git a/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_1.png b/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_1.png new file mode 100644 index 00000000000..f3680965237 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_1.png differ diff --git a/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_1_overlay.png b/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_1_overlay.png new file mode 100644 index 00000000000..8063736e3c8 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_1_overlay.png differ diff --git a/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_2.png b/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_2.png new file mode 100644 index 00000000000..581fcb567f9 Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_2.png differ diff --git a/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_2_overlay.png b/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_2_overlay.png new file mode 100644 index 00000000000..97a7a0b25de Binary files /dev/null and b/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_2_overlay.png differ diff --git a/src/main/resources/data/gtceu/structures/recipelogictest.recipelogic.nbt_ b/src/main/resources/data/gtceu/structures/recipelogictest.recipelogic.nbt_ deleted file mode 100644 index c8ca803abd0..00000000000 Binary files a/src/main/resources/data/gtceu/structures/recipelogictest.recipelogic.nbt_ and /dev/null differ diff --git a/src/main/resources/gtceu.mixins.json b/src/main/resources/gtceu.mixins.json index ca3f823c4e5..6db6ed8524d 100644 --- a/src/main/resources/gtceu.mixins.json +++ b/src/main/resources/gtceu.mixins.json @@ -4,20 +4,27 @@ "refmap": "gtceu.refmap.json", "package": "com.gregtechceu.gtceu.core.mixins", "compatibilityLevel": "JAVA_17", - "plugin": "com.gregtechceu.gtceu.core.mixins.GregTechMixinPlugin", + "plugin": "com.gregtechceu.gtceu.core.mixins.GTMixinPlugin", "client": [ - "BiomeColorsMixin", - "BlockModelMixin", - "ClientLevelAccessor", - "GuiGraphicsAccessor", - "GuiGraphicsMixin", - "GuiHeartTypeMixin", - "LevelRendererMixin", - "ModelManagerMixin", - "MultiPlayerGameModeMixin", + "client.AbstractClientPlayerAccessor", + "client.FaceBakeryMixin", + "client.BakedQuadMixin", + "client.BiomeColorsMixin", + "client.BlockModelMixin", + "client.ClientLevelAccessor", + "client.GuiGraphicsAccessor", + "client.GuiGraphicsMixin", + "client.GuiHeartTypeMixin", + "client.HumanoidArmorLayerMixin", + "client.LevelRendererMixin", + "client.ModelManagerMixin", + "client.MultiPlayerGameModeMixin", + "client.PlayerInfoAccessor", + "client.VariantDeserializerMixin", "ftbchunks.FTBChunksClientMixin", "ftbchunks.LargeMapScreenMixin", "ftbchunks.RegionMapPanelMixin", + "ldlib.ModularWrapperWidgetMixin", "rei.FluidEntryRendererMixin", "xaerominimap.HighlighterRegistryMixin", "xaerominimap.MinimapFBORendererMixin", @@ -26,47 +33,41 @@ "xaeroworldmap.WorldMapSessionMixin" ], "mixins": [ - "AbstractRegistrateAccessor", "BlockBehaviourAccessor", "BlockMixin", "BlockPropertiesAccessor", "ChunkGeneratorMixin", - "ChunkMixin", - "CreeperMixin", "EntityMixin", - "IFoliagePlacerTypeAccessor", - "IHolderReferenceAccessor", "IngredientAccessor", - "IntersectionIngredientAccessor", "InventoryMixin", "ItemValueAccessor", - "ITrunkPlacerTypeAccessor", "LevelMixin", - "LivingEntityMixin", "LootDataManagerMixin", "LootPoolAccessor", "OreConfigurationMixin", "OreVeinifierMixin", - "PartialNBTIngredientAccessor", "PotionBrewingAccessor", "PrimedTntAccessor", - "RecipeManagerAccessor", - "RecipeManagerInvoker", "RecipeManagerMixin", "RepairItemRecipeMixin", "ServerChunkProviderMixin", "ServerGamePacketListenerImplAccessor", "ShapedRecipeAccessor", "SidedRedstoneConnectivityMixin", - "StrictNBTIngredientAccessor", "TagLoaderMixin", "TagManagerMixin", "TagValueAccessor", - "ae2.GenericStackInvAccessor", "emi.FillRecipePacketMixin", "emi.FluidEmiStackMixin", + "forge.ConfiguredModelBuilderAccessor", + "forge.ConfiguredModelListAccessor", + "forge.IntersectionIngredientAccessor", + "forge.PartialNBTIngredientAccessor", + "forge.StrictNBTIngredientAccessor", "jei.FluidHelperMixin", "ldlib.SyncUtilsMixin", + "registrate.AbstractRegistrateAccessor", + "registrate.RegistrateDataProviderAccessor", "rei.InputSlotCrafterMixin", "rei.RecipeFinderMixin", "top.ConfigMixin" @@ -74,5 +75,5 @@ "injectors": { "defaultRequire": 1, "maxShiftBy": 5 - } + } } diff --git a/src/main/templates/META-INF/mods.toml b/src/main/templates/META-INF/mods.toml index c77d25b4bff..bfee19501a7 100644 --- a/src/main/templates/META-INF/mods.toml +++ b/src/main/templates/META-INF/mods.toml @@ -13,6 +13,9 @@ logoFile = "icon.png" displayURL = "${mod_url}" credits = "GregoriusT, Mr_Touchyou, Zerrens for making GregTech and textures, the GT5u authors and maintainers for providing the original code, and the community." +[mods."modernfix:integration"] +client_entrypoint = "com.gregtechceu.gtceu.integration.modernfix.GTModernFixIntegration" + [[dependencies.${mod_id}]] modId = "forge" mandatory = true @@ -85,4 +88,4 @@ modId = "jade" mandatory = false versionRange = "[${jade_version},)" ordering = "NONE" -side = "BOTH" +side = "BOTH" \ No newline at end of file diff --git a/src/test/README.md b/src/test/README.md new file mode 100644 index 00000000000..174d522b296 --- /dev/null +++ b/src/test/README.md @@ -0,0 +1,220 @@ +# Guide to Writing GameTests in GTCEu + +--- + +## Table of Contents + +1. [Defining a Test Class](#defining-a-test-class) +2. [Writing Test Methods](#writing-test-methods) +3. [Structure Templates & Schematics](#structure-templates--schematics) +4. [Using GameTestHelper](#using-gametesthelper) +5. [Example: RecipeLogicTest](#example-recipelogictest) +6. [Running & Debugging Tests](#running--debugging-tests) +7. [Best Practices](#best-practices) + +--- + +## Defining a Test Class + +- Put it in the same class path as the main element you're trying to test, e.g. `test/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogicTest.java` +- Annotate with `@GameTestHolder(GTCEu.MOD_ID)` to register the class for testing. +- Use `@PrefixGameTestTemplate(false)` to ignore the automatic template prefix + - Without annotation: looks for `data/gtceu/structures/MyTests.basicBlockTest.singleblock.nbt` + - With annotation: looks for `data/gtceu/structures/singleblock.nbt` + +```java +@GameTestHolder(GTCEu.MOD_ID) +@PrefixGameTestTemplate(false) +public class MyTests { + // Test methods go here +} +``` + +--- + +## Writing Test Methods + +- Annotate each test method with `@GameTest`. +- Parameters: + - `template`: name of the structure or test chamber (in `data/gtceu/structures/`). + - `batch` (default 'defaultBatch'): group name for running subsets, see '@BeforeBatch' + - `timeoutTicks` (default 100): fail if not succeeded within ticks. + - `required`: (default true) fail the test run if this test fails. + - `setupTicks`: (default 0) wait N ticks before starting the test. + +For a more complete list, see [this gist](https://gist.github.com/SizableShrimp/60ad4109e3d0a23107a546b3bc0d9752) + +```java +@GameTestHolder(GTCEu.MOD_ID) +@PrefixGameTestTemplate(false) +public class MyTests { + + @GameTest(template = "singleblock") + public static void basicBlockTest(GameTestHelper helper) { + // Your test logic... + helper.succeed(); + } +} +``` + +--- + +## Structure Templates & Schematics +The testing system works with NBT files. You can use one that already exists, or make your own. +To make your own templates: +1. Spawn in a Structure Block in your game client `/give Dev minecraft:structure_block` +2. Build whatever you want to template above it +3. Open the structure block and navigate to the "SAVE" profile +4. Edit the relative offset and the structure size +5. Press "Save" +6. Copy `run/saves/[worldname]/generated/minecraft/structures/[name]` +7. Paste it in `src/test/resources/data/gtceu/structures/[name]` +8. Reference via `@GameTest(template = "[name]")` +9. Don't forget to git add it when committing :) + +--- + +## Using GameTestHelper + +`GameTestHelper` gives you assertions and world/manipulation utilities, including but not limited to: + +- `helper.getBlockState(BlockPos pos)` +- `helper.getBlockEntity(BlockPos pos)` +- `helper.setBlock(BlockPos pos, BlockState state)` +- `helper.runAfterDelay(long delay, Runnable task)` +- `helper.runAtTickTime(long tick, Runnable task)` +- `helper.assertTrue(boolean condition, String msg)` +- `helper.assertFalse(boolean condition, String msg)` +- `helper.assertSameBlockState(BlockState expected, BlockState actual, String msg)` +- `helper.assertSame[....]` a lot of these methods exist for minecraft primitives. +- `helper.succeed()` / `helper.fail(String message)` + +It can also help you interact with the world, spawn mock/fake players, assert conditions, etc. etc. + +You can also write your own utility methods for repeated patterns (e.g., checking inventories). +These go in `test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java` + +--- + +## Example: RecipeLogicTest + +Here is a relatively complex test using the testing system. + +```java +@GameTestHolder(GTCEu.MOD_ID) +@PrefixGameTestTemplate(false) +public class RecipeLogicTest { + @GameTest(template = "singleblock_chem_reactor") + public static void recipeLogicSingleBlockTest(GameTestHelper helper) { + BlockEntity holder = helper.getBlockEntity(new BlockPos(0, 1, 0)); + if (!(holder instanceof MetaMachineBlockEntity metaMachineBlockEntity)) { + helper.fail("wrong block at relative pos [0,1,0]!"); + return; + } + MetaMachine machine = metaMachineBlockEntity.getMetaMachine(); + if (!(machine instanceof IRecipeLogicMachine recipeLogicMachine)) { + helper.fail("wrong machine in MetaMachineBlockEntity!"); + return; + } + + // force insert the recipe into the manager. + GTRecipeType type = recipeLogicMachine.getRecipeType(); + type.getLookup().removeAllRecipes(); + type.getLookup().addRecipe(type + .recipeBuilder(GTCEu.id("test-singleblock")) + .id(GTCEu.id("test-singleblock")) + .inputItems(new ItemStack(Blocks.COBBLESTONE)) + .outputItems(new ItemStack(Blocks.STONE)) + .EUt(512).duration(1) + .buildRawRecipe()); + + RecipeLogic recipeLogic = recipeLogicMachine.getRecipeLogic(); + + recipeLogic.findAndHandleRecipe(); + + // no recipe found + helper.assertFalse(recipeLogic.isActive(), "Recipe logic is active, even when it shouldn't be"); + helper.assertTrue(recipeLogic.getLastRecipe() == null, + "Recipe logic has somehow found a recipe, when there should be none"); + + // put an item in the inventory that will trigger recipe recheck + NotifiableItemStackHandler inputSlots = getInputSlot(recipeLogicMachine); + NotifiableItemStackHandler outputSlots = getOutputSlot(recipeLogicMachine); + + inputSlots.insertItem(0, new ItemStack(Blocks.COBBLESTONE, 16), false); + inputSlots.onContentsChanged(); + + recipeLogic.findAndHandleRecipe(); + helper.assertFalse(recipeLogic.getLastRecipe() == null, + "Last recipe is empty, even though recipe logic should've found a recipe."); + helper.assertTrue(recipeLogic.isActive(), "Recipelogic is inactive, when it should be active."); + int stackCount = inputSlots.getStackInSlot(0).getCount(); + helper.assertTrue(stackCount == 15, "Count is wrong (should be 15, when it's %s)".formatted(stackCount)); + + // Save a reference to the old recipe so we can make sure it's getting reused + GTRecipe prev = recipeLogic.getLastRecipe(); + + // Finish the recipe, the output should generate, and the next iteration should begin + recipeLogic.serverTick(); + helper.assertTrue(recipeLogic.getLastRecipe().equals(prev), "lastRecipe is wrong"); + helper.assertTrue(TestUtils.isItemStackEqual( + outputSlots.getStackInSlot(0), + new ItemStack(Blocks.STONE, 1)), + "wrong output stack."); + helper.assertTrue(recipeLogic.isActive(), "RecipeLogic is not active, when it should be."); + + // Complete the second iteration, but the machine stops because its output is now full + outputSlots.setStackInSlot(0, + new ItemStack(Blocks.STONE, 63)); + outputSlots.setStackInSlot(1, + new ItemStack(Blocks.STONE, 64)); + recipeLogic.serverTick(); + helper.assertFalse(recipeLogic.isActive(), "RecipeLogic is active, when it shouldn't be."); + + // Try to process again and get failed out because of full buffer. + recipeLogic.serverTick(); + helper.assertFalse(recipeLogic.isActive(), "Recipelogic is active, when it shouldn't be."); + + // Some room is freed in the output bus, so we can continue now. + outputSlots.setStackInSlot(0, ItemStack.EMPTY); + recipeLogic.serverTick(); + helper.assertTrue(recipeLogic.isActive(), "RecipeLogic didn't start running again"); + recipeLogic.serverTick(); + helper.assertTrue( + TestUtils.isItemStackEqual( + outputSlots.getStackInSlot(0), + new ItemStack(Blocks.STONE, 1)), + "Wrong stack."); + + // Finish. + helper.succeed(); + } +} +``` + +--- + +## Running & Debugging Tests + +1. **Launch the GameTest server** + - Run the “Game Tests” run configuration. + - In logs you’ll see registered tests and pass/fail summaries. + +2. **Use Client Commands** + - Launch the client normally and use one of the following commands: + - `/test run :` + - `/test runAll` + +3. **Inspect Failure Reports** + - The log will pinpoint the tick and assertion message. + - You can run the "Game Tests" configuration with debug mode on, to step through the tests. + +--- + +## Best Practices + +- **Use descriptive names**: `@GameTest(template="…") public static void myFeaturedoSomething()`. +- **Limit test time**: avoid long loops, use `timeoutTicks` if needed. +- **Group related tests** with `batch` parameter. +- **Reuse helper methods** for common patterns (e.g., inventory insertion). +- **Assert early, clearly and often**: fail fast on mismatches to simplify debugging. diff --git a/src/test/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogicTest.java b/src/test/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogicTest.java new file mode 100644 index 00000000000..0b385fd3952 --- /dev/null +++ b/src/test/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogicTest.java @@ -0,0 +1,239 @@ +package com.gregtechceu.gtceu.api.machine.trait; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; +import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; +import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; +import com.gregtechceu.gtceu.api.recipe.GTRecipe; +import com.gregtechceu.gtceu.api.recipe.GTRecipeType; +import com.gregtechceu.gtceu.gametest.util.TestUtils; + +import net.minecraft.core.BlockPos; +import net.minecraft.gametest.framework.GameTest; +import net.minecraft.gametest.framework.GameTestHelper; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraftforge.gametest.GameTestHolder; +import net.minecraftforge.gametest.PrefixGameTestTemplate; + +@PrefixGameTestTemplate(false) +@GameTestHolder(GTCEu.MOD_ID) +public class RecipeLogicTest { + + public static NotifiableItemStackHandler getInputSlot(IRecipeLogicMachine recipeLogicMachine) { + RecipeHandlerList recipeHandlerList = recipeLogicMachine + .getCapabilitiesProxy() + .get(IO.IN) + .stream() + .filter(x -> x.hasCapability(ItemRecipeCapability.CAP)) + .toList() + .get(0); + NotifiableItemStackHandler itemStackHandler = (NotifiableItemStackHandler) recipeHandlerList + .getCapability(ItemRecipeCapability.CAP).get(0); + return itemStackHandler; + } + + public static NotifiableItemStackHandler getOutputSlot(IRecipeLogicMachine recipeLogicMachine) { + RecipeHandlerList recipeHandlerList = recipeLogicMachine + .getCapabilitiesProxy() + .get(IO.OUT) + .stream() + .filter(x -> x.hasCapability(ItemRecipeCapability.CAP)) + .toList() + .get(0); + NotifiableItemStackHandler itemStackHandler = (NotifiableItemStackHandler) recipeHandlerList + .getCapability(ItemRecipeCapability.CAP).get(0); + return itemStackHandler; + } + + @GameTest(template = "lcr") + public static void recipeLogicMultiBlockTest(GameTestHelper helper) { + BlockEntity holder = helper.getBlockEntity(new BlockPos(1, 2, 0)); + if (!(holder instanceof MetaMachineBlockEntity metaMachineBlockEntity)) { + helper.fail("wrong block at relative pos [1,2,0]!"); + return; + } + MetaMachine machine = metaMachineBlockEntity.getMetaMachine(); + if (!(machine instanceof IRecipeLogicMachine recipeLogicMachine)) { + helper.fail("wrong machine in MetaMachineBlockEntity!"); + return; + } + if (!(machine instanceof MultiblockControllerMachine controller)) { + helper.fail("wrong machine in MetaMachineBlockEntity!"); + return; + } + // Force a structure check and to register the parts + controller.getPattern().checkPatternAt(controller.getMultiblockState(), false); + controller.onStructureFormed(); + + helper.assertTrue(controller.isFormed(), "Controller didn't form after structure check"); + helper.assertTrue(controller.getParts().size() == 4, + "Controller didn't register all 4 parts after structure check"); + + // Force insert the recipe into the manager. + GTRecipeType type = recipeLogicMachine.getRecipeType(); + type.getLookup().removeAllRecipes(); + type.getLookup().addRecipe(type + .recipeBuilder(GTCEu.id("test-multiblock-recipelogic")) + .id(GTCEu.id("test-multiblock-recipelogic")) + .inputItems(new ItemStack(Blocks.COBBLESTONE)) + .outputItems(new ItemStack(Blocks.STONE)) + .EUt(GTValues.VA[GTValues.UV]).duration(1) + // NBT has a schematic in it with an UV energy input hatch + .buildRawRecipe()); + + RecipeLogic recipeLogic = recipeLogicMachine.getRecipeLogic(); + + recipeLogic.findAndHandleRecipe(); + + // no recipe found + helper.assertFalse(recipeLogic.isActive(), "Recipe logic is active, even when it shouldn't be"); + helper.assertTrue(recipeLogic.getLastRecipe() == null, + "Recipe logic has somehow found a recipe, when there should be none"); + + // Put an item in the inventory that will trigger recipe recheck + NotifiableItemStackHandler inputSlots = getInputSlot(recipeLogicMachine); + NotifiableItemStackHandler outputSlots = getOutputSlot(recipeLogicMachine); + + inputSlots.insertItem(0, new ItemStack(Blocks.COBBLESTONE, 16), false); + inputSlots.onContentsChanged(); + + recipeLogic.findAndHandleRecipe(); + helper.assertFalse(recipeLogic.getLastRecipe() == null, + "Last recipe is empty, even though recipe logic should've found a recipe."); + helper.assertTrue(recipeLogic.isActive(), "Recipelogic is inactive, when it should be active."); + int stackCount = inputSlots.getStackInSlot(0).getCount(); + helper.assertTrue(stackCount == 15, "Count is wrong (should be 15, when it's %s)".formatted(stackCount)); + + // Save a reference to the old recipe so we can make sure it's getting reused + GTRecipe prev = recipeLogic.getLastRecipe(); + + // Finish the recipe, the output should generate, and the next iteration should begin + recipeLogic.serverTick(); + helper.assertTrue(recipeLogic.getLastRecipe().equals(prev), "lastRecipe is wrong"); + helper.assertTrue( + TestUtils.isItemStackEqual(getOutputSlot(recipeLogicMachine).getStackInSlot(0), + new ItemStack(Blocks.STONE, 1)), + "wrong output stack."); + helper.assertTrue(recipeLogic.isActive(), "RecipeLogic is not active, when it should be."); + + // Complete the second iteration, but the machine stops because its output is now full + // Fill up the recipe with enough stone to complete 1 more recipe and then nothing more. + outputSlots.setStackInSlot(0, + new ItemStack(Blocks.STONE, 63)); + for (int i = 1; i < outputSlots.getSlots(); i++) { + outputSlots.setStackInSlot(i, + new ItemStack(Blocks.STONE, 64)); + } + recipeLogic.serverTick(); + helper.assertFalse(recipeLogic.isActive(), "RecipeLogic is active, when it shouldn't be."); + + // Try to process again and get failed out because of full buffer. + recipeLogic.serverTick(); + helper.assertFalse(recipeLogic.isActive(), "Recipelogic is active, when it shouldn't be."); + + // Some room is freed in the output bus, so we can continue now. + outputSlots.setStackInSlot(0, ItemStack.EMPTY); + recipeLogic.serverTick(); + helper.assertTrue(recipeLogic.isActive(), "RecipeLogic didn't start running again"); + recipeLogic.serverTick(); + helper.assertTrue( + TestUtils.isItemStackEqual(getOutputSlot(recipeLogicMachine).getStackInSlot(0), + new ItemStack(Blocks.STONE, 1)), + "Wrong stack."); + + // Finish. + helper.succeed(); + } + + @GameTest(template = "singleblock_chem_reactor") + public static void recipeLogicSingleBlockTest(GameTestHelper helper) { + BlockEntity holder = helper.getBlockEntity(new BlockPos(0, 1, 0)); + if (!(holder instanceof MetaMachineBlockEntity metaMachineBlockEntity)) { + helper.fail("wrong block at relative pos [0,1,0]!"); + return; + } + MetaMachine machine = metaMachineBlockEntity.getMetaMachine(); + if (!(machine instanceof IRecipeLogicMachine recipeLogicMachine)) { + helper.fail("wrong machine in MetaMachineBlockEntity!"); + return; + } + + // force insert the recipe into the manager. + GTRecipeType type = recipeLogicMachine.getRecipeType(); + type.getLookup().removeAllRecipes(); + type.getLookup().addRecipe(type + .recipeBuilder(GTCEu.id("test-singleblock")) + .id(GTCEu.id("test-singleblock")) + .inputItems(new ItemStack(Blocks.COBBLESTONE)) + .outputItems(new ItemStack(Blocks.STONE)) + .EUt(512).duration(1) + .buildRawRecipe()); + + RecipeLogic recipeLogic = recipeLogicMachine.getRecipeLogic(); + + recipeLogic.findAndHandleRecipe(); + + // no recipe found + helper.assertFalse(recipeLogic.isActive(), "Recipe logic is active, even when it shouldn't be"); + helper.assertTrue(recipeLogic.getLastRecipe() == null, + "Recipe logic has somehow found a recipe, when there should be none"); + + // put an item in the inventory that will trigger recipe recheck + NotifiableItemStackHandler inputSlots = getInputSlot(recipeLogicMachine); + NotifiableItemStackHandler outputSlots = getOutputSlot(recipeLogicMachine); + + inputSlots.insertItem(0, new ItemStack(Blocks.COBBLESTONE, 16), false); + inputSlots.onContentsChanged(); + + recipeLogic.findAndHandleRecipe(); + helper.assertFalse(recipeLogic.getLastRecipe() == null, + "Last recipe is empty, even though recipe logic should've found a recipe."); + helper.assertTrue(recipeLogic.isActive(), "Recipelogic is inactive, when it should be active."); + int stackCount = inputSlots.getStackInSlot(0).getCount(); + helper.assertTrue(stackCount == 15, "Count is wrong (should be 15, when it's %s)".formatted(stackCount)); + + // Save a reference to the old recipe so we can make sure it's getting reused + GTRecipe prev = recipeLogic.getLastRecipe(); + + // Finish the recipe, the output should generate, and the next iteration should begin + recipeLogic.serverTick(); + helper.assertTrue(recipeLogic.getLastRecipe().equals(prev), "lastRecipe is wrong"); + helper.assertTrue(TestUtils.isItemStackEqual( + outputSlots.getStackInSlot(0), + new ItemStack(Blocks.STONE, 1)), + "wrong output stack."); + helper.assertTrue(recipeLogic.isActive(), "RecipeLogic is not active, when it should be."); + + // Complete the second iteration, but the machine stops because its output is now full + outputSlots.setStackInSlot(0, + new ItemStack(Blocks.STONE, 63)); + outputSlots.setStackInSlot(1, + new ItemStack(Blocks.STONE, 64)); + recipeLogic.serverTick(); + helper.assertFalse(recipeLogic.isActive(), "RecipeLogic is active, when it shouldn't be."); + + // Try to process again and get failed out because of full buffer. + recipeLogic.serverTick(); + helper.assertFalse(recipeLogic.isActive(), "Recipelogic is active, when it shouldn't be."); + + // Some room is freed in the output bus, so we can continue now. + outputSlots.setStackInSlot(0, ItemStack.EMPTY); + recipeLogic.serverTick(); + helper.assertTrue(recipeLogic.isActive(), "RecipeLogic didn't start running again"); + recipeLogic.serverTick(); + helper.assertTrue( + TestUtils.isItemStackEqual( + outputSlots.getStackInSlot(0), + new ItemStack(Blocks.STONE, 1)), + "Wrong stack."); + + // Finish. + helper.succeed(); + } +} diff --git a/src/test/java/com/gregtechceu/gtceu/api/recipe/lookup/GTRecipeLookupTest.java b/src/test/java/com/gregtechceu/gtceu/api/recipe/lookup/GTRecipeLookupTest.java new file mode 100644 index 00000000000..eb023b89671 --- /dev/null +++ b/src/test/java/com/gregtechceu/gtceu/api/recipe/lookup/GTRecipeLookupTest.java @@ -0,0 +1,166 @@ +package com.gregtechceu.gtceu.api.recipe.lookup; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; +import com.gregtechceu.gtceu.api.recipe.GTRecipe; +import com.gregtechceu.gtceu.api.recipe.GTRecipeType; +import com.gregtechceu.gtceu.api.recipe.ingredient.SizedIngredient; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.item.ItemStackMapIngredient; +import com.gregtechceu.gtceu.api.registry.GTRegistries; + +import net.minecraft.gametest.framework.BeforeBatch; +import net.minecraft.gametest.framework.GameTest; +import net.minecraft.gametest.framework.GameTestHelper; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.RecipeType; +import net.minecraftforge.gametest.GameTestHolder; +import net.minecraftforge.gametest.PrefixGameTestTemplate; + +import java.util.Arrays; +import java.util.List; +import java.util.function.Predicate; + +import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.ELECTRIC; + +@PrefixGameTestTemplate(false) +@GameTestHolder(GTCEu.MOD_ID) +public class GTRecipeLookupTest { + + private static GTRecipeLookup lookup; + private static final Predicate ALWAYS_TRUE = gtRecipe -> true; + private static final Predicate ALWAYS_FALSE = gtRecipe -> false; + private static GTRecipe smeltStone, smeltAcaciaWood, smeltBirchWood, smeltCherryWood; + + @BeforeBatch(batch = "GTRecipeLookup") + public static void prepare(ServerLevel level) { + GTRegistries.RECIPE_TYPES.unfreeze(); + GTRegistries.RECIPE_CATEGORIES.unfreeze(); + RecipeType proxyRecipes = RecipeType.SMELTING; + GTRecipeType type = new GTRecipeType(GTCEu.id("test_recipes"), ELECTRIC, proxyRecipes) + .setEUIO(IO.IN) + .setMaxIOSize(1, 1, 0, 0); + lookup = new GTRecipeLookup(type); + + smeltStone = type.recipeBuilder("smelt_stone") + .inputItems(Items.COBBLESTONE, 1) + .outputItems(Items.STONE, 1) + .buildRawRecipe(); + smeltAcaciaWood = type.recipeBuilder("smelt_acacia_wood") + .inputItems(Items.ACACIA_WOOD, 1) + .outputItems(Items.CHARCOAL, 1) + .buildRawRecipe(); + smeltBirchWood = type.recipeBuilder("smelt_birch_wood") + .inputItems(Items.BIRCH_WOOD, 1) + .outputItems(Items.CHARCOAL, 1) + .buildRawRecipe(); + smeltCherryWood = type.recipeBuilder("smelt_cherry_wood") + .inputItems(Items.CHERRY_WOOD, 16) + .outputItems(Items.CHARCOAL, 1) + .buildRawRecipe(); + + for (GTRecipe recipe : List.of(smeltStone, + smeltAcaciaWood, + smeltBirchWood, + smeltCherryWood)) { + lookup.addRecipe(recipe); + } + + GTRegistries.RECIPE_TYPES.freeze(); + GTRegistries.RECIPE_CATEGORIES.freeze(); + } + + private static List> createIngredients(ItemStack... stacks) { + return List.of( + Arrays.stream(stacks) + .map(stack -> (AbstractMapIngredient) new ItemStackMapIngredient(stack)) + .toList()); + } + + // Simple recipe test whose lookup should succeed + @GameTest(template = "empty", batch = "GTRecipeLookup") + public static void recipeLookupSimpleSuccessTest(GameTestHelper helper) { + var ingredients = createIngredients(new ItemStack(Items.COBBLESTONE, 1)); + GTRecipe resultRecipe = lookup.recurseIngredientTreeFindRecipe(ingredients, lookup.getLookup(), ALWAYS_TRUE); + helper.assertTrue(smeltStone.equals(resultRecipe), + "GT Recipe should be smelt_stone, instead was " + resultRecipe); + helper.succeed(); + } + + // Simple recipe test whose lookup should fail because we pass an ingredient + // that does not match any of the recipes. + @GameTest(template = "empty", batch = "GTRecipeLookup") + public static void recipeLookupSimpleFailureTest(GameTestHelper helper) { + var ingredients = createIngredients(new ItemStack(Items.REDSTONE_TORCH, 1)); + GTRecipe resultRecipe = lookup.recurseIngredientTreeFindRecipe(ingredients, lookup.getLookup(), ALWAYS_TRUE); + helper.assertTrue(resultRecipe == null, "GT Recipe should be empty (null), instead was " + resultRecipe); + helper.succeed(); + } + + // Recipe test whose lookup should fail because the predicate for canHandle + // always evaluates to false. + @GameTest(template = "empty", batch = "GTRecipeLookup") + public static void recipeLookupFalsePredicateFailureTest(GameTestHelper helper) { + var ingredients = createIngredients(new ItemStack(Items.COBBLESTONE, 1)); + GTRecipe resultRecipe = lookup.recurseIngredientTreeFindRecipe(ingredients, lookup.getLookup(), ALWAYS_FALSE); + helper.assertTrue(resultRecipe == null, "GT Recipe should be empty (null), instead was " + resultRecipe); + helper.succeed(); + } + + // Recipe test whose lookup should succeed even when passed ingredients that don't have a recipe + @GameTest(template = "empty", batch = "GTRecipeLookup") + public static void recipeLookupMultipleIngredientsSuccessTest(GameTestHelper helper) { + var ingredients = createIngredients(new ItemStack(Items.COBBLESTONE, 1), + new ItemStack(Items.REDSTONE_TORCH, 1)); + GTRecipe resultRecipe = lookup.recurseIngredientTreeFindRecipe(ingredients, lookup.getLookup(), ALWAYS_TRUE); + helper.assertTrue(smeltStone.equals(resultRecipe), + "GT Recipe should be smelt_stone, instead was " + resultRecipe); + helper.succeed(); + } + + // Recipe test whose lookup should succeed because even though the amount in the recipe is not enough, + // ingredients don't count items + @GameTest(template = "empty", batch = "GTRecipeLookup") + public static void recipeLookupIngredientCountSucceedTest(GameTestHelper helper) { + // NOTE: RecipeLookup only checks item type, not item count, so this will still work + var notEnoughIngredients = createIngredients(new ItemStack(Items.CHERRY_WOOD, 8)); + GTRecipe resultRecipe = lookup.recurseIngredientTreeFindRecipe(notEnoughIngredients, lookup.getLookup(), + ALWAYS_TRUE); + helper.assertTrue(smeltCherryWood.equals(resultRecipe), + "GT Recipe should be smelt_cherry_wood, instead was " + resultRecipe); + + var enoughIngredients = createIngredients(new ItemStack(Items.CHERRY_WOOD, 16)); + resultRecipe = lookup.recurseIngredientTreeFindRecipe(enoughIngredients, lookup.getLookup(), ALWAYS_TRUE); + helper.assertTrue(smeltCherryWood.equals(resultRecipe), + "GT Recipe should be smelt_cherry_wood, instead was " + resultRecipe); + helper.succeed(); + } + + // Recipe test with a recipe-based canHandle check + @GameTest(template = "empty", batch = "GTRecipeLookup") + public static void recipeLookupCustomCountCanHandleTest(GameTestHelper helper) { + var ingredients = createIngredients(new ItemStack(Items.CHERRY_WOOD, 16)); + // Do a recipe check with a condition that requires at least 4 ingredients in the inputs + // The recipe has 8, so this should succeed + GTRecipe resultRecipe = lookup.recurseIngredientTreeFindRecipe(ingredients, lookup.getLookup(), + recipe -> recipe.inputs + .getOrDefault(ItemRecipeCapability.CAP, List.of()) + .stream() + .allMatch(content -> ((SizedIngredient) content.getContent()).getAmount() > 4)); + helper.assertTrue(smeltCherryWood.equals(resultRecipe), + "GT Recipe should be smelt_cherry_wood, instead was " + resultRecipe); + + // Do a recipe check with a condition that requires at least 32 ingredients in the inputs + // The recipe has 8, so this should fail + resultRecipe = lookup.recurseIngredientTreeFindRecipe(ingredients, lookup.getLookup(), recipe -> recipe.inputs + .getOrDefault(ItemRecipeCapability.CAP, List.of()) + .stream() + .allMatch(content -> ((SizedIngredient) content.getContent()).getAmount() > 32)); + helper.assertTrue(resultRecipe == null, "GT Recipe should be empty (null), instead was " + resultRecipe); + + helper.succeed(); + } +} diff --git a/src/test/java/com/gregtechceu/gtceu/gametest/example/ExampleTest.java b/src/test/java/com/gregtechceu/gtceu/gametest/example/ExampleTest.java new file mode 100644 index 00000000000..06d67e5533f --- /dev/null +++ b/src/test/java/com/gregtechceu/gtceu/gametest/example/ExampleTest.java @@ -0,0 +1,19 @@ +package com.gregtechceu.gtceu.gametest.example; + +import com.gregtechceu.gtceu.GTCEu; + +import net.minecraft.gametest.framework.GameTest; +import net.minecraft.gametest.framework.GameTestHelper; +import net.minecraftforge.gametest.GameTestHolder; +import net.minecraftforge.gametest.PrefixGameTestTemplate; + +@PrefixGameTestTemplate(false) +@GameTestHolder(GTCEu.MOD_ID) +public class ExampleTest { + + @GameTest(template = "empty") + public static void myTest(GameTestHelper helper) { + helper.assertTrue(true, "true is false"); + helper.succeed(); + } +} diff --git a/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java b/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java new file mode 100644 index 00000000000..797f800341d --- /dev/null +++ b/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java @@ -0,0 +1,12 @@ +package com.gregtechceu.gtceu.gametest.util; + +import net.minecraft.world.item.ItemStack; + +public class TestUtils { + + // Compares two itemstacks' items and amounts + // DOES NOT CHECK TAGS OR NBT ETC! + public static boolean isItemStackEqual(ItemStack stack1, ItemStack stack2) { + return ItemStack.isSameItem(stack1, stack2) && stack1.getCount() == stack2.getCount(); + } +} diff --git a/src/test/resources/data/gtceu/structures/empty.nbt b/src/test/resources/data/gtceu/structures/empty.nbt new file mode 100644 index 00000000000..7234628794b Binary files /dev/null and b/src/test/resources/data/gtceu/structures/empty.nbt differ diff --git a/src/test/resources/data/gtceu/structures/empty_5x5.nbt b/src/test/resources/data/gtceu/structures/empty_5x5.nbt new file mode 100644 index 00000000000..08994623c64 Binary files /dev/null and b/src/test/resources/data/gtceu/structures/empty_5x5.nbt differ diff --git a/src/test/resources/data/gtceu/structures/lcr.nbt b/src/test/resources/data/gtceu/structures/lcr.nbt new file mode 100644 index 00000000000..0d80abad927 Binary files /dev/null and b/src/test/resources/data/gtceu/structures/lcr.nbt differ diff --git a/src/test/resources/data/gtceu/structures/singleblock_chem_reactor.nbt b/src/test/resources/data/gtceu/structures/singleblock_chem_reactor.nbt new file mode 100644 index 00000000000..447bf77a531 Binary files /dev/null and b/src/test/resources/data/gtceu/structures/singleblock_chem_reactor.nbt differ